scripts for building documentation on docs.python.org
Find a file
2025-12-08 09:50:21 +02:00
.github/workflows Set explicit artefact retention time 2025-04-15 22:58:51 +01:00
templates Add labels to switchers (#319) 2025-12-08 09:50:21 +02:00
tests Add more tests for Versions class (#288) 2025-04-18 22:27:20 +03:00
.coveragerc Add more tests for Versions class (#288) 2025-04-18 22:27:20 +03:00
.gitignore Add `--select-output` (#199) 2024-09-26 23:08:04 +01:00
.pre-commit-config.yaml Add more tests for Versions class (#288) 2025-04-18 22:27:20 +03:00
.ruff.toml Enable flake8-logging-format in Ruff (#278) 2025-04-12 04:25:36 +01:00
build_docs.py Note that `release-cycle.json` is now sourced from peps.python.org (#314) 2025-11-10 16:55:52 +00:00
check_times.py Add options to only show certain build times (#307) 2025-08-15 19:51:55 +03:00
check_versions.py Add tox -e cog to update README tables (#313) 2025-10-17 08:47:16 +02:00
config.toml Commit 2025-11-22 18:54:40 +01:00
pyproject.toml Reformat pyproject.toml 2024-09-17 17:42:11 +03:00
README.md Add tox -e cog to update README tables (#313) 2025-10-17 08:47:16 +02:00
requirements.txt Move environment variables to a configuration file (#269) 2025-04-11 19:49:11 +01:00
tools_requirements.txt Bump versions table in README (#156) 2023-10-06 21:33:37 +02:00
tox.ini Add tox -e cog to update README tables (#313) 2025-10-17 08:47:16 +02:00

docsbuild-scripts

GitHub Actions status Codecov

This repository contains scripts for automatically building the Python documentation on docs.python.org.

How to test it?

The following command should build all maintained versions and translations in ./www, beware it can take a few hours:

python3 ./build_docs.py --quick --build-root ./build_root --www-root ./www --log-directory ./logs --group $(id -g) --skip-cache-invalidation

If you don't need to build all translations of all branches, add --languages en --branches main.

Sphinx versions

Sphinx configuration in various branches:

version requirements.txt conf.py
2.6 ø ø
2.7 ø ø
3.0 ø ø
3.1 ø ø
3.2 ø ø
3.3 ø ø
3.4 ø needs_sphinx='1.2'
3.5 ø ø
3.6 ø ø
3.7 ø ø
3.8 ø ø
3.9 sphinx==2.4.4 needs_sphinx='1.8'
3.10 sphinx==3.4.3 needs_sphinx='3.2'
3.11 sphinx~=7.2.0 needs_sphinx='4.2'
3.12 sphinx~=8.2.0 needs_sphinx='8.2.0'
3.13 sphinx~=8.2.0 needs_sphinx='8.2.0'
3.14 sphinx~=8.2.0 needs_sphinx='8.2.0'
3.15 sphinx~=8.2.0 needs_sphinx='8.2.0'

Sphinx build as seen on docs.python.org:

version el en es fr bn-in id it ja ko pl pt-br ro tr uk zh-cn zh-tw
2.6 ø 0.6.5 ø ø ø ø ø ø ø ø ø ø ø ø ø ø
2.7 ø 2.3.1 ø 2.3.1 ø 2.3.1 ø 2.3.1 2.3.1 ø 2.3.1 ø ø ø 2.3.1 2.3.1
3.0 ø 0.6 ø ø ø ø ø ø ø ø ø ø ø ø ø ø
3.1 ø 0.6.5 ø ø ø ø ø ø ø ø ø ø ø ø ø ø
3.2 ø 1.0.7 ø ø ø ø ø ø ø ø ø ø ø ø ø ø
3.3 ø 1.2 ø ø ø ø ø ø ø ø ø ø ø ø ø ø
3.4 ø 1.2.3 ø ø ø ø ø ø ø ø ø ø ø ø ø ø
3.5 ø 1.8.4 1.8.4 1.8.4 ø 1.8.4 ø 1.8.4 1.8.4 1.8.4 1.8.4 ø ø ø 1.8.4 1.8.4
3.6 ø 2.3.1 2.3.1 2.3.1 ø 2.3.1 ø 2.3.1 2.3.1 2.3.1 2.3.1 ø ø ø 2.3.1 2.3.1
3.7 ø 2.3.1 2.3.1 2.3.1 ø 2.3.1 2.3.1 2.3.1 2.3.1 2.3.1 2.3.1 ø 2.3.1 2.3.1 2.3.1 2.3.1
3.8 ø 2.4.4 2.4.4 2.4.4 ø 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 ø 2.4.4 2.4.4 2.4.4 2.4.4
3.9 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4 2.4.4
3.10 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3 3.4.3
3.11 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6 7.2.6
3.12 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3
3.13 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3
3.14 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3
3.15 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3 8.2.3

Install tools_requirements.txt then run python check_versions.py ../cpython/ (pointing to a real CPython clone) to see which versions of Sphinx we're using.

Or run tox -e cog (with a clone at ../cpython) to directly update these tables.

Manually rebuild a branch

Docs for feature and bugfix branches are automatically built from a cron.

Manual rebuilds are needed for new security releases, and to add the end-of-life banner for newly end-of-life branches.

To manually rebuild a branch, for example 3.11:

ssh docs.nyc1.psf.io
sudo su --shell=/bin/bash docsbuild
screen -DUR  # Rejoin screen session if it exists, otherwise create a new one
/srv/docsbuild/venv/bin/python /srv/docsbuild/scripts/build_docs.py --force --branches 3.11