简体   繁体   中英

Getting Black Python code formatter to align comments

Yes, I'm, of the understanding that black gives very little leeway in getting it to act differently but I was wondering about the best way to handle something like this (my original code):

@dataclass
class Thing1:
    property1: int                    # The first property.
    property2: typing.List[int]       # This is the second property
                                      # and the comment crosses multiple lines.

Now, when I run that through black , it gives me:

@dataclass
class Thing1:
    property1: int  # The first property.
    property2: typing.List[int]  # This is the second property
    # and the comment crosses multiple lines.

which is not really laid out as I'd like.

Is there a way to get black to keep the comments lined up? I don't care which column it starts in per field, but it would be nice to return to the readable nature, with the comments within each field being lined up:

@dataclass
class Thing1:
    property1: int  # The first property.
    property2: typing.List[int]  # This is the second property
                                 # and the comment crosses multiple lines.

If there's no way to do this, I'll probably either place multi-line comments before each field, or ensure all comments fit on the one line and add lengthier explanatory notes at the end of the dataclass definition:

@dataclass
class Thing1:
    property1: int  # The first property.

    # This is the second property and the comment, while it can
    # have more characters, still crosses multiple lines.
    property2: typing.List[int]

@dataclass
class Thing2:
    property1: int  # The first property.
    property2: typing.List[int]  # This is the second property.

    # Note that the comments above now fit on the same line as the
    # field, and this comment here is meant to provide any needed
    # multi-line detail for ALL fields in this class.

That at least is still somewhat local to the data fields. But I'd rather find a way to have it line up comments similar to what I originally had, if possible.

Happy to entertain any suggestions.

You can wrap your block with # fmt: on/off , so Black doesn't touch it.

# fmt: off
@dataclass
class Thing1:
    property1: int               # The first property.
    property2: typing.List[int]  # This is the second property
                                 # and the comment crosses multiple lines.
# fmt: on

I usually prefer to relocate the comments and stick with default Black formatting.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM