Changelogs » Pycodestyle




New checks:

* E117: Over-indented code blocks
* W505: Maximum doc-string length only when configured with --max-doc-length


* Remove support for EOL Python 2.6 and 3.3. PR 720.
* Add E117 error for over-indented code blocks.
* Allow W605 to be silenced by ` noqa` and fix the position reported by W605
* Allow users to omit blank lines around one-liner definitions of classes and
* Include the function return annotation (``->``) as requiring surrounding
whitespace only on Python 3
* Verify that only names can follow ``await``. Previously we allowed numbers
and strings.
* Add support for Python 3.7
* Fix detection of annotated argument defaults for E252
* Cprrect the position reported by W504



New checks:

* Add W504 warning for checking that a break doesn't happen after a binary
operator. This check is ignored by default. PR 502.
* Add W605 warning for invalid escape sequences in string literals. PR 676.
* Add W606 warning for 'async' and 'await' reserved keywords being introduced
in Python 3.7. PR 684.
* Add E252 error for missing whitespace around equal sign in type annotated
function arguments with defaults values. PR 717.


* An internal bisect search has replaced a linear search in order to improve
efficiency. PR 648.
* pycodestyle now uses PyPI trove classifiers in order to document supported
python versions on PyPI. PR 654.
* 'setup.cfg' '[wheel]' section has been renamed to '[bdist_wheel]', as
the former is legacy. PR 653.
* pycodestyle now handles very long lines much more efficiently for python
3.2+. Fixes 643. PR 644.
* You can now write 'pycodestyle.StyleGuide(verbose=True)' instead of
'pycodestyle.StyleGuide(verbose=True, paths=['-v'])' in order to achieve
verbosity. PR 663.
* The distribution of pycodestyle now includes the license text in order to
comply with open source licenses which require this. PR 694.
* 'maximum_line_length' now ignores shebang ('!') lines. PR 736.
* Add configuration option for the allowed number of blank lines. It is
implemented as a top level dictionary which can be easily overwritten. Fixes
732. PR 733.


* Prevent a 'DeprecationWarning', and a 'SyntaxError' in future python, caused
by an invalid escape sequence. PR 625.
* Correctly report E501 when the first line of a docstring is too long.
Resolves 622. PR 630.
* Support variable annotation when variable start by a keyword, such as class
variable type annotations in python 3.6. PR 640.
* pycodestyle internals have been changed in order to allow 'python3 -m
cProfile' to report correct metrics. PR 647.
* Fix a spelling mistake in the description of E722. PR 697.
* 'pycodestyle --diff' now does not break if your 'gitconfig' enables
'mnemonicprefix'. PR 706.




* Fix regression in detection of E302 and E306; 618, 620



New Checks:

* Add E722 warning for bare ``except`` clauses
* Report E704 for async function definitions (``async def``)


* Fix another E305 false positive for variables beginning with "class" or
* Fix detection of multiple spaces between ``async`` and ``def``
* Fix handling of variable annotations. Stop reporting E701 on Python 3.6 for
variable annotations.




* Added Make target to obtain proper tarball file permissions; 599


* Fixed E305 regression caused by 400; 593




* Change all references to the pep8 project to say pycodestyle; 530


* Report E302 for blank lines before an "async def"; 556
* Update our list of tested and supported Python versions which are 2.6, 2.7,
3.2, 3.3, 3.4 and 3.5 as well as the nightly Python build and PyPy.
* Report E742 and E743 for functions and classes badly named 'l', 'O', or 'I'.
* Report E741 on 'global' and 'nonlocal' statements, as well as prohibited
single-letter variables.
* Deprecated use of `[pep8]` section name in favor of `[pycodestyle]`; 591
* Report E722 when bare except clause is used; 579


* Fix opt_type AssertionError when using Flake8 2.6.2 and pycodestyle; 561
* Require two blank lines after toplevel def, class; 536
* Remove accidentally quadratic computation based on the number of colons. This
will make pycodestyle faster in some cases; 314




* Repository renamed to `pycodestyle`; Issue 466 / 481.
* Added joint Code of Conduct as member of PyCQA; 483


* Added tox test support for Python 3.5 and pypy3
* Added check E275 for whitespace on `from ... import ...` lines; 489 / 491
* Added W503 to the list of codes ignored by default ignore list; 498
* Removed use of project level `.pep8` configuration file; 364


