• Stars
    star
    158
  • Rank 229,536 (Top 5 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 10 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Style checker for sphinx (or other) rst documentation.
PyPI CI PyPI - License GitHub last commit Read the Docs (stable)

doc8

doc8 is an opinionated style checker for rst (with basic support for plain text) styles of documentation.

Quick start

pip install doc8

To run doc8, just invoke it against any documentation directory:

$ doc8 cool-project/docs

Usage

$ doc8  -h

usage: doc8 [-h] [--config path] [--allow-long-titles] [--ignore code]
            [--no-sphinx] [--ignore-path path] [--ignore-path-errors path]
            [--default-extension extension] [--file-encoding encoding]
            [--max-line-length int] [-e extension] [-v] [--version]
            [path [path ...]]

Check documentation for simple style requirements.

What is checked:
    - invalid RST format - D000
    - lines should not be longer than 79 characters - D001
      - RST exception: line with no whitespace except in the beginning
      - RST exception: lines with http or https urls
      - RST exception: literal blocks
      - RST exception: rst target directives
    - no trailing whitespace - D002
    - no tabulation for indentation - D003
    - no carriage returns (use unix newlines) - D004
    - no newline at end of file - D005

positional arguments:
  path                  Path to scan for doc files (default: current
                        directory).

optional arguments:
  -h, --help            show this help message and exit
  --config path         user config file location (default: .config/doc8.ini, doc8.ini, tox.ini,
                        pep8.ini, setup.cfg).
  --allow-long-titles   allow long section titles (default: false).
  --ignore code         ignore the given error code(s).
  --no-sphinx           do not ignore sphinx specific false positives.
  --ignore-path path    ignore the given directory or file (globs are
                        supported).
  --ignore-path-errors path
                        ignore the given specific errors in the provided file.
  --default-extension extension
                        default file extension to use when a file is found
                        without a file extension.
  --file-encoding encoding
                        set input files text encoding
  --max-line-length int
                        maximum allowed line length (default: 79).
  -e extension, --extension extension
                        check file extensions of the given type (default:
                        .rst, .txt).
  -q, --quiet           only print violations
  -v, --verbose         run in verbose mode.
  --version             show the version and exit.

INI file usage

Instead of using the CLI for options the following files will also be examined for [doc8] sections that can also provide the same set of options. If the --config path option is used, these files will not be scanned for the current working directory and that configuration path will be used instead.

  • $CWD/doc8.ini
  • $CWD/.config/doc8.ini
  • $CWD/tox.ini
  • $CWD/pep8.ini
  • $CWD/setup.cfg
  • $CWD/pyproject.toml

An example section that can be placed into one of these files:

[doc8]

ignore-path=/tmp/stuff,/tmp/other_stuff
max-line-length=99
verbose=1
ignore-path-errors=/tmp/other_thing.rst;D001;D002

Note: The option names are the same as the command line ones (with the only variation of this being the no-sphinx option which from the configuration file will be sphinx instead).

Option conflict resolution

When the same option is passed on the command line and also via configuration files the following strategies are applied to resolve these types of conflicts.

Option Overrides Merges
allow-long-titles Yes No
ignore-path-errors No Yes
default-extension Yes No
extension No Yes
ignore-path No Yes
ignore No Yes
max-line-length Yes No
file-encoding Yes No
sphinx Yes No

Note: In the above table the configuration file option when specified as overrides will replace the same option given via the command line. When merges is stated then the option will be combined with the command line option (for example by becoming a larger list or set of values that contains the values passed on the command line and the values passed via configuration).

API

It is also possible to use doc8 programmatically. To call doc8 from a Python project, use:

from doc8 import doc8

result = doc8(allow_long_titles=True, max_line_length=99)

The returned result will have the following attributes and methods:

  • result.files_selected - number of files selected
  • result.files_ignored - number of files ignored
  • result.error_counts - dict of {check_name: error_count}
  • result.total_errors - total number of errors found
  • result.errors - list of (check_name, filename, line_num, code, message) tuples
  • result.report() - returns a human-readable report as a string

The doc8 method accepts the same arguments as the executable. Simply replace hyphens with underscores.

Note: Calling doc8 in this way will not write to stdout, so the quiet and verbose options are ignored.

More Repositories

1

isort

A Python utility / library to sort imports.
Python
6,308
star
2

bandit

Bandit is a tool designed to find common security issues in Python code.
Python
5,900
star
3

pycodestyle

Simple Python style checker in one Python file
Python
4,924
star
4

pylint

It's not just a linter that annoys you!
Python
4,246
star
5

flake8

flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.
Python
3,068
star
6

pyflakes

A simple program which checks Python source files for errors
Python
1,304
star
7

pydocstyle

docstring style checker
Python
1,105
star
8

flake8-bugbear

A plugin for Flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle.
Python
1,034
star
9

autoflake

Removes unused imports and unused variables as reported by pyflakes
Python
844
star
10

redbaron

Bottom-up approach to refactoring in python
Python
683
star
11

mccabe

McCabe complexity checker for Python
Python
602
star
12

pylint-django

Pylint plugin for improving code analysis for when using Django
Python
556
star
13

docformatter

Formats docstrings to follow PEP 257
Python
511
star
14

pep8-naming

Naming Convention checker for Python
Python
471
star
15

astroid

A common base representation of python source code for pylint and other projects
Python
425
star
16

modernize

Modernizes Python code for eventual Python 3 migration. Built on top of fissix (a fork of lib2to3)
Python
326
star
17

baron

IDE allow you to refactor code, Baron allows you to write refactoring code.
Python
285
star
18

flake8-import-order

Flake8 plugin that checks import order against various Python Style Guides
Python
276
star
19

eradicate

Removes commented-out code from Python files
Python
195
star
20

flake8-docstrings

Integration of pydocstyle and flake8 for combined linting and reporting
Python
144
star
21

flake8-commas

Flake8 extension for enforcing trailing commas in python
Python
128
star
22

flake8-pyi

A plugin for Flake8 that provides specializations for type hinting stub files
Python
70
star
23

pylint-celery

Pylint plugin for analysing code using Celery
Python
34
star
24

meta

Documentation about how the PyCQA organization works
Python
24
star
25

pylint-plugin-utils

Utilities and helpers for writing Pylint plugins
Python
20
star
26

oeuvre

A repository to collect examples of Python code for testing code-quality tools
Python
11
star
27

flake8-polyfill

Project to make writing plugins across major versions of flake8 easier
Python
11
star
28

flake8-json

JSON formatter for Flake8 output
Python
9
star
29

bandit-action

GitHub Action to run Bandit
Dockerfile
8
star
30

infrastructure

Mirror of PyCQA's infrastructure playbooks
6
star
31

mccabe-console-script

Add a console script for the mccabe complexity checker
Python
4
star