A flake8 plugin to help you write better list/set/dict comprehensions.
Project description
flake8-comprehensions
A flake8 plugin that helps you write better list/set/dict comprehensions.
Free software: ISC license
Installation
Install from pip with:
pip install flake8-comprehensions
It will then automatically be run as part of flake8; you can check it has been picked up with:
$ flake8 --version
2.4.1 (pep8: 1.7.0, pyflakes: 0.8.1, flake8-comprehensions: 1.0.0, mccabe: 0.3.1) CPython 2.7.11 on Darwin
Rules
Code |
Rule |
---|---|
C400 |
Unnecessary generator - rewrite as a list comprehension. |
C401 |
Unnecessary generator - rewrite as a set comprehension. |
C402 |
Unnecessary generator - rewrite as a dict comprehension. |
C403 |
Unnecessary list comprehension - rewrite as a set comprehension. |
C404 |
Unnecessary list comprehension - rewrite as a dict comprehension. |
C405 |
Unnecessary (list/tuple) literal - rewrite as a set literal. |
C406 |
Unnecessary (list/tuple) literal - rewrite as a dict literal. |
C407 |
Unnecessary list comprehension - ‘<builtin>’ can take a generator. |
Examples
C400-402: Unnecessary generator
It’s unnecessary to use list, set, or dict around a generator expression, since there are equivalent comprehensions for these types. For example:
list(f(x) for x in foo) is better as [f(x) for x in foo]
set(f(x) for x in foo) is better as {f(x) for x in foo}
dict((x, f(x)) for x in foo) is better as {x: f(x) for x in foo}
C403-404: Unnecessary list comprehension
It’s unnecessary to use a list comprehension inside a call to set or dict, since there are equivalent comprehensions for these types. For example:
set([f(x) for x in foo]) is better as {f(x) for x in foo}
dict([(x, f(x)) for x in foo]) is better as {x: f(x) for x in foo}
C405-406: Unnecessary list literal
It’s unnecessary to use a list literal within a call to set or dict since there is literal syntax for these types. For example:
set([1, 2]) is better as {1, 2}
set([]) is better as set()
dict([]) is better as {}
dict([(1, 2)]) is better as {1: 2}
dict(((1, 2),)) is better as {1: 2}
C407: Unnecessary list comprehension - ‘<builtin>’ can take a generator
It’s unnecessary to pass a list comprehension to some builtins that can take generators instead. For example:
sum([x ** 2 for x in range(10)]) is better as sum(x ** 2 for x in range(10))
all([foo.bar for foo in foos]) is better as all(foo.bar for foo in foos)
The list of builtins that are checked for are:
all
any
frozenset
max
min
sorted
sum
tuple
History
Pending Release
1.3.0 (2017-05-01)
Don’t allow installation with Flake8 3.2.0 which doesn’t enable the plugin. This bug was fixed in Flake8 3.2.1.
Prevent false positives of C402 from generators of expressions that aren’t two-tuples.
C405 and C406 now also complain about unnecessary tuple literals.
1.2.1 (2016-06-27)
C407 rule that complains about unnecessary list comprehensions inside builtins that can work on generators.
1.2.0 (2016-07-11)
Split all rule codes by type. This allows granular selection of the rules in flake8 configuration.
1.1.1 (2016-04-06)
Fix crash on method calls
1.1.0 (2016-04-06)
C401 rule that complains about unnecessary list comprehensions inside calls to set() or dict().
C402 rule that complains about unnecessary list literals inside calls to set() or dict().
1.0.0 (2016-04-05)
C400 rule that complains about an unnecessary usage of a generator when a list/set/dict comprehension would do.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for flake8-comprehensions-1.3.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 009139c5d2a68e1f7d5550878bdf23c47cf57f0740f37afef542eb77d4298aeb |
|
MD5 | 02d7418b4becb58803c4d00508c99c3e |
|
BLAKE2b-256 | cece496897a8937189520a38158871fe10d0e5542d2b9f2c3bb527c7635f8497 |
Hashes for flake8_comprehensions-1.3.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2496205c06330992f7acad0f949e17146b2378749e86ae001ab368fb0b76118 |
|
MD5 | aa051aa00845a9d70996e4535ddb8050 |
|
BLAKE2b-256 | 2a46253d553f1c050357f960a7ecd3f2a887e5e9bb56f7ef087a3797973da7cb |