Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extra commas appear in output #2047

Closed
GusBusDraws opened this issue Mar 15, 2021 · 2 comments
Closed

Extra commas appear in output #2047

GusBusDraws opened this issue Mar 15, 2021 · 2 comments
Labels
F: trailing comma Full of magic R: not a bug This is deliberate behavior of Black.

Comments

@GusBusDraws
Copy link

Black v20.8b1

Playground link

Options

--line-length=88
--safe

Input

img_diff = (img[0:min(img.shape[0], img_to_subtract.shape[0]), 
                 0:min(img.shape[1], img_to_subtract.shape[1])] 
            - img_to_subtract[0:min(img.shape[0], 
                                    img_to_subtract.shape[0]), 
                              0:min(img.shape[1], 
                                    img_to_subtract.shape[1])])

Output

img_diff = (
    img[
        0 : min(img.shape[0], img_to_subtract.shape[0]),
        0 : min(img.shape[1], img_to_subtract.shape[1]),
    ]
    - img_to_subtract[
        0 : min(img.shape[0], img_to_subtract.shape[0]),
        0 : min(img.shape[1], img_to_subtract.shape[1]),
    ]
)

Expected

img_diff = (
    img[
        0 : min(img.shape[0], img_to_subtract.shape[0]),
        0 : min(img.shape[1], img_to_subtract.shape[1])  # Comma should not be placed at the end of this line like in Output
    ]
    - img_to_subtract[
        0 : min(img.shape[0], img_to_subtract.shape[0]),
        0 : min(img.shape[1], img_to_subtract.shape[1])  # Comma should not be placed at the end of this line like in Output
    ]
)
@ichard26 ichard26 added R: not a bug This is deliberate behavior of Black. F: trailing comma Full of magic labels Mar 15, 2021
@ichard26
Copy link
Collaborator

Black used to remove the trailing comma if the expression fits in a single line, but this was changed by #826 and #1288. Now a trailing comma tells Black to always explode the expression. This change was made mostly for the cases where you know a collection or whatever will grow in the future. Having it always exploded as one element per line reduces diff noise when adding elements. Before the "magic trailing comma" feature, you couldn't anticipate a collection's growth reliably since collections that fitted in one line were ruthlessly collapsed regardless of your intentions. One of Black's goals is reducing diff noise, so this was a good pragmatic change.

So no, this is not a bug, but an intended feature. The reason why you're filing this issue is probably since we say the following in the (outdated) style documentation:

Unnecessary trailing commas are removed if an expression fits in one line. This makes it 1% more likely that your line won't exceed the allotted line length limit. Moreover, in this scenario, if you added another argument to your call, you'd probably fit it in the same line anyway. That doesn't make diffs any larger.

We missed that this paragraph became incorrect when the "magic trailing comma" feature was introduced. It was eventually fixed in commit 6b935a3, but that was after the stable documentation was released alongside Black 20.8b1.

Anyway, here's the documentation on the "magic trailing comma". Hopefully that helps and sorry for the possible confusion.

@GusBusDraws
Copy link
Author

@ichard26 Thank you for the explanation!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
F: trailing comma Full of magic R: not a bug This is deliberate behavior of Black.
Projects
None yet
Development

No branches or pull requests

2 participants