Files
psf--black/tests/data/cases/preview_hug_comparator.py
wehub-resource-sync d0aab9212a
fuzz / fuzz (3.11) (push) Failing after 1s
fuzz / fuzz (3.12) (push) Failing after 1s
build and publish / sdist + pure wheel (push) Failing after 0s
diff-shades / analysis / base / ${{ matrix.mode }} (push) Has been skipped
docs / docs (ubuntu-latest) (push) Failing after 2s
fuzz / fuzz (3.10) (push) Failing after 1s
fuzz / fuzz (3.14) (push) Failing after 0s
lint and format / lint (push) Failing after 1s
diff-shades / configure (push) Failing after 1s
docker / build (linux/amd64) (push) Has been skipped
diff-shades / analysis / target / ${{ matrix.mode }} (push) Has been skipped
fuzz / fuzz (3.13) (push) Failing after 0s
build and publish / generate wheels matrix (push) Failing after 0s
test release tool / test-release-tool (ubuntu-latest, 3.13) (push) Failing after 1s
build and publish / mypyc wheels ${{ matrix.only }} (push) Has been skipped
test / test (ubuntu-latest, 3.10) (push) Failing after 0s
test / test (ubuntu-latest, 3.11) (push) Failing after 1s
test / test (ubuntu-latest, 3.13) (push) Failing after 0s
test / test (ubuntu-latest, pypy3.11-v7.3.22) (push) Failing after 1s
test / test (ubuntu-latest, 3.15) (push) Failing after 1s
test release tool / test-release-tool (ubuntu-latest, 3.15) (push) Failing after 0s
zizmor / zizmor (push) Failing after 0s
test release tool / test-release-tool (ubuntu-latest, 3.12) (push) Failing after 4s
test release tool / test-release-tool (ubuntu-latest, 3.14) (push) Failing after 3s
test / uvloop (ubuntu-latest) (push) Failing after 1s
test / test (ubuntu-latest, 3.14) (push) Failing after 1s
test / test (ubuntu-latest, 3.12.10) (push) Failing after 5s
docker / build (linux/arm64) (push) Has been cancelled
docker / push (push) Has been cancelled
docs / docs (windows-latest) (push) Has been cancelled
test release tool / test-release-tool (windows-latest, 3.14) (push) Has been cancelled
test release tool / test-release-tool (windows-latest, 3.15) (push) Has been cancelled
test release tool / test-release-tool (macOS-latest, 3.12) (push) Has been cancelled
test release tool / test-release-tool (macOS-latest, 3.13) (push) Has been cancelled
test release tool / test-release-tool (macOS-latest, 3.14) (push) Has been cancelled
test release tool / test-release-tool (macOS-latest, 3.15) (push) Has been cancelled
test release tool / test-release-tool (windows-latest, 3.12) (push) Has been cancelled
test release tool / test-release-tool (windows-latest, 3.13) (push) Has been cancelled
test / test (macOS-latest, 3.11) (push) Has been cancelled
test / test (macOS-latest, 3.12.10) (push) Has been cancelled
test / test (macOS-latest, 3.13) (push) Has been cancelled
test / test (macOS-latest, 3.14) (push) Has been cancelled
test / test (macOS-latest, 3.15) (push) Has been cancelled
test / test (macOS-latest, pypy3.11-v7.3.22) (push) Has been cancelled
test / test (windows-11-arm, 3.11) (push) Has been cancelled
test / test (windows-11-arm, 3.12.10) (push) Has been cancelled
test / test (windows-11-arm, 3.13) (push) Has been cancelled
test / test (macOS-latest, 3.10) (push) Has been cancelled
test / coveralls-finish (push) Has been cancelled
test / uvloop (macOS-latest) (push) Has been cancelled
test / uvloop (windows-11-arm) (push) Has been cancelled
test / uvloop (windows-latest) (push) Has been cancelled
test / test (windows-11-arm, 3.14) (push) Has been cancelled
test / test (windows-11-arm, 3.15) (push) Has been cancelled
test / test (windows-latest, 3.10) (push) Has been cancelled
test / test (windows-latest, 3.11) (push) Has been cancelled
test / test (windows-latest, 3.12.10) (push) Has been cancelled
test / test (windows-latest, 3.13) (push) Has been cancelled
test / test (windows-latest, 3.14) (push) Has been cancelled
test / test (windows-latest, 3.15) (push) Has been cancelled
test / test (windows-latest, pypy3.11-v7.3.22) (push) Has been cancelled
diff-shades / compare / ${{ matrix.mode }} (push) Has been cancelled
fuzz / create-issue (push) Has been cancelled
build and publish / publish-mypyc (push) Has been cancelled
build and publish / publish-hatch (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:07:39 +08:00

135 lines
3.9 KiB
Python

# flags: --preview --line-length=88
# Regression test for https://github.com/psf/black/issues/4514
# Black used to split between a variable and its comparator (`if t / not in`)
# whenever the RHS was a bracketed expression that had to break. With the fix,
# the comparator stays attached to its left operand and the bracket explodes
# instead. The same shape appears outside comprehensions (inside `if`/`elif`,
# `assert`, parenthesized expressions, etc.) and is fixed in all of them.
# Comprehension `if` with a magic-trailing-comma set on the RHS. This is the
# original case from the issue.
x = [
t
for t in y
if t not in {LongNameOne, LongNameTwo, LongNameThree,}
]
# Different comparator (`<`) and a magic-trailing-comma call on the RHS.
ranked = [
t
for t in y
if t < SomeFunction(LongNameOne, LongNameTwo, LongNameThree,)
]
# Boolean operator before the comparator: the `or` splits, and the remaining
# `t in {...,}` defers to the bracket explosion instead of splitting at `in`.
combined = [
t
for t in y
if some_short_predicate or t in {LongNameOne, LongNameTwo, LongNameThree,}
]
# No magic trailing comma: the RHS is long enough that Black has to break it
# anyway. The comparator should stay with `if t`.
no_magic = [
t
for t in y
if t not in some_very_long_function_name(argument_one, argument_two, argument_three, argument_four)
]
# `if` inside an `and` chain with a magic-trailing-comma tuple on the RHS.
if (
is_scalar(value)
and self.dtype in (np.dtype("float64"), np.dtype("float32"), np.dtype("object"),)
and (limit is not None or inplace)
):
do_thing()
# `assert` with `is` and a call-chain RHS that has to break.
assert (
bool is _AnnotationExtractor(attr.fields(C).x.converter.__call__).get_return_type()
)
# `assert` with `in` and a chained call as RHS.
assert (
f"{existing_section}\n{init_basic_toml_no_readme}" in pyproject_file.read_text(encoding="utf-8")
)
# output
# Regression test for https://github.com/psf/black/issues/4514
# Black used to split between a variable and its comparator (`if t / not in`)
# whenever the RHS was a bracketed expression that had to break. With the fix,
# the comparator stays attached to its left operand and the bracket explodes
# instead. The same shape appears outside comprehensions (inside `if`/`elif`,
# `assert`, parenthesized expressions, etc.) and is fixed in all of them.
# Comprehension `if` with a magic-trailing-comma set on the RHS. This is the
# original case from the issue.
x = [
t
for t in y
if t not in {
LongNameOne,
LongNameTwo,
LongNameThree,
}
]
# Different comparator (`<`) and a magic-trailing-comma call on the RHS.
ranked = [
t
for t in y
if t < SomeFunction(
LongNameOne,
LongNameTwo,
LongNameThree,
)
]
# Boolean operator before the comparator: the `or` splits, and the remaining
# `t in {...,}` defers to the bracket explosion instead of splitting at `in`.
combined = [
t
for t in y
if some_short_predicate
or t in {
LongNameOne,
LongNameTwo,
LongNameThree,
}
]
# No magic trailing comma: the RHS is long enough that Black has to break it
# anyway. The comparator should stay with `if t`.
no_magic = [
t
for t in y
if t not in some_very_long_function_name(
argument_one, argument_two, argument_three, argument_four
)
]
# `if` inside an `and` chain with a magic-trailing-comma tuple on the RHS.
if (
is_scalar(value)
and self.dtype in (
np.dtype("float64"),
np.dtype("float32"),
np.dtype("object"),
)
and (limit is not None or inplace)
):
do_thing()
# `assert` with `is` and a call-chain RHS that has to break.
assert (
bool is _AnnotationExtractor(attr.fields(C).x.converter.__call__).get_return_type()
)
# `assert` with `in` and a chained call as RHS.
assert f"{existing_section}\n{init_basic_toml_no_readme}" in pyproject_file.read_text(
encoding="utf-8"
)