Source code for sphinx_readme.utils.sphinx

from typing import Any, Optional
from sphinx.application import Sphinx
from sphinx.util.logging import getLogger


logger = getLogger(__name__)


[docs]class ExternalRef: """Data structure to parse external cross-reference data from intersphinx"""
[docs] def __init__(self, objtype: str, pkg: str, version: str, target: str, label: str, ref_id: str): self.objtype = objtype self.pkg = pkg self.id = ref_id self.label = label self.target = target self.version = version
@property def id(self): return self._id @id.setter def id(self, ref_id): if not self.objtype.startswith("py"): # Include pkg to differentiate between local/external xrefs ref_id = f"{self.pkg.lower()}+{ref_id}" self._id = ref_id @property def label(self): return self._label @label.setter def label(self, label): if label == '-': label = self.id.split("+")[-1] self._label = label
[docs]def set_conf_val(app: Sphinx, attr: str, value: Any) -> None: """Set the value of a ``conf.py`` config variable :param attr: the config variable to set :param value: the variable value """ app.config._raw_config[attr] = value setattr(app.config, attr, value)
[docs]def get_conf_val(app: Sphinx, attr: str, default: Optional[Any] = None) -> Any: """Retrieve the value of a ``conf.py`` config variable :param attr: the config variable to retrieve :param default: the default value to return if the variable isn't found """ return app.config._raw_config.get(attr, getattr(app.config, attr, default))