docstring style checker

Overview

pydocstyle - docstring style checker

Documentation Status https://pepy.tech/badge/pydocstyle https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336

pydocstyle is a static analysis tool for checking compliance with Python docstring conventions.

pydocstyle supports most of PEP 257 out of the box, but it should not be considered a reference implementation.

pydocstyle supports Python 3.6, 3.7 and 3.8.

Quick Start

Install

pip install pydocstyle

Run

$ pydocstyle test.py
test.py:18 in private nested class `meta`:
        D101: Docstring missing
test.py:27 in public function `get_user`:
    D300: Use """triple double quotes""" (found '''-quotes)
test:75 in public function `init_database`:
    D201: No blank lines allowed before function docstring (found 1)
...

Links

Comments
  • Please rename this tool

    Please rename this tool

    Tools should not be named after style guide PEPs. A style guide is a document written for humans, and has lots of subtlety. Issues caused by the rigidity or simplicity of the tool end up causing pointless discussion about the letter of the PEP, as if it was a law, which was never the intention of the PEP. If you want to write a tool that checks style, please give it some clever name, don't name it after a PEP, so it's clear that whenever humans don't like what the tool says, it is a tool issue, not an issue with the PEP (which is merely intended to guide humans, not to require them to follow it every time).

    opened by gvanrossum 34
  • Add Google docstring convention

    Add Google docstring convention

    There are lots of projects out there using the google docstring convention. Given numpy has been recently added under #129, this is a request to add the google docstring convention.

    Comparison between the two can be found here.

    opened by pmatos 26
  • pyproject.toml configuration support

    pyproject.toml configuration support

    Many other python formatting/style tools have added support for the pyproject.toml file's [tool.*] sections for their configuration. Is this something that pydocstyle would be open to supporting?

    opened by wlcx 23
  • D417 - Add hanging indent support for Google style

    D417 - Add hanging indent support for Google style

    Following the existing conversation seen here (https://github.com/PyCQA/pydocstyle/issues/443)

    This issue is to request that hanging indentation documentation be added to Google style.

    Args

    Currently this style is recommended by pydocstyle:

        Args:
            verbose (bool): If True, print out as much information as possible.
                If False, print out concise "one-liner" information.
    

    And this issue is to request that this other style also be valid:

        Args:
            verbose (bool): 
                If True, print out as much information as possible.
                If False, print out concise "one-liner" information.
    

    @samj1912's link to Google-style, http://google.github.io/styleguide/pyguide.html#383-functions-and-methods, shows that this is already allowed in Google style.

    Returns / Yields

    The Google style guide explicitly mentions newlines being allowed for args. I'd like to further propose that the same apply for Return docstrings.

    For example, this

        Returns
            :obj:`list` of :obj:`tuple` str or :class:`my_package.modules.MyKlass`: Line already exceeds 0 characters.
    

    Can become this

        Returns
            :obj:`list` of :obj:`tuple` str or :class:`my_package.modules.MyKlass`: 
                Each line is within 80 characters.
    

    To the maintainers of this repo - would you accept a PR to add this feature?

    opened by ColinKennedy 22
  • Add an initial Google convention

    Add an initial Google convention

    Sources for docstring convention:

    Google Style Guide and Napoleon Google Style Guide

    Rationale for exclusions of errors:

    • D203: Multiple examples with class docstrings without blank line.
    • D204: Same as above.
    • D213: All multiline summaries start immediately after the triple quotes.
    • D215: N/A no underlines.
    • D400: First line can end with "period, question mark, or exclamation point".
    • D401: Style guide explicitly says not to use imperative mood and use descriptive mood.
    • D404: Clearly allowed WRT to the above. There is also an example using "This".
    • D406: Section names end with a colon.
    • D407: N/A no underlines.
    • D408: N/A no underlines.
    • D409: N/A no underlines.

    Adds the following violations:

    • D415: First line of docstring should end with a period, question mark, or exclamation point
    • D416: Section name should end with a semicolon
    • D417: Missing arguments in the function docstring

    Thanks for submitting a PR!

    Please make sure to check for the following items:

    • [x] Add unit tests and integration tests where applicable.
      If you've added an error code or changed an error code behavior, you should probably add or change a test case file under tests/test_cases/ and add it to the list under tests/test_definitions.py.
      If you've added or changed a command line option, you should probably add or change a test in tests/test_integration.py.
    • [ ] Add a line to the release notes (docs/release_notes.rst) under "Current Development Version".
      Make sure to include the PR number after you open and get one.

    Please don't get discouraged as it may take a while to get a review.

    opened by samj1912 19
  • D401 implementation is very naive

    D401 implementation is very naive

    I have the following docstring.

        @property
        def file_path(self):
            '''Alias for consistency with the rest of pocketlint.'''
    

    The error is

         142: D401: First line should be imperative: 'Alia', not 'Alias'
    

    While the intent is noble, I think that the current implementation is not helpful.

    Is there anyone using this check in production code?

    If a check could not be done, I prefer to not try to automate it as it is not fun to maintain a list of ignored values..

    Thanks!

    opened by adiroiban 17
  • Add github action to be able to release on published tag

    Add github action to be able to release on published tag

    This permit to release on pypi if a value for PYPI_API_TOKEN is set in github settings. The release is done when a release is created/published in github interface.

    Relates to #575

    opened by Pierre-Sassoulas 15
  • Changes to match new class docstring standard of PEP257

    Changes to match new class docstring standard of PEP257

    This is to match Guido's change here: https://hg.python.org/peps/rev/9b715d8246db and the reason is in a comment by Guido here (first comment at bottom):

    http://raspberry-python.blogspot.com/2015/01/significant-pep257-change.html

    opened by fdion 15
  • Travis CI support

    Travis CI support

    The test requirements are from my own virtual environment where tests execute correctly. I can bump them later.

    While I could push this commit directly to Travis CI, I think the Travis CI hook needs to be activated before we merge this commit. @halst I don't have the admin privileges to activate the service hook. Could you do that?

    This fixes #48.

    opened by JensRantil 15
  • Enable full `toml` configuration and `pyproject.toml`

    Enable full `toml` configuration and `pyproject.toml`

    This PR closes #447.

    Changes

    • Fix a small unrelated bug, where inline comments in .ini files behaved differently when autodetected by _get_config_file_in_folder and when manually specified by --config.

    • Add toml as a package dependency (setup.py) and as a pinned runtime dependency (requirements/runtime.txt).

    • Implement TomlParser - a thin wrapper around the toml library with minimal API parity with RawConfigParser.

    • Autodetect pyproject.toml configuration

    • Autodetect tool.pydocstyle section

    • Implement error code list support for toml. This is so that you can use

      select = [
          "D100",
          # This line is ignored
          "D103",
      ]
      

      and not only

      select = "D100,D103"
      
    • Almost all tests in test_integration.py which used the env fixture now are run for both toml and ini versions of the configuration (47 tests).

    • 2 tests are only run for ini configuration: test_ignores_whitespace_in_fixed_option_set and test_multiple_lined_config_file. In toml, strings must be quoted, so comments and newlines inside the strings don't make much sense, which is what these tests are checking. Instead, I've implemented 2 "equivalent" toml tests that also check the list support: test_accepts_ignore_error_code_list and test_accepts_select_error_code_list.

    Please make sure to check for the following items:

    • [x] Add unit tests and integration tests where applicable.
    • [ ] Add a line to the release notes (docs/release_notes.rst) under "Current Development Version".
      Make sure to include the PR number after you open and get one.

    There's currently no "Current Development Version" section in docs/release_notes.rst. Where should I add the changes?

    opened by RuRo 14
  • Fix indentation error while parsing class methods

    Fix indentation error while parsing class methods

    In order to determine the missing arguments, we currently use ast.parse to parse partial source code. This parsing might lead to syntax errors. We catch the syntax error and make the parsing more resilient to errors in the source code.

    Fixes #437

    Thanks for submitting a PR!

    Please make sure to check for the following items:

    • [x] Add unit tests and integration tests where applicable.
      If you've added an error code or changed an error code behavior, you should probably add or change a test case file under tests/test_cases/ and add it to the list under tests/test_definitions.py.
      If you've added or changed a command line option, you should probably add or change a test in tests/test_integration.py.
    • [ ] Add a line to the release notes (docs/release_notes.rst) under "Current Development Version".
      Make sure to include the PR number after you open and get one.

    Please don't get discouraged as it may take a while to get a review.

    opened by samj1912 14
  • False positive of D417 (missing argument descriptions)

    False positive of D417 (missing argument descriptions)

    pydocstyle started reporting false positives of D417 in google convention on version 6.2.0 and later. Version 6.1.1 does not suffer the same problem. Consider following code:

    def sum(a: int, b: int, c: int):
        """Sum three numbers.
    
        Args:
            a: First number.
            b: Second number.
            c: Third number.
    
        Some further details.
        """
        return a + b + c
    

    When I run pydocstyle example.py --select=D417, I get the following output:

    example.py:2 in public function `sum`:
            D417: Missing argument descriptions in the docstring (argument(s) b, c are missing descriptions in 'sum' docstring)
    

    I'd expect no errors since all the arguments are properly listed in docstring.

    help wanted good first issue bug 
    opened by stinovlas 1
  • D107 (Missing docstring in __init__) conflicts with D418 (@overload shouldn't contain docstring)

    D107 (Missing docstring in __init__) conflicts with D418 (@overload shouldn't contain docstring)

    You can't overload an init without failing one or the other of these rules currently:

    class A:
        @overload
        def __init__(self):
                               # This fails D107: Missing docstring in __init__
            pass
    
        def __init__(self):
            """Docstring."""
            pass
    
    class B:
        @overload
        def __init__(self):
            """Docstring."""  # This fails D418: Function/ Method decorated with @overload shouldn't contain a docstring
            pass
    
        def __init__(self):
            """Docstring."""
            pass
    
    opened by rigelifland 1
  • fix: do not pass file names with pre-commit

    fix: do not pass file names with pre-commit

    This is the only way pydocstyle will obey its own match rules.

    Thanks for submitting a PR!

    Please make sure to check for the following items:

    • [x] Add unit tests and integration tests where applicable.
      If you've added an error code or changed an error code behavior, you should probably add or change a test case file under tests/test_cases/ and add it to the list under tests/test_definitions.py.
      If you've added or changed a command line option, you should probably add or change a test in tests/test_integration.py.
    • [x] Add a line to the release notes (docs/release_notes.rst) under "Current Development Version".
      Make sure to include the PR number after you open and get one.

    Please don't get discouraged as it may take a while to get a review.

    opened by yajo 0
  • pycodestyle is not compatible with `PYTHONOPTIMIZE=2`

    pycodestyle is not compatible with `PYTHONOPTIMIZE=2`

    pycodestyle relies on function doctrings to show the linting errors. When you run a program with PYTHONOPTIMIZE=2 environment variable or the -OO option the docstrings are stripped, so the next error is raised:

    ... (traceback)
    
      File "/.../site-packages/pydocstyle/checker.py", line 160, in check_source
        partition = this_check.__doc__.partition('.\n')
    AttributeError: 'NoneType' object has no attribute 'partition'
    
    opened by mondeja 0
  • The pre-commit hook fails silently when a pyproject.toml file exists and toml isn't installed

    The pre-commit hook fails silently when a pyproject.toml file exists and toml isn't installed

    #534 enabled usage of pydocstyle with pyproject.toml for configuration. In that PR, it was discussed that toml shouldn't be a hard dependency for using pydocstyle (which I agree with), and that it should simply throw a warning if a pyproject.toml file is detected without the toml package present to read it. However, this is problematic when using pydocstyle as a pre-commit hook because pre-commit will silently consume stdout unless the hook returns a nonzero exit code.

    I see a few potential solutions here, which I've placed in order of preference:

    1. Use the additional_dependencies feature of pre-commit to always require toml when installing the pydocstyle pre-commit hook. I see the argument for not wanting to error without toml in a general setting, but in the context of pre-commit where the dependencies can be tightly managed I think it's OK to have this dependency encoded.
    2. Change the warning to an error, but also add a grep (or equivalent) of a pyproject.toml file (if one exists) to see whether the string [tool.pydocstyle] is present in the file as a precondition of erroring. This is a bit more engineering effort, but if avoiding requiring toml is important enough even in a pre-commit hook then this would be a way to do a more cursory check of the file without parsing it.
    3. Set verbose: True in the pre-commit hook definition. This choice has the downside of always making pydocstyle noisier, but it at least ensures that the warning will be visible.
    4. The status quo. This solution puts the onus on the user to realize that pydocstyle fails silently in this case. I personally don't think this is a viable solution, but I listed it in case the project maintainers feel otherwise.

    I am happy to make a PR if we could come to a consensus on the preferred solution.

    opened by vyasr 2
Releases(6.2.1)
  • 6.2.1(Jan 3, 2023)

    What's Changed

    • Add https protocol on websites at the README.rst by @realFranco in https://github.com/PyCQA/pydocstyle/pull/611
    • Add Python 3.11 to the testing by @cclauss in https://github.com/PyCQA/pydocstyle/pull/612
    • requirements/docs.txt: Use current versions of Jinja2 and sphinx by @cclauss in https://github.com/PyCQA/pydocstyle/pull/615
    • Use tomllib/tomli for reading .toml configs by @mgorny in https://github.com/PyCQA/pydocstyle/pull/608
    • Docs: pydocstyle supports Python 3.7 through 3.11. by @cclauss in https://github.com/PyCQA/pydocstyle/pull/616

    New Contributors

    • @realFranco made their first contribution in https://github.com/PyCQA/pydocstyle/pull/611
    • @cclauss made their first contribution in https://github.com/PyCQA/pydocstyle/pull/612
    • @mgorny made their first contribution in https://github.com/PyCQA/pydocstyle/pull/608

    Full Changelog: https://github.com/PyCQA/pydocstyle/compare/6.2.0...6.2.1

    Source code(tar.gz)
    Source code(zip)
  • 6.2.0(Jan 2, 2023)

    What's Changed

    • Gitpod-ify the repository by @samj1912 in https://github.com/PyCQA/pydocstyle/pull/548
    • Updating readme to reflect support for Python 3.9 by @sanders41 in https://github.com/PyCQA/pydocstyle/pull/545
    • Exempt properties from D401 by @TomFryers in https://github.com/PyCQA/pydocstyle/pull/546
    • Add support for Python 3.10 by @hugovk in https://github.com/PyCQA/pydocstyle/pull/554
    • Fix CI for python 3.10 by @samj1912 in https://github.com/PyCQA/pydocstyle/pull/565
    • Add D419: Add and switch to "Docstring is empty" error code by @thejcannon in https://github.com/PyCQA/pydocstyle/pull/559
    • Allow for hanging indent when documenting args in Google style by @rmorshea in https://github.com/PyCQA/pydocstyle/pull/564
    • Fix match option to only consider basename when given a path argument by @oczkoisse in https://github.com/PyCQA/pydocstyle/pull/550
    • Typo fix in docs/error_codes.rst by @Daniel-Mietchen in https://github.com/PyCQA/pydocstyle/pull/578
    • docs: Fix double-dash converted to en-dash by @wjandrea in https://github.com/PyCQA/pydocstyle/pull/579
    • Fix test warnings and improve lint configuration by @aphedges in https://github.com/PyCQA/pydocstyle/pull/584
    • Fix broken CI checks by @aphedges in https://github.com/PyCQA/pydocstyle/pull/585
    • Move tool configs to pyproject.toml by @Mr-Pepe in https://github.com/PyCQA/pydocstyle/pull/588
    • Add github action to be able to release on published tag by @Pierre-Sassoulas in https://github.com/PyCQA/pydocstyle/pull/582
    • Typo by @Fokko in https://github.com/PyCQA/pydocstyle/pull/598
    • Move to poetry and automated relases via Github UI by @samj1912 in https://github.com/PyCQA/pydocstyle/pull/614

    New Contributors

    • @sanders41 made their first contribution in https://github.com/PyCQA/pydocstyle/pull/545
    • @TomFryers made their first contribution in https://github.com/PyCQA/pydocstyle/pull/546
    • @thejcannon made their first contribution in https://github.com/PyCQA/pydocstyle/pull/559
    • @rmorshea made their first contribution in https://github.com/PyCQA/pydocstyle/pull/564
    • @oczkoisse made their first contribution in https://github.com/PyCQA/pydocstyle/pull/550
    • @Daniel-Mietchen made their first contribution in https://github.com/PyCQA/pydocstyle/pull/578
    • @wjandrea made their first contribution in https://github.com/PyCQA/pydocstyle/pull/579
    • @aphedges made their first contribution in https://github.com/PyCQA/pydocstyle/pull/584
    • @Mr-Pepe made their first contribution in https://github.com/PyCQA/pydocstyle/pull/588
    • @Pierre-Sassoulas made their first contribution in https://github.com/PyCQA/pydocstyle/pull/582
    • @Fokko made their first contribution in https://github.com/PyCQA/pydocstyle/pull/598

    Full Changelog: https://github.com/PyCQA/pydocstyle/compare/6.1.1...6.2.0

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Apr 27, 2017)

    Major Updates

    Support for numpy conventions verification has been added (#129, #226). Support for Python 2.6 has been dropped (#206, #217). Support for PyPy3 has been temporarily dropped, until it will be equivalent to CPython 3.3+ and supported by pip (#223). Support for the pep257 console script has been dropped. Only the pydocstyle console script should be used (#216, #218). Errors are now printed to stdout instead of stderr (#201, #210).

    New Features

    Decorator-based skipping via --ignore-decorators has been added (#204). Support for using pycodestyle style wildcards has been added (#72, #209). Superfluous opening quotes are now reported as part of D300 (#166, #225). Fixed a false-positive recognition of D410 and added D412 (#230, #233). Added --config= flag to override the normal config file discovery and choose a specific config file (#117, #247). Support for specifying error codes with partial prefix has been added, e.g., --select=D101,D2 (#72, #209). All configuration file can now have the .ini extension (#237). Added better imperative mood checks using third party stemmer (#235, #68).

    Bug Fixes

    Made parser more robust to bad source files (#168, #214) Modules are now considered private if their name starts with a single underscore. This is a bugfix where “public module” (D100) was reported regardless of module name (#199, #222). Removed error when all is a list (#62, #227). Fixed a bug where the @ sign was used as a matrix multiplication operator in Python 3.5, but was considered a decorator by the parser (#246, #191).

    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Oct 4, 2016)

  • 1.1.0(Sep 29, 2016)

    Major Updates

    • pydocstyle is no longer a single file. This might make it difficult for some users to just add it to their project, but the project has reached certain complexity where splitting it into modules was necessary (#200).

    New Features

    • Added the optional error codes D212 and D213, for checking whether the summary of a multi-line docstring starts at the first line, respectively at the second line (#174).
    • Added D404 - First word of the docstring should not be “This”. It is turned off by default (#183).
    • Added the ability to ignore specific function and method docstrings with inline comments:
      “# noqa” skips all checks.
      “# noqa: D102,D203” can be used to skip specific checks.

    Bug Fixes

    • Fixed an issue where file paths were printed in lower case (#179, #181).
    • The error code D300 is now also being reported if a docstring has uppercase literals (R or U) as prefix (#176).
    • Fixed a bug where an all error was reported when all was imported from another module with a different name (#182, #187).
    • Fixed a bug where raise X from Y syntax caused pydocstyle to crash (#196, #200).
    Source code(tar.gz)
    Source code(zip)
    pydocstyle-1.1.0-py2.py3-none-any.whl(24.02 KB)
    pydocstyle-1.1.0.zip(25.88 KB)
  • 0.7.0(Oct 9, 2015)

    New Features

    • Added the D104 error code - "Missing docstring in public package". This new error is turned on by default. Missing docstring in __init__.py files which previously resulted in D100 errors ("Missing docstring in public module") will now result in D104 (#105, #127).
    • Added the D105 error code - "Missing docstring in magic method'. This new error is turned on by default. Missing docstrings in magic method which previously resulted in D102 error ("Missing docstring in public method") will now result in D105. Note that exceptions to this rule are variadic magic methods - specifically __init__, __call__ and __new__, which will be considered non-magic and missing docstrings in them will result in D102 (#60, #139).
    • Support the option to exclude all error codes. Running pep257 with --select= (or select= in the configuration file) will exclude all errors which could then be added one by one using add-select. Useful for projects new to pep257 (#132, #135).
    • Added check D211: No blank lines allowed before class docstring. This change is a result of a change to the official PEP257 convention. Therefore, D211 will now be checked by default instead of D203, which required a single blank line before a class docstring (#137).
    • Configuration files are now handled correctly. The closer a configuration file is to a checked file the more it matters. Configuration files no longer support explain, source, debug, verbose or count (#133).

    Bug Fixes

    • On Python 2.x, D302 ("Use u""" for Unicode docstrings") is not reported if unicode_literals is imported from __future__ (#113, #134).
    • Fixed a bug where there was no executable for pep257 on Windows (#73, #136).
    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(Jul 20, 2015)

    New Features

    • Added support for more flexible error selections using --ignore, --select, --convention, --add-ignore and --add-select (#96, #123).

    Bug Fixes

    • Property setter and deleter methods are now treated as private and do not require docstrings separate from the main property method (#69, #107).
    • Fixed an issue where pep257 did not accept docstrings that are both unicode and raw in Python 2.x (#116, #119).
    • Fixed an issue where Python 3.x files with Unicode encodings were not read correctly (#118).
    Source code(tar.gz)
    Source code(zip)
Owner
Python Code Quality Authority
Organization for code quality tools (and plugins) for the Python programming language
Python Code Quality Authority
Flake8 plugin for managing type-checking imports & forward references

flake8-type-checking Lets you know which imports to put in type-checking blocks. For the imports you've already defined inside type-checking blocks, i

snok 67 Dec 16, 2022
Tool to check the completeness of MANIFEST.in for Python packages

check-manifest Are you a Python developer? Have you uploaded packages to the Python Package Index? Have you accidentally uploaded broken packages with

Marius Gedminas 270 Dec 26, 2022
Mylint - My really simple rendition of how a linter works.

mylint My really simple rendition of how a linter works. This original version was written for my AST article. Since then I've added tests and turned

Tushar Sadhwani 2 Dec 29, 2021
Code audit tool for python.

Pylama Code audit tool for Python and JavaScript. Pylama wraps these tools: pycodestyle (formerly pep8) © 2012-2013, Florent Xicluna; pydocstyle (form

Kirill Klenov 967 Jan 07, 2023
flake8 plugin to catch useless `assert` statements

flake8-useless-assert flake8 plugin to catch useless assert statements Download or install on the PyPI page Violations Code Description Example ULA001

1 Feb 12, 2022
Check for python builtins being used as variables or parameters

Flake8 Builtins plugin Check for python builtins being used as variables or parameters. Imagine some code like this: def max_values(list, list2):

Gil Forcada Codinachs 98 Jan 08, 2023
Custom Python linting through AST expressions

bellybutton bellybutton is a customizable, easy-to-configure linting engine for Python. What is this good for? Tools like pylint and flake8 provide, o

H. Chase Stevens 249 Dec 31, 2022
Automated security testing using bandit and flake8.

flake8-bandit Automated security testing built right into your workflow! You already use flake8 to lint all your code for errors, ensure docstrings ar

Tyler Wince 96 Jan 01, 2023
Flake8 Type Annotation Checking

flake8-annotations flake8-annotations is a plugin for Flake8 that detects the absence of PEP 3107-style function annotations and PEP 484-style type co

S. Co1 118 Jan 05, 2023
👻 Phantom types for Python

phantom-types Phantom types for Python will help you make illegal states unrepresentable and avoid shotgun parsing by enabling you to practice "Parse,

Anton Agestam 118 Dec 22, 2022
MonkeyType as a pytest plugin.

MonkeyType as a pytest plugin.

Marius van Niekerk 36 Nov 24, 2022
Flake8 plugin to find commented out or dead code

flake8-eradicate flake8 plugin to find commented out (or so called "dead") code. This is quite important for the project in a long run. Based on eradi

wemake.services 277 Dec 27, 2022
Mypy plugin and stubs for SQLAlchemy

Pythonista Stubs Stubs for the Pythonista iOS API. This allows for better error detection and IDE / editor autocomplete. Installation and Usage pip in

Dropbox 521 Dec 29, 2022
flake8 plugin that integrates isort

Flake8 meet isort Use isort to check if the imports on your python files are sorted the way you expect. Add an .isort.cfg to define how you want your

Gil Forcada Codinachs 139 Nov 08, 2022
coala provides a unified command-line interface for linting and fixing all your code, regardless of the programming languages you use.

"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." ― John F. Woods coala provides a

coala development group 3.4k Dec 29, 2022
Design by contract for Python. Write bug-free code. Add a few decorators, get static analysis and tests for free.

A Python library for design by contract (DbC) and checking values, exceptions, and side-effects. In a nutshell, deal empowers you to write bug-free co

Life4 473 Dec 28, 2022
:sparkles: Surface lint errors during code review

✨ Linty Fresh ✨ Keep your codebase sparkly clean with the power of LINT! Linty Fresh parses lint errors and report them back to GitHub as comments on

Lyft 183 Dec 18, 2022
Collection of awesome Python types, stubs, plugins, and tools to work with them.

Awesome Python Typing Collection of awesome Python types, stubs, plugins, and tools to work with them. Contents Static type checkers Dynamic type chec

TypedDjango 1.2k Jan 04, 2023
Easy saving and switching between multiple KDE configurations.

Konfsave Konfsave is a config manager. That is, it allows you to save, back up, and easily switch between different (per-user) system configurations.

42 Sep 25, 2022
Performant type-checking for python.

Pyre is a performant type checker for Python compliant with PEP 484. Pyre can analyze codebases with millions of lines of code incrementally – providi

Facebook 6.2k Jan 04, 2023