Black 26.5.0

26.5.0
Added 3
  • Support for unpacking in comprehensions (PEP 798) and lazy imports (PEP 810), new syntactic features in Python 3.15
  • Python 3.15 support
  • Add `SourceASTParseError` to distinguish source parse failures from internal safety errors
Changed 3
  • Improve heuristics around blank lines before, within and after groups of same-name decorated functions (such as `@overload` groups) in `.pyi` stub files
  • Improve parse error readability by showing multi-line output with an error pointer
  • Return HTTP 400 (Bad Request) for source parse failures instead of HTTP 500 in Blackd, keeping HTTP 500 only for genuine internal safety errors
Fixed 5
  • Fix `# fmt: skip` being ignored in nested `if` expressions with parenthesized `in` clauses
  • Fix crash when an f-string follows a `# fmt: off` comment inside brackets
  • Preserve multiline compound statement headers when `# fmt: skip` is placed on the colon line
  • Fix blank lines being removed between a function and a decorated class in `.pyi` stub files
  • Prevent string merger from creating unsplittable long lines when a pragma comment (e.g. `# type: ignore`) follows the closing bracket
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: skip being ignored in nested if expressions with parenthesized in clauses (#4903)
  • Add syntactic support for Python 3.15 (#5048)
  • Fix crash when an f-string follows a # fmt: off comment inside brackets (#5097)
  • Preserve multiline compound statement headers when # fmt: skip is 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 @overload groups) in .pyi stub files (#5021)
  • Fix blank lines being removed between a function and a decorated class in .pyi stub 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 SourceASTParseError to 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)
Documentation
  • Use "Version X.Y.Z" headings in changelog for stable permalink anchors on ReadTheDocs (#5063)
  • Note in the editor integrations that the SublimeText sublack plugin is archived and unmaintained (#5082)
View original

Upgraded? How did it go?

Discussion