# Black 26.5.0 - Product: Black (https://whatsnew.fyi/product/black) - Vendor: Python Software Foundation - Date: 2026-05-16 - Version: 26.5.0 - Original notes: https://github.com/psf/black/releases/tag/26.5.0 - Permalink: https://whatsnew.fyi/product/black/releases/26.5.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Support for unpacking in comprehensions (PEP 798) and lazy imports (PEP 810), new syntactic features in Python 3.15 - **added** — Python 3.15 support - **fixed** — Fix `# fmt: skip` being ignored in nested `if` expressions with parenthesized `in` clauses - **fixed** — Fix crash when an f-string follows a `# fmt: off` comment inside brackets - **fixed** — Preserve multiline compound statement headers when `# fmt: skip` is placed on the colon line - **changed** — Improve heuristics around blank lines before, within and after groups of same-name decorated functions (such as `@overload` groups) in `.pyi` stub files - **fixed** — Fix blank lines being removed between a function and a decorated class in `.pyi` stub files - **fixed** — Prevent string merger from creating unsplittable long lines when a pragma comment (e.g. `# type: ignore`) follows the closing bracket - **changed** — Improve parse error readability by showing multi-line output with an error pointer - **added** — Add `SourceASTParseError` to distinguish source parse failures from internal safety errors - **changed** — Return HTTP 400 (Bad Request) for source parse failures instead of HTTP 500 in Blackd, keeping HTTP 500 only for genuine internal safety errors ###### 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)