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 @@ -85,7 +85,13 @@ jobs:
activate-environment: true
- name: Install tox
run: uv pip install '.[tox]'
- name: Apply Ruff fixes to pull requests
if: github.event_name == 'pull_request'
run: tox -e ruff-fix
- name: Lint
env:
RUFF_OUTPUT_FORMAT: >-
${{ github.event_name == 'pull_request' && 'github' || 'full' }}
run: tox -e lint

type-check:
Expand Down
13 changes: 13 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,16 @@ Include:
- Steps to reproduce
- Expected versus actual behaviour
- The statsd server you are sending to, if the problem is on the wire

## 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:

```console
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 @@ -37,6 +37,7 @@ commands =
coverage lcov -o {toxworkdir}/coverage.lcov

[testenv:lint]
pass_env = RUFF_OUTPUT_FORMAT
description = Lint with ruff
skip_install = true
deps = ruff>=0.15.0
Expand Down Expand Up @@ -79,3 +80,13 @@ deps = .[docs]
changedir = docs
commands =
sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html


[testenv:ruff-fix]
labels = fix
description = Apply the available Ruff fixes
skip_install = true
deps = ruff>=0.15.0
commands =
ruff check --fix --exit-zero statsd tests conftest.py
ruff format statsd tests conftest.py
Loading