Improve fmt:skip handling in nested expressions with checks #4903
+66
−11
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Closes #4730
This PR addresses issue #4730, where
# fmt: skipwas being ignored or causing crashes in deeply nested expressions. The root cause is that Black's handling offmt: skipconverts AST nodes to string literals, which bypasses bracket tracking and can result in missing attributes likebracket_depth. This led toAttributeErrorexceptions, especially with extreme settings like--line-length=1.Key changes:
hasattr(leaf, "bracket_depth")checks insrc/black/lines.pyto prevent crashes when processing leaves generated byfmt: skip.tests/data/cases/fmtskip_nested_expression.py) using the original code from the issue, without relying on the--no-preview-line-length-1flag, as requested by maintainers.CHANGES.mdto document the fix.Checklist - did you ...
--previewstyle, following thestability policy?
CHANGES.mdif necessary?