This release provides a preview of Black's 2023 stable style. Black's default formatting style includes the following changes:
Enforce empty lines before classes and functions with sticky leading comments
(#3302) (22.12.0)
Reformat empty and whitespace-only files as either an empty file (if no newline is
present) or as a single newline character (if a newline is present) (#3348)
(22.12.0)
Implicitly concatenated strings used as function args are now wrapped inside
parentheses (#3307) (22.12.0)
Correctly handle trailing commas that are inside a line's leading non-nested parens
(#3370) (22.12.0)
--skip-string-normalization / -S now prevents docstring prefixes from being
normalized as expected (#3168) (since 22.8.0)
When using --skip-magic-trailing-comma or -C, trailing commas are stripped from
subscript expressions with more than 1 element (#3209) (22.8.0)
Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside
parentheses (#3162) (22.8.0)
Fix a string merging/split issue when a comment is present in the middle of
implicitly concatenated strings on its own line (#3227) (22.8.0)
Docstring quotes are no longer moved if it would violate the line length limit
(#3044, #3430) (22.6.0)
Parentheses around return annotations are now managed (#2990) (22.6.0)
Remove unnecessary parentheses around awaited objects (#2991) (22.6.0)
Remove unnecessary parentheses in with statements (#2926) (22.6.0)
Remove trailing newlines after code block open (#3035) (22.6.0)
Code cell separators #%% are now standardised to # %% (#2919) (22.3.0)
Remove unnecessary parentheses from except statements (#2939) (22.3.0)
Remove unnecessary parentheses from tuple unpacking in for loops (#2945) (22.3.0)
Avoid magic-trailing-comma in single-element subscripts (#2942) (22.3.0)
Please try it out and give feedback here: psf/black#3407
A stable 23.1.0 release will follow in January 2023.
22.12.0
Preview style
Enforce empty lines before classes and functions with sticky leading comments (#3302)
Reformat empty and whitespace-only files as either an empty file (if no newline is
present) or as a single newline character (if a newline is present) (#3348)
Implicitly concatenated strings used as function args are now wrapped inside
parentheses (#3307)
Correctly handle trailing commas that are inside a line's leading non-nested parens
(#3370)
Fix a crash when a colon line is marked between # fmt: off and # fmt: on (#3439)
Preview style
Add parentheses around if-else expressions (#2278)
Improve the performance on large expressions that contain many strings (#3467)
Fix a crash in preview style with assert + parenthesized string (#3415)
Fix crashes in preview style with walrus operators used in function return annotations
and except clauses (#3423)
Fix a crash in preview advanced string processing where mixed implicitly concatenated
regular and f-strings start with an empty span (#3463)
Fix a crash in preview advanced string processing where a standalone comment is placed
before a dict's value (#3469)
Fix an issue where extra empty lines are added when a decorator has # fmt: skip
applied or there is a standalone comment between decorators (#3470)
Do not put the closing quotes in a docstring on a separate line, even if the line is
too long (#3430)
Long values in dict literals are now wrapped in parentheses; correspondingly
unnecessary parentheses around short values in dict literals are now removed; long
string lambda values are now wrapped in parentheses (#3440)
Exclude string type annotations from improved string processing; fix crash when the
return type annotation is stringified and spans across multiple lines (#3462)
Configuration
Packaging
Upgrade mypyc from 0.971 to 0.991 so mypycified Black can be built on armv7
(#3380)
Drop specific support for the tomli requirement on 3.11 alpha releases, working
around a bug that would cause the requirement not to be installed on any non-final
Python releases (#3448)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps black from 20.8b1 to 23.1a1.
Release notes
Sourced from black's releases.
... (truncated)
Changelog
Sourced from black's changelog.
... (truncated)
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)