Python Dev Tools¶
Needed and up-to-date tools to develop in Python (WORK IN PROGRESS)
Supported Python versions: the same as the classic Python interpreter (CPython)
Documentation¶
The full documentation can be read at https://python-dev-tools.readthedocs.io.
Installation¶
In a terminal, run:
$ python3 -m pip install python-dev-tools --user --upgrade
Full documentation on installation: https://python-dev-tools.readthedocs.io/en/latest/installation.html
That’s it! Use the provided linter (flake8
), formatter (whataformatter
) and
precommit hook (TODO) where applicable.
Installation with Visual Studio Code¶
Follow the installation procedure for python-dev-tools
Be sure to have the official Python extension installed in VS Code
Open VS Code from within your activated virtual environment (in fact, make sure that
flake8
from python-dev-tools is in yourPYTHON_PATH
)In VS Code, open settings (F1 key, then type “Open Settings (JSON)”, then enter)
Add in the opened JSON file (before the closing
}
):
"python.linting.enabled": true,
"python.linting.flake8Enabled": true,
"python.linting.flake8Path": "flake8",
"python.formatting.provider": "black",
"python.formatting.blackPath": "whataformatter",
"python.formatting.blackArgs": [],
Features¶
Integrate features of commonly used tools. This package provides usual dependencies to develop Python software.
Simple linter
flake8 a_python_file.py
lints a_python_file.pybased on flake8 and plugins: https://gitlab.com/pycqa/flake8
flake8-2020: https://github.com/asottile/flake8-2020
flake8-aaa: https://github.com/jamescooke/flake8-aaa
flake8-annotations: https://github.com/sco1/flake8-annotations
flake8-annotations-complexity: https://github.com/best-doctor/flake8-annotations-complexity
flake8-annotations-coverage: https://github.com/best-doctor/flake8-annotations-coverage
flake8-bandit: https://github.com/tylerwince/flake8-bandit
flake8-blind-except: https://github.com/elijahandrews/flake8-blind-except
flake8-breakpoint: https://github.com/afonasev/flake8-breakpoint
flake8-broken-line: https://github.com/sobolevn/flake8-broken-line
flake8-bugbear: https://github.com/PyCQA/flake8-bugbear
flake8-builtins: https://github.com/gforcada/flake8-builtins
flake8-class-attributes-order: https://github.com/best-doctor/flake8-class-attributes-order
flake8-coding: https://github.com/tk0miya/flake8-coding
flake8-cognitive-complexity: https://github.com/Melevir/flake8-cognitive-complexity
flake8-comments: https://github.com/orsinium-labs/flake8-comments
flake8-comprehensions: https://github.com/adamchainz/flake8-comprehensions
flake8-debugger: https://github.com/JBKahn/flake8-debugger
flake8-django: https://github.com/rocioar/flake8-django
flake8-docstrings: https://gitlab.com/pycqa/flake8-docstrings
flake8-encoding: https://github.com/python-formate/flake8-encodings
flake8-eradicate: https://github.com/sobolevn/flake8-eradicate
flake8-executable: https://github.com/xuhdev/flake8-executable
flake8-expression-complexity: https://pypi.org/project/flake8-expression-complexity/
flake8-fixme: https://github.com/tommilligan/flake8-fixme
flake8-functions: https://github.com/best-doctor/flake8-functions
flake8-functions-names: https://github.com/Melevir/flake8-functions-names
flake8-future-annotations: https://github.com/tyleryep/flake8-future-annotations
flake8-isort: https://github.com/gforcada/flake8-isort
flake8-literal: https://github.com/plinss/flake8-literal
flake8-logging-format: https://github.com/globality-corp/flake8-logging-format
flake8-markdown: https://github.com/johnfraney/flake8-markdown
flake8-mutable: https://github.com/ebeweber/flake8-mutable
flake8-no-pep420: https://github.com/adamchainz/flake8-no-pep420
flake8-noqa: https://pypi.org/project/flake8-noqa/
flake8-pie: https://github.com/sbdchd/flake8-pie
flake8-pylint: https://github.com/orsinium-labs/flake8-pylint
flake8-pyi: https://github.com/PyCQA/flake8-pyi
flake8-pytest-style: https://github.com/m-burst/flake8-pytest-style
flake8-quotes: https://github.com/zheller/flake8-quotes/
flake8-rst-docstrings: https://github.com/peterjc/flake8-rst-docstrings
flake8-secure-coding-standard: https://github.com/Takishima/flake8-secure-coding-standard
flake8-simplify: https://github.com/MartinThoma/flake8-simplify
flake8-slots: https://github.com/python-formate/flake8-slots
flake8-string-format: https://github.com/xZise/flake8-string-format
flake8-tidy-imports: https://github.com/adamchainz/flake8-tidy-imports
flake8-typing-imports: https://github.com/asottile/flake8-typing-imports
flake8-use-fstring: https://github.com/MichaelKim0407/flake8-use-fstring
flake8-use-pathlib: https://gitlab.com/RoPP/flake8-use-pathlib
flake8-useless-assert: https://github.com/decorator-factory/flake8-useless-assert
flake8-variables-names: https://github.com/best-doctor/flake8-variables-names
flake8-warnings: https://github.com/orsinium-labs/flake8-warnings
pandas-vet: https://github.com/deppen8/pandas-vet
pep8-naming: https://github.com/PyCQA/pep8-naming
wemake-python-styleguide: https://github.com/wemake-services/wemake-python-styleguide
Simple formatter
whataformatter a_python_file.py
formats a_python_file.pybased on
autoflake: https://github.com/myint/autoflake
docformatter: https://github.com/PyCQA/docformatter
pybetter: https://github.com/lensvol/pybetter
pyupgrade: https://github.com/asottile/pyupgrade
removestar: https://github.com/asmeurer/removestar
Simple precommit hook
TODO
License¶
BSD 3-Clause license, feel free to contribute: https://python-dev-tools.readthedocs.io/en/latest/contributing.html.
TODO¶
flake8 formatter to add URL to information on a warning
documentation
precommit (flake8, mypy)
Changelog¶
2022.5.27¶
Add
flake8-aaa
linterAdd
flake8-blind-except
linterAdd
flake8-breakpoint
linterAdd
flake8-class-attributes-order
linterAdd
flake8-cognitive-complexity
linterAdd
flake8-coding
linterAdd
flake8-comments
linterAdd
flake8-django
linterAdd
flake8-encoding
linterAdd
flake8-executable
linterAdd
flake8-functions-names
linterAdd
flake8-future-annotations
linterAdd
flake8-literal
linterAdd
flake8-markdown
linterAdd
flake8-noqa
linterAdd
flake8-no-pep420
linterAdd
flake8-pie
linterAdd
flake8-pyi
linterAdd
flake8-pylint
linterAdd
flake8-secure-coding-standard
linterAdd
flake8-slots
linterAdd
flake8-use-pathlib
linterAdd
flake8-useless-assert
linterAdd
flake8-warnings
linterAdd
pandas-vet
linter
2022.5.26¶
Add
docformatter
formatterAdd
isort
formatterAdd
pybetter
formatterAdd
pycln
formatterAdd
removestar
formatterAdd
ssort
formatterRemove
cohesion
linter (false warnings on pure data classes such asNamedTuple
)
2022.5.20¶
Add
cohesion
linterAdd
dlint
linterAdd
flake8-annotations
linterAdd
flake8-annotations-complexity
linterAdd
flake8-annotations-coverage
linterAdd
flake8-black
linterAdd
flake8-expression-complexity
linterAdd
flake8-functions
linterAdd
flake8-pytest-style
linterAdd
flake8-simplify
linterAdd
flake8-tidy-imports
linterAdd
flake8-typing-imports
linterAdd
flake8-use-fstring
linterRemove
flake8-commas
linter that is deprecatedFix
whataformatter
and add--target-version
option for VS Code compatibility
2020.9.10¶
The path provided to
whatalinter
can be the one of a directory (recursive search of Python files)
2020.9.7¶
Remove E203 in
flake8
forblack
compatibility
2020.9.4¶
Add
whatalinter_vscode
for Visual Studio Code integration
2020.9.2¶
Remove some warnings of
wemake-python-styleguide
, for instance allow f-strings
2020.9.1¶
Use
poetry
Remove redundant linters
Change max line length to 88 (default value of
black
)Replace
pydocstyle
withflake8-docstrings
Add
wemake-python-styleguide
2019.10.22¶
Add
flake8-2020
linter
2019.07.21¶
Add
--quiet
and--diff
flags towhataformatter
for VS Code compatibility
2019.07.20¶
Add
black
formatterAdd
autoflake
formatterAdd
pyupgrade
formatter
2019.04.08¶
Add
flake8
linterAdd
flake8-isort
linterAdd
pep8-naming
linterAdd
flake8-comprehensions
linterAdd
flake8-logging-format
linterAdd
flake8-bugbear
linterAdd
flake8-builtins
linterAdd
flake8-broken-line
linterAdd
flake8-fixme
linterAdd
flake8-mutable
linterAdd
flake8-debugger
linterAdd
flake8-variables-names
linterAdd
flake8-bandit
linter
2019.03.02¶
Add
pydocstyle
linter
2019.03.01¶
Add McCabe complexity checker
2019.02.26¶
Add
pyflakes
linterAdd
pycodestyle
linter
2019.02.23¶
First release on PyPI.