Test if doctype types match signatures
Project description
pydoctest: docstring signature verification
File issues here: Issues tracker
Motivation
Pydoctest helps you verify that your docstrings match your function signatures. As a codebase evolves, you can some times forget to update the docstrings.
Installation
Install pydoctest with pip:
$ python3 -m pip install pydoctest
Usage
Navigate to your project location, and execute pydoctest
$ pydoctest
With no pydoctest.json configuration file, it will by default validate all .py files recursively in the current directory (**/*.py). See the configuration section for options.
If you get errors with modules not being found, try placing the pydoctest.json differently or executing inside the package.
Output
Pydoctest supports outputting results either as JSON or Text with different verbosity options. By default, Text is returned. To specify the output, invoke with --reporter argument:
$ pydoctest --reporter [json | text]
For Text-output, --verbosity can be provided with a value of 0 (quiet), 1 (show failed) or 2 (show all).
$ pydoctest --reporter text --verbosity 1
Configuration
Pydoctest can be configured with a config JSON file. By default, it will search for pydoctest.json in the directory pydoctest is executed. A path can also be provided when executing:
$ pydoctest --config /path/to/pydoctest.json
Example pydoctest.json:
{
"include_paths": [ "server/*.py" ],
"fail_on_missing_docstring": true,
"parser": "google",
}
Docstring format can be specified with the --parser argument:
$ pydoctest --parser google
Currently, only google, numpy and sphinx are supported.
Full list of configuration options:
- "include_paths": [ List of strings ] # Patterns to search modules with. Defaults to
[**/*.py] - "exclude_paths": [ List of strings ] # Patterns to exclude modules with. Defaults to
["**/__init__.py", "**/setup.py"] - "verbosity": [ 0 | 1 | 2 ] # How much to print, 0 = quiet, 1 = show failed, 2 = show all.
- "parser": [ "google" (default) | "sphinx" | "numpy" ] # Docstring format to use. Please raise an issue if you need other formats implemented.
- "fail_on_missing_docstring": [ true | false (default) ] # Mark a function as failed, if it does not have a docstring.
- "fail_on_missing_summary": [ true | false (default) ] # Mark a function as failed, if it does have a docstring, but no summary.
- "fail_on_raises_section": [ true (default) | false ] # Mark a function as failed, if docstring doesn't mention raised exceptions correctly.
- "exclude_classes": [ List of strings ] # Patterns to exclude classes with, e.g.
["Test*]" - "exclude_methods": [ List of strings ] # Patterns to exclude class methods with, e.g. for private methods you would use
["__*]" - "exclude_functions": [ List of strings ] # Patterns to exclude functions with, e.g. for private methods you would use
["__*]"
CLI
Printing the help message shows all currently implemented cli options.
pydoctest --help
Example
# example_file.py
def func_type_mismatch(self, a: int) -> int:
"""[summary]
Args:
a (float): [description] <-- float is not int
Returns:
int: [description]
"""
pass
# /example_file.py::func_type_mismatch FAIL | Argument type differ. Argument 'a' was expected (from signature) to have type '<class 'int'>', but has (in docs) type '<class 'float'>'
Tested 1 function(s) across 1 module(s).
Succeeded: 0, Failed: 1, Skipped: 0
Editor support
Currently pydoctest is supported by vscode: https://github.com/jepperaskdk/vscode-pydoctest
License
Pydoctest is licensed under the terms of the MIT License (see the LICENSE file).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydoctest-0.2.1.tar.gz.
File metadata
- Download URL: pydoctest-0.2.1.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d68efde75ca17994d88801bd6081cff3459c9e8211d659dbd9068d50e21ed1f8
|
|
| MD5 |
2d1a98e467abb1403d00ca8e1e733d7d
|
|
| BLAKE2b-256 |
bb85fbd6f09c9731cb374a4f6a2f07ae094a24dc034dcae32a3428e6fc992c5d
|
File details
Details for the file pydoctest-0.2.1-py3-none-any.whl.
File metadata
- Download URL: pydoctest-0.2.1-py3-none-any.whl
- Upload date:
- Size: 41.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8044448e3bc6471efb55443fc6a373e228f273635fb30f6f1ac97adde4be36cf
|
|
| MD5 |
8e1fc17e279ce967a711c523449ab214
|
|
| BLAKE2b-256 |
5f2989443aaa85972ce971af63521fbac99b0ac2abfb4d7e66fdadf66af00b8b
|