From 33a9eb7d15aedca7222354b68cde834480415913 Mon Sep 17 00:00:00 2001 From: Hao Liu <44379968+TheRealHaoLiu@users.noreply.github.com> Date: Fri, 2 Oct 2026 13:22:24 -0400 Subject: [PATCH] Pin ruff to a compatible release (~=0.16.0) (#16694) The Black -> Ruff migration (AAP-85334) installs a bare, unpinned `ruff` in four places: requirements_dev.txt, both tox.ini linters envs, and the devel image Dockerfile. CI's api-lint job resolves the latest release on every run. Ruff treats minor releases as breaking by policy: that is where the yearly formatter style guide lands (0.9.0, 0.15.0) and where rules are promoted or change behavior. Left unpinned, the next minor turns unrelated PRs and quiet stable branches red with no code change. Pin to ~=0.16.0 everywhere, and add `required-version` to [tool.ruff] so a developer's mismatched local ruff (pre-commit.sh uses whatever is on PATH) is refused instead of silently reformatting. Patch releases within 0.16.x still flow, so bug fixes arrive without a bump; the floor moves through a reviewed PR when 0.17 lands. Claude-Session: https://claude.ai/code/session_011rb7ruHixj48khUNXxxqPG Co-authored-by: Claude Fable 5.1 --- awxkit/tox.ini | 2 +- pyproject.toml | 1 + requirements/requirements_dev.txt | 2 +- tools/ansible/roles/dockerfile/templates/Dockerfile.j2 | 2 +- tox.ini | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/awxkit/tox.ini b/awxkit/tox.ini index a2a61aaeef..163a5c13bc 100644 --- a/awxkit/tox.ini +++ b/awxkit/tox.ini @@ -26,7 +26,7 @@ commands = [testenv:lint] deps = {[testenv]deps} - ruff + ruff~=0.16.0 commands = ruff check awxkit - coverage erase diff --git a/pyproject.toml b/pyproject.toml index 26690f8ca1..d8fdbf0d58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,6 +7,7 @@ build-backend = "setuptools.build_meta" # [tool.setuptools_scm] [tool.ruff] +required-version = "~=0.16.0" line-length = 160 extend-exclude = ["awx_collection"] diff --git a/requirements/requirements_dev.txt b/requirements/requirements_dev.txt index 6da3cb8758..525b9be35a 100644 --- a/requirements/requirements_dev.txt +++ b/requirements/requirements_dev.txt @@ -6,7 +6,7 @@ openapi-spec-validator # OpenAPI 3.0 schema validation # pprofile - re-add once https://github.com/vpelletier/pprofile/issues/41 is addressed ipython>=7.31.1 # https://github.com/ansible/awx/security/dependabot/30 unittest2 -ruff +ruff~=0.16.0 pytest!=7.0.0 pytest-asyncio pytest-cov diff --git a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 index 5460c31c39..708e5d4b4a 100644 --- a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 +++ b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 @@ -184,7 +184,7 @@ RUN dnf module -y enable nodejs:18 && dnf module -y install nodejs:18/common && unzip RUN pip3.12 install -vv git+https://github.com/coderanger/supervisor-stdout.git@973ba19967cdaf46d9c1634d1675fc65b9574f6e -RUN pip3.12 install -vv ruff setuptools-scm build +RUN pip3.12 install -vv 'ruff~=0.16.0' setuptools-scm build # This package randomly fails to download. # It is nice to have in the dev env, but not necessary. diff --git a/tox.ini b/tox.ini index 100c0f38a4..52c1f9a6e6 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,7 @@ isolated_build = True [testenv:linters] deps = - ruff + ruff~=0.16.0 yamllint allowlist_externals = make setenv =