PyCQA/flake8-bugbear

B031 flagged on non-itertools groupby

Open

#356 opened on Feb 15, 2023

 (3 comments) (0 reactions) (0 assignees)Python (116 forks)github user discovery
enhancementhelp wanted

Repository metrics

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

Description

Recent B031 addition: https://github.com/PyCQA/flake8-bugbear/pull/347

A code that defines a groupby function (not itertools.groupby) will still raise B031 error.

Example:

def groupby(x, y):
    return dict().items()


for _, v in groupby(None, None):
    if v:
        ...
    if v:
        ...

Then:

$ flake8 example.py
example.py:8:8: 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.

flake8: 6.0.0, flake8-bugbear: 23.2.13

Perhaps we can have a better inspection so the error is not raised in such cases?

Contributor guide