A Sphinx extension to pass reStructuredText code blocks to external tools.
Project description
Sphinx Awesome Codelinter
This extension for the Sphinx documentation generator allows you to expose code blocks in your documentation to an external tool. This can be used to check that code blocks contain only valid code. For more information about the Sphinx project, visit the website at http://www.sphinx-doc.org/.
This extension provides a new builder: sphinx-build -b codelinter
.
Installation
Install the extension:
pip install sphinxawesome-codelinter
This Sphinx extension should work with Python versions newer than 3.6 and recent Sphinx
releases. The versions against which the unit tests are run is in the file
.github/workflows/tests.yml
in this repository.
Configuration
To enable this extension in Sphinx, add it to the list of extensions in the Sphinx
configuration file conf.py
:
extensions = ['sphinxawesome.codelinter']
To pass code blocks to an external tool, provide the language as a key and the tool as
the associated value to the codelinter_languages
dictionary. This dictionary is initially
empty, so even if the extension is installed and included in the extensions
list,
no code blocks will be processed by default.
For example, to pass all JSON blocks to the python builtin JSON module, use:
codelinter_languages = {
'json': 'python -m json.tool'
}
The python command returns an error for non-valid JSON code. For linting YAML code blocks, you could
install the yamllint
tool and then add:
codelinter_languages = {
'yaml': 'yamllint -'
}
The -
tells yamllint to read from stdin
. You can also write your own tools that can
read from stdin
and write to stdout
or stderr
. The only expectation is that any
tools returns a value of 0 if no errors were found, a non-zero value otherwise.
You can use any reStructuredText directive that gets parsed as a literal_block
node.
For example, you can use .. code-block:: json
as well as .. highlight:: json
.
You can also use the ..literalinclude:: <filename>
directive to include code from
files.
.. literalinclude:: code.json
:language: json
Caution: The value of the
codelinter_languages
dictionary will be called as provided. No additional safe-guards are in place to prevent abuse.
Use
Use sphinx-build -b codelinter
like you would use other Sphinx builders. No output
will be written to disk. If the codelinter tool exits with a non-zero return value,
a warning will be logged. You can use the sphinx-build -W
option to turn those
warnings into errors to stop the build process.
Project details
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
Hashes for sphinxawesome-codelinter-1.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f54cd4344bf8ffc3a28d4354735eea548bc44913fc678eed1a1b5552ee47ad5 |
|
MD5 | 6fa251ead29c87cf130262a5dc5019fe |
|
BLAKE2b-256 | 847b324abd99942ba5f6ede36ab2740165da9cabc9a487f7fb638f7cecde1c23 |
Hashes for sphinxawesome_codelinter-1.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1d7016543d5b995a536d31985ae1d8090fabc0b5c38fd6ae78bd6b449d4dab5 |
|
MD5 | 2ca9f5f477ecc99a0916ccca7cd1af9b |
|
BLAKE2b-256 | 7c6668a83eaf365b5e211ebb32178f661d23464318dba6282f911624b42f9b63 |