flake8-commas icon indicating copy to clipboard operation
flake8-commas copied to clipboard

Missing trailing comma after multiplication reported as C815

Open cebtenzzre opened this issue 4 years ago • 1 comments

If a function argument contains multiplication, a C815 error ("... in Python 3.5+") is reported instead of C812, as if the expression includes tuple unpacking. This is misleading, because even Python 2.7 supports a trailing comma after multiplication.

Example Code

def foo(x): pass

foo(
    1
)
foo(
    *(1,)
)
foo(
    2 * 1
)

Actual Behavior

$ flake8 --select=C812,C815 repr.py
repr.py:4:6: C812 missing trailing comma
repr.py:7:10: C815 missing trailing comma in Python 3.5+
repr.py:10:10: C815 missing trailing comma in Python 3.5+

Expected Behavior

I would expect the error reported for line 10 to be C812, not C815.

Software Versions

Python 3.9 flake8-commas 2.0.0

cebtenzzre avatar Jan 22 '21 04:01 cebtenzzre

Having a very quick look, this isn't immediately trivial to fix. The internal processing of tokens is done essentially one token at a time, whereas determining whether a token is a unpack token versus a multiplication (or an exponentiation) would require inspecting adjacent tokens.

This doesn't mean it's impossible to fix, however it does make it harder to fix and thus less appealing for what appears at this point to be a mostly cosmetic issue (given how far beyond EOL both Python 2 and 3.5 are).

I therefore don't have any immediate plans to fix this.

PeterJCLaw avatar May 05 '24 16:05 PeterJCLaw