unnecessary-double-cast-or-process (C414)
Derived from the flake8-comprehensions linter.
Fix is always available.
What it does
Checks for unnecessary list
, reversed
, set
, sorted
, and tuple
call within list
, set
, sorted
, and tuple
calls.
Why is this bad?
It's unnecessary to double-cast or double-process iterables by wrapping
the listed functions within an additional list
, set
, sorted
, or
tuple
call. Doing so is redundant and can be confusing for readers.
Examples
Use instead:
This rule applies to a variety of functions, including list
, reversed
,
set
, sorted
, and tuple
. For example:
- Instead of
list(list(iterable))
, uselist(iterable)
. - Instead of
list(tuple(iterable))
, uselist(iterable)
. - Instead of
tuple(list(iterable))
, usetuple(iterable)
. - Instead of
tuple(tuple(iterable))
, usetuple(iterable)
. - Instead of
set(set(iterable))
, useset(iterable)
. - Instead of
set(list(iterable))
, useset(iterable)
. - Instead of
set(tuple(iterable))
, useset(iterable)
. - Instead of
set(sorted(iterable))
, useset(iterable)
. - Instead of
set(reversed(iterable))
, useset(iterable)
. - Instead of
sorted(list(iterable))
, usesorted(iterable)
. - Instead of
sorted(tuple(iterable))
, usesorted(iterable)
. - Instead of
sorted(sorted(iterable))
, usesorted(iterable)
. - Instead of
sorted(reversed(iterable))
, usesorted(iterable)
.
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.