From 3f168fabd839c0baa8167704d4c1c1e01ea1340c Mon Sep 17 00:00:00 2001 From: Michael Sam Date: Wed, 1 Jul 2026 14:43:21 +0300 Subject: [PATCH] Initialize Leaf bracket depth --- CHANGES.md | 2 ++ src/blib2to3/pytree.py | 1 + tests/test_tokenize.py | 14 ++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 8a4c7456a6a..3a8109ef16c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,8 @@ +- Fix crash when a leaf's bracket metadata is read before bracket tracking has visited + it (#5215) - Fix crash when a standalone comment sits between tokens of a comprehension or lambda (#5144) - Fix crash when a comment-only `# fmt: off`/`# fmt: on` block is followed by a `with` diff --git a/src/blib2to3/pytree.py b/src/blib2to3/pytree.py index 152e5734be0..228faa2b2cf 100644 --- a/src/blib2to3/pytree.py +++ b/src/blib2to3/pytree.py @@ -482,6 +482,7 @@ def __init__( self._prefix = prefix self.fixers_applied: list[Any] | None = fixers_applied[:] self.children = [] + self.bracket_depth = 0 self.opening_bracket = opening_bracket self.fmt_pass_converted_first_leaf = fmt_pass_converted_first_leaf diff --git a/tests/test_tokenize.py b/tests/test_tokenize.py index efa7ad5e80d..71a385cec59 100644 --- a/tests/test_tokenize.py +++ b/tests/test_tokenize.py @@ -6,6 +6,12 @@ import black from blib2to3.pgen2 import token, tokenize +from blib2to3.pytree import Leaf + +if sys.version_info >= (3, 11): + from typing import assert_type +else: + from typing_extensions import assert_type @dataclass @@ -30,6 +36,14 @@ def assert_tokenizes(text: str, tokens: list[Token]) -> None: assert actual_tokens == tokens +def test_leaf_initializes_bracket_metadata() -> None: + leaf = Leaf(token.NAME, "name") + + assert_type(leaf.bracket_depth, int) + assert leaf.bracket_depth == 0 + assert leaf.opening_bracket is None + + def test_simple() -> None: assert_tokenizes( "1",