Highlights
This release introduces the new 2025 stable style (#4558), stabilizing
the following changes:
- Normalize casing of Unicode escape characters in strings to lowercase (#2916)
- Fix inconsistencies in whether certain strings are detected as docstrings (#4095)
- Consistently add trailing commas to typed function parameters (#4164)
- Remove redundant parentheses in if guards for case blocks (#4214)
- Add parentheses to if clauses in case blocks when the line is too long (#4269)
- Whitespace before
# fmt: skip
comments is no longer normalized (#4146) - Fix line length computation for certain expressions that involve the power operator (#4154)
- Check if there is a newline before the terminating quotes of a docstring (#4185)
- Fix type annotation spacing between
*
and more complex type variable tuple (#4440)
The following changes were not in any previous release:
- Remove parentheses around sole list items (#4312)
- Generic function definitions are now formatted more elegantly: parameters are
split over multiple lines first instead of type parameter definitions (#4553)
Stable style
- Fix formatting cells in IPython notebooks with magic methods and starting or trailing
empty lines (#4484) - Fix crash when formatting
with
statements containing tuple generators/unpacking
(#4538)
Preview style
- Fix/remove string merging changing f-string quotes on f-strings with internal quotes
(#4498) - Collapse multiple empty lines after an import into one (#4489)
- Prevent
string_processing
andwrap_long_dict_values_in_parens
from removing
parentheses around long dictionary values (#4377) - Move
wrap_long_dict_values_in_parens
from the unstable to preview style (#4561)
Packaging
Performance
- Speed up the
is_fstring_start
function in Black's tokenizer (#4541)
Integrations
- If using stdin with
--stdin-filename
set to a force excluded path, stdin won't be
formatted. (#4539)