Changelogs » Pycodestyle

PyUp Safety actively tracks 362,670 Python packages for vulnerabilities and notifies you when to upgrade.



  * Drop python 3.4.  PR 982.
  * E712: fix false negative with multiple comparisons.  PR 987.
  * E211: fix false positives with ``match``.  PR 989.
  * E772: improve performance of bare except check.  PR 992.
  * Backport tokenize performance improvement from python 3.10.  PR 993.
  * E225: fix for lambdas containing positional-only args.  PR 1012.
  * Remove ``indent_size_str`` "setting".  PR 995.
  * E402: allow ``__all__`` to be typed.  PR 1019.
  * E225: fix false positives for ``*`` in ``case``.  PR 1003.
  * E201: detect tabs as whitespace.  PR 1015.


  * Fix physical checks (such as W191) at end of file.  PR 961.
  * Add ``--indent-size`` option (defaulting to ``4``).  PR 970.
  * W605: fix escaped crlf false positive on windows.  PR 976.


  * Anthony Sottile (asottile) joined the team as a core developer. :tada:
  * E306: fix detection inside ``async def``.  PR 929.
  * E301: fix regression disallowing decorated one-liners.  PR 927.
  * E714: fix false positive with chained ``is not``.  PR 931.


  New checks:
  * E225: require whitespace around ``and`` ``in`` ``is`` and ``or``.  PR 847.
  * E117: fix indentation using tabs by treating as 8-space indents.  PR 837.
  * E721: fix false positive with names containg ``istype``.  PR 850.
  * E741: allow ``l`` as a named argument in a function call.  PR 853.
  * E302: fix false-negative with decorated functions.  PR 859.
  * W504: ellipsis (``...``) is no longer treated as a binary operator.  PR 875.
  * E402: allow ``with``, ``if``, ``elif``, ``else`` to guard imports.  PR 834.
  * Add support for assignment expressions ``:=`` (PEP 572).  PR 879.
  * Add support for positional-only arguments ``/`` (PEP 570).  PR 872, 918.
  * Add support for python 3.8.
  * Add support for matrix multiplication operator ` (PEP 465).  PR 897.
  * Support visual indent for continuation lines for ``with`` / ``assert`` /
  ``raise``.  PR 912.
  * E302: allow two blank lines after a block of one-liners.  PR 913.
  * E302: allow two-and-fewer newlines at the top of the file.  PR 919.


  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
  * Correct 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.