Read the Docs build information Build id: 3745521 Project: canonical-lxd Version: v4 Commit: 87e41bd86cd9e3004bdac45567da2a74811f789f Date: 2026-02-12T13:25:52.690185Z State: finished Success: False [rtd-command-info] start-time: 2026-02-12T13:25:53.501406Z, end-time: 2026-02-12T13:25:55.224408Z, duration: 1, exit-code: 0 git clone --depth 1 https://github.com/canonical/lxd . Cloning into '.'... [rtd-command-info] start-time: 2026-02-12T13:25:55.313652Z, end-time: 2026-02-12T13:25:57.737975Z, duration: 2, exit-code: 0 git fetch origin --force --prune --prune-tags --depth 50 refs/heads/stable-4.0:refs/remotes/origin/stable-4.0 From https://github.com/canonical/lxd * [new branch] stable-4.0 -> origin/stable-4.0 * [new tag] lxd-4.0.10 -> lxd-4.0.10 * [new tag] lxd-4.0.9 -> lxd-4.0.9 [rtd-command-info] start-time: 2026-02-12T13:25:58.471088Z, end-time: 2026-02-12T13:25:58.640893Z, duration: 0, exit-code: 0 git checkout --force origin/stable-4.0 Note: switching to 'origin/stable-4.0'. 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 87e41bd Backports (stable-4.0) (#17631) [rtd-command-info] start-time: 2026-02-12T13:25:58.726426Z, end-time: 2026-02-12T13:25:58.764241Z, duration: 0, exit-code: 0 cat doc/.readthedocs.yaml # .readthedocs.yaml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the version of Python and other tools you might need build: os: ubuntu-22.04 tools: python: "3.11" # Build documentation in the docs/ directory with Sphinx sphinx: builder: dirhtml configuration: doc/conf.py fail_on_warning: true # If using Sphinx, optionally build your docs in additional formats such as PDF formats: - pdf # Optionally declare the Python requirements required to build your docs python: install: - requirements: doc/.sphinx/requirements.txt [rtd-command-info] start-time: 2026-02-12T13:26:03.721329Z, end-time: 2026-02-12T13:26:03.775361Z, duration: 0, exit-code: 0 asdf global python 3.11.12 [rtd-command-info] start-time: 2026-02-12T13:26:04.159639Z, end-time: 2026-02-12T13:26:04.806061Z, duration: 0, exit-code: 0 python -mvirtualenv $READTHEDOCS_VIRTUALENV_PATH created virtual environment CPython3.11.12.final.0-64 in 406ms creator CPython3Posix(dest=/home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0, 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-02-12T13:26:04.888044Z, end-time: 2026-02-12T13:26:10.938044Z, duration: 6, 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/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages (23.1) Collecting pip Downloading pip-26.0.1-py3-none-any.whl (1.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 13.5 MB/s eta 0:00:00 Requirement already satisfied: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages (67.6.1) Collecting setuptools Downloading setuptools-82.0.0-py3-none-any.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 23.1 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.0.1 setuptools-82.0.0 [rtd-command-info] start-time: 2026-02-12T13:26:11.037104Z, end-time: 2026-02-12T13:26:16.301190Z, duration: 5, exit-code: 0 python -m pip install --upgrade --no-cache-dir sphinx Collecting sphinx Downloading sphinx-9.0.4-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.19.2-py3-none-any.whl.metadata (2.5 kB) Collecting docutils<0.23,>=0.20 (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-1.4.1-py2.py3-none-any.whl.metadata (1.5 kB) Collecting requests>=2.30.0 (from sphinx) Downloading requests-2.32.5-py3-none-any.whl.metadata (4.9 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.0-py3-none-any.whl.metadata (3.3 kB) Collecting MarkupSafe>=2.0 (from Jinja2>=3.1->sphinx) Downloading markupsafe-3.0.3-cp311-cp311-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.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (37 kB) Collecting idna<4,>=2.5 (from requests>=2.30.0->sphinx) Downloading idna-3.11-py3-none-any.whl.metadata (8.4 kB) Collecting urllib3<3,>=1.21.1 (from requests>=2.30.0->sphinx) Downloading urllib3-2.6.3-py3-none-any.whl.metadata (6.9 kB) Collecting certifi>=2017.4.17 (from requests>=2.30.0->sphinx) Downloading certifi-2026.1.4-py3-none-any.whl.metadata (2.5 kB) Downloading sphinx-9.0.4-py3-none-any.whl (3.9 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 147.0 MB/s 0:00:00 Downloading docutils-0.22.4-py3-none-any.whl (633 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 633.2/633.2 kB 676.0 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 286.8 MB/s 0:00:00 Downloading imagesize-1.4.1-py2.py3-none-any.whl (8.8 kB) Downloading jinja2-3.1.6-py3-none-any.whl (134 kB) Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB) Downloading packaging-26.0-py3-none-any.whl (74 kB) Downloading pygments-2.19.2-py3-none-any.whl (1.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 678.0 MB/s 0:00:00 Downloading requests-2.32.5-py3-none-any.whl (64 kB) Downloading charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (151 kB) Downloading idna-3.11-py3-none-any.whl (71 kB) Downloading urllib3-2.6.3-py3-none-any.whl (131 kB) Downloading certifi-2026.1.4-py3-none-any.whl (152 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.19.2 alabaster-1.0.0 babel-2.18.0 certifi-2026.1.4 charset_normalizer-3.4.4 docutils-0.22.4 idna-3.11 imagesize-1.4.1 packaging-26.0 requests-2.32.5 roman-numerals-4.1.0 snowballstemmer-3.0.1 sphinx-9.0.4 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-02-12T13:26:16.402873Z, end-time: 2026-02-12T13:26:26.921436Z, duration: 10, exit-code: 0 python -m pip install --exists-action=w --no-cache-dir -r doc/.sphinx/requirements.txt Collecting alabaster==0.7.12 (from -r doc/.sphinx/requirements.txt (line 1)) Downloading alabaster-0.7.12-py2.py3-none-any.whl.metadata (2.0 kB) Collecting Babel==2.9.1 (from -r doc/.sphinx/requirements.txt (line 2)) Downloading Babel-2.9.1-py2.py3-none-any.whl.metadata (1.2 kB) Collecting certifi==2021.5.30 (from -r doc/.sphinx/requirements.txt (line 3)) Downloading certifi-2021.5.30-py2.py3-none-any.whl.metadata (3.0 kB) Collecting charset-normalizer==2.0.4 (from -r doc/.sphinx/requirements.txt (line 4)) Downloading charset_normalizer-2.0.4-py3-none-any.whl.metadata (11 kB) Collecting colorama==0.4.4 (from -r doc/.sphinx/requirements.txt (line 5)) Downloading colorama-0.4.4-py2.py3-none-any.whl.metadata (14 kB) Collecting docutils==0.16.0 (from -r doc/.sphinx/requirements.txt (line 6)) Downloading docutils-0.16-py2.py3-none-any.whl.metadata (2.7 kB) Collecting idna==3.2 (from -r doc/.sphinx/requirements.txt (line 7)) Downloading idna-3.2-py3-none-any.whl.metadata (8.6 kB) Collecting imagesize==1.2.0 (from -r doc/.sphinx/requirements.txt (line 8)) Downloading imagesize-1.2.0-py2.py3-none-any.whl.metadata (1.3 kB) Collecting Jinja2==3.0.1 (from -r doc/.sphinx/requirements.txt (line 9)) Downloading Jinja2-3.0.1-py3-none-any.whl.metadata (3.5 kB) Collecting livereload==2.6.3 (from -r doc/.sphinx/requirements.txt (line 10)) Downloading livereload-2.6.3-py2.py3-none-any.whl.metadata (7.4 kB) Collecting MarkupSafe==2.0.1 (from -r doc/.sphinx/requirements.txt (line 11)) Downloading MarkupSafe-2.0.1.tar.gz (18 kB) 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 packaging==21.0 (from -r doc/.sphinx/requirements.txt (line 12)) Downloading packaging-21.0-py3-none-any.whl.metadata (13 kB) Collecting Pygments==2.10.0 (from -r doc/.sphinx/requirements.txt (line 13)) Downloading Pygments-2.10.0-py3-none-any.whl.metadata (1.9 kB) Collecting pyparsing==2.4.7 (from -r doc/.sphinx/requirements.txt (line 14)) Downloading pyparsing-2.4.7-py2.py3-none-any.whl.metadata (3.6 kB) Collecting pytz==2021.1 (from -r doc/.sphinx/requirements.txt (line 15)) Downloading pytz-2021.1-py2.py3-none-any.whl.metadata (21 kB) Collecting requests==2.26.0 (from -r doc/.sphinx/requirements.txt (line 16)) Downloading requests-2.26.0-py2.py3-none-any.whl.metadata (4.8 kB) Collecting six==1.16.0 (from -r doc/.sphinx/requirements.txt (line 17)) Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB) Collecting snowballstemmer==2.1.0 (from -r doc/.sphinx/requirements.txt (line 18)) Downloading snowballstemmer-2.1.0-py2.py3-none-any.whl.metadata (6.1 kB) Collecting Sphinx==4.2.0 (from -r doc/.sphinx/requirements.txt (line 19)) Downloading Sphinx-4.2.0-py3-none-any.whl.metadata (7.9 kB) Collecting sphinx-autobuild==2021.3.14 (from -r doc/.sphinx/requirements.txt (line 20)) Downloading sphinx_autobuild-2021.3.14-py3-none-any.whl.metadata (7.0 kB) Collecting sphinxcontrib-applehelp==1.0.2 (from -r doc/.sphinx/requirements.txt (line 21)) Downloading sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl.metadata (1.4 kB) Collecting sphinxcontrib-devhelp==1.0.2 (from -r doc/.sphinx/requirements.txt (line 22)) Downloading sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl.metadata (1.4 kB) Collecting sphinxcontrib-htmlhelp==2.0.0 (from -r doc/.sphinx/requirements.txt (line 23)) Downloading sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl.metadata (1.6 kB) Requirement already satisfied: sphinxcontrib-jsmath==1.0.1 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages (from -r doc/.sphinx/requirements.txt (line 24)) (1.0.1) Collecting sphinxcontrib-qthelp==1.0.3 (from -r doc/.sphinx/requirements.txt (line 25)) Downloading sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl.metadata (1.4 kB) Collecting sphinxcontrib-serializinghtml==1.1.5 (from -r doc/.sphinx/requirements.txt (line 26)) Downloading sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl.metadata (1.5 kB) Collecting tornado==6.1 (from -r doc/.sphinx/requirements.txt (line 27)) Downloading tornado-6.1.tar.gz (497 kB) 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 urllib3==1.26.6 (from -r doc/.sphinx/requirements.txt (line 28)) Downloading urllib3-1.26.6-py2.py3-none-any.whl.metadata (44 kB) Collecting myst-parser (from -r doc/.sphinx/requirements.txt (line 29)) Downloading myst_parser-5.0.0-py3-none-any.whl.metadata (5.6 kB) Collecting sphinx-tabs (from -r doc/.sphinx/requirements.txt (line 30)) Downloading sphinx_tabs-3.4.7-py3-none-any.whl.metadata (6.3 kB) Collecting sphinx-reredirects (from -r doc/.sphinx/requirements.txt (line 31)) Downloading sphinx_reredirects-1.1.0-py3-none-any.whl.metadata (4.7 kB) Collecting linkify-it-py (from -r doc/.sphinx/requirements.txt (line 32)) Downloading linkify_it_py-2.0.3-py3-none-any.whl.metadata (8.5 kB) Collecting furo (from -r doc/.sphinx/requirements.txt (line 33)) Downloading furo-2025.12.19-py3-none-any.whl.metadata (4.9 kB) Collecting sphinxext-opengraph>=0.6.1 (from -r doc/.sphinx/requirements.txt (line 34)) Downloading sphinxext_opengraph-0.13.0-py3-none-any.whl.metadata (2.7 kB) Collecting gitpython (from -r doc/.sphinx/requirements.txt (line 35)) Downloading gitpython-3.1.46-py3-none-any.whl.metadata (13 kB) Collecting wget (from -r doc/.sphinx/requirements.txt (line 36)) Downloading wget-3.2.zip (10 kB) 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 sphinx-notfound-page (from -r doc/.sphinx/requirements.txt (line 37)) Downloading sphinx_notfound_page-1.1.0-py3-none-any.whl.metadata (2.9 kB) Requirement already satisfied: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages (from Sphinx==4.2.0->-r doc/.sphinx/requirements.txt (line 19)) (82.0.0) INFO: pip is looking at multiple versions of myst-parser to determine which version is compatible with other requirements. This could take a while. Collecting myst-parser (from -r doc/.sphinx/requirements.txt (line 29)) Downloading myst_parser-4.0.1-py3-none-any.whl.metadata (5.5 kB) Downloading myst_parser-4.0.0-py3-none-any.whl.metadata (5.4 kB) Downloading myst_parser-3.0.1-py3-none-any.whl.metadata (5.5 kB) Downloading myst_parser-3.0.0-py3-none-any.whl.metadata (5.5 kB) Downloading myst_parser-2.0.0-py3-none-any.whl.metadata (5.4 kB) Collecting markdown-it-py~=3.0 (from myst-parser->-r doc/.sphinx/requirements.txt (line 29)) Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB) Collecting mdit-py-plugins~=0.4 (from myst-parser->-r doc/.sphinx/requirements.txt (line 29)) Downloading mdit_py_plugins-0.5.0-py3-none-any.whl.metadata (2.8 kB) Collecting pyyaml (from myst-parser->-r doc/.sphinx/requirements.txt (line 29)) Downloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.4 kB) Collecting myst-parser (from -r doc/.sphinx/requirements.txt (line 29)) Downloading myst_parser-1.0.0-py3-none-any.whl.metadata (5.5 kB) Collecting markdown-it-py<3.0.0,>=1.0.0 (from myst-parser->-r doc/.sphinx/requirements.txt (line 29)) Downloading markdown_it_py-2.2.0-py3-none-any.whl.metadata (6.8 kB) Collecting mdit-py-plugins~=0.3.4 (from myst-parser->-r doc/.sphinx/requirements.txt (line 29)) Downloading mdit_py_plugins-0.3.5-py3-none-any.whl.metadata (2.8 kB) Collecting myst-parser (from -r doc/.sphinx/requirements.txt (line 29)) Downloading myst_parser-0.19.2-py3-none-any.whl.metadata (5.5 kB) INFO: pip is still looking at multiple versions of myst-parser to determine which version is compatible with other requirements. This could take a while. Downloading myst_parser-0.19.1-py3-none-any.whl.metadata (5.5 kB) Downloading myst_parser-0.19.0-py3-none-any.whl.metadata (5.5 kB) Downloading myst_parser-0.18.1-py3-none-any.whl.metadata (5.1 kB) Collecting typing-extensions (from myst-parser->-r doc/.sphinx/requirements.txt (line 29)) Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB) Collecting mdurl~=0.1 (from markdown-it-py<3.0.0,>=1.0.0->myst-parser->-r doc/.sphinx/requirements.txt (line 29)) Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB) INFO: pip is looking at multiple versions of sphinx-reredirects to determine which version is compatible with other requirements. This could take a while. Collecting sphinx-reredirects (from -r doc/.sphinx/requirements.txt (line 31)) Downloading sphinx_reredirects-1.0.0-py3-none-any.whl.metadata (4.7 kB) Downloading sphinx_reredirects-0.1.6-py3-none-any.whl.metadata (2.9 kB) Downloading sphinx_reredirects-0.1.5-py3-none-any.whl.metadata (2.6 kB) Downloading sphinx_reredirects-0.1.4-py3-none-any.whl.metadata (2.6 kB) Collecting uc-micro-py (from linkify-it-py->-r doc/.sphinx/requirements.txt (line 32)) Downloading uc_micro_py-1.0.3-py3-none-any.whl.metadata (2.0 kB) Collecting beautifulsoup4 (from furo->-r doc/.sphinx/requirements.txt (line 33)) Downloading beautifulsoup4-4.14.3-py3-none-any.whl.metadata (3.8 kB) INFO: pip is looking at multiple versions of furo to determine which version is compatible with other requirements. This could take a while. Collecting furo (from -r doc/.sphinx/requirements.txt (line 33)) Downloading furo-2025.9.25-py3-none-any.whl.metadata (6.1 kB) Downloading furo-2025.7.19-py3-none-any.whl.metadata (6.0 kB) Downloading furo-2024.8.6-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2024.7.18-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2024.5.6-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2024.4.27-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2024.1.29-py3-none-any.whl.metadata (5.9 kB) INFO: pip is still looking at multiple versions of furo to determine which version is compatible with other requirements. This could take a while. Downloading furo-2023.9.10-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2023.7.26-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2023.5.20-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2023.3.27-py3-none-any.whl.metadata (5.9 kB) Downloading furo-2023.3.23-py3-none-any.whl.metadata (5.9 kB) INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C. Downloading furo-2022.12.7-py3-none-any.whl.metadata (6.0 kB) Downloading furo-2022.9.29-py3-none-any.whl.metadata (5.9 kB) Collecting sphinx-basic-ng (from furo->-r doc/.sphinx/requirements.txt (line 33)) Downloading sphinx_basic_ng-1.0.0b2-py3-none-any.whl.metadata (1.5 kB) INFO: pip is looking at multiple versions of sphinxext-opengraph to determine which version is compatible with other requirements. This could take a while. Collecting sphinxext-opengraph>=0.6.1 (from -r doc/.sphinx/requirements.txt (line 34)) Downloading sphinxext_opengraph-0.12.0-py3-none-any.whl.metadata (2.7 kB) Downloading sphinxext_opengraph-0.11.0-py3-none-any.whl.metadata (2.7 kB) Downloading sphinxext_opengraph-0.10.0-py3-none-any.whl.metadata (2.7 kB) Downloading sphinxext_opengraph-0.9.1-py3-none-any.whl.metadata (6.5 kB) Collecting gitdb<5,>=4.0.1 (from gitpython->-r doc/.sphinx/requirements.txt (line 35)) Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB) Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython->-r doc/.sphinx/requirements.txt (line 35)) Downloading smmap-5.0.2-py3-none-any.whl.metadata (4.3 kB) INFO: pip is looking at multiple versions of sphinx-notfound-page to determine which version is compatible with other requirements. This could take a while. Collecting sphinx-notfound-page (from -r doc/.sphinx/requirements.txt (line 37)) Downloading sphinx_notfound_page-1.0.4-py3-none-any.whl.metadata (2.9 kB) Downloading sphinx_notfound_page-1.0.3-py3-none-any.whl.metadata (2.9 kB) Downloading sphinx_notfound_page-1.0.2-py3-none-any.whl.metadata (2.9 kB) Downloading sphinx_notfound_page-1.0.1-py3-none-any.whl.metadata (2.9 kB) Downloading sphinx_notfound_page-1.0.0-py3-none-any.whl.metadata (2.9 kB) Downloading sphinx_notfound_page-0.8.3-py2.py3-none-any.whl.metadata (2.7 kB) Collecting soupsieve>=1.6.1 (from beautifulsoup4->furo->-r doc/.sphinx/requirements.txt (line 33)) Downloading soupsieve-2.8.3-py3-none-any.whl.metadata (4.6 kB) Downloading alabaster-0.7.12-py2.py3-none-any.whl (14 kB) Downloading Babel-2.9.1-py2.py3-none-any.whl (8.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.8/8.8 MB 218.5 MB/s 0:00:00 Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB) Downloading charset_normalizer-2.0.4-py3-none-any.whl (36 kB) Downloading colorama-0.4.4-py2.py3-none-any.whl (16 kB) Downloading docutils-0.16-py2.py3-none-any.whl (548 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 548.2/548.2 kB 662.9 MB/s 0:00:00 Downloading idna-3.2-py3-none-any.whl (59 kB) Downloading imagesize-1.2.0-py2.py3-none-any.whl (4.8 kB) Downloading Jinja2-3.0.1-py3-none-any.whl (133 kB) Downloading livereload-2.6.3-py2.py3-none-any.whl (24 kB) Downloading packaging-21.0-py3-none-any.whl (40 kB) Downloading Pygments-2.10.0-py3-none-any.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 544.0 MB/s 0:00:00 Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Downloading pytz-2021.1-py2.py3-none-any.whl (510 kB) Downloading requests-2.26.0-py2.py3-none-any.whl (62 kB) Downloading urllib3-1.26.6-py2.py3-none-any.whl (138 kB) Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Downloading snowballstemmer-2.1.0-py2.py3-none-any.whl (93 kB) Downloading Sphinx-4.2.0-py3-none-any.whl (3.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1/3.1 MB 305.6 MB/s 0:00:00 Downloading sphinx_autobuild-2021.3.14-py3-none-any.whl (9.9 kB) Downloading sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl (121 kB) Downloading sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl (84 kB) Downloading sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl (100 kB) Downloading sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl (90 kB) Downloading sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl (94 kB) Downloading myst_parser-0.18.1-py3-none-any.whl (58 kB) Downloading markdown_it_py-2.2.0-py3-none-any.whl (84 kB) Downloading mdit_py_plugins-0.3.5-py3-none-any.whl (52 kB) Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB) Downloading sphinx_tabs-3.4.7-py3-none-any.whl (9.7 kB) Downloading sphinx_reredirects-0.1.4-py3-none-any.whl (5.3 kB) Downloading linkify_it_py-2.0.3-py3-none-any.whl (19 kB) Downloading furo-2022.9.29-py3-none-any.whl (326 kB) Downloading sphinxext_opengraph-0.9.1-py3-none-any.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 356.3 MB/s 0:00:00 Downloading gitpython-3.1.46-py3-none-any.whl (208 kB) Downloading gitdb-4.0.12-py3-none-any.whl (62 kB) Downloading smmap-5.0.2-py3-none-any.whl (24 kB) Downloading sphinx_notfound_page-0.8.3-py2.py3-none-any.whl (8.5 kB) Downloading beautifulsoup4-4.14.3-py3-none-any.whl (107 kB) Downloading soupsieve-2.8.3-py3-none-any.whl (37 kB) Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB) Downloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (806 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 806.6/806.6 kB 688.0 MB/s 0:00:00 Downloading sphinx_basic_ng-1.0.0b2-py3-none-any.whl (22 kB) Downloading uc_micro_py-1.0.3-py3-none-any.whl (6.2 kB) Building wheels for collected packages: MarkupSafe, tornado, wget Building wheel for MarkupSafe (pyproject.toml): started Building wheel for MarkupSafe (pyproject.toml): finished with status 'done' Created wheel for MarkupSafe: filename=markupsafe-2.0.1-cp311-cp311-linux_x86_64.whl size=29172 sha256=803b48427eab12332f6e9e53fa77ebe6176a627186d030ed8c8016b8243d547d Stored in directory: /tmp/pip-ephem-wheel-cache-eqkw0unb/wheels/ea/18/79/6266ea508b8164a77b95aa19534c77eb805f2878612c37efca Building wheel for tornado (pyproject.toml): started Building wheel for tornado (pyproject.toml): finished with status 'done' Created wheel for tornado: filename=tornado-6.1-cp311-cp311-linux_x86_64.whl size=422118 sha256=b35a7e7844df3b66a9514116d20507737e9bd897659aea129934f14354749b5b Stored in directory: /tmp/pip-ephem-wheel-cache-eqkw0unb/wheels/f2/59/06/a9c85c7b17ec0fc9b1e2ae0c59e3d39255d5c0a38492e33fea Building wheel for wget (pyproject.toml): started Building wheel for wget (pyproject.toml): finished with status 'done' Created wheel for wget: filename=wget-3.2-py3-none-any.whl size=9686 sha256=6506206baf0beee60a862196d54a52c7c3b581b6a9d8ca2f3196cc8bdf1ba600 Stored in directory: /tmp/pip-ephem-wheel-cache-eqkw0unb/wheels/40/b3/0f/a40dbd1c6861731779f62cc4babcb234387e11d697df70ee97 Successfully built MarkupSafe tornado wget Installing collected packages: wget, snowballstemmer, pytz, certifi, alabaster, urllib3, uc-micro-py, typing-extensions, tornado, sphinxcontrib-serializinghtml, sphinxcontrib-qthelp, sphinxcontrib-htmlhelp, sphinxcontrib-devhelp, sphinxcontrib-applehelp, soupsieve, smmap, six, pyyaml, pyparsing, Pygments, mdurl, MarkupSafe, imagesize, idna, docutils, colorama, charset-normalizer, Babel, requests, packaging, markdown-it-py, livereload, linkify-it-py, Jinja2, gitdb, beautifulsoup4, Sphinx, mdit-py-plugins, gitpython, sphinxext-opengraph, sphinx-tabs, sphinx-reredirects, sphinx-notfound-page, sphinx-basic-ng, sphinx-autobuild, myst-parser, furo Attempting uninstall: snowballstemmer Found existing installation: snowballstemmer 3.0.1 Uninstalling snowballstemmer-3.0.1: Successfully uninstalled snowballstemmer-3.0.1 Attempting uninstall: certifi Found existing installation: certifi 2026.1.4 Uninstalling certifi-2026.1.4: Successfully uninstalled certifi-2026.1.4 Attempting uninstall: alabaster Found existing installation: alabaster 1.0.0 Uninstalling alabaster-1.0.0: Successfully uninstalled alabaster-1.0.0 Attempting uninstall: urllib3 Found existing installation: urllib3 2.6.3 Uninstalling urllib3-2.6.3: Successfully uninstalled urllib3-2.6.3 Attempting uninstall: sphinxcontrib-serializinghtml Found existing installation: sphinxcontrib-serializinghtml 2.0.0 Uninstalling sphinxcontrib-serializinghtml-2.0.0: Successfully uninstalled sphinxcontrib-serializinghtml-2.0.0 Attempting uninstall: sphinxcontrib-qthelp Found existing installation: sphinxcontrib-qthelp 2.0.0 Uninstalling sphinxcontrib-qthelp-2.0.0: Successfully uninstalled sphinxcontrib-qthelp-2.0.0 Attempting uninstall: sphinxcontrib-htmlhelp Found existing installation: sphinxcontrib-htmlhelp 2.1.0 Uninstalling sphinxcontrib-htmlhelp-2.1.0: Successfully uninstalled sphinxcontrib-htmlhelp-2.1.0 Attempting uninstall: sphinxcontrib-devhelp Found existing installation: sphinxcontrib-devhelp 2.0.0 Uninstalling sphinxcontrib-devhelp-2.0.0: Successfully uninstalled sphinxcontrib-devhelp-2.0.0 Attempting uninstall: sphinxcontrib-applehelp Found existing installation: sphinxcontrib-applehelp 2.0.0 Uninstalling sphinxcontrib-applehelp-2.0.0: Successfully uninstalled sphinxcontrib-applehelp-2.0.0 Attempting uninstall: Pygments Found existing installation: Pygments 2.19.2 Uninstalling Pygments-2.19.2: Successfully uninstalled Pygments-2.19.2 Attempting uninstall: MarkupSafe Found existing installation: MarkupSafe 3.0.3 Uninstalling MarkupSafe-3.0.3: Successfully uninstalled MarkupSafe-3.0.3 Attempting uninstall: imagesize Found existing installation: imagesize 1.4.1 Uninstalling imagesize-1.4.1: Successfully uninstalled imagesize-1.4.1 Attempting uninstall: idna Found existing installation: idna 3.11 Uninstalling idna-3.11: Successfully uninstalled idna-3.11 Attempting uninstall: docutils Found existing installation: docutils 0.22.4 Uninstalling docutils-0.22.4: Successfully uninstalled docutils-0.22.4 Attempting uninstall: charset-normalizer Found existing installation: charset-normalizer 3.4.4 Uninstalling charset-normalizer-3.4.4: Successfully uninstalled charset-normalizer-3.4.4 Attempting uninstall: Babel Found existing installation: babel 2.18.0 Uninstalling babel-2.18.0: Successfully uninstalled babel-2.18.0 Attempting uninstall: requests Found existing installation: requests 2.32.5 Uninstalling requests-2.32.5: Successfully uninstalled requests-2.32.5 Attempting uninstall: packaging Found existing installation: packaging 26.0 Uninstalling packaging-26.0: Successfully uninstalled packaging-26.0 Attempting uninstall: Jinja2 Found existing installation: Jinja2 3.1.6 Uninstalling Jinja2-3.1.6: Successfully uninstalled Jinja2-3.1.6 Attempting uninstall: Sphinx Found existing installation: Sphinx 9.0.4 Uninstalling Sphinx-9.0.4: Successfully uninstalled Sphinx-9.0.4 Successfully installed Babel-2.9.1 Jinja2-3.0.1 MarkupSafe-2.0.1 Pygments-2.10.0 Sphinx-4.2.0 alabaster-0.7.12 beautifulsoup4-4.14.3 certifi-2021.5.30 charset-normalizer-2.0.4 colorama-0.4.4 docutils-0.16 furo-2022.9.29 gitdb-4.0.12 gitpython-3.1.46 idna-3.2 imagesize-1.2.0 linkify-it-py-2.0.3 livereload-2.6.3 markdown-it-py-2.2.0 mdit-py-plugins-0.3.5 mdurl-0.1.2 myst-parser-0.18.1 packaging-21.0 pyparsing-2.4.7 pytz-2021.1 pyyaml-6.0.3 requests-2.26.0 six-1.16.0 smmap-5.0.2 snowballstemmer-2.1.0 soupsieve-2.8.3 sphinx-autobuild-2021.3.14 sphinx-basic-ng-1.0.0b2 sphinx-notfound-page-0.8.3 sphinx-reredirects-0.1.4 sphinx-tabs-3.4.7 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-2.0.0 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.5 sphinxext-opengraph-0.9.1 tornado-6.1 typing-extensions-4.15.0 uc-micro-py-1.0.3 urllib3-1.26.6 wget-3.2 [rtd-command-info] start-time: 2026-02-12T13:26:27.100516Z, end-time: 2026-02-12T13:26:27.134645Z, duration: 0, exit-code: 0 cat doc/conf.py import datetime import os import yaml from git import Repo import wget # Download and link swagger-ui files if not os.path.isdir('.sphinx/deps/swagger-ui'): Repo.clone_from('https://github.com/swagger-api/swagger-ui', '.sphinx/deps/swagger-ui', depth=1) os.makedirs('.sphinx/_static/swagger-ui/', exist_ok=True) if not os.path.islink('.sphinx/_static/swagger-ui/swagger-ui-bundle.js'): os.symlink('../../deps/swagger-ui/dist/swagger-ui-bundle.js', '.sphinx/_static/swagger-ui/swagger-ui-bundle.js') if not os.path.islink('.sphinx/_static/swagger-ui/swagger-ui-standalone-preset.js'): os.symlink('../../deps/swagger-ui/dist/swagger-ui-standalone-preset.js', '.sphinx/_static/swagger-ui/swagger-ui-standalone-preset.js') if not os.path.islink('.sphinx/_static/swagger-ui/swagger-ui.css'): os.symlink('../../deps/swagger-ui/dist/swagger-ui.css', '.sphinx/_static/swagger-ui/swagger-ui.css') # Project config. project = "LXD" author = "LXD contributors" copyright = "2014-%s %s" % (datetime.date.today().year, author) with open("../shared/version/flex.go") as fd: version = fd.read().split("\n")[-2].split()[-1].strip("\"") # Extensions. extensions = [ "myst_parser", "sphinx_tabs.tabs", "sphinx_reredirects", "sphinxext.opengraph", "notfound.extension" ] myst_enable_extensions = [ "substitution", "deflist", "linkify" ] myst_linkify_fuzzy_links=False myst_heading_anchors = 7 if os.path.exists("./substitutions.yaml"): with open("./substitutions.yaml", "r") as fd: myst_substitutions = yaml.safe_load(fd.read()) notfound_urls_prefix = "/lxd/en/latest/" # Setup theme. templates_path = [".sphinx/_templates"] html_theme = "furo" html_show_sphinx = False html_last_updated_fmt = "" html_favicon = ".sphinx/_static/favicon.ico" html_static_path = ['.sphinx/_static'] html_css_files = ['custom.css'] html_js_files = ['header-nav.js'] html_extra_path = ['.sphinx/_extra'] html_theme_options = { "sidebar_hide_name": True, "light_css_variables": { "font-stack": "Ubuntu, -apple-system, Segoe UI, Roboto, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif", "font-stack--monospace": "Ubuntu Mono, Consolas, Monaco, Courier, monospace", "color-foreground-primary": "#111", "color-foreground-secondary": "var(--color-foreground-primary)", "color-foreground-muted": "#333", "color-background-secondary": "#FFF", "color-background-hover": "#f2f2f2", "color-brand-primary": "#111", "color-brand-content": "#06C", "color-api-background": "#cdcdcd", "color-inline-code-background": "rgba(0,0,0,.03)", "color-sidebar-link-text": "#111", "color-sidebar-item-background--current": "#ebebeb", "color-sidebar-item-background--hover": "#f2f2f2", "toc-font-size": "var(--font-size--small)", "color-admonition-title-background--note": "var(--color-background-primary)", "color-admonition-title-background--tip": "var(--color-background-primary)", "color-admonition-title-background--important": "var(--color-background-primary)", "color-admonition-title-background--caution": "var(--color-background-primary)", "color-admonition-title--note": "#24598F", "color-admonition-title--tip": "#24598F", "color-admonition-title--important": "#C7162B", "color-admonition-title--caution": "#F99B11", "color-highlighted-background": "#EbEbEb", "color-link-underline": "var(--color-background-primary)", "color-link-underline--hover": "var(--color-background-primary)", "color-version-popup": "#772953" }, "dark_css_variables": { "color-foreground-secondary": "var(--color-foreground-primary)", "color-foreground-muted": "#CDCDCD", "color-background-secondary": "var(--color-background-primary)", "color-background-hover": "#666", "color-brand-primary": "#fff", "color-brand-content": "#06C", "color-sidebar-link-text": "#f7f7f7", "color-sidebar-item-background--current": "#666", "color-sidebar-item-background--hover": "#333", "color-admonition-background": "transparent", "color-admonition-title-background--note": "var(--color-background-primary)", "color-admonition-title-background--tip": "var(--color-background-primary)", "color-admonition-title-background--important": "var(--color-background-primary)", "color-admonition-title-background--caution": "var(--color-background-primary)", "color-admonition-title--note": "#24598F", "color-admonition-title--tip": "#24598F", "color-admonition-title--important": "#C7162B", "color-admonition-title--caution": "#F99B11", "color-highlighted-background": "#666", "color-link-underline": "var(--color-background-primary)", "color-link-underline--hover": "var(--color-background-primary)", "color-version-popup": "#F29879" }, } html_context = { "github_url": "https://github.com/canonical/lxd", "github_version": "stable-4.0", "github_folder": "/doc/", "github_filetype": "md" } source_suffix = ".md" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['html', 'README.md', '.sphinx'] # Open Graph configuration ogp_site_url = "https://documentation.ubuntu.com/lxd/en/stable-4.0/" ogp_site_name = "LXD documentation" ogp_image = "https://documentation.ubuntu.com/lxd/en/stable-4.0/_static/tag.png" # Setup redirects (https://documatt.gitlab.io/sphinx-reredirects/usage.html) redirects = { } [rtd-command-info] start-time: 2026-02-12T13:26:27.222131Z, end-time: 2026-02-12T13:26:27.489511Z, duration: 0, exit-code: 1 python -m sphinx -T -W --keep-going -b dirhtml -d _build/doctrees -D language=en . $READTHEDOCS_OUTPUT/html Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages/sphinx/__main__.py", line 13, in from sphinx.cmd.build import main File "/home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages/sphinx/cmd/build.py", line 25, in from sphinx.application import Sphinx File "/home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages/sphinx/application.py", line 43, in from sphinx.registry import SphinxComponentRegistry File "/home/docs/checkouts/readthedocs.org/user_builds/canonical-lxd/envs/stable-4.0/lib/python3.11/site-packages/sphinx/registry.py", line 24, in from pkg_resources import iter_entry_points ModuleNotFoundError: No module named 'pkg_resources'