Skip to content

Comments

Regenerate _width_table.py & add tests for the Khmer language#4253

Merged
cobaltt7 merged 2 commits intopsf:black26from
KaiSforza:kai/uniwidth
Dec 7, 2025
Merged

Regenerate _width_table.py & add tests for the Khmer language#4253
cobaltt7 merged 2 commits intopsf:black26from
KaiSforza:kai/uniwidth

Conversation

@KaiSforza
Copy link
Contributor

@KaiSforza KaiSforza commented Feb 26, 2024

Description

It looks like this was an issue with the _width_table.py file being out of date in some way.

Closes #4235.

Checklist - did you ...

  • Add an entry in CHANGES.md if necessary?
  • Add / update tests if necessary?
  • Add new / update outdated documentation?

@KaiSforza
Copy link
Contributor Author

@rtb-zla-karma I hope this fixes your issue! Let me know if there's anything else to test here!

(I apologize for the clumsy copy/paste I added in there, I just needed to get a line that was definitely over the limit.)

@github-actions
Copy link

github-actions bot commented Feb 26, 2024

diff-shades results comparing this PR (99917f9) to main (7044b14). The full diff is available in the logs under the "Generate HTML diff report" step.

╭─────────────────────── Summary ────────────────────────╮
│ 1 projects & 2 files changed / 6 changes [+4/-2]       │
│                                                        │
│ ... out of 2 847 107 lines, 13 565 files & 22 projects │
╰────────────────────────────────────────────────────────╯

Differences found.

What is this? | Workflow run | diff-shades documentation

It looks like this was an issue with the `_width_table.py`
file being out of date in some way.

Closes psf#4235.
@hwlodarczyk-rtbh
Copy link

Hi @KaiSforza .

It works for me in my project. black with your changes doesn't report anything where the official/released does.

@cobaltt7
Copy link
Collaborator

This would have to go in the preview style since it changes existing formatting. Not sure the best way to go about it though, since it looks like it'd be a lot of duplicated code. It might be better to just remember to rerun the script before each January release

@KaiSforza
Copy link
Contributor Author

KaiSforza commented Feb 27, 2024

@RedGuy12 I'll see what I can do. Thanks for the input.

Also, this is a bit of a weird bug, since in #3445 it seems like the _width_table.py file was actually generated with a different script than was committed. Originally the script had this if statement:

if width == 1:
    continue

but the final committed version had a different statement:

if width <= 1:
    continue

This is what is really causing the issue. If I hop into the squashed commit (ef6e079) and run the make_width_table.py script I get the same exact diff as this commit for the width table.

$ git status        
HEAD detached at ef6e079
nothing to commit, working tree clean
$ python ./scripts/make_width_table.py
$ git diff --stat
 src/black/_width_table.py | 364 +---------------------------------------------
 1 file changed, 7 insertions(+), 357 deletions(-)
$ git show --oneline --stat kai/uniwidth
46e0a24 (kaictl/kai/uniwidth, kai/uniwidth) Added test for the Khmer language
 CHANGES.md                                         |   2 +
 src/black/_width_table.py                          | 364 +--------------------
 .../preview_long_strings__east_asian_width.py      |  31 ++
 3 files changed, 40 insertions(+), 357 deletions(-)

To me, this kind of says "it's a bug" and points to not putting it in Preview. From what I can see based on the tests, this shouldn't change anything but a few language strings that are already causing issues in black right now.

(check the commits in #3445 and note that the final commit doesn't change the _width_table.py file, but does change the make_width_table.py)

@KaiSforza KaiSforza marked this pull request as draft February 28, 2024 18:00
@KaiSforza
Copy link
Contributor Author

I'm drafting this to do a full rewrite of the unicode character handling. Will probably just push into this same branch to fix it.

@cobaltt7
Copy link
Collaborator

To me, this kind of says "it's a bug" and points to not putting it in Preview. From what I can see based on the tests, this shouldn't change anything but a few language strings that are already causing issues in black right now.

Unfortunately, Black promises that formatting generally won't change throughout the calendar year, and this change wouldn't be an exception. See the Stability Policy for more details.

@KaiSforza
Copy link
Contributor Author

That's fine, I'm honestly not sure what the best solution is for languages with ambiguous or non-standardized typesetting.

@cobaltt7 cobaltt7 changed the base branch from main to black26 December 7, 2025 23:10
@cobaltt7 cobaltt7 changed the title Added test for the Khmer language Regenerate _width_table.py & add tests for the Khmer language Dec 7, 2025
@cobaltt7 cobaltt7 marked this pull request as ready for review December 7, 2025 23:22
@cobaltt7
Copy link
Collaborator

cobaltt7 commented Dec 7, 2025

Merging for Black 2026

@cobaltt7 cobaltt7 merged commit 0e2409f into psf:black26 Dec 7, 2025
16 of 42 checks passed
luketainton pushed a commit to luketainton/repos_epage that referenced this pull request Jan 18, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | `<25.12.1,>=25.12.0` → `<26.1.1,>=26.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/black/26.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/25.12.0/26.1.0?slim=true) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.tainton.uk/repos/epage/pulls/191
Co-authored-by: renovate[bot] <[email protected]>
Co-committed-by: renovate[bot] <[email protected]>
luketainton pushed a commit to luketainton/repos_webexmemebot that referenced this pull request Jan 18, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | `<25.12.1,>=25.12.0` → `<26.1.1,>=26.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/black/26.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/25.12.0/26.1.0?slim=true) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.tainton.uk/repos/webexmemebot/pulls/547
Co-authored-by: renovate[bot] <[email protected]>
Co-committed-by: renovate[bot] <[email protected]>
luketainton pushed a commit to luketainton/repos_roboluke that referenced this pull request Jan 18, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | `<25.12.1,>=25.12.0` → `<26.1.1,>=26.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/black/26.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/25.12.0/26.1.0?slim=true) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.tainton.uk/repos/roboluke/pulls/409
Co-authored-by: renovate[bot] <[email protected]>
Co-committed-by: renovate[bot] <[email protected]>
luketainton pushed a commit to luketainton/repos_pypilot that referenced this pull request Jan 18, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | `<25.12.1,>=25.12.0` → `<26.1.1,>=26.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/black/26.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/25.12.0/26.1.0?slim=true) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.tainton.uk/repos/pypilot/pulls/408
Co-authored-by: renovate[bot] <[email protected]>
Co-committed-by: renovate[bot] <[email protected]>
luketainton pushed a commit to luketainton/luke_instant-msg-api that referenced this pull request Jan 18, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | `<25.12.1,>=25.12.0` → `<26.1.1,>=26.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/black/26.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/25.12.0/26.1.0?slim=true) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.tainton.uk/luke/instant-msg-api/pulls/236
Co-authored-by: renovate[bot] <[email protected]>
Co-committed-by: renovate[bot] <[email protected]>
luketainton pushed a commit to luketainton/repos_PwnedPW that referenced this pull request Jan 18, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | `<25.12.1,>=25.12.0` → `<26.1.1,>=26.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/black/26.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/25.12.0/26.1.0?slim=true) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsibGludGluZyJdfQ==-->

Reviewed-on: https://git.tainton.uk/repos/PwnedPW/pulls/319
Co-authored-by: renovate[bot] <[email protected]>
Co-committed-by: renovate[bot] <[email protected]>
736-c41-2c1-e464fc974 pushed a commit to Swiss-Armed-Forces/Loom that referenced this pull request Feb 2, 2026
This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | dev | major | `^25.0.0` → `^26.0.0` | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/psf/black/badge)](https://securityscorecards.dev/viewer/?uri=github.com/psf/black) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4wLjciLCJ1cGRhdGVkSW5WZXIiOiI0My4yLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyIsInJlbm92YXRlIl19-->

See merge request swiss-armed-forces/cyber-command/cea/loom!275

Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
736-c41-2c1-e464fc974 added a commit to Swiss-Armed-Forces/Loom that referenced this pull request Feb 2, 2026
chore(deps): update black (major)

This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | dev | major | `^25.0.0` → `^26.0.0` | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/psf/black/badge)](https://securityscorecards.dev/viewer/?uri=github.com/psf/black) |

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

### [`v26.1.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2610)

[Compare Source](psf/black@25.12.0...26.1.0)

##### Highlights

Introduces the 2026 stable style ([#&#8203;4892](psf/black#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
  ([#&#8203;4489](psf/black#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 ([#&#8203;4800](psf/black#4800))
- `fix_module_docstring_detection`: Fix module docstrings being treated as normal
  strings if preceded by comments ([#&#8203;4764](psf/black#4764))
- `fix_type_expansion_split`: Fix type expansions split in generic functions ([#&#8203;4777](psf/black#4777))
- `multiline_string_handling`: Make expressions involving multiline strings more compact
  ([#&#8203;1879](psf/black#1879))
- `normalize_cr_newlines`: Add `\r` style newlines to the potential newlines to
  normalize file newlines both from and to ([#&#8203;4710](psf/black#4710))
- `remove_parens_around_except_types`: Remove parentheses around multiple exception
  types in `except` and `except*` without `as` ([#&#8203;4720](psf/black#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 ([#&#8203;4865](psf/black#4865))
- `standardize_type_comments`: Format type comments which have zero or more spaces
  between `#` and `type:` or between `type:` and value to `# type: (value)` ([#&#8203;4645](psf/black#4645))

The following change was not in any previous stable release:

- Regenerated the `_width_table.py` and added tests for the Khmer language ([#&#8203;4253](psf/black#4253))

This release alo bumps `pathspec` to v1 and fixes inconsistencies with Git's
`.gitignore` logic ([#&#8203;4958](psf/black#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 ([#&#8203;4952](psf/black#4952))

##### Integrations

- Upgraded PyPI upload workflow to use Trusted Publishing ([#&#8203;4611](psf/black#4611))

</details>

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4wLjciLCJ1cGRhdGVkSW5WZXIiOiI0My4yLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyIsInJlbm92YXRlIl19-->

See merge request swiss-armed-forces/cyber-command/cea/loom!275

Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
Co-authored-by: open-source Pipeline <group_90701827_bot_ed04ae348bc5f40af9966fb8b6867e99@noreply.gitlab.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Black joins lines when it shouldn't - short width characters.

3 participants