🔧 Centralise sphinx env
data access (and add schemas)
#987
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The sphinx-needs data stored on the Sphinx
BuildEnvironment
is currently difficult to interpret and work with,since the dynamic nature of
BuildEnvironment
provides no type safety or static introspection.This PR intends to centralise access to sphinx-needs data, via
sphinx_needs.data.SphinxNeedsData
, which is a thin wrapper around the sphinxBuildEnvironment
, to define and provide type safe access to the sphinx-need specific data.TypedDict are used to type annotate the dictionary keys for the different data types,
and thus
sphinx_needs.data
essentially provides a schema for the data that sphinx-needs stores.This is a non-breaking change, since all data can still be accessed via the sphinx
BuildEnvironment
, (although this is now discouraged).Note, this is intended as a step toward making the package type checked, since at present, although mypy is used, almost every module is set to be ignored (see
pyproject.toml
)