All Versions
38
Latest Version
Avg Release Cycle
82 days
Latest Release
-
Changelog History
Page 1
Changelog History
Page 1
-
v22.3.0 Changes
๐ Preview style
- Code cell separators
#%%
are now standardised to# %%
(#2919) - โ Remove unnecessary parentheses from
except
statements (#2939) - โ Remove unnecessary parentheses from tuple unpacking in
for
loops (#2945) - Avoid magic-trailing-comma in single-element subscripts (#2942)
๐ง Configuration
- ๐ฆ Do not format
__pypackages__
directories by default (#2836) - โ Add support for specifying stable version with
--required-version
(#2832). - Avoid crashing when the user has no homedir (#2814)
- Avoid crashing when md5 is not available (#2905)
- ๐ Fix handling of directory junctions on Windows (#2904)
๐ Documentation
- ๐ Update pylint config documentation (#2931)
Integrations
- ๐ Move test to disable plugin in Vim/Neovim, which speeds up loading (#2896)
Output
- In verbose, mode, log when Black is using user-level config (#2861)
Packaging
- ๐ Fix Black to work with Click 8.1.0 (#2966)
- On Python 3.11 and newer, use the standard library's
tomllib
instead oftomli
(#2903) - ๐
black-primer
, the deprecated internal devtool, has been removed and copied to a separate repository (#2924)
๐ Parser
- ๐ Black can now parse starred expressions in the target of
for
andasync for
statements, e.gfor item in *items_1, *items_2: pass
(#2879).
- Code cell separators
-
v22.1.0 Changes
At long last, Black is no longer a beta product! This is the first non-beta release ๐ and the first release covered by our new stability policy.
Highlights
- โ Remove Python 2 support (#2740)
- Introduce the
--preview
flag (#2752)
๐ Style
- ๐ Deprecate
--experimental-string-processing
and move the functionality under--preview
(#2789) - For stubs, one blank line between class attributes and methods is now kept if there's at least one pre-existing blank line (#2736)
- Black now normalizes string prefix order (#2297)
- โ Remove spaces around power operators if both operands are simple (#2726)
- โช Work around bug that causes unstable formatting in some cases in the presence of the magic trailing comma (#2807)
- ๐ Use parentheses for attribute access on decimal float and int literals (#2799)
- Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex literals (#2799)
- Treat blank lines in stubs the same inside top-level
if
statements (#2820) - ๐ Fix unstable formatting with semicolons and arithmetic expressions (#2817)
- ๐ Fix unstable formatting around magic trailing comma (#2572)
๐ Parser
- ๐ Fix mapping cases that contain as-expressions, like
case {"key": 1 | 2 as password}
(#2686) - ๐ Fix cases that contain multiple top-level as-expressions, like
case 1 as a, 2 as b
(#2716) - ๐ Fix call patterns that contain as-expressions with keyword arguments, like
case Foo(bar=baz as quux)
(#2749) - Tuple unpacking on
return
andyield
constructs now implies 3.8+ (#2700) - Unparenthesized tuples on annotated assignments (e.g
values: Tuple[int, ...] = 1, 2, 3
) now implies 3.8+ (#2708) - ๐ Fix handling of standalone
match()
orcase()
when there is a trailing newline or a comment inside of the parentheses. (#2760) from __future__ import annotations
statement now implies Python 3.7+ (#2690)
๐ Performance
- ๐ Speed-up the new backtracking parser about 4X in general (enabled when
--target-version
is set to 3.10 and higher). (#2728) - Black is now compiled with mypyc for an overall 2x speed-up. 64-bit Windows, MacOS, and Linux (not including musl) are supported. (#1009, #2431)
๐ง Configuration
- Do not accept bare carriage return line endings in pyproject.toml (#2408)
- โ Add configuration option (
python-cell-magics
) to format cells with custom magics in Jupyter Notebooks (#2744) - ๐ Allow setting custom cache directory on all platforms with environment variable
BLACK_CACHE_DIR
(#2739). - 0๏ธโฃ Enable Python 3.10+ by default, without any extra need to specify
--target-version=py310
. (#2758) - ๐ Make passing
SRC
or--code
mandatory and mutually exclusive (#2804)
Output
- ๐ Improve error message for invalid regular expression (#2678)
- ๐ Improve error message when parsing fails during AST safety check by embedding the underlying SyntaxError (#2693)
- No longer color diff headers white as it's unreadable in light themed terminals (#2691)
- Text coloring added in the final statistics (#2712)
- Verbose mode also now describes how a project root was discovered and which paths will be formatted. (#2526)
Packaging
- ๐ All upper version bounds on dependencies have been removed (#2718)
typing-extensions
is no longer a required dependency in Python 3.10+ (#2772)- Set
click
lower bound to8.0.0
(#2791)
Integrations
- โก๏ธ Update GitHub action to support containerized runs (#2748)
๐ Documentation
- ๐ Change protocol in pip installation instructions to
https://
(#2761) - ๐ Change HTML theme to Furo primarily for its responsive design and mobile support (#2793)
- ๐ Deprecate the
black-primer
tool (#2809) - ๐ Document Python support policy (#2819)
-
v21.12.b0 Changes
Black
- ๐ Fix determination of f-string expression spans (#2654)
- ๐ Fix bad formatting of error messages about EOF in multi-line statements (#2343)
- Functions and classes in blocks now have more consistent surrounding spacing (#2472)
from __future__ import annotations
statement now implies Python 3.7+ (#2690)
๐ Jupyter Notebook support
- Cell magics are now only processed if they are known Python cell magics. Earlier, all
cell magics were tokenized, leading to possible indentation errors e.g. with
%%writefile
. (#2630) - ๐ Fix assignment to environment variables in Jupyter Notebooks (#2642)
๐ Python 3.10 support
- Point users to using
--target-version py310
if we detect 3.10-only syntax (#2668) - ๐ Fix
match
statements with open sequence subjects, likematch a, b:
ormatch a, *b:
(#2639) (#2659) - ๐ Fix
match
/case
statements that containmatch
/case
soft keywords multiple times, likematch re.match()
(#2661) - ๐ Fix
case
statements with an inline body (#2665) - ๐ Fix styling of starred expressions inside
match
subject (#2667) - ๐ Fix parser error location on invalid syntax in a
match
statement (#2649) - ๐ Fix Python 3.10 support on platforms without ProcessPoolExecutor (#2631)
- ๐ Improve parsing performance on code that uses
match
under--target-version py310
up to ~50% (#2670)
Packaging
- โ Remove dependency on
regex
(#2644) (#2663)
-
v21.11.b1 Changes
Black
- โฌ๏ธ Bumped regex version minimum to 2021.4.4 to fix Pattern class usage (#2621)
-
v21.11.b0 Changes
Black
- ๐ Warn about Python 2 deprecation in more cases by improving Python 2 only syntax detection (#2592)
- โ Add experimental PyPy support (#2559)
- โ Add partial support for the match statement. As it's experimental, it's only enabled
when
--target-version py310
is explicitly specified (#2586) - โ Add support for parenthesized with (#2586)
- ๐ Declare support for Python 3.10 for running Black (#2562)
Integrations
- ๐ Fixed vim plugin with Python 3.10 by removing deprecated distutils import (#2610)
- The vim plugin now parses
skip_magic_trailing_comma
from pyproject.toml (#2613)
-
v21.10.b0 Changes
Black
- ๐ Document stability policy, that will apply for non-beta releases (#2529)
- โ Add new
--workers
parameter (#2514) - ๐ Fixed feature detection for positional-only arguments in lambdas (#2532)
- โฌ๏ธ Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (#2519)
- ๐ Fixed a Python 3.10 compatibility issue where the loop argument was still being passed even though it has been removed (#2580)
- ๐ Deprecate Python 2 formatting support (#2523)
Blackd
- โ Remove dependency on aiohttp-cors (#2500)
- โฌ๏ธ Bump required aiohttp version to 3.7.4 (#2509)
Black-Primer
- โ Add primer support for --projects (#2555)
- ๐จ Print primer summary after individual failures (#2570)
Integrations
- ๐ Allow to pass
target_version
in the vim plugin (#1319) - ๐ Install build tools in docker file and use multi-stage build to keep the image size down (#2582)
-
v21.9.b0 Changes
Packaging
- ๐ Fix missing modules in self-contained binaries (#2466)
- ๐ Fix missing toml extra used during installation (#2475)
-
v21.8.b0 Changes
Black
- โ Add support for formatting Jupyter Notebook files (#2357)
- ๐ Move from
appdirs
dependency toplatformdirs
(#2375) - Present a more user-friendly error if .gitignore is invalid (#2414)
- The failsafe for accidentally added backslashes in f-string expressions has been hardened to handle more edge cases during quote normalization (#2437)
- Avoid changing a function return type annotation's type to a tuple by adding a trailing comma (#2384)
- ๐ Parsing support has been added for unparenthesized walruses in set literals, set comprehensions, and indices (#2447).
- ๐ Pin
setuptools-scm
build-time dependency version (#2457) - Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10 (#2460)
Blackd
- Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that scan installed packages (#2440)
Integrations
- The provided pre-commit hooks no longer specify
language_version
to avoid overridingdefault_language_version
(#2430)
-
v21.7.b0 Changes
Black
- ๐ง Configuration files using TOML features higher than spec v0.5.0 are now supported (#2301)
- โ Add primer support and test for code piped into black via STDIN (#2315)
- Fix internal error when
FORCE_OPTIONAL_PARENTHESES
feature is enabled (#2332) - Accept empty stdin (#2346)
- ๐ Provide a more useful error when parsing fails during AST safety checks (#2304)
๐ณ Docker
- โ Add new
latest_release
tag automation to follow latest black release on docker images (#2374)
Integrations
- ๐ The vim plugin now searches upwards from the directory containing the current buffer instead of the current working directory for pyproject.toml. (#1871)
- ๐ The vim plugin now reads the correct string normalization option in pyproject.toml (#1869)
- ๐ The vim plugin no longer crashes Black when there's boolean values in pyproject.toml (#1869)
-
v21.6.b0 Changes
Black
- ๐ Fix failure caused by
fmt: skip
and indentation (#2281) - Account for += assignment when deciding whether to split string (#2312)
- Correct max string length calculation when there are string operators (#2292)
- ๐ Fixed option usage when using the
--code
flag (#2259) - Do not call
uvloop.install()
when Black is used as a library (#2303) - โ Added
--required-version
option to require a specific version to be running (#2300) - ๐ Fix incorrect custom breakpoint indices when string group contains fake f-strings (#2311)
- ๐ Fix regression where
R
prefixes would be lowercased for docstrings (#2285) - ๐ Fix handling of named escapes (
\N{...}
) when--experimental-string-processing
is used (#2319)
Integrations
- ๐ The vim plugin now searches upwards from the directory containing the current buffer instead of the current working directory for pyproject.toml. (#1871)
Integrations
- ๐ The vim plugin now reads the correct string normalization option in pyproject.toml (#1869)
- ๐ The vim plugin no longer crashes Black when there's boolean values in pyproject.toml (#1869)
- ๐ Fix failure caused by