W504 line break after binary operator
Asked Answered
R

2

6

I have a condition that reads like:

ok = (not a > 10 and
      not b < 10 and
      not c > 99 and
      d == 99)

flake8 complains about this line with the error message:

W504 line break after binary operator

When I move the operator around, it throws a different error:

ok = (not a > 10
      and not b < 10
      and not c > 99
      and d == 99)

W503 line break before binary operator

I tried multiple recommendations (e.g., this), but still, flake8 complains about the linebreak. The actual condition in my code is very long so I cannot put it in one line, also, it is the preference of my team to enclose long lines in () instead of using \.

Reorientation answered 11/6, 2021 at 18:41 Comment(4)
you need to disable either W504 or W503 in your flake8 config, it's impossible to use both at the same time if you're not using `/`Phonation
Black also introduces such line brakes, I guess without disabling any of errors. So, I was wondering maybe there is a way to pass flake8 without disabling any of the warnings.Reorientation
2 comments not directly related to the question you asked but might help - firstly, when checking whether multiple conditionals are true, you may want to use all eg: ok = all([not a > 10, not b < 10 ...]): . Secondly, a not conditional and not conditional is the same as not (conditional or conditional) according to De Morgan's Law . Without checking it, I suspect what's tripping up flake8 are the 2 binary operators. Why not try any : ok = not any([a > 10, b < 10, ...])Kendricks
Thanks for the suggestion @lonetwin. The condition I wrote above merely a dummy example. The actual condition I've is much more complicated and I will use your suggestions to improve.Reorientation
P
16

you have set ignore = in your configuration -- you should use extend-ignore =

W504 and W503 conflict with each other (and are both disabled by default) -- by setting ignore you've re-enabled them. extend-ignore does not have this problem as it augments the default set of ignored codes


disclaimer: I'm the current flake8 maintainer

Polyphagia answered 12/6, 2021 at 3:36 Comment(0)
M
-5
ok = (
    not a > 10 and
    not b < 10 and
    not c > 99 and
    d == 99
)

This should resolve the issue.

Monseigneur answered 11/6, 2021 at 19:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.