adamchainz / flake8-comprehensions

❄️ A flake8 plugin to help you write better list/set/dict comprehensions.
MIT License
464 stars 23 forks source link

Feature Request: (New Rule) Detect useless generator pattern #503

Open Skylion007 opened 1 year ago

Skylion007 commented 1 year ago

Description

I just saw this code in the PyTorch codebase and realized that I cannot think of a valid reason to use a generator comprehension like so (either should be removed or replaced with a call to iter).

b = range(1, 10)
print(sorted((a for a in b)))

should either be

print(sorted(iter(b)))

or

print(sorted(b))

Obviously a more specific rule could be added for sorted (since we have a few specific sorted rules anyway), but it would be nice to have this be more generic as the (a for a in b) generator construct doesn't seem particularly useful and just adds an unnecessary context switch of the generator.

Is there a useful situation to use this generator construct? Or should we always flag it?

adamchainz commented 1 year ago

This seems like a legitimate rule to add. Would you like to make a PR?