Read the Docs build information Build id: 32455132 Project: ska-telescope-ska-octopus-build-widgets Version: stable Commit: ea255f7b4d1874430b65622a0c38ba3d4593ca3f Date: 2026-04-28T16:23:09.025896Z State: finished Success: True [rtd-command-info] start-time: 2026-04-28T16:23:09.577716Z, end-time: 2026-04-28T16:23:10.243667Z, duration: 0, exit-code: 0 git clone --depth 1 https://gitlab.com/ska-telescope/ska-octopus/ska-octopus-build-widgets.git . Cloning into '.'... [rtd-command-info] start-time: 2026-04-28T16:23:10.288353Z, end-time: 2026-04-28T16:23:11.016698Z, duration: 0, exit-code: 0 git fetch origin --force --prune --prune-tags --depth 50 ea255f7b4d1874430b65622a0c38ba3d4593ca3f From https://gitlab.com/ska-telescope/ska-octopus/ska-octopus-build-widgets * branch ea255f7b4d1874430b65622a0c38ba3d4593ca3f -> FETCH_HEAD [rtd-command-info] start-time: 2026-04-28T16:23:11.129563Z, end-time: 2026-04-28T16:23:11.185942Z, duration: 0, exit-code: 0 git checkout --force ea255f7b4d1874430b65622a0c38ba3d4593ca3f Note: switching to 'ea255f7b4d1874430b65622a0c38ba3d4593ca3f'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at ea255f7 OCT-24, fix lint and build [rtd-command-info] start-time: 2026-04-28T16:23:11.227307Z, end-time: 2026-04-28T16:23:11.275256Z, duration: 0, exit-code: 0 cat .readthedocs.yml version: 2 build: os: ubuntu-22.04 tools: python: '3.12' jobs: pre_build: # Install test deps and generate coverage.xml for docs widget - python -m pip install --upgrade pip - pip install . pytest pytest-cov - pytest -q --disable-warnings --maxfail=1 --cov=. --cov-report=xml:coverage.xml sphinx: configuration: docs/src/conf.py python: install: - requirements: docs/requirements.txt [rtd-command-info] start-time: 2026-04-28T16:23:16.709601Z, end-time: 2026-04-28T16:23:16.776447Z, duration: 0, exit-code: 0 asdf global python 3.12.10 [rtd-command-info] start-time: 2026-04-28T16:23:17.209858Z, end-time: 2026-04-28T16:23:18.452006Z, duration: 1, exit-code: 0 python -mvirtualenv $READTHEDOCS_VIRTUALENV_PATH created virtual environment CPython3.12.10.final.0-64 in 860ms creator CPython3Posix(dest=/home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/docs/.local/share/virtualenv) added seed packages: pip==23.1, setuptools==67.6.1, wheel==0.40.0 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator [rtd-command-info] start-time: 2026-04-28T16:23:18.488798Z, end-time: 2026-04-28T16:23:30.572452Z, duration: 12, exit-code: 0 python -m pip install --upgrade --no-cache-dir pip setuptools Requirement already satisfied: pip in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (23.1) Collecting pip Downloading pip-26.1-py3-none-any.whl (1.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 10.4 MB/s eta 0:00:00 Requirement already satisfied: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (67.6.1) Collecting setuptools Downloading setuptools-82.0.1-py3-none-any.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 21.3 MB/s eta 0:00:00 Installing collected packages: setuptools, pip Attempting uninstall: setuptools Found existing installation: setuptools 67.6.1 Uninstalling setuptools-67.6.1: Successfully uninstalled setuptools-67.6.1 Attempting uninstall: pip Found existing installation: pip 23.1 Uninstalling pip-23.1: Successfully uninstalled pip-23.1 Successfully installed pip-26.1 setuptools-82.0.1 [rtd-command-info] start-time: 2026-04-28T16:23:30.618405Z, end-time: 2026-04-28T16:23:36.073637Z, duration: 5, exit-code: 0 python -m pip install --upgrade --no-cache-dir sphinx Collecting sphinx Downloading sphinx-9.1.0-py3-none-any.whl.metadata (5.8 kB) Collecting sphinxcontrib-applehelp>=1.0.7 (from sphinx) Downloading sphinxcontrib_applehelp-2.0.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-devhelp>=1.0.6 (from sphinx) Downloading sphinxcontrib_devhelp-2.0.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-htmlhelp>=2.0.6 (from sphinx) Downloading sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-jsmath>=1.0.1 (from sphinx) Downloading sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl.metadata (1.4 kB) Collecting sphinxcontrib-qthelp>=1.0.6 (from sphinx) Downloading sphinxcontrib_qthelp-2.0.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-serializinghtml>=1.1.9 (from sphinx) Downloading sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl.metadata (2.4 kB) Collecting Jinja2>=3.1 (from sphinx) Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB) Collecting Pygments>=2.17 (from sphinx) Downloading pygments-2.20.0-py3-none-any.whl.metadata (2.5 kB) Collecting docutils<0.23,>=0.21 (from sphinx) Downloading docutils-0.22.4-py3-none-any.whl.metadata (15 kB) Collecting snowballstemmer>=2.2 (from sphinx) Downloading snowballstemmer-3.0.1-py3-none-any.whl.metadata (7.9 kB) Collecting babel>=2.13 (from sphinx) Downloading babel-2.18.0-py3-none-any.whl.metadata (2.2 kB) Collecting alabaster>=0.7.14 (from sphinx) Downloading alabaster-1.0.0-py3-none-any.whl.metadata (2.8 kB) Collecting imagesize>=1.3 (from sphinx) Downloading imagesize-2.0.0-py2.py3-none-any.whl.metadata (1.5 kB) Collecting requests>=2.30.0 (from sphinx) Downloading requests-2.33.1-py3-none-any.whl.metadata (4.8 kB) Collecting roman-numerals>=1.0.0 (from sphinx) Downloading roman_numerals-4.1.0-py3-none-any.whl.metadata (3.3 kB) Collecting packaging>=23.0 (from sphinx) Downloading packaging-26.2-py3-none-any.whl.metadata (3.5 kB) Collecting MarkupSafe>=2.0 (from Jinja2>=3.1->sphinx) Downloading markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB) Collecting charset_normalizer<4,>=2 (from requests>=2.30.0->sphinx) Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (40 kB) Collecting idna<4,>=2.5 (from requests>=2.30.0->sphinx) Downloading idna-3.13-py3-none-any.whl.metadata (8.0 kB) Collecting urllib3<3,>=1.26 (from requests>=2.30.0->sphinx) Downloading urllib3-2.6.3-py3-none-any.whl.metadata (6.9 kB) Collecting certifi>=2023.5.7 (from requests>=2.30.0->sphinx) Downloading certifi-2026.4.22-py3-none-any.whl.metadata (2.5 kB) Downloading sphinx-9.1.0-py3-none-any.whl (3.9 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 55.8 MB/s 0:00:00 Downloading docutils-0.22.4-py3-none-any.whl (633 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 633.2/633.2 kB 700.1 MB/s 0:00:00 Downloading alabaster-1.0.0-py3-none-any.whl (13 kB) Downloading babel-2.18.0-py3-none-any.whl (10.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 217.0 MB/s 0:00:00 Downloading imagesize-2.0.0-py2.py3-none-any.whl (9.4 kB) Downloading jinja2-3.1.6-py3-none-any.whl (134 kB) Downloading markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB) Downloading packaging-26.2-py3-none-any.whl (100 kB) Downloading pygments-2.20.0-py3-none-any.whl (1.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 749.6 MB/s 0:00:00 Downloading requests-2.33.1-py3-none-any.whl (64 kB) Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (216 kB) Downloading idna-3.13-py3-none-any.whl (68 kB) Downloading urllib3-2.6.3-py3-none-any.whl (131 kB) Downloading certifi-2026.4.22-py3-none-any.whl (135 kB) Downloading roman_numerals-4.1.0-py3-none-any.whl (7.7 kB) Downloading snowballstemmer-3.0.1-py3-none-any.whl (103 kB) Downloading sphinxcontrib_applehelp-2.0.0-py3-none-any.whl (119 kB) Downloading sphinxcontrib_devhelp-2.0.0-py3-none-any.whl (82 kB) Downloading sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl (98 kB) Downloading sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl (5.1 kB) Downloading sphinxcontrib_qthelp-2.0.0-py3-none-any.whl (88 kB) Downloading sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl (92 kB) Installing collected packages: urllib3, sphinxcontrib-serializinghtml, sphinxcontrib-qthelp, sphinxcontrib-jsmath, sphinxcontrib-htmlhelp, sphinxcontrib-devhelp, sphinxcontrib-applehelp, snowballstemmer, roman-numerals, Pygments, packaging, MarkupSafe, imagesize, idna, docutils, charset_normalizer, certifi, babel, alabaster, requests, Jinja2, sphinx Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 Pygments-2.20.0 alabaster-1.0.0 babel-2.18.0 certifi-2026.4.22 charset_normalizer-3.4.7 docutils-0.22.4 idna-3.13 imagesize-2.0.0 packaging-26.2 requests-2.33.1 roman-numerals-4.1.0 snowballstemmer-3.0.1 sphinx-9.1.0 sphinxcontrib-applehelp-2.0.0 sphinxcontrib-devhelp-2.0.0 sphinxcontrib-htmlhelp-2.1.0 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-2.0.0 sphinxcontrib-serializinghtml-2.0.0 urllib3-2.6.3 [rtd-command-info] start-time: 2026-04-28T16:23:36.120236Z, end-time: 2026-04-28T16:23:41.995964Z, duration: 5, exit-code: 0 python -m pip install --exists-action=w --no-cache-dir -r docs/requirements.txt Looking in indexes: https://pypi.org/simple, https://artefact.skao.int/repository/pypi-internal/simple Collecting sphinx==7.4.7 (from -r docs/requirements.txt (line 5)) Downloading sphinx-7.4.7-py3-none-any.whl.metadata (6.1 kB) Collecting myst-parser==4.0.0 (from -r docs/requirements.txt (line 6)) Downloading myst_parser-4.0.0-py3-none-any.whl.metadata (5.4 kB) Collecting ska-ser-sphinx-theme==0.2.0 (from -r docs/requirements.txt (line 7)) Downloading ska_ser_sphinx_theme-0.2.0-py3-none-any.whl (11 kB) Requirement already satisfied: docutils>=0.18 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from -r docs/requirements.txt (line 8)) (0.22.4) Requirement already satisfied: Pygments>=2.15 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from -r docs/requirements.txt (line 9)) (2.20.0) Collecting linkify-it-py>=2.0.0 (from -r docs/requirements.txt (line 10)) Downloading linkify_it_py-2.1.0-py3-none-any.whl.metadata (8.5 kB) Collecting httpx>=0.27 (from -r docs/requirements.txt (line 11)) Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB) Requirement already satisfied: sphinxcontrib-applehelp in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.0.0) Requirement already satisfied: sphinxcontrib-devhelp in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.0.0) Requirement already satisfied: sphinxcontrib-jsmath in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (1.0.1) Requirement already satisfied: sphinxcontrib-htmlhelp>=2.0.0 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.1.0) Requirement already satisfied: sphinxcontrib-serializinghtml>=1.1.9 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.0.0) Requirement already satisfied: sphinxcontrib-qthelp in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.0.0) Requirement already satisfied: Jinja2>=3.1 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (3.1.6) Collecting docutils>=0.18 (from -r docs/requirements.txt (line 8)) Downloading docutils-0.21.2-py3-none-any.whl.metadata (2.8 kB) Requirement already satisfied: snowballstemmer>=2.2 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (3.0.1) Requirement already satisfied: babel>=2.13 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.18.0) Collecting alabaster~=0.7.14 (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) Downloading alabaster-0.7.16-py3-none-any.whl.metadata (2.9 kB) Requirement already satisfied: imagesize>=1.3 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.0.0) Requirement already satisfied: requests>=2.30.0 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.33.1) Requirement already satisfied: packaging>=23.0 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from sphinx==7.4.7->-r docs/requirements.txt (line 5)) (26.2) Collecting markdown-it-py~=3.0 (from myst-parser==4.0.0->-r docs/requirements.txt (line 6)) Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB) Collecting mdit-py-plugins>=0.4.1,~=0.4 (from myst-parser==4.0.0->-r docs/requirements.txt (line 6)) Downloading mdit_py_plugins-0.5.0-py3-none-any.whl.metadata (2.8 kB) Collecting pyyaml (from myst-parser==4.0.0->-r docs/requirements.txt (line 6)) Downloading pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.4 kB) Collecting sphinx-rtd-theme<3.0.0,>=2.0.0 (from ska-ser-sphinx-theme==0.2.0->-r docs/requirements.txt (line 7)) Downloading sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl.metadata (4.4 kB) Collecting mdurl~=0.1 (from markdown-it-py~=3.0->myst-parser==4.0.0->-r docs/requirements.txt (line 6)) Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB) Collecting docutils>=0.18 (from -r docs/requirements.txt (line 8)) Downloading docutils-0.20.1-py3-none-any.whl.metadata (2.8 kB) Collecting sphinxcontrib-jquery<5,>=4 (from sphinx-rtd-theme<3.0.0,>=2.0.0->ska-ser-sphinx-theme==0.2.0->-r docs/requirements.txt (line 7)) Downloading sphinxcontrib_jquery-4.1-py2.py3-none-any.whl.metadata (2.6 kB) Collecting uc-micro-py (from linkify-it-py>=2.0.0->-r docs/requirements.txt (line 10)) Downloading uc_micro_py-2.0.0-py3-none-any.whl.metadata (2.2 kB) Collecting anyio (from httpx>=0.27->-r docs/requirements.txt (line 11)) Downloading anyio-4.13.0-py3-none-any.whl.metadata (4.5 kB) Requirement already satisfied: certifi in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from httpx>=0.27->-r docs/requirements.txt (line 11)) (2026.4.22) Collecting httpcore==1.* (from httpx>=0.27->-r docs/requirements.txt (line 11)) Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB) Requirement already satisfied: idna in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from httpx>=0.27->-r docs/requirements.txt (line 11)) (3.13) Collecting h11>=0.16 (from httpcore==1.*->httpx>=0.27->-r docs/requirements.txt (line 11)) Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB) Requirement already satisfied: MarkupSafe>=2.0 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from Jinja2>=3.1->sphinx==7.4.7->-r docs/requirements.txt (line 5)) (3.0.3) Requirement already satisfied: charset_normalizer<4,>=2 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from requests>=2.30.0->sphinx==7.4.7->-r docs/requirements.txt (line 5)) (3.4.7) Requirement already satisfied: urllib3<3,>=1.26 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from requests>=2.30.0->sphinx==7.4.7->-r docs/requirements.txt (line 5)) (2.6.3) Collecting typing_extensions>=4.5 (from anyio->httpx>=0.27->-r docs/requirements.txt (line 11)) Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB) Downloading sphinx-7.4.7-py3-none-any.whl (3.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 42.4 MB/s 0:00:00 Downloading myst_parser-4.0.0-py3-none-any.whl (84 kB) Downloading alabaster-0.7.16-py3-none-any.whl (13 kB) Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB) Downloading mdit_py_plugins-0.5.0-py3-none-any.whl (57 kB) Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB) Downloading sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl (2.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 146.3 MB/s 0:00:00 Downloading docutils-0.20.1-py3-none-any.whl (572 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 572.7/572.7 kB 742.6 MB/s 0:00:00 Downloading sphinxcontrib_jquery-4.1-py2.py3-none-any.whl (121 kB) Downloading linkify_it_py-2.1.0-py3-none-any.whl (19 kB) Downloading httpx-0.28.1-py3-none-any.whl (73 kB) Downloading httpcore-1.0.9-py3-none-any.whl (78 kB) Downloading h11-0.16.0-py3-none-any.whl (37 kB) Downloading anyio-4.13.0-py3-none-any.whl (114 kB) Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB) Downloading pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (807 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 807.9/807.9 kB 763.5 MB/s 0:00:00 Downloading uc_micro_py-2.0.0-py3-none-any.whl (6.4 kB) Installing collected packages: uc-micro-py, typing_extensions, pyyaml, mdurl, h11, docutils, alabaster, sphinx, markdown-it-py, linkify-it-py, httpcore, anyio, sphinxcontrib-jquery, mdit-py-plugins, httpx, sphinx-rtd-theme, myst-parser, ska-ser-sphinx-theme Attempting uninstall: docutils Found existing installation: docutils 0.22.4 Uninstalling docutils-0.22.4: Successfully uninstalled docutils-0.22.4 Attempting uninstall: alabaster Found existing installation: alabaster 1.0.0 Uninstalling alabaster-1.0.0: Successfully uninstalled alabaster-1.0.0 Attempting uninstall: sphinx Found existing installation: Sphinx 9.1.0 Uninstalling Sphinx-9.1.0: Successfully uninstalled Sphinx-9.1.0 Successfully installed alabaster-0.7.16 anyio-4.13.0 docutils-0.20.1 h11-0.16.0 httpcore-1.0.9 httpx-0.28.1 linkify-it-py-2.1.0 markdown-it-py-3.0.0 mdit-py-plugins-0.5.0 mdurl-0.1.2 myst-parser-4.0.0 pyyaml-6.0.3 ska-ser-sphinx-theme-0.2.0 sphinx-7.4.7 sphinx-rtd-theme-2.0.0 sphinxcontrib-jquery-4.1 typing_extensions-4.15.0 uc-micro-py-2.0.0 [rtd-command-info] start-time: 2026-04-28T16:23:42.085728Z, end-time: 2026-04-28T16:23:42.717804Z, duration: 0, exit-code: 0 python -m pip install --upgrade pip Requirement already satisfied: pip in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (26.1) [rtd-command-info] start-time: 2026-04-28T16:23:42.755343Z, end-time: 2026-04-28T16:23:49.853870Z, duration: 7, exit-code: 0 pip install . pytest pytest-cov Processing ./. Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'done' Collecting pytest Downloading pytest-9.0.3-py3-none-any.whl.metadata (7.6 kB) Collecting pytest-cov Downloading pytest_cov-7.1.0-py3-none-any.whl.metadata (32 kB) Collecting aiofiles==23.2.1 (from ska-octopus-build-widgets==0.3.4) Downloading aiofiles-23.2.1-py3-none-any.whl.metadata (9.7 kB) Collecting fastapi==0.115.5 (from ska-octopus-build-widgets==0.3.4) Downloading fastapi-0.115.5-py3-none-any.whl.metadata (27 kB) Collecting jinja2==3.1.4 (from ska-octopus-build-widgets==0.3.4) Downloading jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB) Collecting python-multipart==0.0.17 (from ska-octopus-build-widgets==0.3.4) Downloading python_multipart-0.0.17-py3-none-any.whl.metadata (1.8 kB) Collecting uvicorn==0.32.1 (from uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) Downloading uvicorn-0.32.1-py3-none-any.whl.metadata (6.6 kB) Collecting starlette<0.42.0,>=0.40.0 (from fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) Downloading starlette-0.41.3-py3-none-any.whl.metadata (6.0 kB) Collecting pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 (from fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) Downloading pydantic-2.13.3-py3-none-any.whl.metadata (108 kB) Requirement already satisfied: typing-extensions>=4.8.0 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) (4.15.0) Requirement already satisfied: MarkupSafe>=2.0 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from jinja2==3.1.4->ska-octopus-build-widgets==0.3.4) (3.0.3) Collecting click>=7.0 (from uvicorn==0.32.1->uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) Downloading click-8.3.3-py3-none-any.whl.metadata (2.6 kB) Requirement already satisfied: h11>=0.8 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from uvicorn==0.32.1->uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) (0.16.0) Collecting httptools>=0.6.3 (from uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) Downloading httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (3.5 kB) Collecting python-dotenv>=0.13 (from uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) Downloading python_dotenv-1.2.2-py3-none-any.whl.metadata (27 kB) Requirement already satisfied: pyyaml>=5.1 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) (6.0.3) Collecting uvloop!=0.15.0,!=0.15.1,>=0.14.0 (from uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) Downloading uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (4.9 kB) Collecting watchfiles>=0.13 (from uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) Downloading watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB) Collecting websockets>=10.4 (from uvicorn[standard]==0.32.1->ska-octopus-build-widgets==0.3.4) Downloading websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.8 kB) Collecting annotated-types>=0.6.0 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) Downloading annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB) Collecting pydantic-core==2.46.3 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) Downloading pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.6 kB) Collecting typing-inspection>=0.4.2 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) Downloading typing_inspection-0.4.2-py3-none-any.whl.metadata (2.6 kB) Requirement already satisfied: anyio<5,>=3.4.0 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from starlette<0.42.0,>=0.40.0->fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) (4.13.0) Requirement already satisfied: idna>=2.8 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from anyio<5,>=3.4.0->starlette<0.42.0,>=0.40.0->fastapi==0.115.5->ska-octopus-build-widgets==0.3.4) (3.13) Collecting iniconfig>=1.0.1 (from pytest) Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB) Requirement already satisfied: packaging>=22 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from pytest) (26.2) Collecting pluggy<2,>=1.5 (from pytest) Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB) Requirement already satisfied: pygments>=2.7.2 in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/envs/stable/lib/python3.12/site-packages (from pytest) (2.20.0) Collecting coverage>=7.10.6 (from coverage[toml]>=7.10.6->pytest-cov) Downloading coverage-7.13.5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (8.5 kB) Downloading aiofiles-23.2.1-py3-none-any.whl (15 kB) Downloading fastapi-0.115.5-py3-none-any.whl (94 kB) Downloading jinja2-3.1.4-py3-none-any.whl (133 kB) Downloading python_multipart-0.0.17-py3-none-any.whl (24 kB) Downloading uvicorn-0.32.1-py3-none-any.whl (63 kB) Downloading pydantic-2.13.3-py3-none-any.whl (471 kB) Downloading pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 43.8 MB/s 0:00:00 Downloading starlette-0.41.3-py3-none-any.whl (73 kB) Downloading pytest-9.0.3-py3-none-any.whl (375 kB) Downloading pluggy-1.6.0-py3-none-any.whl (20 kB) Downloading pytest_cov-7.1.0-py3-none-any.whl (22 kB) Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB) Downloading click-8.3.3-py3-none-any.whl (110 kB) Downloading coverage-7.13.5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (254 kB) Downloading httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (517 kB) Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB) Downloading python_dotenv-1.2.2-py3-none-any.whl (22 kB) Downloading typing_inspection-0.4.2-py3-none-any.whl (14 kB) Downloading uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.4/4.4 MB 122.7 MB/s 0:00:00 Downloading watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (456 kB) Downloading websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (184 kB) Building wheels for collected packages: ska-octopus-build-widgets Building wheel for ska-octopus-build-widgets (pyproject.toml): started Building wheel for ska-octopus-build-widgets (pyproject.toml): finished with status 'done' Created wheel for ska-octopus-build-widgets: filename=ska_octopus_build_widgets-0.3.4-py3-none-any.whl size=48771 sha256=46cd371466220f76032e048fc6b928d638bc4023ffe532d360439dcf5d3180be Stored in directory: /tmp/pip-ephem-wheel-cache-oopl0llo/wheels/9c/ea/d9/111759e7154514889119fad87829ce4e7762a86d5c4ec8edd4 Successfully built ska-octopus-build-widgets Installing collected packages: websockets, uvloop, typing-inspection, python-multipart, python-dotenv, pydantic-core, pluggy, jinja2, iniconfig, httptools, coverage, click, annotated-types, aiofiles, watchfiles, uvicorn, starlette, pytest, pydantic, pytest-cov, fastapi, ska-octopus-build-widgets Attempting uninstall: jinja2 Found existing installation: Jinja2 3.1.6 Uninstalling Jinja2-3.1.6: Successfully uninstalled Jinja2-3.1.6 Successfully installed aiofiles-23.2.1 annotated-types-0.7.0 click-8.3.3 coverage-7.13.5 fastapi-0.115.5 httptools-0.7.1 iniconfig-2.3.0 jinja2-3.1.4 pluggy-1.6.0 pydantic-2.13.3 pydantic-core-2.46.3 pytest-9.0.3 pytest-cov-7.1.0 python-dotenv-1.2.2 python-multipart-0.0.17 ska-octopus-build-widgets-0.3.4 starlette-0.41.3 typing-inspection-0.4.2 uvicorn-0.32.1 uvloop-0.22.1 watchfiles-1.1.1 websockets-16.0 [rtd-command-info] start-time: 2026-04-28T16:23:49.906878Z, end-time: 2026-04-28T16:23:52.955928Z, duration: 3, exit-code: 0 pytest -q --disable-warnings --maxfail=1 --cov=. --cov-report=xml:coverage.xml ....................... [100%] ================================ tests coverage ================================ _______________ coverage: platform linux, python 3.12.10-final-0 _______________ Coverage XML written to file coverage.xml 23 passed, 1 warning in 2.05s [rtd-command-info] start-time: 2026-04-28T16:23:53.034414Z, end-time: 2026-04-28T16:23:53.080404Z, duration: 0, exit-code: 0 cat docs/src/conf.py import os import sys from datetime import datetime from pathlib import Path # Ensure project root is importable for autodoc sys.path.insert( 0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) ) # -- Project information ----------------------------------------------------- project = "ska-octopus-build-widgets" author = "Hélder Ribeiro — helder.ribeiro@atlar.pt (SKAO)" # Footer copyright: 2018-current year, SKA Observatory copyright = f"2018-{datetime.now().year} SKA Observatory" # Try to read version from .release in repo root def _read_release(): try: here = os.path.abspath( os.path.join(os.path.dirname(__file__), "..", "..") ) with open(os.path.join(here, ".release"), encoding="utf-8") as f: for line in f: if line.startswith("release="): return line.split("=", 1)[1].strip() return "0.0.0" except Exception: return "0.0.0" version = _read_release() release = version # -- General configuration --------------------------------------------------- extensions = [ "myst_parser", "sphinx.ext.autodoc", "sphinx.ext.autosummary", "sphinx.ext.napoleon", "sphinx.ext.viewcode", "sphinx.ext.autosectionlabel", "sphinx.ext.githubpages", "sphinx.ext.intersphinx", ] autosummary_generate = True autodoc_typehints = "description" autodoc_member_order = "bysource" # Mock heavy/optional imports to avoid build-time import errors autodoc_mock_imports = [ "flask", ] # Let Sphinx parse both RST and Markdown (MyST) source_suffix = { ".rst": "restructuredtext", ".md": "markdown", } # MyST configuration (subset kept aligned across both apps) myst_enable_extensions = [ "colon_fence", "deflist", "substitution", "linkify", "attrs_block", "attrs_inline", "tasklist", "fieldlist", "replacements", ] # Substitutions usable in Markdown via {{ key }} and in RST via |key| myst_substitutions = { "project": project, "version": version, "release": release, "author": author, } # Also expose substitutions for RST rst_epilog = f""" .. |project| replace:: {project} .. |version| replace:: {version} .. |release| replace:: {release} .. |author| replace:: {author} """ templates_path = ["_templates"] exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # -- Options for HTML output ------------------------------------------------- # Per SKAO guidance, use the SKA theme html_theme = "ska_ser_sphinx_theme" # Try to show the version in the sidebar when supported by the RTD theme. # Newer RTD builds may move it into the Addons menu on hosted sites. html_theme_options = { "display_version": True, } html_static_path = ["_static"] html_title = project html_short_title = project html_show_sourcelink = True # GitLab context (optional, used by theme to render "Edit on GitLab" links) html_context = { "display_gitlab": True, "gitlab_user": "ska-telescope", "gitlab_repo": "ska-octopus-build-widgets", "gitlab_version": "main", "conf_py_path": "/docs/", } # Cross-links to Python docs intersphinx_mapping = { "python": ("https://docs.python.org/3", {}), } # ───────────────────────────────────────────────────────────────────────────── # Coverage widget (circular progress) generated during docs build # Mirrors the frontend approach but reads Python coverage.xml (coverage.py) # ───────────────────────────────────────────────────────────────────────────── def _compute_coverage_from_xml() -> dict: cov = {"lines": "N/A", "branches": "N/A"} try: root = Path(__file__).resolve().parents[2] xml = root / "coverage.xml" if not xml.exists(): return cov # Very light-weight parse: read first line with # and extract line-rate / branch-rate attributes. import re head = "\n".join( xml.read_text(encoding="utf-8", errors="ignore").splitlines()[:5] ) m_line = re.search(r"line-rate=\"([0-9]*\.?[0-9]+)\"", head) m_branch = re.search(r"branch-rate=\"([0-9]*\.?[0-9]+)\"", head) def pct(s: str | None) -> str: if not s: return "N/A" try: return f"{float(s) * 100:.2f}%" except Exception: return "N/A" cov["lines"] = pct(m_line.group(1) if m_line else None) cov["branches"] = pct(m_branch.group(1) if m_branch else None) except Exception: pass return cov _cov = _compute_coverage_from_xml() try: _gen_dir = Path(__file__).with_name("_generated") _gen_dir.mkdir(parents=True, exist_ok=True) # Build a compact circular widget based on overall line coverage def _pct_number(s: str) -> float: try: return float(str(s).rstrip("%")) except Exception: return 0.0 _pct = _pct_number(_cov.get("lines", "0%")) _color = "#2e7d32" if _pct >= 75.0 else "#e53935" html = """
Overall Test Coverage
Computed from coverage.xml during this build
""" (_gen_dir / "coverage-widget.html").write_text( html.replace("PCT", f"{_pct:.2f}").replace("COLOR", _color), encoding="utf-8", ) except Exception: # Non-fatal if we cannot write the widget pass [rtd-command-info] start-time: 2026-04-28T16:23:53.129485Z, end-time: 2026-04-28T16:23:55.911796Z, duration: 2, exit-code: 0 python -m sphinx -T -b html -d _build/doctrees -D language=en . $READTHEDOCS_OUTPUT/html Running Sphinx v7.4.7 loading translations [en]... done making output directory... done myst v4.0.0: MdParserConfig(commonmark_only=False, gfm_only=False, enable_extensions={'linkify', 'colon_fence', 'substitution', 'deflist', 'attrs_block', 'tasklist', 'attrs_inline', 'fieldlist', 'replacements'}, disable_syntax=[], all_links_external=False, links_external_new_tab=False, url_schemes=('http', 'https', 'mailto', 'ftp'), ref_domains=None, fence_as_directive=set(), number_code_blocks=[], title_to_header=False, heading_anchors=0, heading_slug_func=None, html_meta={}, footnote_sort=True, footnote_transition=True, words_per_minute=200, substitutions={project: ..., version: ..., release: ..., author: ...}, linkify_fuzzy_links=True, dmath_allow_labels=True, dmath_allow_space=True, dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True, mathjax_classes='tex2jax_process|mathjax_process|math|output_area', enable_checkboxes=False, suppress_warnings=[], highlight_code_blocks=True) [autosummary] generating autosummary for: architecture.md, changelog.md, coverage.md, getting-started.md, index.md, reference.md, test-auto-build-widget-step.md loading intersphinx inventory 'python' from https://docs.python.org/3/objects.inv... building [mo]: targets for 0 po files that are out of date writing output... building [html]: targets for 7 source files that are out of date updating environment: [new config] 7 added, 0 changed, 0 removed reading sources... [ 14%] architecture reading sources... [ 29%] changelog reading sources... [ 43%] coverage reading sources... [ 57%] getting-started reading sources... [ 71%] index reading sources... [ 86%] reference reading sources... [100%] test-auto-build-widget-step /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/checkouts/stable/docs/src/reference.md:14: WARNING: duplicate label entry points, other instance in /home/docs/checkouts/readthedocs.org/user_builds/ska-telescope-ska-octopus-build-widgets/checkouts/stable/docs/src/architecture.md looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... done copying extra files... done copying assets: done writing output... [ 14%] architecture writing output... [ 29%] changelog writing output... [ 43%] coverage writing output... [ 57%] getting-started writing output... [ 71%] index writing output... [ 86%] reference writing output... [100%] test-auto-build-widget-step generating indices... genindex py-modindex done highlighting module code... [ 20%] app highlighting module code... [ 40%] octopus_widget_scaffolder highlighting module code... [ 60%] scaffolder.generator highlighting module code... [ 80%] scaffolder.utils highlighting module code... [100%] scaffolder.widget_generator writing additional pages... search done copying images... [ 50%] _static/build-widget-progress.png copying images... [100%] _static/build-widget-main-page.png dumping search index in English (code: en)... done dumping object inventory... done build succeeded, 1 warning. The HTML pages are in ../../_readthedocs/html.