pypi black 22.8.0

latest releases: 24.10.0, 24.8.0, 24.4.2...
2 years ago

Highlights

  • Python 3.11 is now supported, except for blackd as aiohttp does not support 3.11 as of publishing (#3234)
  • This is the last release that supports running Black on Python 3.6 (formatting 3.6 code will continue to be supported until further notice)
  • Reword the stability policy to say that we may, in rare cases, make changes that affect code that was not previously formatted by Black (#3155)

Stable style

  • Fix an infinite loop when using # fmt: on/off in the middle of an expression or code block (#3158)
  • Fix incorrect handling of # fmt: skip on colon (:) lines (#3148)
  • Comments are no longer deleted when a line had spaces removed around power operators (#2874)

Preview style

  • Single-character closing docstring quotes are no longer moved to their own line as this is invalid. This was a bug introduced in version 22.6.0. (#3166)
  • --skip-string-normalization / -S now prevents docstring prefixes from being normalized as expected (#3168)
  • When using --skip-magic-trailing-comma or -C, trailing commas are stripped from subscript expressions with more than 1 element (#3209)
  • Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside parentheses (#3162)
  • Fix a string merging/split issue when a comment is present in the middle of implicitly concatenated strings on its own line (#3227)

Blackd

  • blackd now supports enabling the preview style via the X-Preview header (#3217)

Configuration

  • Black now uses the presence of debug f-strings to detect target version (#3215)
  • Fix misdetection of project root and verbose logging of sources in cases involving --stdin-filename (#3216)
  • Immediate .gitignore files in source directories given on the command line are now also respected, previously only .gitignore files in the project root and automatically discovered directories were respected (#3237)

Documentation

  • Recommend using BlackConnect in IntelliJ IDEs (#3150)

Integrations

  • Vim plugin: prefix messages with Black: so it's clear they come from Black (#3194)
  • Docker: changed to a /opt/venv installation + added to PATH to be available to non-root users (#3202)

Output

  • Change from deprecated asyncio.get_event_loop() to create our event loop which removes DeprecationWarning (#3164)
  • Remove logging from internal blib2to3 library since it regularly emits error logs about failed caching that can and should be ignored (#3193)

Parser

  • Type comments are now included in the AST equivalence check consistently so accidental deletion raises an error. Though type comments can't be tracked when running on PyPy 3.7 due to standard library limitations. (#2874)

Performance

  • Reduce Black's startup time when formatting a single file by 15-30% (#3211)

Full Changelog: 22.6.0...22.8.0


Thank you!

  • @hauntsaninja for modernizing our type annotations and fixing a few bugs too
  • @yilei for fixing our # fmt: off/on/skip code and continuing to improve the preview style, notably the (still) experimental string processing
  • The many community contributions to the non-core parts of the project:
    • @tobast for improving the QOL of the Vim plugin by simply appending Black: to most emitted messages
    • @Mogost for adding preview style support to blackd (finally 🎉)
    • @n-borges for improving the Docker image
    • @ionite34 for removing a hack in the official Black GitHub Action's start up code
  • @cooperlees for adding support for Python 3.11 and addressing DeprecationWarnings
  • @graingert for adding PyPy 3.8 to our CI matrix so we know Black works in even more places
  • @martinResearch for contributing a simple fix for such a silly and stupid .gitignore bug that we should've caught many moons ago
  • @fabioz for contributing the original patch that reduced the start up overhead when formatting a single file by 15-30% (!)

... and everyone else who contributed documentation, tests, or other improvements to the Black project!

Finally congratulations to the first time contributors this time around!

Don't miss a new black release

NewReleases is sending notifications on new releases.