Skip to content

unnecessary-generator-set (C401)

Derived from the flake8-comprehensions linter.

Fix is always available.

What it does

Checks for unnecessary generators that can be rewritten as set comprehensions (or with set() directly).

Why is this bad?

It is unnecessary to use set around a generator expression, since there are equivalent comprehensions for these types. Using a comprehension is clearer and more idiomatic.

Further, if the comprehension can be removed entirely, as in the case of set(x for x in foo), it's better to use set(foo) directly, since it's even more direct.

Examples

set(f(x) for x in foo)
set(x for x in foo)

Use instead:

{f(x) for x in foo}
set(foo)

Fix safety

This rule's fix is marked as unsafe, as it may occasionally drop comments when rewriting the call. In most cases, though, comments will be preserved.