-
Notifications
You must be signed in to change notification settings - Fork 109
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
B909 has several false positives on black codebase #467
Comments
Workaround for #7690 ### Description Updated with flake8-bugbear, causing the B909 error. A workaround fix was made for the flake8-bugbear version because the 24.4.21 update contained some false positives. Fore more information, see PyCQA/flake8-bugbear#467 ### Types of changes <!--- Put an `x` in all the boxes that apply, and remove the not applicable items --> - [x] Non-breaking change (fix or new feature that would not break existing functionality). - [ ] Breaking change (fix or new feature that would cause existing functionality to change). - [ ] New tests added to cover the changes. - [ ] Integration tests passed locally by running `./runtests.sh -f -u --net --coverage`. - [ ] Quick tests passed locally by running `./runtests.sh --quick --unittests --disttests`. - [ ] In-line docstrings updated. - [ ] Documentation updated, tested `make html` command in the `docs/` folder. Signed-off-by: YunLiu <[email protected]>
Thanks for tagging me! I'll take a look later this week and see if I can fix it right away, or if it blows up the scope (I doubt the latter one). 🙂 |
Hi, we're seeing complaints for code like lst: list[dict] = [dic1, ..., dicn]
for dic in lst:
dic["key"] = False Is this related? |
Potentially. I'm actually working on it right now, so I'll also check this. |
I've created #469 - the fix was rather easy and simple, just an oversight in the initial implementation 😬 I've ran it on the black code base with the only hit being With Project-MONAI, I could also eliminate the cases pointed out, however, there is a discussion point (hence the PR only being a draft): Should B909 allow altering an element via it's dictionary key? For example: some_dict = {...}
for key in some_dict:
some_dict[key] = 3
del some_dict[key] Should this fire B909 or not? What do you think? cc @cooperlees |
I'd argue it should fire due to the EDIT: The following is incorrect and shouldn't be considered - I leave it here for completeness as it was partially quoted: However, I'd also argue it shouldn't in such a case: some_dict = {...}
for key in some_dict.keys(): # this creates a new object that no longer depends on the original
some_dict[key] = 3
del some_dict[key] |
That's not true in Python 3. Your code will throw |
E.g.
See https://github.com/psf/black/actions/runs/8776854301/job/24081105618?pr=4318 for more
cc @mimre25 in case interested in improving the check :-)
The text was updated successfully, but these errors were encountered: