Skip to content

Improved string processing: add parentheses around implicit string concatenations to increase readability in certain contexts #3159

@yilei

Description

@yilei

Describe the style change

When splitting long string literals in Black's --preview Improved string processing style, add parentheses around implicit string concatenations to increase readability in certain contexts.

"certain contexts" include:

  • Function parameters
  • Sequence elements

Examples of unformatted code

                    flash(
                        'None of the email addresses or domains you entered are valid',
                        'error',
                    )
some_list = [
    ' lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Ut enim ad minim',
    ' veniam quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo',
]

Examples in the current Black style

                    flash(
                        'None of the email addresses or domains you entered'
                        ' are valid',
                        'error',
                    )
some_list = [
    " lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor"
    " incididunt ut labore et dolore magna aliqua Ut enim ad minim",
    " veniam quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo",
]

Desired style

                    flash(
                        (
                            'None of the email addresses or domains you entered'
                            ' are valid'
                        ),
                        'error',
                    )
some_list = [
    (
        " lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor"
        " incididunt ut labore et dolore magna aliqua Ut enim ad minim"
    ),
    " veniam quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo",
]

Additional context

This issue was raised originally in #2188 (comment). Per @JelleZijlstra, I'm starting a new issue separately here to track the work.

The "certain contexts" list isn't exhaustive. I plan to read the code and play around with an implementation, then report back here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    F: parenthesesToo many parentheses, not enough parentheses, and so on.F: stringsRelated to our handling of stringsS: acceptedThe changes in this design / enhancement issue have been accepted and can be implementedT: styleWhat do we want Blackened code to look like?

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions