{"id":21961674,"url":"https://github.com/vpoulailleau/python-dev-tools","last_synced_at":"2025-04-23T20:20:54.485Z","repository":{"id":38361464,"uuid":"172338794","full_name":"vpoulailleau/python-dev-tools","owner":"vpoulailleau","description":"Needed and up-to-date tools to develop in Python","archived":false,"fork":false,"pushed_at":"2023-06-23T05:08:59.000Z","size":1575,"stargazers_count":12,"open_issues_count":24,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T12:49:05.694Z","etag":null,"topics":["dependencies","dependency","format","formatter","formatters","formatting","lint","linter","linter-plugin","linters","linting-rules","precommit-hooks","python","python-3","python3","python310","python37","python38","python39","vscode"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpoulailleau.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-24T13:11:55.000Z","updated_at":"2023-03-22T08:19:00.000Z","dependencies_parsed_at":"2024-06-19T13:35:18.147Z","dependency_job_id":"3e3cc82b-fdd1-47c1-b59c-65d8fb3d6be4","html_url":"https://github.com/vpoulailleau/python-dev-tools","commit_stats":{"total_commits":686,"total_committers":7,"mean_commits":98.0,"dds":"0.39212827988338195","last_synced_commit":"98a52a081b6b7b591defbaf795cda0937fd17ed0"},"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpoulailleau%2Fpython-dev-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpoulailleau%2Fpython-dev-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpoulailleau%2Fpython-dev-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpoulailleau%2Fpython-dev-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpoulailleau","download_url":"https://codeload.github.com/vpoulailleau/python-dev-tools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250506535,"owners_count":21441793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependencies","dependency","format","formatter","formatters","formatting","lint","linter","linter-plugin","linters","linting-rules","precommit-hooks","python","python-3","python3","python310","python37","python38","python39","vscode"],"created_at":"2024-11-29T10:17:21.711Z","updated_at":"2025-04-23T20:20:54.464Z","avatar_url":"https://github.com/vpoulailleau.png","language":"Python","readme":"Python Dev Tools\n================\n\nNeeded and up-to-date tools to develop in Python (*WORK IN PROGRESS*)\n\n\n.. image:: https://img.shields.io/pypi/v/python_dev_tools.svg\n        :target: https://pypi.python.org/pypi/python_dev_tools\n\n.. image:: https://img.shields.io/pypi/l/python_dev_tools.svg\n        :target: https://github.com/vpoulailleau/python_dev_tools/blob/master/LICENSE\n\n.. image:: https://img.shields.io/pypi/pyversions/python_dev_tools.svg?logo=python\u0026amp;logoColor=fff\n        :target: https://pypi.python.org/pypi/python_dev_tools\n\n.. image:: https://github.com/vpoulailleau/python-dev-tools/actions/workflows/tests.yml/badge.svg\n        :target: https://github.com/vpoulailleau/python-dev-tools/actions/workflows/tests.yml\n\n.. image:: https://readthedocs.org/projects/python-dev-tools/badge/?version=latest\n        :target: https://python-dev-tools.readthedocs.io/en/latest/?badge=latest\n        :alt: Documentation Status\n\n.. image:: https://pepy.tech/badge/python-dev-tools\n        :target: https://pepy.tech/project/python-dev-tools\n        :alt: Downloads\n\n.. image:: https://api.codeclimate.com/v1/badges/282fcd71714dabd6a847/test_coverage\n        :target: https://codeclimate.com/github/vpoulailleau/python-dev-tools/test_coverage\n        :alt: Test Coverage\n\n.. image:: https://api.codeclimate.com/v1/badges/282fcd71714dabd6a847/maintainability\n        :target: https://codeclimate.com/github/vpoulailleau/python-dev-tools/maintainability\n        :alt: Maintainability\n\n\nDocumentation\n-------------\n\nThe full documentation can be read at https://python-dev-tools.readthedocs.io.\n\nInstallation\n------------\n\nIn a terminal, run:\n\n.. code-block:: console\n\n    $ python3 -m pip install python-dev-tools --user --upgrade\n\nFull documentation on installation: https://python-dev-tools.readthedocs.io/en/latest/installation.html\n\nThat's it! Use the provided linter (``flake8``), formatter (``whataformatter``) and\nprecommit hook (TODO) where applicable.\n\nInstallation with Visual Studio Code\n------------------------------------\n\n* Follow the installation procedure for python-dev-tools\n* Be sure to have the official Python extension installed in VS Code\n* Open VS Code from within your activated virtual environment (in fact, make sure that \n  ``flake8`` from python-dev-tools is in your ``PYTHON_PATH``)\n* In VS Code, open settings (F1 key, then type \"Open Settings (JSON)\",\n  then enter)\n* Add in the opened JSON file (before the closing ``}``):\n\n.. code:: javascript\n\n    \"python.linting.enabled\": true,\n    \"python.linting.flake8Enabled\": true,\n    \"python.linting.flake8Path\": \"flake8\",\n    \"python.formatting.provider\": \"black\",\n    \"python.formatting.blackPath\": \"whataformatter\",\n    \"python.formatting.blackArgs\": [],\n\nFeatures\n--------\n\nIntegrate features of commonly used tools. This package provides usual\ndependencies to develop Python software.\n\n* Simple linter\n\n  * ``flake8 a_python_file.py`` lints a_python_file.py\n  * based on flake8 and plugins: https://gitlab.com/pycqa/flake8\n\n    * darglint: https://github.com/terrencepreilly/darglint\n    * dlint: https://github.com/dlint-py/dlint\n    * flake8-2020: https://github.com/asottile/flake8-2020\n    * flake8-aaa: https://github.com/jamescooke/flake8-aaa\n    * flake8-annotations: https://github.com/sco1/flake8-annotations\n    * flake8-annotations-complexity: https://github.com/best-doctor/flake8-annotations-complexity\n    * flake8-annotations-coverage: https://github.com/best-doctor/flake8-annotations-coverage\n    * flake8-bandit: https://github.com/tylerwince/flake8-bandit\n    * flake8-blind-except: https://github.com/elijahandrews/flake8-blind-except\n    * flake8-breakpoint: https://github.com/afonasev/flake8-breakpoint\n    * flake8-broken-line: https://github.com/sobolevn/flake8-broken-line\n    * flake8-bugbear: https://github.com/PyCQA/flake8-bugbear\n    * flake8-builtins: https://github.com/gforcada/flake8-builtins\n    * flake8-class-attributes-order: https://github.com/best-doctor/flake8-class-attributes-order\n    * flake8-coding: https://github.com/tk0miya/flake8-coding\n    * flake8-cognitive-complexity: https://github.com/Melevir/flake8-cognitive-complexity\n    * flake8-comments: https://github.com/orsinium-labs/flake8-comments\n    * flake8-comprehensions: https://github.com/adamchainz/flake8-comprehensions\n    * flake8-debugger: https://github.com/JBKahn/flake8-debugger\n    * flake8-django: https://github.com/rocioar/flake8-django\n    * flake8-docstrings: https://gitlab.com/pycqa/flake8-docstrings\n    * flake8-encoding: https://github.com/python-formate/flake8-encodings\n    * flake8-eradicate: https://github.com/sobolevn/flake8-eradicate\n    * flake8-executable: https://github.com/xuhdev/flake8-executable\n    * flake8-expression-complexity: https://pypi.org/project/flake8-expression-complexity/\n    * flake8-fastapi: https://pypi.org/project/flake8-fastapi/\n    * flake8-fixme: https://github.com/tommilligan/flake8-fixme\n    * flake8-functions: https://github.com/best-doctor/flake8-functions\n    * flake8-functions-names: https://github.com/Melevir/flake8-functions-names\n    * flake8-future-annotations: https://github.com/tyleryep/flake8-future-annotations\n    * flake8-isort: https://github.com/gforcada/flake8-isort\n    * flake8-literal: https://github.com/plinss/flake8-literal\n    * flake8-logging-format: https://github.com/globality-corp/flake8-logging-format\n    * flake8-markdown: https://github.com/johnfraney/flake8-markdown\n    * flake8-mutable: https://github.com/ebeweber/flake8-mutable\n    * flake8-no-pep420: https://github.com/adamchainz/flake8-no-pep420\n    * flake8-noqa: https://pypi.org/project/flake8-noqa/\n    * flake8-pie: https://github.com/sbdchd/flake8-pie\n    * flake8-pylint: https://github.com/orsinium-labs/flake8-pylint\n    * flake8-pyi: https://github.com/PyCQA/flake8-pyi\n    * flake8-pytest-style: https://github.com/m-burst/flake8-pytest-style\n    * flake8-quotes: https://github.com/zheller/flake8-quotes/\n    * flake8-rst-docstrings: https://github.com/peterjc/flake8-rst-docstrings\n    * flake8-secure-coding-standard: https://github.com/Takishima/flake8-secure-coding-standard\n    * flake8-simplify: https://github.com/MartinThoma/flake8-simplify\n    * flake8-slots: https://github.com/python-formate/flake8-slots\n    * flake8-string-format: https://github.com/xZise/flake8-string-format\n    * flake8-tidy-imports: https://github.com/adamchainz/flake8-tidy-imports\n    * flake8-typing-imports: https://github.com/asottile/flake8-typing-imports\n    * flake8-use-fstring: https://github.com/MichaelKim0407/flake8-use-fstring\n    * flake8-use-pathlib: https://gitlab.com/RoPP/flake8-use-pathlib\n    * flake8-useless-assert: https://github.com/decorator-factory/flake8-useless-assert\n    * flake8-variables-names: https://github.com/best-doctor/flake8-variables-names\n    * flake8-warnings: https://github.com/orsinium-labs/flake8-warnings\n    * pandas-vet: https://github.com/deppen8/pandas-vet\n    * pep8-naming: https://github.com/PyCQA/pep8-naming\n    * wemake-python-styleguide: https://github.com/wemake-services/wemake-python-styleguide\n\n* Simple formatter\n\n  * ``whataformatter a_python_file.py`` formats a_python_file.py\n  * based on\n\n    * autoflake: https://github.com/myint/autoflake\n    * black: https://github.com/python/black\n    * docformatter: https://github.com/PyCQA/docformatter\n    * isort: https://github.com/PyCQA/isort\n    * pybetter: https://github.com/lensvol/pybetter\n    * pycln: https://github.com/hadialqattan/pycln\n    * pyupgrade: https://github.com/asottile/pyupgrade\n    * removestar: https://github.com/asmeurer/removestar\n    * ssort: https://github.com/bwhmather/ssort\n\n* Simple precommit hook\n\n  * TODO\n\nLicense\n-------\n\nBSD 3-Clause license, feel free to contribute: https://python-dev-tools.readthedocs.io/en/latest/contributing.html.\n\nTODO\n----\n\n* flake8 formatter to add URL to information on a warning\n* documentation\n* precommit (flake8, mypy)\n\nChangelog\n---------\n\n2023.3.24\n^^^^^^^^^\n\n* Require Python3.8.1+\n* Upgrade to ``flake8`` 5 (most plugins not available for ``flake8`` 6 yet)\n* Add ``flake8-fastapi`` linter\n\n2022.5.27\n^^^^^^^^^\n\n* Add ``flake8-aaa`` linter\n* Add ``flake8-blind-except`` linter\n* Add ``flake8-breakpoint`` linter\n* Add ``flake8-class-attributes-order`` linter\n* Add ``flake8-cognitive-complexity`` linter\n* Add ``flake8-coding`` linter\n* Add ``flake8-comments`` linter\n* Add ``flake8-django`` linter\n* Add ``flake8-encoding`` linter\n* Add ``flake8-executable`` linter\n* Add ``flake8-functions-names`` linter\n* Add ``flake8-future-annotations`` linter\n* Add ``flake8-literal`` linter\n* Add ``flake8-markdown`` linter\n* Add ``flake8-noqa`` linter\n* Add ``flake8-no-pep420`` linter\n* Add ``flake8-pie`` linter\n* Add ``flake8-pyi`` linter\n* Add ``flake8-pylint`` linter\n* Add ``flake8-secure-coding-standard`` linter\n* Add ``flake8-slots`` linter\n* Add ``flake8-use-pathlib`` linter\n* Add ``flake8-useless-assert`` linter\n* Add ``flake8-warnings`` linter\n* Add ``pandas-vet`` linter\n\n2022.5.26\n^^^^^^^^^\n\n* Add ``docformatter`` formatter\n* Add ``isort`` formatter\n* Add ``pybetter`` formatter\n* Add ``pycln`` formatter\n* Add ``removestar`` formatter\n* Add ``ssort`` formatter\n* Remove ``cohesion`` linter (false warnings on pure data classes such as ``NamedTuple``)\n\n2022.5.20\n^^^^^^^^^\n\n* Add ``cohesion`` linter\n* Add ``dlint`` linter\n* Add ``flake8-annotations`` linter\n* Add ``flake8-annotations-complexity`` linter\n* Add ``flake8-annotations-coverage`` linter\n* Add ``flake8-black`` linter\n* Add ``flake8-expression-complexity`` linter\n* Add ``flake8-functions`` linter\n* Add ``flake8-pytest-style`` linter\n* Add ``flake8-simplify`` linter\n* Add ``flake8-tidy-imports`` linter\n* Add ``flake8-typing-imports`` linter\n* Add ``flake8-use-fstring`` linter\n* Remove ``flake8-commas`` linter that is deprecated\n* Fix ``whataformatter`` and add ``--target-version`` option for VS Code compatibility\n\n2020.9.10\n^^^^^^^^^\n\n* The path provided to ``whatalinter`` can be the one of a directory\n  (recursive search of Python files)\n\n2020.9.7\n^^^^^^^^\n\n* Remove E203 in ``flake8`` for ``black`` compatibility\n\n2020.9.4\n^^^^^^^^\n\n* Add ``whatalinter_vscode`` for Visual Studio Code integration\n\n2020.9.2\n^^^^^^^^\n\n* Remove some warnings of ``wemake-python-styleguide``, for instance allow f-strings\n\n2020.9.1\n^^^^^^^^\n\n* Use ``poetry``\n* Remove redundant linters\n* Change max line length to 88 (default value of ``black``)\n* Replace ``pydocstyle`` with ``flake8-docstrings``\n* Add ``wemake-python-styleguide``\n\n2019.10.22\n^^^^^^^^^^\n\n* Add ``flake8-2020`` linter\n\n2019.07.21\n^^^^^^^^^^\n\n* Add ``--quiet`` and ``--diff`` flags to ``whataformatter`` for VS Code compatibility\n\n2019.07.20\n^^^^^^^^^^\n\n* Add ``black`` formatter\n* Add ``autoflake`` formatter\n* Add ``pyupgrade`` formatter\n\n2019.04.08\n^^^^^^^^^^\n\n* Add ``flake8`` linter\n* Add ``flake8-isort`` linter\n* Add ``pep8-naming`` linter\n* Add ``flake8-comprehensions`` linter\n* Add ``flake8-logging-format`` linter\n* Add ``flake8-bugbear`` linter\n* Add ``flake8-builtins`` linter\n* Add ``flake8-broken-line`` linter\n* Add ``flake8-fixme`` linter\n* Add ``flake8-mutable`` linter\n* Add ``flake8-debugger`` linter\n* Add ``flake8-variables-names`` linter\n* Add ``flake8-bandit`` linter\n\n2019.03.02\n^^^^^^^^^^\n\n* Add ``pydocstyle`` linter\n\n2019.03.01\n^^^^^^^^^^\n\n* Add McCabe complexity checker\n\n2019.02.26\n^^^^^^^^^^\n\n* Add ``pyflakes`` linter\n* Add ``pycodestyle`` linter\n\n2019.02.23\n^^^^^^^^^^\n\n* First release on PyPI.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpoulailleau%2Fpython-dev-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpoulailleau%2Fpython-dev-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpoulailleau%2Fpython-dev-tools/lists"}