* Fixed bug with treating `~` operator as binary; 383 / 384
* Identify binary operators as unary; 484 / 485




* Repository moved to PyCQA Organization on GitHub:


* Reverted the fix in 368, "options passed on command line are only ones
accepted" feature. This has many unintended consequences in pep8 and flake8
and needs to be reworked when I have more time.
* Added support for Python 3.5. (Issue 420 & 459)
* Added support for multi-line config_file option parsing. (Issue 429)
* Improved parameter parsing. (Issues 420 & 456)


* Fixed BytesWarning on Python 3. (Issue 459)




* Added check for breaking around a binary operator. (Issue 197, Pull 305)


* Restored config_file parameter in process_options(). (Issue 380)




* Assign variables before referenced. (Issue 287)


* Exception thrown due to unassigned ``local_dir`` variable. (Issue 377)




* Ian Lee <> joined the project as a maintainer.


* Report E731 for lambda assignment. (Issue 277)

* Report E704 for one-liner def instead of E701.
Do not report this error in the default configuration. (Issue 277)

* Replace codes E111, E112 and E113 with codes E114, E115 and E116
for bad indentation of comments. (Issue 274)

* Report E266 instead of E265 when the block comment starts with
multiple `. (Issue 270)

* Report E402 for import statements not at the top of the file. (Issue 264)

* Do not enforce whitespaces around ``**`` operator. (Issue 292)

* Strip whitespace from around paths during normalization. (Issue 339 / 343)

* Update ``--format`` documentation. (Issue 198 / Pull Request 310)

* Add ``.tox/`` to default excludes. (Issue 335)

* Do not report E121 or E126 in the default configuration. (Issues 256 / 316)

* Allow spaces around the equals sign in an annotated function. (Issue 357)

* Allow trailing backslash if in an inline comment. (Issue 374)

* If ``--config`` is used, only that configuration is processed. Otherwise,
merge the user and local configurations are merged. (Issue 368 / 369)

Bug fixes:

* Don't crash if Checker.build_tokens_line() returns None. (Issue 306)

* Don't crash if os.path.expanduser() throws an ImportError. (Issue 297)

* Missing space around keyword parameter equal not always reported, E251.
(Issue 323)

* Fix false positive E711/E712/E713. (Issues 330 and 336)

* Do not skip physical checks if the newline is escaped. (Issue 319)

* Flush sys.stdout to avoid race conditions with printing. See flake8 bug: for more details. (Issue 363)



Bug fixes:

* Skip the traceback on "Broken pipe" signal. (Issue 275)

* Do not exit when an option in ``setup.cfg`` or ``tox.ini``
is not recognized.

* Check the last line even if it does not end with a newline. (Issue 286)

* Always open files in universal newlines mode in Python 2. (Issue 288)



Bug fixes:

* Check the last line even if it has no end-of-line. (Issue 273)



Bug fixes:

* Fix regression with E22 checks and inline comments. (Issue 271)



Bug fixes:

* Fix negative offset with E303 before a multi-line docstring.
(Issue 269)



Bug fixes:

* Fix wrong offset computation when error is on the last char
of a physical line. (Issue 268)




* Distribute a universal wheel file.

Bug fixes:

* Report correct line number for E303 with comments. (Issue 60)

* Do not allow newline after parameter equal. (Issue 252)

* Fix line number reported for multi-line strings. (Issue 220)

* Fix false positive E121/E126 with multi-line strings. (Issue 265)

* Fix E501 not detected in comments with Python 2.5.

* Fix caret position with ``--show-source`` when line contains tabs.



Bug fixes:

* Fix a crash with E125 on multi-line strings. (Issue 263)




* Report E129 instead of E125 for visually indented line with same
indent as next logical line.  (Issue 126)

* Report E265 for space before block comment. (Issue 190)

* Report E713 and E714 when operators ``not in`` and ``is not`` are
recommended. (Issue 236)

* Allow long lines in multiline strings and comments if they cannot
be wrapped. (Issue 224).

* Optionally disable physical line checks inside multiline strings,
using `` noqa``. (Issue 242)

* Change text for E121 to report "continuation line under-indented
for hanging indent" instead of indentation not being a
multiple of 4.

* Report E131 instead of E121 / E126 if the hanging indent is not
consistent within the same continuation block.  It helps when
error E121 or E126 is in the ``ignore`` list.

* Report E126 instead of E121 when the continuation line is hanging
with extra indentation, even if indentation is not a multiple of 4.

Bug fixes:

* Allow the checkers to report errors on empty files. (Issue 240)

* Fix ignoring too many checks when ``--select`` is used with codes
declared in a flake8 extension. (Issue 216)

* Fix regression with multiple brackets. (Issue 214)

* Fix ``StyleGuide`` to parse the local configuration if the
keyword argument ``paths`` is specified. (Issue 246)

* Fix a false positive E124 for hanging indent. (Issue 254)

* Fix a false positive E126 with embedded colon. (Issue 144)

* Fix a false positive E126 when indenting with tabs. (Issue 204)

* Fix behaviour when ``exclude`` is in the configuration file and
the current directory is not the project directory. (Issue 247)

* The logical checks can return ``None`` instead of an empty iterator.
(Issue 250)

* Do not report multiple E101 if only the first indentation starts
with a tab. (Issue 237)

* Fix a rare false positive W602. (Issue 34)




* Honor `` noqa`` for errors E711 and E712. (Issue 180)

* When both a ``tox.ini`` and a ``setup.cfg`` are present in the project
directory, merge their contents.  The ``tox.ini`` file takes
precedence (same as before). (Issue 182)

* Give priority to ``--select`` over ``--ignore``. (Issue 188)

* Compare full path when excluding a file. (Issue 186)

* New option ``--hang-closing`` to switch to the alternative style of
closing bracket indentation for hanging indent.  Add error E133 for
closing bracket which is missing indentation. (Issue 103)

* Accept both styles of closing bracket indentation for hanging indent.
Do not report error E123 in the default configuration. (Issue 103)

Bug fixes:

* Do not crash when running AST checks and the document contains null bytes.
(Issue 184)

* Correctly report other E12 errors when E123 is ignored. (Issue 103)

* Fix false positive E261/E262 when the file contains a BOM. (Issue 193)

* Fix E701, E702 and E703 not detected sometimes. (Issue 196)

* Fix E122 not detected in some cases. (Issue 201 and 208)

* Fix false positive E121 with multiple brackets. (Issue 203)



* When no path is specified, do not try to read from stdin.  The feature
was added in 1.4.3, but it is not supported on Windows.  Use ``-``
filename argument to read from stdin.  This usage is supported
since 1.3.4. (Issue 170)

* Do not require ``setuptools`` in  It works around an issue
with ``pip`` and Python 3. (Issue 172)

* Add ``__pycache__`` to the ignore list.

* Change misleading message for E251. (Issue 171)

* Do not report false E302 when the source file has a coding cookie or a
comment on the first line. (Issue 174)

* Reorganize the tests and add tests for the API and for the command line
usage and options. (Issues 161 and 162)

* Ignore all checks which are not explicitly selected when ``select`` is
passed to the ``StyleGuide`` constructor.



* Report E227 or E228 instead of E225 for whitespace around bitwise, shift
or modulo operators. (Issue 166)

* Change the message for E226 to make clear that it is about arithmetic

* Fix a false positive E128 for continuation line indentation with tabs.

* Fix regression with the ``--diff`` option. (Issue 169)

* Fix the ``TestReport`` class to print the unexpected warnings and



* Hide the ``--doctest`` and ``--testsuite`` options when installed.

* Fix crash with AST checkers when the syntax is invalid. (Issue 160)

* Read from standard input if no path is specified.

* Initiate a graceful shutdown on ``Control+C``.

* Allow changing the ``checker_class`` for the ``StyleGuide``.



* Support AST checkers provided by third-party applications.

* Register new checkers with ``register_check(func_or_cls, codes)``.

* Allow constructing a ``StyleGuide`` with a custom parser.

* Accept visual indentation without parenthesis after the ``if``
statement. (Issue 151)

* Fix UnboundLocalError when using `` noqa`` with continued lines.
(Issue 158)

* Re-order the lines for the ``StandardReport``.

* Expand tabs when checking E12 continuation lines. (Issue 155)

* Refactor the testing class ``TestReport`` and the specific test
functions into a separate test module.



* Allow sphinx.ext.autodoc syntax for comments. (Issue 110)

* Report E703 instead of E702 for the trailing semicolon. (Issue 117)

* Honor `` noqa`` in addition to `` nopep8``. (Issue 149)

* Expose the ``OptionParser`` factory for better extensibility.



* Report E226 instead of E225 for optional whitespace around common
operators (``*``, ``**``, ``/``, ``+`` and ``-``).  This new error
code is ignored in the default configuration because PEP 8 recommends
to "use your own judgement". (Issue 96)

* Lines with a `` nopep8`` at the end will not issue errors on line
length E501 or continuation line indentation E12*. (Issue 27)

* Fix AssertionError when the source file contains an invalid line
ending ``"\r\r\n"``. (Issue 119)

* Read the ``[pep8]`` section of ``tox.ini`` or ``setup.cfg`` if present.
(Issue 93 and 141)

* Add the Sphinx-based documentation, and publish it
on (Issue 105)



* Fix false positive E124 and E128 with comments. (Issue 100)

* Fix error on stdin when running with bpython. (Issue 101)

* Fix false positive E401. (Issue 104)

* Report E231 for nested dictionary in list. (Issue 142)

* Catch E271 at the beginning of the line. (Issue 133)

* Fix false positive E126 for multi-line comments. (Issue 138)

* Fix false positive E221 when operator is preceded by a comma. (Issue 135)

* Fix ``--diff`` failing on one-line hunk. (Issue 137)

* Fix the ``--exclude`` switch for directory paths. (Issue 111)

* Use ``-`` filename to read from standard input. (Issue 128)



* Fix regression with continuation line checker. (Issue 98)



* Revert to the previous behaviour for ``--show-pep8``:
do not imply ``--first``. (Issue 89)

* Add E902 for IO errors. (Issue 87)

* Fix false positive for E121, and missed E124. (Issue 92)

* Set a sensible default path for config file on Windows. (Issue 95)

* Allow ``verbose`` in the configuration file. (Issue 91)

* Show the enforced ``max-line-length`` in the error message. (Issue 86)



* Explain which configuration options are expected.  Accept and recommend
the options names with hyphen instead of underscore. (Issue 82)

* Do not read the user configuration when used as a module
(except if ``config_file=True`` is passed to the ``StyleGuide`` constructor).

* Fix wrong or missing cases for the E12 series.

* Fix cases where E122 was missed. (Issue 81)



.. warning::
The internal API is backwards incompatible.

* Remove global configuration and refactor the library around
a ``StyleGuide`` class; add the ability to configure various
reporters. (Issue 35 and 66)

* Read user configuration from ``~/.config/pep8``
and local configuration from ``./.pep8``. (Issue 22)

* Fix E502 for backslash embedded in multi-line string. (Issue 68)

* Fix E225 for Python 3 iterable unpacking (PEP 3132). (Issue 72)

* Enable the new checkers from the E12 series in the default

* Suggest less error-prone alternatives for E712 errors.

* Rewrite checkers to run faster (E22, E251, E27).

* Fixed a crash when parsed code is invalid (too many
closing brackets).

* Fix E127 and E128 for continuation line indentation. (Issue 74)

* New option ``--format`` to customize the error format. (Issue 23)

* New option ``--diff`` to check only modified code.  The unified
diff is read from STDIN.  Example: ``hg diff | pep8 --diff``
(Issue 39)

* Correctly report the count of failures and set the exit code to 1
when the ``--doctest`` or the ``--testsuite`` fails.

* Correctly detect the encoding in Python 3. (Issue 69)

* Drop support for Python 2.3, 2.4 and 3.0. (Issue 78)



* Add E121 through E128 for continuation line indentation.  These
checks are disabled by default.  If you want to force all checks,
use switch ``--select=E,W``.  Patch by Sam Vilain. (Issue 64)

* Add E721 for direct type comparisons. (Issue 47)

* Add E711 and E712 for comparisons to singletons. (Issue 46)

* Fix spurious E225 and E701 for function annotations. (Issue 29)

* Add E502 for explicit line join between brackets.

* Fix E901 when printing source with ``--show-source``.

* Report all errors for each checker, instead of reporting only the
first occurrence for each line.

* Option ``--show-pep8`` implies ``--first``.



* Add E901 for syntax errors. (Issues 63 and 30)

* Add E271, E272, E273 and E274 for extraneous whitespace around
keywords. (Issue 57)

* Add ``tox.ini`` configuration file for tests. (Issue 61)

* Add ``.travis.yml`` configuration file for continuous integration.
(Issue 62)



* Fix inconsistent version numbers.



* Fix W602 ``raise`` to handle multi-char names. (Issue 53)



* Now ``--first`` prints only the first occurrence of each error.
The ``--repeat`` flag becomes obsolete because it is the default
behaviour. (Issue 6)

* Allow specifying ``--max-line-length``. (Issue 36)

* Make the shebang more flexible. (Issue 26)

* Add testsuite to the bundle. (Issue 25)

* Fixes for Jython. (Issue 49)

* Add PyPI classifiers. (Issue 43)

* Fix the ``--exclude`` option. (Issue 48)

* Fix W602, accept ``raise`` with 3 arguments. (Issue 34)

* Correctly select all tests if ``DEFAULT_IGNORE == ''``.



* Fix inconsistent version numbers. (Issue 21)



* Test suite reorganized and enhanced in order to check more failures
with fewer test files.  Read the ``run_tests`` docstring for details
about the syntax.

* Fix E225: accept ``print >>sys.stderr, "..."`` syntax.

* Fix E501 for lines containing multibyte encoded characters. (Issue 7)

* Fix E221, E222, E223, E224 not detected in some cases. (Issue 16)

* Fix E211 to reject ``v = dic['a'] ['b']``. (Issue 17)

* Exit code is always 1 if any error or warning is found. (Issue 10)

* ``--ignore`` checks are now really ignored, especially in
conjunction with ``--count``. (Issue 8)

* Blank lines with spaces yield W293 instead of W291: some developers
want to ignore this warning and indent the blank lines to paste their
code easily in the Python interpreter.

* Fix E301: do not require a blank line before an indented block. (Issue 14)

* Fix E203 to accept NumPy slice notation ``a[0, :]``. (Issue 13)

* Performance improvements.

* Fix decoding and checking non-UTF8 files in Python 3.

* Fix E225: reject ``True+False`` when running on Python 3.

* Fix an exception when the line starts with an operator.

* Allow a new line before closing ``)``, ``}`` or ``]``. (Issue 5)



* Changed the ``--count`` switch to print to sys.stderr and set
exit code to 1 if any error or warning is found.

* E241 and E242 are removed from the standard checks. If you want to
include these checks, use switch ``--select=E,W``. (Issue 4)

* Blank line is not mandatory before the first class method or nested
function definition, even if there's a docstring. (Issue 1)

* Add the switch ``--version``.

* Fix decoding errors with Python 3. (Issue 13 [1]_)

* Add ``--select`` option which is mirror of ``--ignore``.

* Add checks E261 and E262 for spaces before inline comments.

* New check W604 warns about deprecated usage of backticks.

* New check W603 warns about the deprecated operator ``<>``.

* Performance improvement, due to rewriting of E225.

* E225 now accepts:

- no whitespace after unary operator or similar. (Issue 9 [1]_)

- lambda function with argument unpacking or keyword defaults.

* Reserve "2 blank lines" for module-level logical blocks. (E303)

* Allow multi-line comments. (E302, issue 10 [1]_)



* Decorators on classes and class methods are OK now.



* Support for all versions of Python from 2.3 to 3.1.

* New and greatly expanded self tests.

* Added ``--count`` option to print the total number of errors and warnings.

* Further improvements to the handling of comments and blank lines.
(Issue 1 [1]_ and others changes.)

* Check all py files in directory when passed a directory (Issue
2 [1]_). This also prevents an exception when traversing directories
with non ``*.py`` files.

* E231 should allow commas to be followed by ``)``. (Issue 3 [1]_)

* Spaces are no longer required around the equals sign for keyword
arguments or default parameter values.

.. [1] These issues refer to the `previous issue tracker`__.
.. __:



* Fixes for comments: do not count them when checking for blank lines between

* Added for pypi upload and easy_installability.



* Loads of fixes and improvements.



* First release.