diff --git a/changes/2400.misc.rst b/changes/2400.misc.rst new file mode 100644 index 0000000000..7aa4d834bf --- /dev/null +++ b/changes/2400.misc.rst @@ -0,0 +1 @@ +The ``sphinx-autobuild`` tool can now be invoked via ``tox -e docs-live`` and ``tox -e docs-live-src``. diff --git a/tox.ini b/tox.ini index 74d3135ea8..2719930f89 100644 --- a/tox.ini +++ b/tox.ini @@ -16,54 +16,48 @@ allowlist_externals = bash commands = # TOGA_INSTALL_COMMAND is set to a bash command by the CI workflow. - {env:TOGA_INSTALL_COMMAND:python -m pip install .[dev] ../dummy} + {env:TOGA_INSTALL_COMMAND:python -m pip install .[dev] {tox_root}{/}dummy} {env:test_command_prefix:} coverage run -m pytest -vv {posargs} coverage combine - coverage report --rcfile ../pyproject.toml + coverage report --rcfile {tox_root}{/}pyproject.toml -[testenv:towncrier-check] -skip_install = True -deps = - {[testenv:towncrier]deps} -commands = - python -m towncrier.check --compare-with origin/main - -[testenv:towncrier] +[testenv:towncrier{,-check}] skip_install = True deps = towncrier ~= 22.8 - ./core + {tox_root}{/}core commands = - towncrier {posargs} + check : python -m towncrier.check --compare-with origin/main + !check : python -m towncrier {posargs} [docs] -build_dir = _build -# -W: make warnings into errors -# --keep-going: continue on errors -# -j: run with multiple processes -sphinx_args = -W --keep-going -j auto -# -v: verbose logging -# -E: force rebuild of environment -# -T: print traceback on error -# -a: read/parse all files -# -d: use tox's temp dir for caching -sphinx_args_extra = {[docs]sphinx_args} -v -E -T -a -d {envtmpdir}/doctrees +docs_dir = {tox_root}{/}docs +build_dir = {[docs]docs_dir}{/}_build +# replace when Sphinx>=7.3 and Python 3.8 is dropped: +# -T -> --show-traceback +# -W -> --fail-on-warning +# -b -> --builder +# -v -> --verbose +# -a -> --write-all +# -E -> --fresh-env +sphinx_args = -T -W --keep-going --jobs auto -[testenv:docs{,-lint,-all}] +[testenv:docs{,-lint,-all,-live,-live-src}] skip_install = True -change_dir = docs deps = - ./core[docs] + -e {tox_root}{/}core[docs] passenv = # On macOS M1, you need to manually set the location of the PyEnchant # library: # export PYENCHANT_LIBRARY_PATH=/opt/homebrew/lib/libenchant-2.2.dylib PYENCHANT_LIBRARY_PATH commands = - !lint-!all : python -m sphinx {[docs]sphinx_args} -b html . {[docs]build_dir}/html - lint : python -m sphinx {[docs]sphinx_args_extra} -b spelling . {[docs]build_dir}/spell - lint : python -m sphinx {[docs]sphinx_args_extra} -b linkcheck . {[docs]build_dir}/links - all : python -m sphinx {[docs]sphinx_args_extra} -b html . {[docs]build_dir}/html + !lint-!all-!live : python -m sphinx {[docs]sphinx_args} {posargs} -b html {[docs]docs_dir} {[docs]build_dir}{/}html + lint : python -m sphinx {[docs]sphinx_args} {posargs} -b spelling {[docs]docs_dir} {[docs]build_dir}{/}spell + lint : python -m sphinx {[docs]sphinx_args} {posargs} -b linkcheck {[docs]docs_dir} {[docs]build_dir}{/}links + all : python -m sphinx {[docs]sphinx_args} {posargs} -v -a -E -b html {[docs]docs_dir} {[docs]build_dir}{/}html + live-!src : sphinx-autobuild {[docs]sphinx_args} {posargs} -b html {[docs]docs_dir} {[docs]build_dir}{/}live + live-src : sphinx-autobuild {[docs]sphinx_args} {posargs} -a -E --watch {tox_root}{/}core{/}src{/}toga{/} -b html {[docs]docs_dir} {[docs]build_dir}{/}live [testenv:package] skip_install = True @@ -72,4 +66,4 @@ deps = twine==4.0.2 commands = python -m build {posargs} - python -m twine check {posargs}/dist/* + python -m twine check {posargs}{/}dist{/}*