Note: The pre-commit manager in Renovate is not supported by the pre-commit maintainers or community. Please do not report any problems there, instead create a Discussion in the Renovate repository if you have any questions.
Introduces the 2026 stable style (#4892), stabilizing the following changes:
always_one_newline_after_import: Always force one blank line after import
statements, except when the line after the import is a comment or an import statement
(#4489)
fix_fmt_skip_in_one_liners: Fix # fmt: skip behavior on one-liner declarations,
such as def foo(): return "mock" # fmt: skip, where previously the declaration would
have been incorrectly collapsed (#4800)
fix_module_docstring_detection: Fix module docstrings being treated as normal
strings if preceded by comments (#4764)
fix_type_expansion_split: Fix type expansions split in generic functions (#4777)
multiline_string_handling: Make expressions involving multiline strings more compact
(#1879)
normalize_cr_newlines: Add \r style newlines to the potential newlines to
normalize file newlines both from and to (#4710)
remove_parens_around_except_types: Remove parentheses around multiple exception
types in except and except* without as (#4720)
remove_parens_from_assignment_lhs: Remove unnecessary parentheses from the left-hand
side of assignments while preserving magic trailing commas and intentional multiline
formatting (#4865)
standardize_type_comments: Format type comments which have zero or more spaces
between # and type: or between type: and value to # type: (value) (#4645)
The following change was not in any previous stable release:
Regenerated the _width_table.py and added tests for the Khmer language (#4253)
This release alo bumps pathspec to v1 and fixes inconsistencies with Git's .gitignore logic (#4958). Now, files will be ignored if a pattern matches them, even
if the parent directory is directly unignored. For example, Black would previously
format exclude/not_this/foo.py with this .gitignore:
exclude/
!exclude/not_this/
Now, exclude/not_this/foo.py will remain ignored. To ensure exclude/not_this/ and
all of it's children are included in formatting (and in Git), use this .gitignore:
*/exclude/*
!*/exclude/not_this/
This new behavior matches Git. The leading */ are only necessary if you wish to ignore
matching subdirectories (like the previous behavior did), and not just matching root
directories.
Output
Explicitly shutdown the multiprocessing manager when run in diff mode too (#4952)
Integrations
Upgraded PyPI upload workflow to use Trusted Publishing (#4611)
Configuration
📅Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [psf/black](https://github.com/psf/black) | repository | major | `25.12.0` → `26.1.0` |
Note: The `pre-commit` manager in Renovate is not supported by the `pre-commit` maintainers or community. Please do not report any problems there, instead [create a Discussion in the Renovate repository](https://github.com/renovatebot/renovate/discussions/new) if you have any questions.
---
### Release Notes
<details>
<summary>psf/black (psf/black)</summary>
### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)
[Compare Source](https://github.com/psf/black/compare/25.12.0...26.1a1)
##### Highlights
Introduces the 2026 stable style ([#​4892](https://github.com/psf/black/issues/4892)), stabilizing the following changes:
- `always_one_newline_after_import`: Always force one blank line after import
statements, except when the line after the import is a comment or an import statement
([#​4489](https://github.com/psf/black/issues/4489))
- `fix_fmt_skip_in_one_liners`: Fix `# fmt: skip` behavior on one-liner declarations,
such as `def foo(): return "mock" # fmt: skip`, where previously the declaration would
have been incorrectly collapsed ([#​4800](https://github.com/psf/black/issues/4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
strings if preceded by comments ([#​4764](https://github.com/psf/black/issues/4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#​4777](https://github.com/psf/black/issues/4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
([#​1879](https://github.com/psf/black/issues/1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
normalize file newlines both from and to ([#​4710](https://github.com/psf/black/issues/4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
types in `except` and `except*` without `as` ([#​4720](https://github.com/psf/black/issues/4720))
- `remove_parens_from_assignment_lhs`: Remove unnecessary parentheses from the left-hand
side of assignments while preserving magic trailing commas and intentional multiline
formatting ([#​4865](https://github.com/psf/black/issues/4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
between `#` and `type:` or between `type:` and value to `# type: (value)` ([#​4645](https://github.com/psf/black/issues/4645))
The following change was not in any previous stable release:
- Regenerated the `_width_table.py` and added tests for the Khmer language ([#​4253](https://github.com/psf/black/issues/4253))
This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#​4958](https://github.com/psf/black/issues/4958)). Now, files will be ignored if a pattern matches them, even
if the parent directory is directly unignored. For example, Black would previously
format `exclude/not_this/foo.py` with this `.gitignore`:
```
exclude/
!exclude/not_this/
```
Now, `exclude/not_this/foo.py` will remain ignored. To ensure `exclude/not_this/` and
all of it's children are included in formatting (and in Git), use this `.gitignore`:
```
*/exclude/*
!*/exclude/not_this/
```
This new behavior matches Git. The leading `*/` are only necessary if you wish to ignore
matching subdirectories (like the previous behavior did), and not just matching root
directories.
##### Output
- Explicitly shutdown the multiprocessing manager when run in diff mode too ([#​4952](https://github.com/psf/black/issues/4952))
##### Integrations
- Upgraded PyPI upload workflow to use Trusted Publishing ([#​4611](https://github.com/psf/black/issues/4611))
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4wIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiQXV0b21hdGlvbiIsImNob3JlIiwicHJlLWNvbW1pdCJdfQ==-->
Here are some key observations to aid the review process:
⏱️Estimated effort to review: 1 🔵⚪⚪⚪⚪
🧪No relevant tests
🔒No security concerns identified
⚡No major issues detected
## PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
<table>
<tr><td>⏱️ <strong>Estimated effort to review</strong>: 1 🔵⚪⚪⚪⚪</td></tr>
<tr><td>🧪 <strong>No relevant tests</strong></td></tr>
<tr><td>🔒 <strong>No security concerns identified</strong></td></tr>
<tr><td>⚡ <strong>No major issues detected</strong></td></tr>
</table>
Here are some key observations to aid the review process:
⏱️Estimated effort to review: 1 🔵⚪⚪⚪⚪
🧪No relevant tests
🔒No security concerns identified
⚡No major issues detected
## PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
<table>
<tr><td>⏱️ <strong>Estimated effort to review</strong>: 1 🔵⚪⚪⚪⚪</td></tr>
<tr><td>🧪 <strong>No relevant tests</strong></td></tr>
<tr><td>🔒 <strong>No security concerns identified</strong></td></tr>
<tr><td>⚡ <strong>No major issues detected</strong></td></tr>
</table>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
25.12.0→26.1.0Note: The
pre-commitmanager in Renovate is not supported by thepre-commitmaintainers or community. Please do not report any problems there, instead create a Discussion in the Renovate repository if you have any questions.Release Notes
psf/black (psf/black)
v26.1.0Compare Source
Highlights
Introduces the 2026 stable style (#4892), stabilizing the following changes:
always_one_newline_after_import: Always force one blank line after importstatements, except when the line after the import is a comment or an import statement
(#4489)
fix_fmt_skip_in_one_liners: Fix# fmt: skipbehavior on one-liner declarations,such as
def foo(): return "mock" # fmt: skip, where previously the declaration wouldhave been incorrectly collapsed (#4800)
fix_module_docstring_detection: Fix module docstrings being treated as normalstrings if preceded by comments (#4764)
fix_type_expansion_split: Fix type expansions split in generic functions (#4777)multiline_string_handling: Make expressions involving multiline strings more compact(#1879)
normalize_cr_newlines: Add\rstyle newlines to the potential newlines tonormalize file newlines both from and to (#4710)
remove_parens_around_except_types: Remove parentheses around multiple exceptiontypes in
exceptandexcept*withoutas(#4720)remove_parens_from_assignment_lhs: Remove unnecessary parentheses from the left-handside of assignments while preserving magic trailing commas and intentional multiline
formatting (#4865)
standardize_type_comments: Format type comments which have zero or more spacesbetween
#andtype:or betweentype:and value to# type: (value)(#4645)The following change was not in any previous stable release:
_width_table.pyand added tests for the Khmer language (#4253)This release alo bumps
pathspecto v1 and fixes inconsistencies with Git's.gitignorelogic (#4958). Now, files will be ignored if a pattern matches them, evenif the parent directory is directly unignored. For example, Black would previously
format
exclude/not_this/foo.pywith this.gitignore:Now,
exclude/not_this/foo.pywill remain ignored. To ensureexclude/not_this/andall of it's children are included in formatting (and in Git), use this
.gitignore:This new behavior matches Git. The leading
*/are only necessary if you wish to ignorematching subdirectories (like the previous behavior did), and not just matching root
directories.
Output
Integrations
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
Preparing PR description...
PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
17f4a2b575to9b6b44628ePR Reviewer Guide 🔍
Here are some key observations to aid the review process: