[doc8]

# -----------------------------------------------------------------------
# Copyright 2023-2024 Open Networking Foundation Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -----------------------------------------------------------------------
# SPDX-FileCopyrightText: 2023-2024 Open Networking Foundation Contributors
# SPDX-License-Identifier: Apache-2.0
# -----------------------------------------------------------------------
# Intent:
# -----------------------------------------------------------------------
    
## -----------------------------------------------------------------------
# $ 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
extension       = rst
ignore-path     = lf/onf-make/*, .venv, */.venv, .tmp */.tmp

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