Skip to main content

Sphinx-needs-data-explorer is a Sphinx extension to visualize Sphinx-Needs data

Project description

Sphinx Needs Data Explorer

The sphinx_needs_data_explorer is a web application built with HTML, CSS, and JavaScript, offered as a Sphinx extension. Created as a personal open-source project, it enhances the interactivity of Sphinx-generated documentation by enabling users to explore the needs.json data produced by the Sphinx-Needs extension. Users can filter data attributes and view the data in three distinct modes: network-view, table-view , and file-view. Additionally, it supports generating reports in various formats, making it a powerful and flexible tool for analyzing and presenting documentation data.

Goals and Realization

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/sphinx_needs_data_explorer.svg

Features

Three Sphinx-Needs Data View Perspectives

Network-View

In Network-View-Perspective you can see how sphinx-needs data are interconnected in data networks.

You can choose which data context to see - incoming connections from in-neighbours - outgoing connections from out-neighbours - incoming and outgoing connections

You can choose network layout - hierarchical bottom-up - hierarchical right-to-left - hierarchical with repulsion

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/network-perspective.jpg

Table-View

In Table-View-Perspective you can see sphinx-needs data in table. You can select which columns should be visible and which hidden.

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/table-perspective.jpg

File-View

In File-View-Perspective, you can see a list of files in which Sphinx-needs data were found.

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/file-perspective.jpg

Powerfull Interactive Data Filtering

You can predefine filtering expressions during documentation generation or interactively while browsing documentation, and apply the data filtering across all three view perspectives.

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/data-filtering.jpg

You can use attribute lookup table while writing your filters.

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/scr6.jpg

Exploring In-Neighbours, Out-Neighbours or both

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/sh2.jpg

Visualizing Constraint Violations in Network Transitions

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/scr7.jpg

Controlling Neighborhood Depth in Network Visualization

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/depthview.gif

Switching between Perspective Views and Documentation

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/sh3.jpg

Interaction

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/sphinx-needs-data-explorer.gif

Installation

You can install sphinx-needs-data-explorer with pip

pip install sphinx-needs-data-explorer

Alternatively (Linux)

git clone https://github.com/mi-parkes/sphinx-needs-data-explorer.git
cd sphinx-needs-data-explorer

poetry install
poetry build
poetry run task doc

# you can then install the package in your virtual environment
pip install dist/sphinx_needs_data_explorer*.whl

Activation

In your conf.py configuration file, add sphinx_needs_data_explorer to your extensions list. And, please, make sure that sphinx_needs extension is configured to generate needs.json file in the root of your documentation E.g.:

extensions = [
  ...
  'sphinx_needs_data_explorer'
  ...
]
...
needs_build_json = True

or you can include it only if the extension is available in your virtual environment:

...
try:
    import sphinx_needs_data_explorer
    extensions.add('sphinx_needs_data_explorer')
except ImportError:
    pass
...
needs_build_json = True

If your project uses sphinx_book_theme, sphinx_needs_data_explorer supports full integration in your documentation by adding E header button accesible from any documentation page.

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/E-header-button-doc.jpg

Otherwise, you can create hyperlink to sphinx_needs_data_explorer by adding the following role in your .rst file(s)

:sphinx_needs_data_explorer:`Sphinx Needs Data Explorer Test`

Configuration

If defined, the following parameters are used for configuration:

  • needs_extra_options - the parameter defines extra sphinx-needs options

  • needs_extra_links - the parameter defines the type links to use when extracting sphinx-needs linkage

  • needs_types - the parameter defines sphinx-needs types and their attributes like node colors

You can predefine filtering expressions to populate the filter drop-down list:

sphinx_needs_data_explorer_config = {
    "filters":[
        "status=='open'",
        "['15','16'] in id",
        "title ~ /r.*[0-9]+5'$/i",
        "type != 'req' && incoming==[]",
        "type=='spec' && outgoing!=[] && title ~ /5'$/"
    ]
}

sphinx_needs_data_explorer Help lists all attributes found in your project that can be used for data filtering.

https://raw.githubusercontent.com/mi-parkes/sphinx-needs-data-explorer/41b530aa785343e4d378f0a5664ce520b158ed16/doc/source/images/help1.jpg

Visualizing Constraint Violations in Network Transitions:

sphinx_needs_data_explorer_config = {
    "valid-linkage-color":"Black",
    "invalid-linkage-color":"OrangeRed",
    "valid-linkage":{
        'need': {
            'need':'refinement'
        },
        'feat': {
            'feat':'refinement',
            'need':'links'
        },
        ...
    }
}

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_needs_data_explorer-0.9.6.tar.gz (755.5 kB view details)

Uploaded Source

Built Distribution

sphinx_needs_data_explorer-0.9.6-py3-none-any.whl (763.2 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_needs_data_explorer-0.9.6.tar.gz.

File metadata

File hashes

Hashes for sphinx_needs_data_explorer-0.9.6.tar.gz
Algorithm Hash digest
SHA256 bb7baff0701b33de0b7536935c26d3c1833a50f44ce1585f599d299f07cacdb3
MD5 e70e49f374eaae06c7ba4484ec7e09ff
BLAKE2b-256 716f65a79d27b1d8ec57445ec6cd5eb4c8063eca8587b27148c295d7a2e889ad

See more details on using hashes here.

File details

Details for the file sphinx_needs_data_explorer-0.9.6-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinx_needs_data_explorer-0.9.6-py3-none-any.whl
Algorithm Hash digest
SHA256 2360f25d17fbfc8297146dea2b2f5f14be70672cb3229a1de6aa42066fc42f59
MD5 010e651424208764c05d7c996eb09072
BLAKE2b-256 9f6643b0555dc89c9ab2fc9336570719c871686e0a9ae78e833c3590d7801a66

See more details on using hashes here.

Supported by

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