From 01c0b70b9487a1988c2e1c71b10f92de1cae35c7 Mon Sep 17 00:00:00 2001 From: Russell Martin Date: Thu, 15 Feb 2024 20:36:12 -0500 Subject: [PATCH] Run `sphinx-autobuild` via `tox -e docs-live[-src]` --- changes/2400.misc.rst | 1 + tox.ini | 58 ++++++++++++++++++++----------------------- 2 files changed, 28 insertions(+), 31 deletions(-) create mode 100644 changes/2400.misc.rst 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..711763a62e 100644 --- a/tox.ini +++ b/tox.ini @@ -16,60 +16,56 @@ 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] + # editable install so docstrings can be updated for 'all' and 'live' + -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 +passenv = FORCE_COLOR deps = build==1.0.3 twine==4.0.2 commands = python -m build {posargs} - python -m twine check {posargs}/dist/* + python -m twine check {posargs}{/}dist{/}*