Source code for pkglts.option.readthedocs.option

import logging
from pathlib import Path

from pkglts.option.doc.badge import Badge
from pkglts.option_object import Option
from pkglts.version import __version__

LOGGER = logging.getLogger(__name__)


[docs] class OptionReadthedocs(Option):
[docs] def version(self): return __version__
[docs] def root_dir(self): return Path(__file__).parent
[docs] def update_parameters(self, cfg): LOGGER.info("update parameters %s", self._name) if 'gitlab' in cfg: prj_name = "{{ gitlab.project }}" elif 'github' in cfg: prj_name = "{{ github.project }}" else: raise NotImplementedError("not supposed to happen") sec = dict( project=prj_name ) cfg[self._name] = sec
[docs] def check(self, cfg): invalids = [] project = cfg[self._name]['project'] if not project: invalids.append("readthedocs.project") return invalids
[docs] def require_option(self, cfg): reqs = ['pyproject', 'sphinx'] if 'gitlab' in cfg: reqs.append('gitlab') elif 'github' in cfg: reqs.append('github') else: raise UserWarning("need either github or gitlab and don't want to decide for you") return reqs
[docs] def environment_extensions(self, cfg): project = cfg['readthedocs']['project'] project = project.replace(".", "") url = f"{project}.readthedocs.io/en/latest/?badge=latest" img = f"readthedocs.org/projects/{project}/badge/?version=latest" badge = Badge( name="readthedocs", url=url, url_img=img, text="Documentation status" ) return {"badge": badge}