]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] Docs makefile/RTD: Use uv if installed (GH-120711) (#120922)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 23 Jun 2024 19:48:42 +0000 (21:48 +0200)
committerGitHub <noreply@github.com>
Sun, 23 Jun 2024 19:48:42 +0000 (19:48 +0000)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
.readthedocs.yml
Doc/Makefile

index 59830c79a404e0fb19683ff3c188aadd014bc27e..d0d0c3b93ed207b1a2f04c4a361617c789d7424c 100644 (file)
@@ -26,6 +26,9 @@ build:
         exit 183;
       fi
 
+    - asdf plugin add uv
+    - asdf install uv latest
+    - asdf global uv latest
     - make -C Doc venv html
     - mkdir _readthedocs
     - mv Doc/build/html _readthedocs/html
index 1cbfc722b010f57a38529101f848c292595daff8..c70768754834dda078678b6e6f7731fc0f9dbe61 100644 (file)
@@ -152,7 +152,7 @@ htmlview: html
 
 .PHONY: ensure-sphinx-autobuild
 ensure-sphinx-autobuild: venv
-       $(VENVDIR)/bin/sphinx-autobuild --version > /dev/null || $(VENVDIR)/bin/python3 -m pip install sphinx-autobuild
+       $(call ensure_package,sphinx-autobuild)
 
 .PHONY: htmllive
 htmllive: SPHINXBUILD = $(VENVDIR)/bin/sphinx-autobuild
@@ -174,10 +174,15 @@ venv:
                echo "To recreate it, remove it first with \`make clean-venv'."; \
        else \
                echo "Creating venv in $(VENVDIR)"; \
-               $(PYTHON) -m venv $(VENVDIR); \
-               $(VENVDIR)/bin/python3 -m pip install --upgrade pip; \
-               $(VENVDIR)/bin/python3 -m pip install -r $(REQUIREMENTS); \
-               echo "The venv has been created in the $(VENVDIR) directory"; \
+               if uv --version > /dev/null; then \
+                       uv venv $(VENVDIR); \
+                       VIRTUAL_ENV=$(VENVDIR) uv pip install -r $(REQUIREMENTS); \
+               else \
+                       $(PYTHON) -m venv $(VENVDIR); \
+                       $(VENVDIR)/bin/python3 -m pip install --upgrade pip; \
+                       $(VENVDIR)/bin/python3 -m pip install -r $(REQUIREMENTS); \
+                       echo "The venv has been created in the $(VENVDIR) directory"; \
+               fi; \
        fi
 
 .PHONY: dist
@@ -235,9 +240,17 @@ dist:
        rm -r dist/python-$(DISTVERSION)-docs-texinfo
        rm dist/python-$(DISTVERSION)-docs-texinfo.tar
 
+define ensure_package
+       if uv --version > /dev/null; then \
+               $(VENVDIR)/bin/python3 -m $(1) --version > /dev/null || VIRTUAL_ENV=$(VENVDIR) uv pip install $(1); \
+       else \
+               $(VENVDIR)/bin/python3 -m $(1) --version > /dev/null || $(VENVDIR)/bin/python3 -m pip install $(1); \
+       fi
+endef
+
 .PHONY: check
 check: venv
-       $(VENVDIR)/bin/python3 -m pre_commit --version > /dev/null || $(VENVDIR)/bin/python3 -m pip install pre-commit
+       $(call ensure_package,pre_commit)
        $(VENVDIR)/bin/python3 -m pre_commit run --all-files
 
 .PHONY: serve