I made wide research about different instruments for python and code style.
There are two types of instruments: linters - analyzing your code and give some warnings about bad used code styles and showing advices how to fix it, and code formatters - when you save your file it re-format your document using PEP style.
Because re-formatting must be more accurate - if it remorfat something that you don't want it became useless - they cover less part of PEP, linters show much more.
All of them have different permissions for configuring - for example, pylinter configurable in all its rules (you can turn on/off every type of warnings), black unconfigurable at all.
Here are some useful links and tutorials:
Documentation:
- PEP-257 Docstring Conventions:
https://www.python.org/dev/peps/pep-0257/
- PEP-484 Type Hint: https://www.python.org/dev/peps/pep-0484
- Chromium Style Guide
https://chromium.googlesource.com/chromiumos/docs/+/master/styleguide/python.md
- Code Style for autotest
https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/docs/coding-style.md
- Khan Academy Coding Style Guide
https://github.com/Khan/style-guides/blob/master/style/python.md
- The hitchhiker's Guide to Python https://docs.python-guide.org/
- EdX Python Style Guide
https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/style_guides/python-guidelines.html
- Code Style Article on RealPython https://realpython.com/python-pep8/
Linters (in order of popularity):
- mypy https://github.com/python/mypy linter for type checks
(PEP-484)
- pycodestyle https://github.com/PyCQA/pycodestyle - good one using
PEP-8, very popular. Often used alongside of pylint and flake8 (simultaniously)
- pylint https://github.com/PyCQA/pylint very configurable, actively supported
- bandit https://github.com/PyCQA/bandit линтер по безопасности
- prospector https://github.com/PyCQA/prospector pylint+code difficulty check
- flake8 https://github.com/PyCQA/flake8 pycodestyle wrapper with ability to turn on plugins. Very big list of different configurable plugins. Here is awesome flake8 repo:
https://github.com/DmytroLitvinov/awesome-flake8-extensions
- wemake https://github.com/wemake-services/wemake-python-styleguide -
trying to combine a lot of different linters in one project (really it is a flake8 plugin combining styles from several other linters)
- pylama https://github.com/klen/pylama trying to combine 10 another linters in one (mypy, pylint, pycodeestyle, pydocstyle и др.). I can see the only one problem here - old version (no updates in github repo for about 10 months.)
- pydocstyle https://github.com/PyCQA/pydocstyle docstrings linter
(PEP-257)
Code formatters (in order of popularity):
- black https://github.com/psf/black most populat formatter, used in several big companies. Was created later than yapf, but already has more starts at GitHub
- yapf https://github.com/google/yapf Google code formatter
- autopep8 https://github.com/hhatto/autopep8 build upon the
pycodestyle