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
File details
Details for the file flake8-comprehensions-1.3.0.tar.gz
.
File metadata
- Download URL: flake8-comprehensions-1.3.0.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 009139c5d2a68e1f7d5550878bdf23c47cf57f0740f37afef542eb77d4298aeb |
|
MD5 | 02d7418b4becb58803c4d00508c99c3e |
|
BLAKE2b-256 | cece496897a8937189520a38158871fe10d0e5542d2b9f2c3bb527c7635f8497 |
File details
Details for the file flake8_comprehensions-1.3.0-py2.py3-none-any.whl
.
File metadata
- Download URL: flake8_comprehensions-1.3.0-py2.py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2496205c06330992f7acad0f949e17146b2378749e86ae001ab368fb0b76118 |
|
MD5 | aa051aa00845a9d70996e4535ddb8050 |
|
BLAKE2b-256 | 2a46253d553f1c050357f960a7ecd3f2a887e5e9bb56f7ef087a3797973da7cb |