Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

B950 does not give warnings when --extend-ignore'ing E501 #266

Open
Wim-De-Clercq opened this issue Jun 23, 2022 · 6 comments
Open

B950 does not give warnings when --extend-ignore'ing E501 #266

Wim-De-Clercq opened this issue Jun 23, 2022 · 6 comments

Comments

@Wim-De-Clercq
Copy link

Wim-De-Clercq commented Jun 23, 2022

In an empty folder (no .flake8, tox.ini, or setup.cfg present)

echo "foo = 'foo'" > bug.py
flake8 --extend-ignore=E501 --extend-select=B950 --max-line-length=9 bug.py 

Gives me no errors.

Adding verbose logging (-vv) tells me:

flake8.main.application   MainProcess     62 INFO     Reporting errors
flake8.style_guide        MainProcess     62 DEBUG    Deciding if "E501" should be reported
flake8.style_guide        MainProcess     62 DEBUG    The user configured "E501" to be "Selected.Explicitly", "Ignored.Explicitly"
flake8.style_guide        MainProcess     62 DEBUG    "E501" will be "Decision.Ignored"
flake8.style_guide        MainProcess     63 DEBUG    Violation(code='E501', filename='bug.py', line_number=1, column_number=10, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.style_guide        MainProcess     63 DEBUG    Deciding if "B950" should be reported
flake8.style_guide        MainProcess     63 DEBUG    The user configured "B950" to be "Selected.Explicitly", "Ignored.Explicitly"
flake8.style_guide        MainProcess     63 DEBUG    "B950" will be "Decision.Ignored"
flake8.style_guide        MainProcess     63 DEBUG    Violation(code='B950', filename='bug.py', line_number=1, column_number=12, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.main.application   MainProcess     63 INFO     Found a total of 2 violations and reported 0

It appears that --extend-ignore=E501 makes flake8 think it can ignore B950 because E501 is part of the default ignore list. And I can't find any flake8 or bugbear version combination where this has ever worked...
The reported debugging info for B950 is the same as when not using any ignores at all.


Using --ignore=E501 instead of --extend-ignore makes it work as expected, but of course we don't want to override the default ignore list.

flake8 --ignore=E501 --extend-select=B950 --max-line-length=9 bug.py 
flake8.main.application   MainProcess     64 INFO     Reporting errors
flake8.style_guide        MainProcess     64 DEBUG    Deciding if "E501" should be reported
flake8.style_guide        MainProcess     64 DEBUG    The user configured "E501" to be "Selected.Explicitly", "Ignored.Explicitly"
flake8.style_guide        MainProcess     64 DEBUG    "E501" will be "Decision.Ignored"
flake8.style_guide        MainProcess     64 DEBUG    Violation(code='E501', filename='bug.py', line_number=1, column_number=10, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.style_guide        MainProcess     64 DEBUG    Deciding if "B950" should be reported
flake8.style_guide        MainProcess     64 DEBUG    The user configured "B950" to be "Selected.Explicitly", "Selected.Implicitly"
flake8.style_guide        MainProcess     64 DEBUG    "B950" will be "Decision.Selected"
flake8.style_guide        MainProcess     64 DEBUG    Violation(code='B950', filename='bug.py', line_number=1, column_number=12, text='line too long (11 > 9 characters)', physical_line="foo = 'foo'\n") is not inline ignored
flake8.main.application   MainProcess     64 INFO     Found a total of 2 violations and reported 1
bug.py:1:12: B950 line too long (11 > 9 characters)

In total the following table shows all issues:

ignore select reports B950
--extend-ignore=E501 --extend-select=B950 NO
--extend-ignore=E501 --select=B950 NO
✔️ --ignore=E501 --select=B950 YES
✔️ --ignore=E501 --extend-select=B950 YES
--extend-select=B950 (only) E501
✔️ --select=B950 YES

Not sure about the second last line, whether it is expected to report both E501 and B950 or E501 alone...

@cooperlees
Copy link
Collaborator

cooperlees commented Jun 23, 2022

Thanks - Yeah, we need work here. We're an old plugin and all help would be appreciated. I'm low on time.

It sounds part of #221 and a cleanup like suggested in #260 will prob help here too.

@sco1
Copy link
Contributor

sco1 commented Jun 24, 2022

The referenced cleanup would be good to do but it's not going to fix this specific issue. I think the solution is ultimately an upstream one, but regardless of what the resolution ends up being this plugin's README should provide an example configuration that provides the expected results for a currently released version of Flake8, which it hasn't done since it was changed in #218 (sorry!).

To help with the near term, I would propose that we do the cleanup tasks (if you're open to them now) and revert the README example to use --ignore for now.

Not sure about the second last line, whether it is expected to report both E501 and B950 or E501 alone...

I would expect this to report both E501 and B950. There are changes to Flake8's decision engine on main that aren't yet released that result in this outcome.

@sco1
Copy link
Contributor

sco1 commented Jun 25, 2022

This should now be resolved upstream via PyCQA/flake8#1609 🎉

$ flake8 --extend-ignore=E501 --extend-select=B950 --max-line-length=9 bug.py
bug.py:1:12: B950 line too long (11 > 9 characters)
$ flake8 --extend-ignore=E501 --select=B950 --max-line-length=9 bug.py
bug.py:1:12: B950 line too long (11 > 9 characters)

IMO the README should still be reverted until Flake8 next is released.

@sco1
Copy link
Contributor

sco1 commented Jul 31, 2022

Flake8 5.0 has landed with these changes: https://flake8.pycqa.org/en/latest/release-notes/5.0.0.html

@cooperlees
Copy link
Collaborator

So, do we close now or is there still cleanup on our side?

@sco1
Copy link
Contributor

sco1 commented Aug 1, 2022

The README could probably be updated to flake8 >=5.0 for extend-select, perhaps with a second configuration example that works as expected pre-5.0 for folks who aren't able to update for whatever reason. This should also take care of #221 (again).

Perhaps with #260 at the same time?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants