Simple Python style checker in one Python file
Clone or download
Tadaboody and sigmavirus24 Add whitespace around -> annotating operator (#809)
* Test for whitespace around -> operator

Tests will pass after fixing issue #803

* Require whitespace around -> operator

Closes: #803

* Move tests to correct cases

* Whitelist python3 only tests

* Fix whitespace test errors

Huge thanks to @asottile!

* Address code review

Pushing this directly to run full testsuite on travis

* 🐛Change error code to space around bitwise operator E227

* Check for -> annotation only in py3.5+

* Skip tests meant for higher versions of python

* Move type annotation tests to python3.5 testsuite

Type annotations were first introduced in PEP 484, implemented in python3.5

* Shorten line skipping tests by version

* Replace test skipping logic

As requested in code review

* Run formatting to avoid long lines
Latest commit bd17ca6 Dec 8, 2018


pycodestyle (formerly called pep8) - Python style guide checker

Build status Documentation Status Wheel Status Join the chat at

pycodestyle is a tool to check your Python code against some of the style conventions in PEP 8.


This package used to be called pep8 but was renamed to pycodestyle to reduce confusion. Further discussion can be found in the issue where Guido requested this change, or in the lightning talk at PyCon 2016 by @IanLee1521: slides video.


  • Plugin architecture: Adding new checks is easy.
  • Parseable output: Jump to error location in your editor.
  • Small: Just one Python file, requires only stdlib. You can use just the file for this purpose.
  • Comes with a comprehensive test suite.


You can install, upgrade, and uninstall with these commands:

$ pip install pycodestyle
$ pip install --upgrade pycodestyle
$ pip uninstall pycodestyle

There's also a package for Debian/Ubuntu, but it's not always the latest version.

Example usage and output

$ pycodestyle --first E401 multiple imports on one line E302 expected 2 blank lines, found 1 E301 expected 1 blank line, found 0 W602 deprecated form of raising exception E211 whitespace before '(' E201 whitespace after '{' E221 multiple spaces before operator W601 .has_key() is deprecated, use 'in'

You can also make show the source code for each error, and even the relevant text from PEP 8:

$ pycodestyle --show-source --show-pep8 testsuite/
testsuite/ E401 multiple imports on one line
import os, sys
    Imports should usually be on separate lines.

    Okay: import os\nimport sys
    E401: import sys, os

Or you can display how often each error was found:

$ pycodestyle --statistics -qq Python-2.5/Lib
232     E201 whitespace after '['
599     E202 whitespace before ')'
631     E203 whitespace before ','
842     E211 whitespace before '('
2531    E221 multiple spaces before operator
4473    E301 expected 1 blank line, found 0
4006    E302 expected 2 blank lines, found 1
165     E303 too many blank lines (4)
325     E401 multiple imports on one line
3615    E501 line too long (82 characters)
612     W601 .has_key() is deprecated, use 'in'
1188    W602 deprecated form of raising exception