Skip to content

feat: update readthedocs build#382

Draft
gmacario wants to merge 3 commits intomainfrom
feat-update-rtd-build
Draft

feat: update readthedocs build#382
gmacario wants to merge 3 commits intomainfrom
feat-update-rtd-build

Conversation

@gmacario
Copy link
Copy Markdown
Member

@gmacario gmacario commented Mar 30, 2026

📑 Description

Currently Docker image (ubuntu-20.04) used for building the website on https://app.readthedocs.org/ is deprecated and will be removed by 2026-06-01

See https://about.readthedocs.com/blog/2026/03/ubuntu-20-04-deprecated/

Also update Python tool to 3.12 (default for Ubuntu 24.04)

Closes #

✅ Checks

  • My pull request adheres to the code style of this project
  • My code requires changes to the documentation
  • I have updated the documentation as required
  • All the tests have passed

ℹ Additional Information

Update build image to Ubuntu-24.04

Currently used image (ubuntu-20.04) is deprecated and will be removed by 2026-06-01

See https://about.readthedocs.com/blog/2026/03/ubuntu-20-04-deprecated/

Also update Python tool to 3.12 (default for Ubuntu 24.04)
@gmacario gmacario self-assigned this Mar 30, 2026
@gmacario gmacario added the enhancement New feature or request label Mar 30, 2026
@gmacario gmacario marked this pull request as draft March 30, 2026 17:29
@gmacario
Copy link
Copy Markdown
Member Author

The PR does not build correctly

From https://app.readthedocs.org/projects/arneis/builds/32042086/

python -m pip install --exists-action=w --no-cache-dir -r docs/requirements.txt  
Collecting alabaster==0.7.12 (from -r docs/requirements.txt (line 1))
  Downloading alabaster-0.7.12-py2.py3-none-any.whl.metadata (2.0 kB)
Collecting attrs==21.4.0 (from -r docs/requirements.txt (line 2))
  Downloading attrs-21.4.0-py2.py3-none-any.whl.metadata (9.8 kB)
Collecting Babel==2.9.1 (from -r docs/requirements.txt (line 3))
  Downloading Babel-2.9.1-py2.py3-none-any.whl.metadata (1.2 kB)
Collecting certifi==2021.10.8 (from -r docs/requirements.txt (line 4))
  Downloading certifi-2021.10.8-py2.py3-none-any.whl.metadata (3.0 kB)
Collecting charset-normalizer==2.0.10 (from -r docs/requirements.txt (line 5))
  Downloading charset_normalizer-2.0.10-py3-none-any.whl.metadata (11 kB)
Collecting docutils==0.17.1 (from -r docs/requirements.txt (line 6))
  Downloading docutils-0.17.1-py2.py3-none-any.whl.metadata (2.9 kB)
Collecting idna==3.3 (from -r docs/requirements.txt (line 7))
  Downloading idna-3.3-py3-none-any.whl.metadata (9.8 kB)
Collecting imagesize==1.3.0 (from -r docs/requirements.txt (line 8))
  Downloading imagesize-1.3.0-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting importlib-metadata==4.10.1 (from -r docs/requirements.txt (line 9))
  Downloading importlib_metadata-4.10.1-py3-none-any.whl.metadata (4.0 kB)
Collecting Jinja2==3.0.3 (from -r docs/requirements.txt (line 10))
  Downloading Jinja2-3.0.3-py3-none-any.whl.metadata (3.5 kB)
Collecting markdown-it-py==2.0.0 (from -r docs/requirements.txt (line 11))
  Downloading markdown_it_py-2.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting MarkupSafe==2.0.1 (from -r docs/requirements.txt (line 12))
  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 mdit-py-plugins==0.3.0 (from -r docs/requirements.txt (line 13))
  Downloading mdit_py_plugins-0.3.0-py3-none-any.whl.metadata (2.8 kB)
Collecting mdurl==0.1.0 (from -r docs/requirements.txt (line 14))
  Downloading mdurl-0.1.0-py3-none-any.whl.metadata (4.7 kB)
Collecting myst-parser==0.16.1 (from -r docs/requirements.txt (line 15))
  Downloading myst_parser-0.16.1-py3-none-any.whl.metadata (5.1 kB)
Collecting packaging==21.3 (from -r docs/requirements.txt (line 16))
  Downloading packaging-21.3-py3-none-any.whl.metadata (15 kB)
Collecting Pygments==2.11.2 (from -r docs/requirements.txt (line 17))
  Downloading Pygments-2.11.2-py3-none-any.whl.metadata (1.5 kB)
Collecting pyparsing==3.0.6 (from -r docs/requirements.txt (line 18))
  Downloading pyparsing-3.0.6-py3-none-any.whl.metadata (4.2 kB)
Collecting pytz==2021.3 (from -r docs/requirements.txt (line 19))
  Downloading pytz-2021.3-py2.py3-none-any.whl.metadata (21 kB)
Collecting PyYAML==6.0 (from -r docs/requirements.txt (line 20))
  Downloading PyYAML-6.0.tar.gz (124 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 'error'
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [67 lines of output]
      /tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/wheel/bdist_wheel.py:4: FutureWarning: The 'wheel' package is no longer the canonical location of the 'bdist_wheel' command, and will be removed in a future release. Please update to setuptools v70.1 or later which contains an integrated version of this command.
        warn(
      /tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated.
      !!
      
              ********************************************************************************
              Please consider removing the following classifiers in favor of a SPDX license expression:
      
              License :: OSI Approved :: MIT License
      
              See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
              ********************************************************************************
      
      !!
        self._finalize_license_expression()
      running egg_info
      writing lib/PyYAML.egg-info/PKG-INFO
      writing dependency_links to lib/PyYAML.egg-info/dependency_links.txt
      writing top-level names to lib/PyYAML.egg-info/top_level.txt
      Traceback (most recent call last):
        File "/home/docs/checkouts/readthedocs.org/user_builds/arneis/envs/382/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
          main()
        File "/home/docs/checkouts/readthedocs.org/user_builds/arneis/envs/382/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main
          json_out["return_val"] = hook(**hook_input["kwargs"])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/docs/checkouts/readthedocs.org/user_builds/arneis/envs/382/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 143, in get_requires_for_build_wheel
          return hook(config_settings)
                 ^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 333, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=[])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 301, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 317, in run_setup
          exec(code, locals())
        File "<string>", line 288, in <module>
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)  # type: ignore[return-value]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 186, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 1000, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 1019, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/command/egg_info.py", line 312, in run
          self.find_sources()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/command/egg_info.py", line 320, in find_sources
          mm.run()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/command/egg_info.py", line 542, in run
          self.add_defaults()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/command/egg_info.py", line 580, in add_defaults
          sdist.add_defaults(self)
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/command/sdist.py", line 110, in add_defaults
          super().add_defaults()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/sdist.py", line 245, in add_defaults
          self._add_defaults_ext()
        File "/tmp/pip-build-env-1wek3rq3/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/sdist.py", line 330, in _add_defaults_ext
          self.filelist.extend(build_ext.get_source_files())
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "<string>", line 204, in get_source_files
      AttributeError: 'build_ext' object has no attribute 'cython_sources'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed to build 'PyYAML' when getting requirements to build wheel

@gmacario
Copy link
Copy Markdown
Member Author

@gmacario gmacario changed the title Feat update rtd build feat: update readthedocs build Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant