PyCQA/flake8-bugbear

B031 does not take into account if-else statements

Open

#465 opened on Mar 24, 2024

View on GitHub
 (2 comments) (0 reactions) (0 assignees)Python (116 forks)github user discovery
bughelp wanted

Repository metrics

Stars
 (1,116 stars)
PR merge metrics
 (Avg merge 4h 17m) (3 merged PRs in 30d)

Description

Bugbear reports false-positive "more that one" usage of the generator even if it occurs inside 2 different branches of the if-else statement.

This code

import itertools

for _, group in itertools.groupby([]):
    if True:
        print(group, True)
    else:
        print(group, False)

produces

b031.py:7:15: B031 Using the generator returned from `itertools.groupby()` more than once will do nothing on the second usage. Save the result to a list, if the result is needed multiple times.

but it's obvious that group cannot be used twice here.

flake8 --version:

7.0.0 (flake8-bugbear: 24.2.6, mccabe: 0.7.0, pycodestyle: 2.11.1, pyflakes: 3.2.0) CPython 3.11.2 on Linux

Contributor guide