All Versions
Latest Version
Avg Release Cycle
82 days
Latest Release

Changelog History
Page 1

  • v21.8.b0 Changes


    • โž• 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 due to it being broken on Python 3.10 (#2460)


    • Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that scan installed packages (#2440)


    • The provided pre-commit hooks no longer specify language_version to avoid overriding default_language_version (#2430)
  • v21.7.b0 Changes


    • ๐Ÿ”ง 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)


    • ๐Ÿ”Œ 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


    • ๐Ÿ›  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)


    • ๐Ÿ”Œ 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.5.b2 Changes


    • ๐Ÿ“„ A space is no longer inserted into empty docstrings (#2249)
    • ๐Ÿ›  Fix handling of .gitignore files containing non-ASCII characters on Windows (#2229)
    • Respect .gitignore files in all levels, not only root/.gitignore file (apply .gitignore rules like git does) (#2225)
    • โช Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227)
    • โž• Add extra uvloop install + import support if in python env (#2258)
    • ๐Ÿ›  Fix --experimental-string-processing crash when matching parens are not found (#2283)
    • ๐Ÿ‘‰ Make sure to split lines that start with a string operator (#2286)
    • ๐Ÿ›  Fix regular expression that black uses to identify f-expressions (#2287)


    • โž• Add a lower bound for the aiohttp-cors dependency. Only 0.4.0 or higher is supported. (#2231)


    • ๐Ÿ‘ The official Black action now supports choosing what version to use, and supports the major 3 OSes. (#1940)


    • ๐Ÿš€ Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline (#2198)
    • ๐Ÿ— Always build binaries with the latest available Python (#2260)

    ๐Ÿ“š Documentation

    • โž• Add discussion of magic comments to FAQ page (#2272)
    • 0๏ธโƒฃ --experimental-string-processing will be enabled by default in the future (#2273)
    • ๐Ÿ›  Fix typos discovered by codespell (#2228)
    • ๐Ÿ›  Fix Vim plugin installation instructions. (#2235)
    • โž• Add new Frequently Asked Questions page (#2247)
    • ๐Ÿ›  Fix encoding + symlink issues preventing proper build on Windows (#2262)
  • v21.5.b1 Changes


    • Refactor src/black/ into many files (#2206)

    ๐Ÿ“š Documentation

    • Replaced all remaining references to the master branch with the main branch. Some additional changes in the source code were also made. (#2210)
    • ๐Ÿ“š Sigificantly reorganized the documentation to make much more sense. Check them out by heading over to the stable docs on RTD. (#2174)
  • v21.5.b0 Changes


    • Set --pyi mode if --stdin-filename ends in .pyi (#2169)
    • Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are being called but with no arguments (#2182)


    • โž• Add --no-diff to black-primer to suppress formatting changes (#2187)
  • v21.4.b2 Changes


    • ๐Ÿ›  Fix crash if the user configuration directory is inaccessible. (#2158)

    • Clarify circumstances in which Black may change the AST (#2159)

    • ๐Ÿ‘ Allow .gitignore rules to be overridden by specifying exclude in pyproject.toml or on the command line. (#2170)


    • 0๏ธโƒฃ Install primer.json (used by black-primer by default) with black. (#2154)
  • v21.4.b1 Changes


    • ๐Ÿ›  Fix crash on docstrings ending with "\ ". (#2142)

    • ๐Ÿ›  Fix crash when atypical whitespace is cleaned out of dostrings (#2120)

    • Reflect the --skip-magic-trailing-comma and --experimental-string-processing flags in the name of the cache file. Without this fix, changes in these flags would not take effect if the cache had already been populated. (#2131)

    • ๐Ÿšš Don't remove necessary parentheses from assignment expression containing assert / return statements. (#2143)


    • โฌ†๏ธ Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling
  • v21.4.b0 Changes


    • ๐Ÿ›  Fixed a rare but annoying formatting instability created by the combination of optional trailing commas inserted by Black and optional parentheses looking at pre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many duplicates. (#2126)

    • ๐Ÿ“„ Black now processes one-line docstrings by stripping leading and trailing spaces, and adding a padding space when needed to break up """". (#1740)

    • Black now cleans up leading non-breaking spaces in comments (#2092)

    • Black now respects --skip-string-normalization when normalizing multiline docstring quotes (#1637)

    • ๐Ÿšš Black no longer removes all empty lines between non-function code and decorators when formatting typing stubs. Now Black enforces a single empty line. (#1646)

    • Black no longer adds an incorrect space after a parenthesized assignment expression in if/while statements (#1655)

    • โž• Added --skip-magic-trailing-comma / -C to avoid using trailing commas as a reason to split lines (#1824)

    • ๐Ÿ›  fixed a crash when PWD=/ on POSIX (#1631)

    • ๐Ÿ›  fixed "I/O operation on closed file" when using --diff (#1664)

    • Prevent coloured diff output being interleaved with multiple files (#1673)

    • โž• Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711)

    • โž• Added parsing support for unparenthesized tuples and yield expressions in annotated assignments (#1835)

    • โž• added --extend-exclude argument (PR #2005)

    • speed up caching by avoiding pathlib (#1950)

    • --diff correctly indicates when a file doesn't end in a newline (#1662)

    • โž• Added --stdin-filename argument to allow stdin to respect --force-exclude rules (#1780)

    • Lines ending with fmt: skip will now be not formatted (#1800)

    • PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher

    • ๐Ÿ‘ PR #2053: Python 2 support is now optional, install with python3 -m pip install black[python2] to maintain support.

    • 0๏ธโƒฃ Exclude venv directory by default (#1683)

    • ๐Ÿ›  Fixed "Black produced code that is not equivalent to the source" when formatting Python 2 docstrings (#2037)


    • Self-contained native Black binaries are now provided for releases via GitHub Releases (#1743)
  • v20.8.b1 Changes

    August 26, 2020


    • explicitly depend on Click 7.1.2 or newer as Black no longer works with versions older than 7.0