Pycodestyle: W504: positional only / keyword only argument marker at end of long line

Created on 14 Jul 2020  路  3Comments  路  Source: PyCQA/pycodestyle

Configuraton:

  • OS: Arch Linux
  • pycodestyle version: 2.6.0
  • Python version: 3.8.3
  • Installation source: Arch Linux packages

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).

Most helpful comment

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

All 3 comments

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

fgotzens picture fgotzens  路  7Comments

zackw picture zackw  路  6Comments

daspecster picture daspecster  路  9Comments

asottile picture asottile  路  8Comments

coxley picture coxley  路  5Comments