Skip to main content

Complete documentation: https://sphinx-modeling.useblocks.com/

Introduction

Sphinx-Modeling allows the definition of models and constraints for objects defined with Sphinx-Needs. They can be validated during the Sphinx build.

pydantic is used under the hood to validate all models.

Arbitrary constraints can be enforced such as:

  • value constraints for need options

  • multiplicity of need link options

  • typed fields (string, regex, int, enums)

  • allow or disallow additional options

  • outgoing links must target specific need types or union of types

  • need type must be nested within another need type (via parent_need)

  • need type must be part of a specific document or chapter/section

  • custom validators

Motivation

Requirements management with Sphinx-Needs and docs-as-code traditionally comes at the cost of complete freedom for developers. need_types, needs_extra_options and needs_extra_links are global and all need_types can use all needs_extra_options/needs_extra_links by default.

This is a problem for organizations that want to enforce well defined (UML) standards on objects. Especially when migrating parts of the requirements management system to Sphinx-Needs it is crucial to be consistent with existing solutions. Doing so enables technological interoperability.

More reasons to use sphinx-modeling are:

  • defining model constraints (typed links, multiplicity, allowed attributes, allowed values etc) as part of your model definition (and not as need_warnings). This leaves need_warnings with the load of doing only data relevant checks later. That is, reduce glue and duplication as much as possible.

  • automatic visualization of typed model (planned feature)

  • self contained need definitions which does not leave types, options, links and warnings scattered (planned feature)

  • user-documentation of meta-model (automatically create readable textual documentation on the types, its allowed values etc. Can be combined with additional docstring documentation as part of model definition if needed)

  • possibility to use the typed model in external tools (VsCode Extension, Linter etc.)

  • possibility to auto-generate needs_ide_directive_snippets (planned feature)

Planned features

  • Generation of the following Sphinx-Needs configurations from a model configuration:

    • needs_types

    • needs_extra_options

    • needs_extra_links

  • Visualization of the model (e.g. with PlantUML)

  • Use the model as source for IDE extensions

Installation

Using poetry

poetry add sphinx-modeling

Using pip

pip install sphinx-modeling

Using sources

git clone https://github.com/useblocks/sphinx-modeling
cd sphinx-modeling
pip install .

Activation

Add sphinx_modeling to your extensions:

extensions = ["sphinx_needs", "sphinx_modeling", ]

Metadata

Release files for sphinx-modeling 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sphinx-modeling 0.2.0
File Size Uploaded
sphinx_modeling-0.2.0.tar.gz 31.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sphinx-modeling 0.2.0
File Interpreter ABI Platform
sphinx_modeling-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.5 kB

Release files / sphinx_modeling-0.2.0.tar.gz

Download URL sphinx_modeling-0.2.0.tar.gz
Size 31.7 kB
Tags Source
SHA-256 checksum
How to use checksums
90e965331ec2ae96c10f3842b3dee1280642118b4e221211b7d8505911d83022
BLAKE2b-256 checksum
How to use checksums
8488f113d3b7b5eaa2bef42d70ef6464e923bf7920c64cc76982374e72741d57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.3.1 CPython/3.9.15 Linux/5.15.0-1024-azure

Release files / sphinx_modeling-0.2.0-py3-none-any.whl

Download URL sphinx_modeling-0.2.0-py3-none-any.whl
Size 29.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d8f9b04746b0258aac6c3bf1c23ea2457eb1326ad3c803eff23055a8a17ece59
BLAKE2b-256 checksum
How to use checksums
bac1d71b2e1a1b7492102d8ad6758c7a0e02314320c5d93138047e1955f1492b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.3.1 CPython/3.9.15 Linux/5.15.0-1024-azure

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page