Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Ruff rewrites quote styles and capitalises docstrings without any help
# from a person, so a contributor should never have to. This hands those
# fixes to the autofix.ci app, which commits them to the pull request
# branch, forks included. The existing lint gate still reports any
# findings that ruff cannot fix.
#
# The filename and the workflow name are both fixed by autofix.ci, which
# uses them to identify the workflow it trusts. Renaming either one stops
# the app from accepting the patch.
name: autofix.ci # needed to securely identify the workflow

on:
pull_request:
push:
branches: [develop, master]

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
autofix:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
with:
python-version: '3.13'
- run: uvx --with tox-uv tox -e ruff-fix
- uses: autofix-ci/action@c5b2d67aa2274e7b5a18224e8171550871fc7e4a # v1.3.4
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,13 @@ jobs:
mkdir -p "$RUNNER_TEMP/tectonic-bin"
tar -xzf "$RUNNER_TEMP/tectonic.tar.gz" -C "$RUNNER_TEMP/tectonic-bin" tectonic
echo "$RUNNER_TEMP/tectonic-bin" >> "$GITHUB_PATH"
- name: Apply Ruff fixes to pull requests
if: github.event_name == 'pull_request' && matrix.env == 'lint'
run: tox -e ruff-fix
- name: Run ${{ matrix.env }}
env:
RUFF_OUTPUT_FORMAT: >-
${{ github.event_name == 'pull_request' && 'github' || 'full' }}
run: tox -e "$TOX_ENV"
- name: Upload documentation preview
if: matrix.env == 'docs' || matrix.env == 'docs-formats'
Expand Down
12 changes: 12 additions & 0 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,15 @@ Before submission, confirm the full CI result and inspect all required matrix
jobs. Report any check you could not run, including missing interpreters or
external tools. Release work has additional verification described in the
release guide. A contributor patch does not publish a release.

Automatic formatting
--------------------

Pull requests apply Ruff fixes before the lint check. With the autofix.ci
app installed for this repository, those fixes are committed to the pull
request branch, including forks. Findings Ruff cannot fix still fail CI.
Push builds check the committed files without applying fixes.

Apply the same fixes locally with::

uvx --with tox-uv tox -e ruff-fix
11 changes: 11 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ commands =
# ── Lint and formatting ──────────────────────────────────────

[testenv:lint]
pass_env = RUFF_OUTPUT_FORMAT
description = Lint and format-check the Python sources with ruff
skip_install = true
deps = ruff>=0.16
Expand Down Expand Up @@ -175,3 +176,13 @@ description = Scan the installed dependencies for known vulnerabilities
extras = tests, docs
deps = pip-audit>=2.7
commands = pip-audit


[testenv:ruff-fix]
labels = fix
description = Apply the available Ruff fixes
skip_install = true
deps = ruff>=0.16
commands =
ruff check --fix --exit-zero
ruff format
Loading