[doc8]

## -----------------------------------------------------------------------
# $ 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.
## -----------------------------------------------------------------------

# verbose=1
    
extension       = rst, txt
ignore-path     = .venv, */.venv

# ignore-path-errors=/tmp/other_thing.rst;D001;D002
# voltha-helm-charts/voltha-infra/templates/NOTES.txt:12: D001 Line too long

max-line-length = 120

# [SEE ALSO]
# -----------------------------------------------------------------------
# https://doc8.readthedocs.io/en/latest/readme.html
# -----------------------------------------------------------------------
