7

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

4
  • 1
    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 `/` Commented Jun 11, 2021 at 18:54
  • 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. Commented Jun 11, 2021 at 18:59
  • 2
    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, ...]) Commented Jun 11, 2021 at 19:05
  • 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. Commented Jun 11, 2021 at 19:07

2 Answers 2

18

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

Sign up to request clarification or add additional context in comments.

Comments

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

This should resolve the issue.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.