Python 3.15 Support
Author: ntBreCreated Aug 31, 2026Updated Sep 16, 2026
Labelstrackingpython315
This is a tracking issue for Python 3.15 support.
PEP 810: Lazy imports
UP026needslazyimport support in libCST for fixes to work
PEP 798: Unpacking in comprehensions
- https://github.com/astral-sh/ruff/pull/25104
-
C411,C418, andC419diagnose the new unpacking comprehensions but cannot autofix them because the LibCST-based fixers do not support the syntax yet
Unicode 17
Parser
- Unary plus is now accepted in match literal patterns, mirroring the existing support for unary minus. Our existing parse error should become a version-related syntax error.
Standard library updates
Other rule changes
-
RUF039andRUF055should know aboutre.prefixmatch -
ImportCycleErroris incorrectly classified as a 3.13 builtin in PLW0133 - Ruff should recognize
sliceandfrozendictas generic types so their quoted type arguments are analyzed correctly. - Deprecated
typing.no_type_check_decorator()has been removed and should no longer be recommended byUP035 -
__cached__is no longer initialized in Python 3.15 and should only be included in Ruff's magic globals for earlier target versions. -
typing.ByteStringandcollections.abc.ByteStringhave both been removed from their respective__all__s. It probably makes sense to drop thetyping.ByteString->collections.abc.ByteStringrecommendation fromUP035as well (but keep thecollections.ByteString->collections.abc.ByteStringversion, which is still helpful on older versions) - Ruff should recognize quoted types in
TypeForm[...]andTypeForm(...), avoiding falseF401diagnostics. -
TypeVarTuplenow acceptsbound, butUP040,UP046, andUP047generate invalid syntax such as[*Ts: int]. These conversions should be skipped while the bound's typing semantics remain unspecified. -
RUF064should check the newparent_modeargument toos.makedirsandPath.mkdir.PTH103should preserve it when convertingos.makedirscalls toPath.mkdir.- https://github.com/astral-sh/ruff/pull/28528
- Python documentation:
os.makedirsandPath.mkdir - Current code: permission argument detection and
os.makedirsfix validation
-
UP013should preserve the newTypedDictclosedandextra_itemsarguments when converting to class syntax. Quoted types in class-basedextra_itemsarguments should also count as uses of their imports, avoiding falseF401diagnostics.
Rule stabilizations
- lazy-import-mismatch (TID254)
- lazy-import-immediately-resolved (TID255)
- os-path-commonprefix (RUF071)
Misc
- https://github.com/conda-forge/ruff-feedstock/pull/363
- Bump the language classifier in pyproject.toml
- Update default and latest Python versions
- 3.10 is reaching EOL
- See https://github.com/astral-sh/ruff/pull/20725 for last year's bump
Potential lint rules
These shouldn't block the release, but could be interesting.
https://github.com/astral-sh/ruff/issues/21305
This primarily tracks additional lints now, with the remaining adjustment to existing rules (point 2) tracked by https://github.com/astral-sh/ruff/issues/25181.
Source: astral-sh/ruff