1- from datetime import datetime
1+ from functools import partial
22from pathlib import Path
33
44from sphinx_polyversion .api import apply_overrides
55from sphinx_polyversion .driver import DefaultDriver
6- from sphinx_polyversion .git import Git , GitRef , GitRefType , file_predicate , refs_by_type
6+ from sphinx_polyversion .git import Git , file_predicate , refs_by_type , closest_tag
77from sphinx_polyversion .pyvenv import Pip
88from sphinx_polyversion .sphinx import SphinxBuilder , Placeholder
99
10- #: Regex matching the branches to build docs for
11- BRANCH_REGEX = r"master-doctest "
10+ #: CodeRegex matching the branches to build docs for
11+ BRANCH_REGEX = r"(doc-polyversion) "
1212
1313#: Regex matching the tags to build docs for
14- TAG_REGEX = r"v1.1.6"
14+ TAG_REGEX = r"v1.1.6.1 "
1515
1616#: Output dir relative to project root
1717OUTPUT_DIR = "_polybuild"
1818
1919#: Source directory
2020SOURCE_DIR = "docsrc/"
2121
22- #: Arguments to pass to `pip install`
23- POETRY_ARGS = "bayesflow"
24-
2522#: Arguments to pass to `sphinx-build`
2623SPHINX_ARGS = "-a -v"
2724
28- #: Mock data used for building local version
29- MOCK_DATA = {
30- "revisions" : [
31- GitRef ("v1.1.6" , "" , "" , GitRefType .TAG , datetime .fromtimestamp (0 )),
32- GitRef ("master-doctest" , "" , "" , GitRefType .BRANCH , datetime .fromtimestamp (3 )),
33- ],
34- "current" : GitRef ("master-doctest" , "" , "" , GitRefType .TAG , datetime .fromtimestamp (6 )),
35- }
25+ #: Extra packages for building docs
26+ SPHINX_DEPS = [
27+ "sphinx" ,
28+ "numpydoc" ,
29+ "myst-nb" ,
30+ "sphinx_design" ,
31+ "sphinx-book-theme" ,
32+ "sphinxcontrib-bibtex" ,
33+ "sphinx-polyversion==1.0.0" ,
34+ ]
35+
36+ BACKEND_DEPS = [
37+ "jax" ,
38+ "torch" ,
39+ "tensorflow" ,
40+ ]
3641
3742
3843#: Data passed to templates
@@ -60,7 +65,19 @@ def root_data(driver):
6065apply_overrides (globals ())
6166# Determine repository root directory
6267root = Git .root (Path (__file__ ).parent )
63- print ("root" , root )
68+
69+
70+ async def selector (f , a , b ):
71+ return a .name
72+
73+
74+ # Setup environments for the different versions
75+
76+ ENVIRONMENT = {
77+ None : Pip .factory (venv = Path (".venv" ), args = ["-vv" , "bayesflow==1.1.6" ] + SPHINX_DEPS ),
78+ "doc-polyversion" : Pip .factory (venv = Path (".venv/dev" ), args = ["-vv" , "-e" , "." ] + SPHINX_DEPS + BACKEND_DEPS ),
79+ "v1.1.6" : Pip .factory (venv = Path (".venv/v1.1.6" ), args = ["-vv" , "bayesflow==1.1.6" ] + SPHINX_DEPS ),
80+ }
6481
6582# Setup driver and run it
6683src = Path (SOURCE_DIR )
@@ -74,9 +91,12 @@ def root_data(driver):
7491 predicate = file_predicate ([src ]), # exclude refs without source dir
7592 ),
7693 builder = SphinxBuilder (
77- src / "source" , args = SPHINX_ARGS .split (), pre_cmd = ["python" , "pre-build.py" , Placeholder .SOURCE_DIR ]
94+ src / "source" ,
95+ args = SPHINX_ARGS .split (),
96+ pre_cmd = ["python" , root / src / "pre-build.py" , Placeholder .SOURCE_DIR ],
7897 ),
79- env = Pip .factory (args = POETRY_ARGS .split (), venv = "buildvenv" ),
98+ env = ENVIRONMENT ,
99+ selector = partial (selector , partial (closest_tag , root )),
80100 template_dir = root / src / "polyversion/templates" ,
81101 static_dir = root / src / "polyversion/static" ,
82102 data_factory = data ,
0 commit comments