From 8ff6e5939eb382590554470eac0a70ff9ce11fdc Mon Sep 17 00:00:00 2001 From: Romain Komorn <136473744+romainkomorndatadog@users.noreply.github.com> Date: Sat, 20 Jul 2024 12:45:32 +0100 Subject: [PATCH] ci: don't let ruff fix unused imports (rule F401) (#9839) This prevents `ruff --fix` from fixing unused imports by deleting them. This avoids scenarios where `hatch run lint:fmt` can lead to broken tests (eg: tests that trigger side effects with `import ddtrace`) if someone's workflow is "run tests, then format" instead of "format, then run tests". This does not introduce possible regressions because unused imports that aren't marked with `# noqa:F401`, for example) will still fail `ruff` checks: ``` tests/internal/test_module.py:512:12: F401 `ddtrace` imported but unused ``` The only difference is that they will not automatically be deleted by [the call to `ruff --fix` in `hatch run lint:fmt`](https://github.com/DataDog/dd-trace-py/blob/a09067333cf573a0636d0107e13363d4048fbd67/hatch.toml#L47). ## Checklist - [x] PR author has checked that all the criteria below are met - The PR description includes an overview of the change - The PR description articulates the motivation for the change - The change includes tests OR the PR description describes a testing strategy - The PR description notes risks associated with the change, if any - Newly-added code is easy to change - The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) - The change includes or references documentation updates if necessary - Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [ ] Reviewer has checked that all the criteria below are met - Title is accurate - All changes are related to the pull request's stated goal - Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - Testing strategy adequately addresses listed risks - Newly-added code is easy to change - Release note makes sense to a user of the library - If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) --- pyproject.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index e3e8de0bd7d..85a5cd48e56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -268,3 +268,7 @@ relative-imports-order = "furthest-to-closest" # Exclude typing stubs as vertical line spacing incompatibility with black # See: https://github.com/astral-sh/ruff/pull/6501 "*.pyi" = ["I001"] + +[tool.ruff.lint] +# Do not auto-fix unused imports (as this deletes things like import ddtrace) +unfixable = ["F401"]