python-dev-tools
Advanced tools
+29
-31
| Metadata-Version: 2.1 | ||
| Name: python-dev-tools | ||
| Version: 2020.9.1 | ||
| Version: 2020.9.2 | ||
| Summary: Needed and up-to-date tools to develop in Python | ||
@@ -109,3 +109,3 @@ Home-page: https://github.com/vpoulailleau/python-dev-tools | ||
| $ python3 -m pip install python-dev-tools --user | ||
| $ python3 -m pip install python-dev-tools --user --upgrade | ||
@@ -117,9 +117,2 @@ Full documentation on installation: https://python-dev-tools.readthedocs.io/en/latest/installation.html | ||
| Upgrade | ||
| ------- | ||
| .. code-block:: console | ||
| $ python3 -m pip install python-dev-tools --user --upgrade | ||
| Installation with Visual Studio Code | ||
@@ -154,3 +147,3 @@ ------------------------------------ | ||
| * ``whatalinter a_python_file.py`` lints a_python_file.py | ||
| * output is compatible with the one of pycodestyle (formerly named pep8) for | ||
| * output is compatible with the one of flake8 for | ||
| easy integration in text editors and IDE | ||
@@ -205,2 +198,7 @@ * based on | ||
| 2020.9.2 | ||
| ^^^^^^^^ | ||
| * Remove some warnings of ``wemake-python-styleguide``, for instance allow f-strings | ||
| 2020.9.1 | ||
@@ -218,3 +216,3 @@ ^^^^^^^^ | ||
| * Add flake8-2020 linter | ||
| * Add ``flake8-2020`` linter | ||
@@ -224,3 +222,3 @@ 2019.07.21 | ||
| * Add --quiet and --diff flags to whataformatter for VS Code compatibility | ||
| * Add ``--quiet`` and ``--diff`` flags to ``whataformatter`` for VS Code compatibility | ||
@@ -230,5 +228,5 @@ 2019.07.20 | ||
| * Add black formatter | ||
| * Add autoflake formatter | ||
| * Add pyupgrade formatter | ||
| * Add ``black`` formatter | ||
| * Add ``autoflake`` formatter | ||
| * Add ``pyupgrade`` formatter | ||
@@ -238,15 +236,15 @@ 2019.04.08 | ||
| * Add flake8 linter | ||
| * Add flake8-isort linter | ||
| * Add pep8-naming linter | ||
| * Add flake8-comprehensions linter | ||
| * Add flake8-logging-format linter | ||
| * Add flake8-bugbear linter | ||
| * Add flake8-builtins linter | ||
| * Add flake8-broken-line linter | ||
| * Add flake8-fixme linter | ||
| * Add flake8-mutable linter | ||
| * Add flake8-debugger linter | ||
| * Add flake8-variables-names linter | ||
| * Add flake8-bandit linter | ||
| * Add ``flake8`` linter | ||
| * Add ``flake8-isort`` linter | ||
| * Add ``pep8-naming`` linter | ||
| * Add ``flake8-comprehensions`` linter | ||
| * Add ``flake8-logging-format`` linter | ||
| * Add ``flake8-bugbear`` linter | ||
| * Add ``flake8-builtins`` linter | ||
| * Add ``flake8-broken-line`` linter | ||
| * Add ``flake8-fixme`` linter | ||
| * Add ``flake8-mutable`` linter | ||
| * Add ``flake8-debugger`` linter | ||
| * Add ``flake8-variables-names`` linter | ||
| * Add ``flake8-bandit`` linter | ||
@@ -256,3 +254,3 @@ 2019.03.02 | ||
| * Add pydocstyle linter | ||
| * Add ``pydocstyle`` linter | ||
@@ -267,4 +265,4 @@ 2019.03.01 | ||
| * Add pyflakes linter | ||
| * Add pycodestyle linter | ||
| * Add ``pyflakes`` linter | ||
| * Add ``pycodestyle`` linter | ||
@@ -271,0 +269,0 @@ 2019.02.23 |
+1
-1
| [tool.poetry] | ||
| name = "python_dev_tools" | ||
| version = "2020.9.1" | ||
| version = "2020.9.2" | ||
| description = "Needed and up-to-date tools to develop in Python" | ||
@@ -5,0 +5,0 @@ classifiers=[ |
| """Top-level package for Python Dev Tools.""" | ||
| __author__ = """Vincent Poulailleau""" | ||
| __email__ = "vpoulailleau@gmail.com" | ||
| __version__ = "2020.02.05" |
| """Autoflake formatter management.""" | ||
| from .common import Formatter | ||
| from python_dev_tools.formatters.common import Formatter | ||
@@ -4,0 +4,0 @@ |
| """Black formatter management.""" | ||
| from .common import Formatter | ||
| from python_dev_tools.formatters.common import Formatter | ||
@@ -10,2 +10,2 @@ | ||
| path = "black" | ||
| cli_args = ["--line-length", "79", "--target-version=py36"] | ||
| cli_args = ["--target-version=py36"] |
| """Common constants and class to all linters.""" | ||
| import subprocess | ||
| import subprocess # noqa: S404 | ||
| from typing import List | ||
@@ -21,6 +22,10 @@ | ||
| @classmethod | ||
| def format_file(cls, filepath): | ||
| """Execute the formatter.""" | ||
| def format_file(cls, filepath: str) -> None: | ||
| """Execute the formatter. | ||
| Args: | ||
| filepath (str): path of the file to format | ||
| """ | ||
| try: | ||
| return cls._format_file(filepath) | ||
| cls._format_file(filepath) | ||
| except FormatterNotFound: | ||
@@ -30,11 +35,21 @@ print(f"Formatter {cls.name} not found: {cls.path}") | ||
| @classmethod | ||
| def _format_file(cls, filepath): | ||
| args = [cls.path, *cls.cli_args, str(filepath)] | ||
| def _format_file(cls, filepath: str): | ||
| args = [cls.path, *cls.cli_args, filepath] | ||
| cls._execute_command(args) | ||
| @classmethod | ||
| def _execute_command(cls, args): | ||
| """Execute the formatter or raise FormatterNotFound.""" | ||
| def _execute_command(cls, args: List[str]) -> subprocess.CompletedProcess: | ||
| """Execute the formatter. | ||
| Args: | ||
| args (list[str]): arguments of the command including command name | ||
| Raises: | ||
| FormatterNotFound: formatter ``cls.path`` not found in path | ||
| Returns: | ||
| CompletedProcess: result of the execution | ||
| """ | ||
| try: | ||
| return subprocess.run( | ||
| return subprocess.run( # noqa: S603 | ||
| args, | ||
@@ -46,6 +61,5 @@ stdout=subprocess.PIPE, | ||
| ) | ||
| except FileNotFoundError as e: | ||
| if e.filename == cls.path: | ||
| except FileNotFoundError as exc: | ||
| if exc.filename == cls.path: | ||
| raise FormatterNotFound | ||
| else: | ||
| raise | ||
| raise |
| """Definition of format function, calling all formatters.""" | ||
| from typing import List | ||
| from .autoflake import AutoflakeFormatter | ||
| from .black import BlackFormatter | ||
| from .pyupgrade import PyupgradeFormatter | ||
| from python_dev_tools.formatters.autoflake import AutoflakeFormatter | ||
| from python_dev_tools.formatters.black import BlackFormatter | ||
| from python_dev_tools.formatters.common import Formatter | ||
| from python_dev_tools.formatters.pyupgrade import PyupgradeFormatter | ||
| formatters = [ | ||
| formatters: List[Formatter] = [ | ||
| AutoflakeFormatter, | ||
@@ -14,5 +16,9 @@ PyupgradeFormatter, | ||
| def format_file(filepath): | ||
| """Format the file with known formatters.""" | ||
| def format_file(filepath: str) -> None: | ||
| """Format the file with known formatters. | ||
| Args: | ||
| filepath (str): path of the file to format | ||
| """ | ||
| for formatter in formatters: | ||
| formatter.format_file(filepath) |
| """Pyupgrade formatter management.""" | ||
| from .common import Formatter | ||
| from python_dev_tools.formatters.common import Formatter | ||
@@ -4,0 +4,0 @@ |
@@ -68,4 +68,3 @@ """Common constants and class to all linters.""" | ||
| "col": self.charno, | ||
| # horrible hack for visual studio code | ||
| "code": f"W{self.message_id[1:]}", | ||
| "code": f"{self.message_id}", | ||
| "text": f"[{self.tool}] {self.message}", | ||
@@ -122,3 +121,3 @@ } | ||
| try: | ||
| return subprocess.run( | ||
| return subprocess.run( # noqa: S603 | ||
| args, | ||
@@ -160,3 +159,3 @@ stdout=subprocess.PIPE, | ||
| message = cls._parse_line( | ||
| line, cls.regex[regex_index], message, tool=cls.name | ||
| line, cls.regex[regex_index], message, tool=cls.name, | ||
| ) | ||
@@ -167,3 +166,4 @@ | ||
| regex_index = 0 | ||
| messages.append(message) | ||
| if not cls.filter_out(message): | ||
| messages.append(message) | ||
| message = None | ||
@@ -174,1 +174,6 @@ else: | ||
| return messages | ||
| @staticmethod | ||
| def filter_out(message: LinterMessage) -> bool: | ||
| """Return True when message should be ignored.""" | ||
| return False |
@@ -7,3 +7,3 @@ """Flake8 linter management.""" | ||
| from .common import Linter | ||
| from python_dev_tools.linters.common import Linter, LinterMessage | ||
@@ -17,4 +17,6 @@ | ||
| regex = [ | ||
| r"(?P<filename>.*?):(?P<lineno>\d+):(?P<charno>\d+):" | ||
| r"\s+(?P<message_id>.*?)\s+(?P<message>.*)" | ||
| ( | ||
| r"(?P<filename>.*?):(?P<lineno>\d+):(?P<charno>\d+):" | ||
| + r"\s+(?P<message_id>.*?)\s+(?P<message>.*)" | ||
| ), | ||
| ] | ||
@@ -35,3 +37,8 @@ | ||
| "10", | ||
| ] | ||
| # Q000: avoid "" strings | ||
| # WPS305: avoid f-strings | ||
| # WPS306: required explicit subclassing of object | ||
| # WPS602: avoid @staticmethod (can be subclassed…) | ||
| "--ignore=Q000,WPS305,WPS306,WPS602", | ||
| ], | ||
| ) | ||
@@ -42,3 +49,10 @@ except SystemExit: | ||
| messages = cls._parse_output(stdout.getvalue()) | ||
| return messages | ||
| return cls._parse_output(stdout.getvalue()) | ||
| @staticmethod | ||
| def filter_out(message: LinterMessage) -> bool: | ||
| """Return True when message should be ignored.""" | ||
| for authorized_function in ("input", "print", "pprint"): | ||
| if f"Found wrong function call: {authorized_function}" in message.message: | ||
| return True | ||
| return False |
| """Definition of lint function, calling all linters.""" | ||
| from .flake8 import Flake8Linter | ||
| from python_dev_tools.linters.flake8 import Flake8Linter | ||
@@ -5,0 +5,0 @@ linters = [ |
@@ -15,3 +15,3 @@ """Formatter module, aggregation of formatters.""" | ||
| os.environ["PATH"] = "".join( | ||
| (str(script_path.parent), os.pathsep, os.environ["PATH"]) | ||
| (str(script_path.parent), os.pathsep, os.environ["PATH"]), | ||
| ) | ||
@@ -23,3 +23,3 @@ | ||
| os.environ["PATH"] = "".join( | ||
| (str(parent.parent / "bin"), os.pathsep, os.environ["PATH"]) | ||
| (str(parent.parent / "bin"), os.pathsep, os.environ["PATH"]), | ||
| ) | ||
@@ -31,6 +31,6 @@ | ||
| parser = argparse.ArgumentParser( | ||
| description="Python formatter combining existing formatters" | ||
| description="Python formatter combining existing formatters", | ||
| ) | ||
| parser.add_argument( | ||
| "file", metavar="FILE", type=str, help="path of the file to format" | ||
| "file", metavar="FILE", type=str, help="path of the file to format", | ||
| ) | ||
@@ -62,4 +62,4 @@ parser.add_argument( | ||
| orig_content, copy_content, fromfile="origin", tofile="formatted", | ||
| ) | ||
| ) | ||
| ), | ||
| ), | ||
| ) | ||
@@ -66,0 +66,0 @@ Path(copy_file).unlink() |
@@ -14,3 +14,3 @@ """Linter module, aggregation of linters.""" | ||
| os.environ["PATH"] = "".join( | ||
| (str(script_path.parent), os.pathsep, os.environ["PATH"]) | ||
| (str(script_path.parent), os.pathsep, os.environ["PATH"]), | ||
| ) | ||
@@ -22,3 +22,3 @@ | ||
| os.environ["PATH"] = "".join( | ||
| (str(parent.parent / "bin"), os.pathsep, os.environ["PATH"]) | ||
| (str(parent.parent / "bin"), os.pathsep, os.environ["PATH"]), | ||
| ) | ||
@@ -30,6 +30,6 @@ | ||
| parser = argparse.ArgumentParser( | ||
| description="Python linter combining existing linters" | ||
| description="Python linter combining existing linters", | ||
| ) | ||
| parser.add_argument( | ||
| "file", metavar="FILE", type=str, help="path of the file to lint" | ||
| "file", metavar="FILE", type=str, help="path of the file to lint", | ||
| ) | ||
@@ -36,0 +36,0 @@ parser.add_argument( |
+28
-30
@@ -52,3 +52,3 @@ Python Dev Tools | ||
| $ python3 -m pip install python-dev-tools --user | ||
| $ python3 -m pip install python-dev-tools --user --upgrade | ||
@@ -60,9 +60,2 @@ Full documentation on installation: https://python-dev-tools.readthedocs.io/en/latest/installation.html | ||
| Upgrade | ||
| ------- | ||
| .. code-block:: console | ||
| $ python3 -m pip install python-dev-tools --user --upgrade | ||
| Installation with Visual Studio Code | ||
@@ -97,3 +90,3 @@ ------------------------------------ | ||
| * ``whatalinter a_python_file.py`` lints a_python_file.py | ||
| * output is compatible with the one of pycodestyle (formerly named pep8) for | ||
| * output is compatible with the one of flake8 for | ||
| easy integration in text editors and IDE | ||
@@ -148,2 +141,7 @@ * based on | ||
| 2020.9.2 | ||
| ^^^^^^^^ | ||
| * Remove some warnings of ``wemake-python-styleguide``, for instance allow f-strings | ||
| 2020.9.1 | ||
@@ -161,3 +159,3 @@ ^^^^^^^^ | ||
| * Add flake8-2020 linter | ||
| * Add ``flake8-2020`` linter | ||
@@ -167,3 +165,3 @@ 2019.07.21 | ||
| * Add --quiet and --diff flags to whataformatter for VS Code compatibility | ||
| * Add ``--quiet`` and ``--diff`` flags to ``whataformatter`` for VS Code compatibility | ||
@@ -173,5 +171,5 @@ 2019.07.20 | ||
| * Add black formatter | ||
| * Add autoflake formatter | ||
| * Add pyupgrade formatter | ||
| * Add ``black`` formatter | ||
| * Add ``autoflake`` formatter | ||
| * Add ``pyupgrade`` formatter | ||
@@ -181,15 +179,15 @@ 2019.04.08 | ||
| * Add flake8 linter | ||
| * Add flake8-isort linter | ||
| * Add pep8-naming linter | ||
| * Add flake8-comprehensions linter | ||
| * Add flake8-logging-format linter | ||
| * Add flake8-bugbear linter | ||
| * Add flake8-builtins linter | ||
| * Add flake8-broken-line linter | ||
| * Add flake8-fixme linter | ||
| * Add flake8-mutable linter | ||
| * Add flake8-debugger linter | ||
| * Add flake8-variables-names linter | ||
| * Add flake8-bandit linter | ||
| * Add ``flake8`` linter | ||
| * Add ``flake8-isort`` linter | ||
| * Add ``pep8-naming`` linter | ||
| * Add ``flake8-comprehensions`` linter | ||
| * Add ``flake8-logging-format`` linter | ||
| * Add ``flake8-bugbear`` linter | ||
| * Add ``flake8-builtins`` linter | ||
| * Add ``flake8-broken-line`` linter | ||
| * Add ``flake8-fixme`` linter | ||
| * Add ``flake8-mutable`` linter | ||
| * Add ``flake8-debugger`` linter | ||
| * Add ``flake8-variables-names`` linter | ||
| * Add ``flake8-bandit`` linter | ||
@@ -199,3 +197,3 @@ 2019.03.02 | ||
| * Add pydocstyle linter | ||
| * Add ``pydocstyle`` linter | ||
@@ -210,4 +208,4 @@ 2019.03.01 | ||
| * Add pyflakes linter | ||
| * Add pycodestyle linter | ||
| * Add ``pyflakes`` linter | ||
| * Add ``pycodestyle`` linter | ||
@@ -214,0 +212,0 @@ 2019.02.23 |
+2
-2
@@ -51,5 +51,5 @@ # -*- coding: utf-8 -*- | ||
| 'name': 'python-dev-tools', | ||
| 'version': '2020.9.1', | ||
| 'version': '2020.9.2', | ||
| 'description': 'Needed and up-to-date tools to develop in Python', | ||
| 'long_description': '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://travis-ci.com/vpoulailleau/python-dev-tools.svg?branch=master\n :target: https://travis-ci.com/vpoulailleau/python-dev-tools\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.. image:: https://bettercodehub.com/edge/badge/vpoulailleau/python-dev-tools?branch=master\n :target: https://bettercodehub.com/results/vpoulailleau/python-dev-tools\n :alt: Maintainability\n\n.. image:: https://img.shields.io/lgtm/grade/python/g/vpoulailleau/python-dev-tools.svg?logo=lgtm&logoWidth=1\n :target: https://lgtm.com/projects/g/vpoulailleau/python-dev-tools/context:python\n :alt: Maintainability\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\n\nFull documentation on installation: https://python-dev-tools.readthedocs.io/en/latest/installation.html\n\nThat\'s it! Use the provided linter, formatter and precommit hook where\napplicable.\n\nUpgrade\n-------\n\n.. code-block:: console\n\n $ python3 -m pip install python-dev-tools --user --upgrade\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* In VS Code, open settings (F1 key, then type "Open Settings (JSON)",\n then enter)\n* Add in the opened JSON file:\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\n* Adapt the previous path according to your installation.\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 * ``whatalinter a_python_file.py`` lints a_python_file.py\n * output is compatible with the one of pycodestyle (formerly named pep8) for\n easy integration in text editors and IDE\n * based on\n\n * pydocstyle: https://github.com/PyCQA/pydocstyle\n * flake8 and plugins: https://gitlab.com/pycqa/flake8\n\n * flake8-2020: https://github.com/asottile/flake8-2020\n * flake8-bandit: https://github.com/tylerwince/flake8-bandit\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-comprehensions: https://github.com/adamchainz/flake8-comprehensions\n * flake8-debugger: https://github.com/JBKahn/flake8-debugger\n * flake8-docstrings: https://gitlab.com/pycqa/flake8-docstrings\n * flake8-fixme: https://github.com/tommilligan/flake8-fixme\n * flake8-isort: https://github.com/gforcada/flake8-isort\n * flake8-logging-format: https://github.com/globality-corp/flake8-logging-format\n * flake8-mutable: https://github.com/ebeweber/flake8-mutable\n * flake8-variables-names: https://github.com/best-doctor/flake8-variables-names\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 * pyupgrade: https://github.com/asottile/pyupgrade\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* documentation\n* precommit\n\nChangelog\n---------\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', | ||
| 'long_description': '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://travis-ci.com/vpoulailleau/python-dev-tools.svg?branch=master\n :target: https://travis-ci.com/vpoulailleau/python-dev-tools\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.. image:: https://bettercodehub.com/edge/badge/vpoulailleau/python-dev-tools?branch=master\n :target: https://bettercodehub.com/results/vpoulailleau/python-dev-tools\n :alt: Maintainability\n\n.. image:: https://img.shields.io/lgtm/grade/python/g/vpoulailleau/python-dev-tools.svg?logo=lgtm&logoWidth=1\n :target: https://lgtm.com/projects/g/vpoulailleau/python-dev-tools/context:python\n :alt: Maintainability\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, formatter and precommit hook where\napplicable.\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* In VS Code, open settings (F1 key, then type "Open Settings (JSON)",\n then enter)\n* Add in the opened JSON file:\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\n* Adapt the previous path according to your installation.\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 * ``whatalinter a_python_file.py`` lints a_python_file.py\n * output is compatible with the one of flake8 for\n easy integration in text editors and IDE\n * based on\n\n * pydocstyle: https://github.com/PyCQA/pydocstyle\n * flake8 and plugins: https://gitlab.com/pycqa/flake8\n\n * flake8-2020: https://github.com/asottile/flake8-2020\n * flake8-bandit: https://github.com/tylerwince/flake8-bandit\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-comprehensions: https://github.com/adamchainz/flake8-comprehensions\n * flake8-debugger: https://github.com/JBKahn/flake8-debugger\n * flake8-docstrings: https://gitlab.com/pycqa/flake8-docstrings\n * flake8-fixme: https://github.com/tommilligan/flake8-fixme\n * flake8-isort: https://github.com/gforcada/flake8-isort\n * flake8-logging-format: https://github.com/globality-corp/flake8-logging-format\n * flake8-mutable: https://github.com/ebeweber/flake8-mutable\n * flake8-variables-names: https://github.com/best-doctor/flake8-variables-names\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 * pyupgrade: https://github.com/asottile/pyupgrade\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* documentation\n* precommit\n\nChangelog\n---------\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', | ||
| 'author': 'Vincent Poulailleau', | ||
@@ -56,0 +56,0 @@ 'author_email': 'vpoulailleau@gmail.com', |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
40649
4.4%484
6.61%