Skip to content

Internal error: producing different code on second pass of the formatter #4733

@jakkdl

Description

@jakkdl

Describe the bug

error: cannot format foo.py: INTERNAL ERROR: Black 25.1.1.dev56+gb3ae57b on Python (CPython) 3.13.5 produced different code on the second pass of the formatter.  Please report a bug on https://github.com/psf/black/issues.  This diff might be helpful: /tmp/blk_kir8cfms.log

To Reproduce
Minimal repro:

def foo():
    possibly_redundant_lowlevel_checkpoints: list[  # pyright: ignore[reportUnknownVariableType]
        cst.BaseExpression
    ] = field( default_factory=list)

the generated logdiff:

Mode(target_versions=set(), line_length=88, string_normalization=True, is_pyi=False, is_ipynb=False, skip_source_first_line=False, magic_trailing_comma=True, python_cell_magics=set(), preview=False, unstable=False, enabled_features=set())
--- source
+++ first pass
@@ -1,4 +1,4 @@
 def foo():
-    possibly_redundant_lowlevel_checkpoints: list[  # pyright: ignore[reportUnknownVariableType]
+    possibly_redundant_lowlevel_checkpoints: list[
         cst.BaseExpression
-    ] = field( default_factory=list)
+    ] = field(default_factory=list)  # pyright: ignore[reportUnknownVariableType]
--- first pass
+++ second pass
@@ -1,4 +1,4 @@
 def foo():
-    possibly_redundant_lowlevel_checkpoints: list[
-        cst.BaseExpression
-    ] = field(default_factory=list)  # pyright: ignore[reportUnknownVariableType]
+    possibly_redundant_lowlevel_checkpoints: list[cst.BaseExpression] = field(
+        default_factory=list
+    )  # pyright: ignore[reportUnknownVariableType]

I managed to further minify it to

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: list[  # bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    int
] = []

where the long line is now 89 characters long. And the logdiff gives

Mode(target_versions=set(), line_length=88, string_normalization=True, is_pyi=False, is_ipynb=False, skip_source_first_line=False, magic_trailing_comma=True, python_cell_magics=set(), preview=False, unstable=False, enabled_features=set())
--- source
+++ first pass
@@ -1,3 +1,3 @@
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: list[  # bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: list[
     int
-] = []
+] = []  # bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
--- first pass
+++ second pass
@@ -1,3 +1,3 @@
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: list[
-    int
-] = []  # bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: list[int] = (
+    []
+)  # bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Environment

Tested with latest release, installing from git and the online formatter - all of them fail:

black --version
black, 25.1.1.dev56+gb3ae57b (compiled: no)
Python (CPython) 3.13.5

This is newly written code, so I don't know if it can be bisected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    T: bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions