Tool to convert Python code to be PEP8 compliant

后端 未结 6 1313
隐瞒了意图╮
隐瞒了意图╮ 2020-12-02 03:57

I know there are tools which validate whether your Python code is compliant with PEP8, for example there is both an online service and a python module.

However, I c

6条回答
  •  时光取名叫无心
    2020-12-02 04:49

    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

提交回复
热议问题