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 literal - rewrite as a set literal. |
C406 |
Unnecessary list 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}
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
New release notes here
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.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ab9e758ee664bf517dbfef76903b61533491ad9dbe40f93b8eb4e5190ec81e0 |
|
MD5 | fcf9038ca3fb8d4ee21e60100a299ed2 |
|
BLAKE2b-256 | f5c05cae7432d8686c33bf0fda9a9243937923d2bf2de5570e73226322bc3a99 |
Hashes for flake8_comprehensions-1.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45ca21e21148142657864a973431c85aeeb3112b81d96b86a1842ad018082127 |
|
MD5 | 0012441ebb3861d2088a63168144919f |
|
BLAKE2b-256 | fc0e4f3186726b7636a901d5f6f87ceb49e1a5ea4e6e35151523eb224c596644 |