All Versions
38
Latest Version
Avg Release Cycle
82 days
Latest Release
-

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 of tomli (#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 and async for statements, e.g for item in *items_1, *items_2: pass (#2879).
  • 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 and yield 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() or case() 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 to 8.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, like match a, b: or match a, *b: (#2639) (#2659)
    • ๐Ÿ›  Fix match/case statements that contain match/case soft keywords multiple times, like match 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 to platformdirs (#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 overriding default_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)