Highlights
- Add support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),
both new syntactic features in Python 3.15 (#5048) - Python 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so
performance may be slower than on existing Python versions. Wheels will be provided
once Python 3.15 is later in its release cycle. (#5127)
Stable style
- Fix
# fmt: skipbeing ignored in nestedifexpressions with parenthesizedin
clauses (#4903) - Add syntactic support for Python 3.15 (#5048)
- Fix crash when an f-string follows a
# fmt: offcomment inside brackets (#5097) - Preserve multiline compound statement headers when
# fmt: skipis placed on the
colon line (#5117)
Preview style
- Improve heuristics around whether blank lines should appear before, within and after
groups of same-name decorated functions (such as@overloadgroups) in.pyistub
files (#5021) - Fix blank lines being removed between a function and a decorated class in
.pyistub
files (#5092) - Prevent string merger from creating unsplittable long lines when a pragma comment
(e.g.# type: ignore) follows the closing bracket (#5096)
Packaging
- Run CI on 3.15 (#5127)
Output
- Improve parse error readability by showing multi-line output with an error pointer.
(#5068) - Add
SourceASTParseErrorto distinguish source parse failures from internal safety
errors, improving error reporting when Black's lenient parser accepts input that
ast.parse()rejects (#5080)
Blackd
- Return HTTP 400 (Bad Request) for source parse failures instead of HTTP 500, keeping
HTTP 500 only for genuine internal safety errors (#5080)
Integrations
- Added documentation for doctest formatting tools and updated the integrations index to
match (#4916)