parser.add_argument(
"--stdout",
choices = ("true", "false"),
default = "true",
help = "log data to stdout"
)
Black turns it into: parser.add_argument(
"--stdout", choices=("true", "false"), default="true", help="log data to stdout"
)
I find the one-line-per-term easier to understand, and even though it fits on a single line, I would rather have all add_argument()/@click.option() calls follow the same layout, to make it easier to discern the structure across dozens of similar calls.I also like to have spaces around the "=" in my keyword=arguments, except for very short and simple calls.
PEP 8 says "Don’t use spaces around the = sign when used to indicate a keyword argument" so black is following that recommendation.
However, everywhere else in the PEP (assignment like 'x = 5', and annotations like 'class Spam: foo: int = 4' or 'def spam(foo: int = 4)', there are spaces on either side of the equals sign.
That irritates me every time I have to use black.
parser.add_argument(
"--stdout",
choices=("true", "false"),
default="true",
help="log data to stdout",
)
It also removed the superfluous spaces in the keyword arg assignmentsFormatters _are_ a compromise. They make your coworkers' code nicer, and your code worse.
One, as I learned, could be resolved by a simple use of a terminal ",".
The other is how it removes spaces from around "=" for keyword arguments, but not for other uses of "=".
I can't provide much more as I rarely use black. As a single developer, I don't have to worry much about that sort of compromise. ;)
That I think it's wrong and ugly is an entirely different point.
PEP 8 specifically says it it not universal:
> Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project. ...
> However, know when to be inconsistent – sometimes style guide recommendations just aren’t applicable. When in doubt, use your best judgment. ...
> Some other good reasons to ignore a particular guideline:
> When applying the guideline would make the code less readable, even for someone who is used to reading code that follows this PEP.
I think always omitting spaces there makes it less readable, even for someone who is used to reading PEP 8.
That makes me more compliant to PEP 8 than black. ;)
My point stands - I do not think those spaces are superfluous. Consider the following:
a = 4
def foo(i: int):
return "A" * i
class Spam:
foo = 4
bar: int = 6
def eggs(self, n: int = 5):
return foo(i=n)
Why is it "i=n" instead of "i = n" when every other use of "=" has spaces?For this one case of a short function with simple names, okay, I don't always use spaces.
But otherwise I think the lack of spaces makes it the code harder to read, and thus "uglier".
The rest of us just follow the PEP8 style guide and move on
I think that rule is ugly. I explained why.
If you don't like the thread, move on.