astral-sh / ruff

An extremely fast Python linter and code formatter, written in Rust.
https://docs.astral.sh/ruff
MIT License
30.93k stars 1.02k forks source link

less brackets than black in multiline assert #8388

Open peterjc opened 10 months ago

peterjc commented 10 months ago

Excerpt from https://github.com/peterjc/thapbi-pict/blob/v1.0.3/thapbi_pict/prepare.py formatted by black (e.g. black version 23.10.1):

assert (
    parse_flash_stdout(
        """\
...
[FLASH] Read combination statistics:
[FLASH]     Total pairs:      6105
[FLASH]     Combined pairs:   5869
...
"""
    )
    == (6105, 5869)
)

Output from ruff version 1.0.3 (which black reverts to the above):

assert parse_flash_stdout(
    """\
...
[FLASH] Read combination statistics:
[FLASH]     Total pairs:      6105
[FLASH]     Combined pairs:   5869
...
"""
) == (6105, 5869)

I prefer the ruff version (one less level of indentation and no redundant parenthesis).

I'm unsure if this is https://github.com/astral-sh/ruff/blob/main/docs/formatter/black.md#call-chain-calls-break-differently or #8180 or #8331.

stinodego commented 10 months ago

I noticed this too in the Polars test suite. It's one of the nice improvements of the ruff formatter, in my opinion! Though I'm not sure it's intended.

MichaReiser commented 10 months ago

Thanks for reporting. We're glad you like it :)

This is related to https://github.com/astral-sh/ruff/issues/6938, which we need to document properly. It is a partial implementation of Black's improved multiline string handling that we got for free, and fixing it backward felt like wasted work, considering how rare it is. Which is why we kept it. I'll keep this issue open to track the documentation of the deviation.