24 KiB
Changelog 0.11.x
0.11.0
This is a follow-up to release 0.10.0. Because of a mistake in the release process, the requires-python inference changes were not included in that release. Ruff 0.11.0 now includes this change as well as the stabilization of the preview behavior for PGH004.
Breaking changes
-
Changes to how the Python version is inferred when a
target-versionis not specified (#16319)In previous versions of Ruff, you could specify your Python version with:
- The
target-versionoption in aruff.tomlfile or the[tool.ruff]section of a pyproject.toml file. - The
project.requires-pythonfield in apyproject.tomlfile with a[tool.ruff]section.
These options worked well in most cases, and are still recommended for fine control of the Python version. However, because of the way Ruff discovers config files,
pyproject.tomlfiles without a[tool.ruff]section would be ignored, including therequires-pythonsetting. Ruff would then use the default Python version (3.9 as of this writing) instead, which is surprising when you've attempted to request another version.In v0.10, config discovery has been updated to address this issue:
- If Ruff finds a
ruff.tomlfile without atarget-version, it will check for apyproject.tomlfile in the same directory and respect itsrequires-pythonversion, even if it does not contain a[tool.ruff]section. - If Ruff finds a user-level configuration, the
requires-pythonfield of the closestpyproject.tomlin a parent directory will take precedence. - If there is no config file (
ruff.tomlorpyproject.tomlwith a[tool.ruff]section) in the directory of the file being checked, Ruff will search for the closestpyproject.tomlin the parent directories and use itsrequires-pythonsetting.
- The
Stabilization
The following behaviors have been stabilized:
blanket-noqa(PGH004): Also detect blanked file-level noqa comments (and not just line level comments).
Preview features
- [syntax-errors] Tuple unpacking in
forstatement iterator clause before Python 3.9 (#16558)
0.11.1
Preview features
-
`airflow` - [syntax-errors] Improve error message and range for pre-PEP-614 decorator syntax errors (#16581)
- [syntax-errors] PEP 701 f-strings before Python 3.12 (#16543)
- [syntax-errors] Parenthesized context managers before Python 3.9 (#16523)
- [syntax-errors] Star annotations before Python 3.11 (#16545)
- [syntax-errors] Star expression in index before Python 3.11 (#16544)
- [syntax-errors] Unparenthesized assignment expressions in sets and indexes (#16404)
Bug fixes
- Server: Allow
FixAllaction in presence of version-specific syntax errors (#16848) -
`flake8-bandit` -
`refurb` -
`refurb` - Fix
--statisticsreporting for unsafe fixes (#16756)
Rule changes
-
`flake8-executables`
CLI
- Add
--exit-non-zero-on-format(#16009)
Documentation
- Update Ruff tutorial to avoid non-existent fix in
__init__.py(#16818) -
`flake8-gettext`
0.11.2
Preview features
- [syntax-errors] Fix false-positive syntax errors emitted for annotations on variadic parameters before Python 3.11 (#16878)
0.11.3
Preview features
-
`airflow` -
`airflow` -
`airflow` -
`flake8-bandit` -
`ruff` - [syntax-errors] Start detecting compile-time syntax errors (#16106)
- [syntax-errors] Duplicate type parameter names (#16858)
- [syntax-errors] Irrefutable
casepattern before final case (#16905) - [syntax-errors] Multiple assignments in
casepattern (#16957) - [syntax-errors] Single starred assignment target (#17024)
- [syntax-errors] Starred expressions in
return,yield, andfor(#17134) - [syntax-errors] Store to or delete
__debug__(#16984)
Bug fixes
- Error instead of
panic!when running Ruff from a deleted directory (#16903) (#17054) - [syntax-errors] Fix false positive for parenthesized tuple index (#16948)
CLI
- Check
pyproject.tomlcorrectly when it is passed via stdin (#16971)
Configuration
-
`flake8-import-conventions`
Documentation
-
`refurb`
0.11.4
Preview features
-
`ruff` - [syntax-errors] Detect duplicate keys in
matchmapping patterns (#17129) - [syntax-errors] Detect duplicate attributes in
matchclass patterns (#17186) - [syntax-errors] Detect invalid syntax in annotations (#17101)
Bug fixes
- [syntax-errors] Fix multiple assignment error for class fields in
matchpatterns (#17184) - Don't skip visiting non-tuple slice in
typing.Annotatedsubscripts (#17201)
0.11.5
Preview features
-
`airflow` -
`airflow` -
`airflow` -
`airflow` - [syntax-errors] Async comprehension in sync comprehension (#17177)
- [syntax-errors] Check annotations in annotated assignments (#17283)
- [syntax-errors] Extend annotation checks to
await(#17282)
Bug fixes
-
`flake8-pie`
Rule changes
-
`ruff` -
`flake8-pytest-style`
Documentation
- Fix formatting of "See Style Guide" link (#17272)
0.11.6
Preview features
- Avoid adding whitespace to the end of a docstring after an escaped quote (#17216)
-
`airflow`
Bug fixes
- Raise syntax error when
\is at end of file (#17409)
0.11.7
Preview features
-
`airflow` -
`perflint` - [syntax-errors] Make duplicate parameter names a semantic error (#17131)
Bug fixes
-
`airflow` -
`flake8-type-checking` -
`pyupgrade` -
`refurb`
Rule changes
-
`perflint` -
`pycodestyle` -
`pylint`
Documentation
0.11.8
Preview features
-
`airflow` -
`airflow` -
`airflow` -
`refurb` - [syntax-errors]
nonlocaldeclaration at module level (#17559) - [syntax-errors] Detect single starred expression assignment
x = *y(#17624)
Bug fixes
-
`flake8-pyi` -
`flake8-use-pathlib` -
`flake8-use-pathlib` -
`flake8-use-pathlib` -
`flake8-use-pathlib` -
`pycodestyle` -
`pylint` - [syntax-errors] Make
async-comprehension-in-sync-comprehensionmore specific (#17460)
Configuration
- Add option to disable
typing_extensionsimports (#17611)
Documentation
- Fix example syntax for the
lint.pydocstyle.ignore-var-parametersoption (#17740) - Add fix safety sections (
ASYNC116,FLY002,D200,RUF005,RUF017,RUF027,RUF028,RUF057) (#17497, #17496, #17502, #17484, #17480, #17485, #17722, #17483)
Other changes
- Add Python 3.14 to configuration options (#17647)
- Make syntax error for unparenthesized except tuples version specific to before 3.14 (#17660)
0.11.9
Preview features
- Default to latest supported Python version for version-related syntax errors (#17529)
- Implement deferred annotations for Python 3.14 (#17658)
-
`airflow` -
`airflow` -
`airflow` -
`flake8-bandit` -
`isort` -
`ruff`
Bug fixes
- Fix missing
combinecall forlint.typing-extensionssetting (#17823) -
`flake8-async` -
`pyupgrade` -
`refurb` - [parser] Flag single unparenthesized generator expr with trailing comma in arguments. (#17893)
Documentation
- Add instructions on how to upgrade to a newer Rust version (#17928)
- Update code of conduct email address (#17875)
- Add fix safety sections to
PLC2801,PLR1722, andRUF013(#17825, #17826, #17759) - Add link to
check-typed-exceptionfromS110andS112(#17786)
Other changes
- Allow passing a virtual environment to
ruff analyze graph(#17743)
0.11.10
Preview features
-
`ruff` -
`airflow` -
`airflow` -
`airflow`
Bug fixes
-
`flake8-bugbear` -
`flake8-pie` -
`flake8-simplify` -
`flake8-simplify` -
`flake8-use-pathlib` -
`refurb`
Rule changes
-
`flake8-bandit` -
`flake8-pytest-style` -
`pyupgrade`
CLI
- Disable jemalloc on Android (#18033)
Documentation
- Update Neovim setup docs (#18108)
-
`flake8-simplify` -
`flake8-simplify` -
`pylint` -
`pylint` -
`pylint` -
`pylint` -
`ruff` -
`ruff`
0.11.11
Preview features
-
`airflow` -
`airflow` -
`airflow` -
`flake8-simplify`
Bug fixes
- Fix inconsistent formatting of match-case on
[]and_(#18147) -
`pylint`
CLI
- Add full option name in formatter warning (#18217)
Documentation
- Fix rendering of admonition in docs (#18163)
-
`flake8-print` -
`flake8-simplify` -
`pylint`
0.11.12
Preview features
-
`airflow` -
`pylint` -
`pyupgrade` -
`flake8-use-pathlib`
Bug fixes
-
`flake8-bugbear` -
`flake8-async` -
`refurb`
Rule changes
-
`flake8-implicit-str-concat` -
`pycodestyle` -
`flake8-2020` -
`pyupgrade`
Documentation
- Simplify rules table to improve readability (#18297)
- Update editor integrations link in README (#17977)
-
`flake8-bugbear`
0.11.13
Preview features
-
`airflow` -
`refurb` -
`refurb`
Bug fixes
-
`perflint` -
`pyupgrade` -
`pyupgrade`
Rule changes
-
`fastapi`
Documentation
- Update editor setup docs for Neovim and Vim (#18324)
Other changes
- Support Python 3.14 template strings (t-strings) in formatter and parser (#17851)