Read the Docs build information Build id: 4333605 Project: anyscale-ray Version: master Commit: 2b9ae63d6033c105967dc0f5e1c40003f958ffd3 Date: 2026-08-19T02:13:05.454131Z State: finished Success: False [rtd-command-info] start-time: 2026-08-19T02:13:06.280692Z, end-time: 2026-08-19T02:13:18.429226Z, duration: 12, exit-code: 0 git clone --depth 1 https://github.com/ray-project/ray.git . Cloning into '.'... Updating files: 26% (2726/10349) Updating files: 27% (2795/10349) Updating files: 28% (2898/10349) Updating files: 29% (3002/10349) Updating files: 30% (3105/10349) Updating files: 31% (3209/10349) Updating files: 32% (3312/10349) Updating files: 33% (3416/10349) Updating files: 34% (3519/10349) Updating files: 35% (3623/10349) Updating files: 36% (3726/10349) Updating files: 37% (3830/10349) Updating files: 38% (3933/10349) Updating files: 39% (4037/10349) Updating files: 40% (4140/10349) Updating files: 41% (4244/10349) Updating files: 42% (4347/10349) Updating files: 43% (4451/10349) Updating files: 44% (4554/10349) Updating files: 45% (4658/10349) Updating files: 46% (4761/10349) Updating files: 47% (4865/10349) Updating files: 48% (4968/10349) Updating files: 49% (5072/10349) Updating files: 50% (5175/10349) Updating files: 51% (5278/10349) Updating files: 52% (5382/10349) Updating files: 53% (5485/10349) Updating files: 54% (5589/10349) Updating files: 55% (5692/10349) Updating files: 56% (5796/10349) Updating files: 57% (5899/10349) Updating files: 58% (6003/10349) Updating files: 59% (6106/10349) Updating files: 60% (6210/10349) Updating files: 61% (6313/10349) Updating files: 62% (6417/10349) Updating files: 63% (6520/10349) Updating files: 64% (6624/10349) Updating files: 65% (6727/10349) Updating files: 66% (6831/10349) Updating files: 67% (6934/10349) Updating files: 68% (7038/10349) Updating files: 69% (7141/10349) Updating files: 70% (7245/10349) Updating files: 71% (7348/10349) Updating files: 72% (7452/10349) Updating files: 73% (7555/10349) Updating files: 74% (7659/10349) Updating files: 75% (7762/10349) Updating files: 76% (7866/10349) Updating files: 77% (7969/10349) Updating files: 78% (8073/10349) Updating files: 79% (8176/10349) Updating files: 80% (8280/10349) Updating files: 81% (8383/10349) Updating files: 82% (8487/10349) Updating files: 83% (8590/10349) Updating files: 84% (8694/10349) Updating files: 85% (8797/10349) Updating files: 86% (8901/10349) Updating files: 87% (9004/10349) Updating files: 88% (9108/10349) Updating files: 89% (9211/10349) Updating files: 90% (9315/10349) Updating files: 91% (9418/10349) Updating files: 92% (9522/10349) Updating files: 93% (9625/10349) Updating files: 94% (9729/10349) Updating files: 95% (9832/10349) Updating files: 96% (9936/10349) Updating files: 97% (10039/10349) Updating files: 98% (10143/10349) Updating files: 99% (10246/10349) Updating files: 100% (10349/10349) Updating files: 100% (10349/10349), done. [rtd-command-info] start-time: 2026-08-19T02:13:18.504938Z, end-time: 2026-08-19T02:13:19.281989Z, duration: 0, exit-code: 0 git fetch origin --force --prune --prune-tags --depth 50 refs/heads/master:refs/remotes/origin/master [rtd-command-info] start-time: 2026-08-19T02:13:19.928305Z, end-time: 2026-08-19T02:13:20.511356Z, duration: 0, exit-code: 0 git checkout --force origin/master Note: switching to 'origin/master'. 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 2b9ae63 [doc] Give the Read the Docs build a larger pip retry budget (#65574) [rtd-command-info] start-time: 2026-08-19T02:13:20.587863Z, end-time: 2026-08-19T02:13:20.626063Z, duration: 0, exit-code: 0 cat .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-24.04 tools: python: "3.11" jobs: # On PR builds, skip the Sphinx build when the PR doesn't touch any # files that affect documentation output. Reduces queue pressure on # the shared RTD build slots when several PRs are open at once. # Tag/branch builds (master, stable, etc.) always run. # The guard matches doc/ but excludes doc/.claude/ (Claude Code skills # and agent files), which never participate in the Sphinx build, so a # PR that changes only those paths skips the build instead of running one. # Code sources (python/ray/, rllib/) are intentionally not matched, so a # code-only PR skips this PR preview. The RTD PR check is not a required # merge gate, and the post-merge master build and the Buildkite doc_build # still render docstring-driven API-reference changes. This trades a # non-gating premerge preview for less pressure on the shared RTD slots. # See https://docs.readthedocs.com/platform/stable/guides/build/skip-build.html # # Some constructs are avoided deliberately because RTD's job runner # silently drops scripts that contain them: use echo (not printf # with a backslash-escape format string), avoid backslash escapes # in general, and keep shell comments out of this block so that # backticks/$() inside comments don't confuse the preprocessor. # The runner also strips the surrounding single quotes from arguments, # so use git's :! exclude shorthand rather than :(exclude): unquoted # parentheses reach /bin/sh (dash) and abort the script with a syntax error. post_checkout: - | if [ "${READTHEDOCS_VERSION_TYPE:-}" != "external" ]; then echo "Not a PR build (version type: '${READTHEDOCS_VERSION_TYPE:-unset}'); building docs." exit 0 fi git fetch --depth=500 origin master 2>/dev/null || true if ! git merge-base origin/master HEAD >/dev/null 2>&1; then echo "Could not determine merge-base with origin/master; building docs to be safe." exit 0 fi if git diff --quiet origin/master...HEAD -- doc/ ':!doc/.claude/' .readthedocs.yaml; then echo "No doc-affecting files changed in this PR; skipping Sphinx build." echo "Files changed in PR:" git diff --name-only origin/master...HEAD exit 183 fi echo "Doc-affecting files changed; building docs. Changed doc-relevant paths:" git diff --name-only origin/master...HEAD -- doc/ ':!doc/.claude/' .readthedocs.yaml # Override the html build step so every build runs a full clean Sphinx # build via the doc/Makefile html target, for PR (external) previews and # branch/tag builds alike. # # The incremental-from-master-cache path added in #64277 is disabled for # now. On every PR preview Sphinx discards the restored cache because a # config value differs between the environment that produced the cache and # the RTD build environment, so it rebuilds all documents anyway while # still paying the cache download and extract cost, and it risks a second # clean rebuild when the incremental leg trips a warning. A clean build is # faster and lower-variance in practice today. Re-enable the incremental # path only once cache reuse is confirmed (Sphinx logs "N changed" rather # than "NNNN added") and stale-artifact pruning lands for PRs that rename # or delete sources. The rtd and rtd-fallback Makefile targets and # doc/load_doc_cache.py stay in the tree for that re-enable. # Raise pip's retry budget for the dependency install below. # files.pythonhosted.org has been returning intermittent 502s # (https://github.com/pypi/support/issues/11895), and one failed wheel fetch # fails the whole docs build. pip defaults to 5 retries with exponential # backoff, which gives up in about 8 seconds of sleeping. # # Written as a config file rather than PIP_RETRIES because the install step # is python.install below, run by Read the Docs rather than by us, and each # job command runs in its own shell so an export here would not reach it. # pip reads this path on every invocation in the build, including that one. # # Only the retry count is raised. The observed failures are immediate 502 # responses rather than hangs, so a larger timeout would only lengthen the # worst case without making a fetch more likely to succeed. pre_install: - mkdir -p ~/.config/pip - | echo "[global]" > ~/.config/pip/pip.conf echo "retries = 10" >> ~/.config/pip/pip.conf cat ~/.config/pip/pip.conf build: html: - | make -C doc html HTMLDIR="$READTHEDOCS_OUTPUT/html" # Build documentation in the docs/ directory with Sphinx sphinx: configuration: doc/source/conf.py fail_on_warning: true # We recommend specifying your dependencies to enable reproducible builds: # https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html python: install: - requirements: doc/requirements-doc.lock.txt [rtd-command-info] start-time: 2026-08-19T02:13:20.712126Z, end-time: 2026-08-19T02:13:20.750028Z, duration: 0, exit-code: 0 if [ "${READTHEDOCS_VERSION_TYPE:-}" != "external" ]; then echo "Not a PR build (version type: '${READTHEDOCS_VERSION_TYPE:-unset}'); building docs." exit 0 fi git fetch --depth=500 origin master 2>/dev/null || true if ! git merge-base origin/master HEAD >/dev/null 2>&1; then echo "Could not determine merge-base with origin/master; building docs to be safe." exit 0 fi if git diff --quiet origin/master...HEAD -- doc/ ':!doc/.claude/' .readthedocs.yaml; then echo "No doc-affecting files changed in this PR; skipping Sphinx build." echo "Files changed in PR:" git diff --name-only origin/master...HEAD exit 183 fi echo "Doc-affecting files changed; building docs. Changed doc-relevant paths:" git diff --name-only origin/master...HEAD -- doc/ ':!doc/.claude/' .readthedocs.yaml Not a PR build (version type: branch); building docs. [rtd-command-info] start-time: 2026-08-19T02:13:25.699381Z, end-time: 2026-08-19T02:13:25.752157Z, duration: 0, exit-code: 0 asdf global python 3.11.15 [rtd-command-info] start-time: 2026-08-19T02:13:26.117778Z, end-time: 2026-08-19T02:13:26.708487Z, duration: 0, exit-code: 0 python -mvirtualenv $READTHEDOCS_VIRTUALENV_PATH created virtual environment CPython3.11.15.final.0-64 in 356ms creator CPython3Posix(dest=/home/docs/checkouts/readthedocs.org/user_builds/anyscale-ray/envs/master, 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-08-19T02:13:26.865853Z, end-time: 2026-08-19T02:13:26.927339Z, duration: 0, exit-code: 0 mkdir -p ~/.config/pip [rtd-command-info] start-time: 2026-08-19T02:13:27.023132Z, end-time: 2026-08-19T02:13:27.083207Z, duration: 0, exit-code: 0 echo "[global]" > ~/.config/pip/pip.conf echo "retries = 10" >> ~/.config/pip/pip.conf cat ~/.config/pip/pip.conf [global] retries = 10 [rtd-command-info] start-time: 2026-08-19T02:13:27.170193Z, end-time: 2026-08-19T02:13:29.323634Z, duration: 2, exit-code: 1 python -m pip install --upgrade --no-cache-dir pip setuptools Requirement already satisfied: pip in /home/docs/checkouts/readthedocs.org/user_builds/anyscale-ray/envs/master/lib/python3.11/site-packages (23.1) Collecting pip ERROR: HTTP error 502 while getting https://files.pythonhosted.org/packages/f3/6e/1736e5b4ae2b778ef2f81c47d797de9f891d4d8acb047a24ca37a60294dd/pip-26.2.1-py3-none-any.whl (from https://pypi.org/simple/pip/) (requires-python:>=3.10) ERROR: Could not install requirement pip from https://files.pythonhosted.org/packages/f3/6e/1736e5b4ae2b778ef2f81c47d797de9f891d4d8acb047a24ca37a60294dd/pip-26.2.1-py3-none-any.whl because of HTTP error 502 Server Error: Gateway Error for url: https://files.pythonhosted.org/packages/f3/6e/1736e5b4ae2b778ef2f81c47d797de9f891d4d8acb047a24ca37a60294dd/pip-26.2.1-py3-none-any.whl for URL https://files.pythonhosted.org/packages/f3/6e/1736e5b4ae2b778ef2f81c47d797de9f891d4d8acb047a24ca37a60294dd/pip-26.2.1-py3-none-any.whl (from https://pypi.org/simple/pip/) (requires-python:>=3.10) [notice] A new release of pip is available: 23.1 -> 26.2.1 [notice] To update, run: pip install --upgrade pip