Configuraton:
W504 (line break after binary operator) shows up when the slash that indicates positional-only arguments (PEP 570) is followed by a newline. For example:
def really_long_name_for_a_function(
very_long_argument_1, very_long_argument_2, /
):
pass
pycodestyle thinks that the slash is a binary operator. I can, however, silence it using a comma after the slash, as follows:
def really_long_name_for_a_function(
very_long_argument_1, very_long_argument_2, /,
):
pass
I think this is an issue, as the slash isn't a binary operator, and the comma seems like a workaround for arguments on a single line than good practice (at least in this case).
this also triggers with keyword-only arguments:
$ cat t.py
def really_long_name_for_a_function(
very_long_argument_1, very_long_argument_2, *
):
pass
$ ~/opt/venv/bin/pycodestyle t.py --select=W503,W504
t.py:2:49: W504 line break after binary operator
Just ran into this myself. Simple snippet for reproduction:
def func1(arg1, arg2, arg3, /): # no error
pass
def func2(
arg1, arg2, arg3, / # W504 line break after binary operator
):
pass
Thanks @DevilXD I think we already had enough examples for reproduction though and don't need further ones.
Most helpful comment
this also triggers with keyword-only arguments: