black v26.5.1 Release Notes
Release Date: 2026-05-18 // 24 days ago-
💅 Stable style
- 🛠 Fix unstable formatting of annotated assignments whose subscript annotation contains
an inline comment (e.g.x: list[# pyright: ignore[...]) (#5130) - Preserve inline comments (including
# type: ignore) immediately before a
# fmt: skipline, avoiding AST equivalence failures (#5139)
Packaging
- Correct the version in the published executables (#5137)
📚 Documentation
- ➕ Add Neovim integration guide covering conform.nvim, ALE, and simple command approaches
(#5124)
- 🛠 Fix unstable formatting of annotated assignments whose subscript annotation contains
Previous changes from v26.5.0
-
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)
📚 Documentation
- ➕ Add support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),