Skip to main content

'Sphinx-Graph' is a plain-text, VCS-friendly, requirements management tool.

Project description

Sphinx Graph

codecov CI sponsor Documentation Status

'Sphinx-Graph' is a sphinx extension for plain-text, VCS-friendly, requirements management.

Key Features

  1. Vertex Directive: Define relationships between document elements.
  2. Vertex Table: Generate summary tables of vertices.
  3. Fingerprinting: Track changes and trigger reviews when parent elements are modified.
  4. Customizable Layouts: Choose how vertices are displayed in your documentation.

With Sphinx-Graph you define relationships between items in a document. These items form a directed acyclic graph (DAG). The extension:

  • Checks for cyclic references
  • Populates items with links to their 'parents' or 'children'
  • (Optionally) tracks a hash of each item to trigger reviews when any parents change

Getting Started

Install Sphinx-Graph using pip:

pip install sphinx-graph

Add it to your Sphinx project's conf.py:

extensions = [
   # ... other extensions ...
   "sphinx_graph",
]

Vertices

The core sphinx directive provided by this extension is a 'Vertex'. A Vertex directive can be used to define relationships between text elements.

.. vertex:: USR-001

   this is a user requirement.

   This user requirement forms the basis of derived system requirements. When it is rendered in a
   sphinx document it will be augmented with links to any child vertices.

.. vertex:: SYS-001
   :parents: USR-001

   this is system requirement of some sort.

   It is derived from a higher-level user requirement (USR-001).
   When it is rendered in a sphinx document, it will be augmented with links to its parent as well
   as any 'children'.

.. vertex:: SYS-002
   :parents: USR-001:iG91

   this is another system requirement. This time the link to USR-001 is tracking the 'fingerprint'
   of its parent.

   The fingerprint is a 4-character hash. If USR-001 is modified, then SYS-002 will fail the build
   until the fingerprint is updated (the build error provides the new fingerprint). This means that
   changing a Vertex will trigger a review of all dependent vertices.

Generating Summary Tables

The vertex-table directive generates summary tables of vertices:

.. vertex-table::
   :query: descendants

   uid = "REQ-001"

This will create a table showing REQ-001 and all its descendants.

Benefits of Sphinx-Graph

  1. Version Control Friendly: Plain-text format works well with Git and other VCS.
  2. Flexible: Define custom relationships between any elements in your documentation.
  3. Traceable: Easily track dependencies and impact of changes.
  4. Integrated: Seamlessly works within your Sphinx documentation.

Comparison with Similar Projects

Sphinx Graph is heavily inspired by Sphinx-Needs. Sphinx-Graph started life as a proof-of-concept refactor of Sphinx-Needs using modern python and strict type checking.

Sphinx-Needs:

  • Sphinx-Needs is a more complex, feature-rich solution for requirements management, but may be heavy-weight for some use-cases.
  • Sphinx-Graph is smaller, more streamlined, and uses modern Python with strict type checking.
  • Sphinx-Graph can track 'suspect links' and force reviews when linked requirements are modified.

Doorstop:

  • Doorstop is a command-line tool and Python API for managing requirements as text files.
  • Like Sphinx-Graph, Doorstop is lightweight and version-control friendly.
  • Sphinx-Graph integrates directly with Sphinx documentation, while Doorstop requires additional setup for documentation integration.
  • Sphinx-Graph offers more flexible relationship types between items compared to Doorstop's hierarchical structure.

Traditional Requirements Management Tools (Doors, Enterprise Architect, etc):

  • Sphinx-Graph doesn't require complex workflows or specific expertise to maintain.
  • It's more cost-effective (it's free).
  • Can be maintained in plain-text alongside the code.

For more information, see the docs.

or, build the local docs-

cd docs
uv run make html

Was this useful? Buy me a coffee

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

sphinx_graph-0.3.3.tar.gz (84.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinx_graph-0.3.3-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_graph-0.3.3.tar.gz.

File metadata

  • Download URL: sphinx_graph-0.3.3.tar.gz
  • Upload date:
  • Size: 84.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sphinx_graph-0.3.3.tar.gz
Algorithm Hash digest
SHA256 4757b3f04930ebd778edf913cf2fd35183f69297dd1e986d0912564d4da32f4c
MD5 15c5aaa9577ebc174258d74b5019c6fc
BLAKE2b-256 7a5079189989918d8993f109b30b6092233249604af0eb91dbab48294145aaa8

See more details on using hashes here.

File details

Details for the file sphinx_graph-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: sphinx_graph-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sphinx_graph-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1055a793031d0f8bfbfed8f5fb358623dc0b7a47a1c9c252dcb9bcf760900593
MD5 47daa6a5a62c07876876bacbf73aa45f
BLAKE2b-256 cec26533ffd2257dea20e600faab63c3c20f6073f464c9019f8ef08ee0d6859a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page