Flake8 plugin that checks Python code against a set of opinionated style rules
Project description
Flake8 plugin that checks Python code against a set of opinionated style rules.
Compatible with Python 2.7, 3.3+, PyPy 2.6+ and PyPy 2.4+.
PyPI page: https://pypi-hypernode.com/pypi/flake8_strict
GitHub page: https://github.com/smarkets/flake8-strict
To install using PyPI and pip:
pip install flake8-strict
Error codes
S100: First argument on the same line
S101: Multi-line construct missing trailing comma
Limitations
only source code without print statements is supported, this means:
all valid Python 3 code
Python 2 code with print_function enabled
the existing checks are quite basic, they’ll be improved and new ones will added
line/column numbers are off currently
code like this will cause a parsing error (lib2to3.pgen2.parse.ParseError: bad input):
some_name( x for x in range(1), )
It’s ironic but the trailing comma is the issue here, without it parsing works ok:
some_name( x for x in range(1) )
This is a limitation of the underlying parser library and is unlikely to be fixed in near future. Suggested workaround: wrap the generator in parentheses, like this:
some_name( (x for x in range(1)), )
If the function being called is dict or set the function calls can be replaced with dict and set comprehensions therefore avoiding the issue completely.
Versioning and backwards compatibility
Below 1.0.0: no guarantees. Above 1.0.0, given a version number MAJOR.MINOR.PATCH:
MAJOR is updated when backwards incompatible changes happen
MINOR is updated when a new, backwards compatible, features are introduced
PATCH is updated when a backwards compatible bug fixes are applied
Changes
0.1.5
Fixed UnicodeDecodeError if file contains non-ascii symbols (issue #22)
Fixed error if newline is omitted from end of file (issue #18)
Fixed erroneous comma suggested when unpacking function parameter (issue #21)
0.1.4
Fixed handling of one-element lists (https://github.com/smarkets/flake8-strict/issues/15)
0.1.3
Fixed reading from stdin
Fixed not being able to run when pycodestyle, not pep8, is installed (pep8 has been renamed to pycodestyle and flake8 2.6.0+ doesn’t trigger pep8 installation anymore)
Added support for set, list and dict literals and comprehensions
Function calls with single, multi-line arguments are now treated more reasonably
0.1.2
Fixed a “ValueError: need more than 2 values to unpack” error (GitHub issue #1).
Fixed handling argument lists with keyword-only arguments (compatibility with PEP 3102), this now doesn’t raise S101 in this case as it would be a syntax error.
0.1.1
Fixed few AttributeError: 'Node' object has no attribute 'lineno' errors
0.1.0
First release
License
Copyright (C) 2015 Smarkets Limited <support@smarkets.com>
This module is released under the MIT License: http://www.opensource.org/licenses/mit-license.php (or see the LICENSE file)
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_strict-0.1.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28020308b3378c940f3652a7d807a0f4eea3a53f65a7abc4e084367c5a2984d2 |
|
MD5 | a87a49f71cd78153b1cb75105ad18b09 |
|
BLAKE2b-256 | 777f819292a60e1bdeff8f46cccf58e46dada0d5f908212945b9e838a4870fa4 |