sphinx-dv-flow
Sphinx support for documenting DV Flow workflows.
A flow file already states what a task takes, what it produces, and how it is
reached. sphinx-dv-flow reads those statements and renders them, so the
documentation says what the flow actually does rather than what it did when
someone last updated a table by hand.
pip install sphinx-dv-flow
# conf.py
extensions = ["sphinx_dv_flow"]
.. dvf:autopackage:: mypkg
:types:
That documents every task the package publishes — parameters with their types
and defaults, what each task consumes and produces, where it sits in the uses:
chain, and a diagram of the flow — from the flow file, with no per-task
boilerplate. Individual objects have their own directives (dvf:autotask,
dvf:autotype, dvf:autoconfig, dvf:autofilter) and roles (:dvf:task:`…`)
for cross-referencing, including across projects via intersphinx.
Two packages, one distribution
The split is the one structurally expensive decision in the project, and it is enforced by a test rather than by intent:
dv_flow.docloads a project and extracts documentation facts as plain data. It does not import Sphinx, and an out-of-process test checks that after importing itsphinxis absent fromsys.modules. This keeps the extracted model testable as data, and reusable by tools —dfmamong them — that have no business depending on a documentation generator.sphinx_dv_flowis the Sphinx extension: directives, roles, indices and diagrams. Rendering only.
The dependency runs one way, never the reverse.
Ground rules
These shaped most of the design decisions and are worth stating up front:
- Declared over discovered. Where the flow file says something, that is the answer. Inference is labelled as inference.
- A resolution failure never fails a docs build. A missing package is a warning against the object that referenced it. Only a malformed flow file is fatal, and then with a location.
- Every diagram has a textual twin, so
text,manand a screen reader carry the same facts as the picture. - Visibility is the audience model.
exportandroottasks are documented; unscoped ones only under:internal:;localnever, because a reader cannot address one whatever the documentation says.
Status
Early. The extraction and rendering layers, the dvf domain, diagrams,
examples, coverage reporting and cross-project references are in place, and
dv-flow-mgr generates its own standard-library reference with this extension.
The directive and configuration surface is not frozen — hence 0.0.x.
Documentation
Built from docs/, and by design also the acceptance test for the directives
the extension ships: the build runs under -W in CI, so a warning there is a
failure.
License
Apache-2.0
Metadata
Release files for sphinx-dv-flow 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sphinx_dv_flow-0.0.1.tar.gz | 106.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sphinx_dv_flow-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 239.4 kB
Release files / sphinx_dv_flow-0.0.1.tar.gz
| Download URL | sphinx_dv_flow-0.0.1.tar.gz |
|---|---|
| Size | 106.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d7375fc24e0ea6218f9b59438c36be455085e6d0a95be4a7e3e386b1f8f82c31
|
|
BLAKE2b-256 checksum How to use checksums |
2705bfaab2f7c2951022f5c0dc05d230115c7040e3342d79f1b8b03617802309
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / sphinx_dv_flow-0.0.1-py3-none-any.whl
| Download URL | sphinx_dv_flow-0.0.1-py3-none-any.whl |
|---|---|
| Size | 132.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
42b962c49e4d7c0ff8222a6f668204bb16f6b6f0ba5060b61e4ee7e2abaeffb4
|
|
BLAKE2b-256 checksum How to use checksums |
d8bace4b92f82668c89cc650c80ff1585c3c4498b1c59d1fc0975c95f20d28b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|