diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 55230e6b..b19980a6 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 3.8.2
+current_version = 4.0.0
commit = True
tag = True
diff --git a/.github/workflows/conda_ci.yml b/.github/workflows/conda_ci.yml
index fe2abc65..1e82964b 100644
--- a/.github/workflows/conda_ci.yml
+++ b/.github/workflows/conda_ci.yml
@@ -58,7 +58,7 @@ jobs:
- name: "Install package"
run: |
- $CONDA/bin/conda install -c file://$(pwd)/conda-bld sphinx-toolbox=3.8.2=py_1 -y || exit 1
+ $CONDA/bin/conda install -c file://$(pwd)/conda-bld sphinx-toolbox=4.0.0=py_1 -y || exit 1
- name: "Run Tests"
run: |
diff --git a/.github/workflows/flake8.yml b/.github/workflows/flake8.yml
index 0a8c0c3e..af1b3940 100644
--- a/.github/workflows/flake8.yml
+++ b/.github/workflows/flake8.yml
@@ -16,7 +16,7 @@ permissions:
jobs:
Run:
name: "Flake8"
- runs-on: "ubuntu-20.04"
+ runs-on: "ubuntu-22.04"
steps:
- name: Checkout 🛎️
diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index 10c6f300..df78eb0e 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -20,7 +20,7 @@ jobs:
strategy:
matrix:
- os: ['ubuntu-20.04', 'windows-2019']
+ os: ['ubuntu-22.04', 'windows-2022']
fail-fast: false
steps:
diff --git a/.github/workflows/python_ci.yml b/.github/workflows/python_ci.yml
index 0154c4e4..2a949daa 100644
--- a/.github/workflows/python_ci.yml
+++ b/.github/workflows/python_ci.yml
@@ -18,8 +18,8 @@ permissions:
jobs:
tests:
- name: "windows-2019 / Python ${{ matrix.config.python-version }}"
- runs-on: "windows-2019"
+ name: "windows-2022 / Python ${{ matrix.config.python-version }}"
+ runs-on: "windows-2022"
continue-on-error: ${{ matrix.config.experimental }}
env:
USING_COVERAGE: '3.7,3.8,3.9,3.10,3.11,3.12,3.13,pypy-3.7,pypy-3.8,pypy-3.9'
@@ -31,10 +31,10 @@ jobs:
- {python-version: "3.7", testenvs: "py37-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
- {python-version: "3.8", testenvs: "py38-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
- {python-version: "3.9", testenvs: "py39-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: False}
- - {python-version: "3.10", testenvs: "py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.11", testenvs: "py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.12", testenvs: "py312-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.13", testenvs: "py313-dev-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: True}
+ - {python-version: "3.10", testenvs: "py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1},build", experimental: False}
+ - {python-version: "3.11", testenvs: "py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
+ - {python-version: "3.12", testenvs: "py312-sphinx{4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
+ - {python-version: "3.13", testenvs: "py313-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
- {python-version: "pypy-3.7", testenvs: "pypy37-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
- {python-version: "pypy-3.8", testenvs: "pypy38-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
- {python-version: "pypy-3.9-v7.3.15", testenvs: "pypy39-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: True}
@@ -78,3 +78,4 @@ jobs:
with:
name: "coverage-${{ matrix.config.python-version }}"
path: .coverage
+ include-hidden-files: true
diff --git a/.github/workflows/python_ci_linux.yml b/.github/workflows/python_ci_linux.yml
index 3f5e27cc..5ec9af63 100644
--- a/.github/workflows/python_ci_linux.yml
+++ b/.github/workflows/python_ci_linux.yml
@@ -19,8 +19,8 @@ permissions:
jobs:
tests:
- name: "ubuntu-20.04 / Python ${{ matrix.config.python-version }}"
- runs-on: "ubuntu-20.04"
+ name: "ubuntu-22.04 / Python ${{ matrix.config.python-version }}"
+ runs-on: "ubuntu-22.04"
continue-on-error: ${{ matrix.config.experimental }}
env:
USING_COVERAGE: '3.7,3.8,3.9,3.10,3.11,3.12,3.13,pypy-3.7,pypy-3.8,pypy-3.9'
@@ -32,10 +32,10 @@ jobs:
- {python-version: "3.7", testenvs: "py37-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
- {python-version: "3.8", testenvs: "py38-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
- {python-version: "3.9", testenvs: "py39-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: False}
- - {python-version: "3.10", testenvs: "py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.11", testenvs: "py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.12", testenvs: "py312-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.13", testenvs: "py313-dev-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: True}
+ - {python-version: "3.10", testenvs: "py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1},build", experimental: False}
+ - {python-version: "3.11", testenvs: "py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
+ - {python-version: "3.12", testenvs: "py312-sphinx{4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
+ - {python-version: "3.13", testenvs: "py313-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
- {python-version: "pypy-3.7", testenvs: "pypy37-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
- {python-version: "pypy-3.8", testenvs: "pypy38-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
- {python-version: "pypy-3.9", testenvs: "pypy39-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: True}
@@ -80,11 +80,12 @@ jobs:
with:
name: "coverage-${{ matrix.config.python-version }}"
path: .coverage
+ include-hidden-files: true
Coverage:
needs: tests
- runs-on: "ubuntu-20.04"
+ runs-on: "ubuntu-22.04"
steps:
- name: Checkout 🛎️
uses: "actions/checkout@v4"
@@ -122,6 +123,7 @@ jobs:
with:
name: "combined-coverage"
path: .coverage
+ include-hidden-files: true
- name: "Upload Combined Coverage to Coveralls"
if: ${{ steps.show.outcome != 'failure' }}
@@ -133,7 +135,7 @@ jobs:
Deploy:
needs: tests
- runs-on: "ubuntu-20.04"
+ runs-on: "ubuntu-22.04"
steps:
- name: Checkout 🛎️
uses: "actions/checkout@v4"
@@ -207,6 +209,7 @@ jobs:
$CONDA/bin/conda config --set always_yes yes --set changeps1 no
$CONDA/bin/conda update -n base conda
$CONDA/bin/conda info -a
+ $CONDA/bin/conda install conda-forge::py-lief=0.14.1
$CONDA/bin/conda config --add channels conda-forge
$CONDA/bin/conda config --add channels domdfcoding
diff --git a/.github/workflows/python_ci_macos.yml b/.github/workflows/python_ci_macos.yml
index 09f5af5b..a81ed7a4 100644
--- a/.github/workflows/python_ci_macos.yml
+++ b/.github/workflows/python_ci_macos.yml
@@ -18,8 +18,8 @@ permissions:
jobs:
tests:
- name: "macos-13 / Python ${{ matrix.config.python-version }}"
- runs-on: "macos-13"
+ name: "macos-${{ matrix.config.os-ver }} / Python ${{ matrix.config.python-version }}"
+ runs-on: "macos-${{ matrix.config.os-ver }}"
continue-on-error: ${{ matrix.config.experimental }}
env:
USING_COVERAGE: '3.7,3.8,3.9,3.10,3.11,3.12,3.13,pypy-3.7,pypy-3.8,pypy-3.9'
@@ -28,16 +28,16 @@ jobs:
fail-fast: False
matrix:
config:
- - {python-version: "3.7", testenvs: "py37-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
- - {python-version: "3.8", testenvs: "py38-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
- - {python-version: "3.9", testenvs: "py39-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: False}
- - {python-version: "3.10", testenvs: "py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.11", testenvs: "py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.12", testenvs: "py312-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: False}
- - {python-version: "3.13", testenvs: "py313-dev-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0},build", experimental: True}
- - {python-version: "pypy-3.7", testenvs: "pypy37-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
- - {python-version: "pypy-3.8", testenvs: "pypy38-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
- - {python-version: "pypy-3.9", testenvs: "pypy39-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: True}
+ - {python-version: "3.7", os-ver: "13", testenvs: "py37-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
+ - {python-version: "3.8", os-ver: "14", testenvs: "py38-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
+ - {python-version: "3.9", os-ver: "14", testenvs: "py39-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: False}
+ - {python-version: "3.10", os-ver: "14", testenvs: "py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1},build", experimental: False}
+ - {python-version: "3.11", os-ver: "14", testenvs: "py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
+ - {python-version: "3.12", os-ver: "14", testenvs: "py312-sphinx{4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
+ - {python-version: "3.13", os-ver: "14", testenvs: "py313-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2},build", experimental: False}
+ - {python-version: "pypy-3.7", os-ver: "13", testenvs: "pypy37-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
+ - {python-version: "pypy-3.8", os-ver: "14", testenvs: "pypy38-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1},build", experimental: False}
+ - {python-version: "pypy-3.9", os-ver: "14", testenvs: "pypy39-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4},build", experimental: True}
steps:
- name: Checkout 🛎️
@@ -78,3 +78,4 @@ jobs:
with:
name: "coverage-${{ matrix.config.python-version }}"
path: .coverage
+ include-hidden-files: true
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index afdbd3fc..f18ff793 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -8,7 +8,7 @@ ci:
repos:
- repo: https://github.com/repo-helper/pyproject-parser
- rev: v0.11.1
+ rev: v0.13.0
hooks:
- id: reformat-pyproject
diff --git a/.readthedocs.yml b/.readthedocs.yml
index 6228096d..9b98a4d1 100644
--- a/.readthedocs.yml
+++ b/.readthedocs.yml
@@ -14,7 +14,7 @@ python:
- requirements: doc-source/requirements.txt
- requirements: doc-source/rtd-extra-deps.txt
build:
- os: ubuntu-20.04
+ os: ubuntu-22.04
tools:
python: '3.9'
jobs:
diff --git a/README.rst b/README.rst
index 8726af9f..16350b21 100644
--- a/README.rst
+++ b/README.rst
@@ -101,7 +101,7 @@ sphinx-toolbox
.. |language| image:: https://img.shields.io/github/languages/top/sphinx-toolbox/sphinx-toolbox
:alt: GitHub top language
-.. |commits-since| image:: https://img.shields.io/github/commits-since/sphinx-toolbox/sphinx-toolbox/v3.8.2
+.. |commits-since| image:: https://img.shields.io/github/commits-since/sphinx-toolbox/sphinx-toolbox/v4.0.0
:target: https://github.com/sphinx-toolbox/sphinx-toolbox/pulse
:alt: GitHub commits since tagged version
@@ -109,7 +109,7 @@ sphinx-toolbox
:target: https://github.com/sphinx-toolbox/sphinx-toolbox/commit/master
:alt: GitHub last commit
-.. |maintained| image:: https://img.shields.io/maintenance/yes/2024
+.. |maintained| image:: https://img.shields.io/maintenance/yes/2025
:alt: Maintenance
.. |pypi-downloads| image:: https://img.shields.io/pypi/dm/sphinx-toolbox
diff --git a/doc-source/changelog.rst b/doc-source/changelog.rst
index 34bf5c19..51ade85d 100644
--- a/doc-source/changelog.rst
+++ b/doc-source/changelog.rst
@@ -2,6 +2,43 @@
Changelog
===============
+4.0.0
+----------------------
+
+The :mod:`sphinx_toolbox.source` module no longer enables the :mod:`sphinx_toolbox.github` extension automatically.
+If you have :confval:`source_link_target` set to ``'GitHub'`` you may need to enable the extension manually.
+
+
+3.10.0
+----------------------
+
+Allow GitHub branch to be specified for :rst:dir:`installation` directive.
+
+
+3.9.0
+----------------------
+
+Improved support for Sphinx 8.1+
+
+
+3.8.2
+----------------------
+
+(BUG) Fix GitHub issue title parsing.
+
+3.8.0
+----------------------
+
+Improved support for Sphinx 7.3+
+
+
+3.7.0
+----------------------
+
+* Add :class:`sphinx_toolbox.more_autodoc.variables.PropertyDocumenter`.
+* Use sphinx's ``HTML5Translator`` over ``HTMLTranslator``.
+
+
3.6.0
----------------------
diff --git a/doc-source/index.rst b/doc-source/index.rst
index d5e8d8aa..c1c337f7 100644
--- a/doc-source/index.rst
+++ b/doc-source/index.rst
@@ -107,14 +107,14 @@ sphinx-toolbox
:alt: GitHub top language
.. |commits-since| github-shield::
- :commits-since: v3.8.2
+ :commits-since: v4.0.0
:alt: GitHub commits since tagged version
.. |commits-latest| github-shield::
:last-commit:
:alt: GitHub last commit
- .. |maintained| maintained-shield:: 2024
+ .. |maintained| maintained-shield:: 2025
:alt: Maintenance
.. |pypi-downloads| pypi-shield::
diff --git a/pyproject.toml b/pyproject.toml
index ec38e75e..ee7227c7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "whey"
[project]
name = "sphinx-toolbox"
-version = "3.8.2"
+version = "4.0.0"
description = "Box of handy tools for Sphinx 🧰 📔"
readme = "README.rst"
keywords = [ "documentation", "sphinx", "sphinx-extension",]
@@ -39,7 +39,7 @@ base-classifiers = [
"Topic :: Utilities",
"Typing :: Typed",
]
-python-versions = [ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12",]
+python-versions = [ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13",]
python-implementations = [ "CPython", "PyPy",]
platforms = [ "Windows", "macOS", "Linux",]
license-key = "MIT"
diff --git a/repo_helper.yml b/repo_helper.yml
index 6f8378f9..23731a23 100644
--- a/repo_helper.yml
+++ b/repo_helper.yml
@@ -7,7 +7,7 @@ email: 'dominic@davis-foster.co.uk'
username: 'sphinx-toolbox'
assignee: 'domdfcoding'
primary_conda_channel: 'domdfcoding'
-version: '3.8.2'
+version: '4.0.0'
license: 'MIT'
short_desc: 'Box of handy tools for Sphinx 🧰 📔'
@@ -35,6 +35,8 @@ python_versions:
- 7.3
- 7.4
- 8.0
+ - 8.1
+ - 8.2
- latest
3.8:
matrix_exclude:
@@ -43,15 +45,32 @@ python_versions:
- 7.3
- 7.4
- 8.0
+ - 8.1
+ - 8.2
- latest
3.9:
matrix_exclude:
sphinx:
- 8.0
+ - 8.1
+ - 8.2
"3.10":
+ matrix_exclude:
+ sphinx:
+ - 8.2
"3.11":
"3.12":
- 3.13-dev:
+ matrix_exclude:
+ sphinx:
+ - 3.2
+ - 3.3
+ - 3.4
+ - 3.5
+ - 4.0
+ - 4.1
+ - 4.2
+ - 4.3
+ "3.13":
matrix_exclude:
sphinx:
- 3.2
@@ -89,6 +108,8 @@ python_versions:
- 7.3
- 7.4
- 8.0
+ - 8.1
+ - 8.2
- latest
pypy38:
matrix_exclude:
@@ -104,6 +125,8 @@ python_versions:
- 7.3
- 7.4
- 8.0
+ - 8.1
+ - 8.2
- latest
pypy39:
matrix_exclude:
@@ -116,6 +139,8 @@ python_versions:
- 4.1
- 4.2
- 8.0
+ - 8.1
+ - 8.2
- latest
additional_ignore:
@@ -137,10 +162,6 @@ extra_sphinx_extensions:
- sphinx_toolbox.latex.succinct_seealso
- sphinx_toolbox.more_autosummary.column_widths
-tox_unmanaged:
- - pytest
- - testenv
-
sphinx_conf_epilogue:
- html_logo = "../sphinx_toolbox.png"
- toctree_plus_types.add("fixture")
@@ -180,6 +201,8 @@ third_party_version_matrix:
- 7.3
- 7.4
- 8.0
+ - 8.1
+ - 8.2
# - latest
classifiers:
@@ -201,3 +224,4 @@ intersphinx_mapping:
exclude_files:
- contributing
- doc_requirements
+ - tox
diff --git a/sphinx_toolbox/__init__.py b/sphinx_toolbox/__init__.py
index f9a682d8..cb6487e0 100644
--- a/sphinx_toolbox/__init__.py
+++ b/sphinx_toolbox/__init__.py
@@ -57,7 +57,7 @@
__author__: str = "Dominic Davis-Foster"
__copyright__: str = "2020 Dominic Davis-Foster"
__license__: str = "MIT License"
-__version__: str = "3.8.2"
+__version__: str = "4.0.0"
__email__: str = "dominic@davis-foster.co.uk"
__all__ = ("setup", )
diff --git a/sphinx_toolbox/installation.py b/sphinx_toolbox/installation.py
index 8f4e9ebf..e8c54f01 100644
--- a/sphinx_toolbox/installation.py
+++ b/sphinx_toolbox/installation.py
@@ -62,6 +62,18 @@
Flag to indicate the project can be installed from GitHub.
+ The branch name defaults to ``master``, but a different branch name or a tag can be specified as follows:
+
+ .. code-block:: rst
+
+ .. installation: foo
+ :github: dev
+
+ .. installation: bar
+ :github: v1.2.3
+
+ .. versionchanged:: 3.10.0 Allow branch name to be specified.
+
To use this option add the following to your ``conf.py``:
.. code-block:: python
@@ -377,7 +389,14 @@ def conda_installation(
return list(lines)
-@sources.register("github", "GitHub", flag)
+def _validate_github_branch(branch: Optional[str]) -> str:
+ if isinstance(branch, str):
+ return str(branch)
+ else:
+ return "master"
+
+
+@sources.register("github", "GitHub", _validate_github_branch)
def github_installation(
options: Dict[str, Any],
env: sphinx.environment.BuildEnvironment,
@@ -403,10 +422,12 @@ def github_installation(
if repository is None:
raise ValueError("'github_repository' has not been set in 'conf.py'!")
+ branch = options.get("github", "master")
+
return [
".. prompt:: bash",
'',
- f" python3 -m pip install git+https://github.com/{username}/{repository}@master --user"
+ f" python3 -m pip install git+https://github.com/{username}/{repository}@{branch} --user"
]
@@ -531,15 +552,20 @@ def make_installation_instructions(options: Dict[str, Any], env: BuildEnvironmen
warnings.warn("No installation source specified. No installation instructions will be shown.")
return []
- content = StringList([".. tabs::", ''])
+ content = StringList([
+ ".. container:: st-installation",
+ '',
+ " .. tabs::",
+ '',
+ ])
content.set_indent_type(" ")
for tab_name, tab_content in tabs.items():
- with content.with_indent_size(1):
+ with content.with_indent_size(2):
content.append(f".. tab:: {tab_name}")
content.blankline(ensure_single=True)
- with content.with_indent_size(2):
+ with content.with_indent_size(3):
content.extend([f"{line}" if line else '' for line in tab_content]) # pylint: disable=loop-invariant-statement
return list(content)
@@ -683,7 +709,7 @@ def copy_asset_files(app: Sphinx, exception: Optional[Exception] = None) -> None
" const parent = target.parentNode;",
" const grandparent = parent.parentNode;",
'',
- ' if (parent.parentNode.parentNode.getAttribute("id").startsWith("installation")) {',
+ ' if (grandparent.parentNode.classList.contains("st-installation")) {',
'',
" // Hide all tabs in current tablist, but not nested",
" Array.from(parent.children).forEach(t => {",
diff --git a/sphinx_toolbox/more_autodoc/autotypeddict.py b/sphinx_toolbox/more_autodoc/autotypeddict.py
index b39c40ca..15696fa4 100644
--- a/sphinx_toolbox/more_autodoc/autotypeddict.py
+++ b/sphinx_toolbox/more_autodoc/autotypeddict.py
@@ -320,7 +320,47 @@ def document_members(self, all_members: bool = False) -> None:
Generate reST for member documentation. All members are always documented.
"""
- super().document_members(True)
+ if sphinx.version_info >= (8, 2):
+ # set current namespace for finding members
+ self._current_document.autodoc_module = self.modname # type: ignore[attr-defined]
+ if self.objpath:
+ self._current_document.autodoc_class = self.objpath[0] # type: ignore[attr-defined]
+
+ # find out which members are documentable
+ members_check_module, members = self.get_object_members(True)
+
+ # document non-skipped members
+ member_documenters: List[Tuple[Documenter, bool]] = []
+ for mname, member, isattr in self.filter_members(members, True):
+ classes = [
+ cls for cls in self.documenters.values()
+ if cls.can_document_member(member, mname, isattr, self)
+ ]
+ if not classes:
+ # don't know how to document this member
+ continue
+ # prefer the documenter with the highest priority
+ classes.sort(key=lambda cls: cls.priority)
+ # give explicitly separated module name, so that members
+ # of inner classes can be documented
+ full_mname = f'{self.modname}::' + '.'.join((*self.objpath, mname))
+ documenter = classes[-1](self.directive, full_mname, self.indent)
+ member_documenters.append((documenter, isattr))
+
+ member_order = self.options.member_order or self.config.autodoc_member_order
+ member_documenters = self.sort_members(member_documenters, member_order)
+
+ for documenter, isattr in member_documenters:
+ documenter.generate(
+ all_members=True,
+ real_modname=self.real_modname,
+ check_module=members_check_module and not isattr,
+ )
+
+ if sphinx.version_info >= (8, 2):
+ # reset current objects
+ self._current_document.autodoc_module = '' # type: ignore[attr-defined]
+ self._current_document.autodoc_class = '' # type: ignore[attr-defined]
def sort_members(
self,
diff --git a/sphinx_toolbox/more_autodoc/typehints.py b/sphinx_toolbox/more_autodoc/typehints.py
index edc32931..2b0a4997 100644
--- a/sphinx_toolbox/more_autodoc/typehints.py
+++ b/sphinx_toolbox/more_autodoc/typehints.py
@@ -182,6 +182,9 @@ def setup(app: Sphinx) -> Dict[str, Any]:
from sphinx_autodoc_typehints import _LOGGER as sat_logger
from sphinx_autodoc_typehints import _PYDATA_ANNOTATIONS as pydata_annotations
+if isinstance(next(iter(pydata_annotations)), tuple):
+ pydata_annotations = {x[1] for x in pydata_annotations}
+
try:
# 3rd party
from sphinx_autodoc_typehints import _future_annotations_imported
@@ -904,7 +907,7 @@ def setup(app: Sphinx) -> SphinxExtMetadata:
def _resolve_forwardref(
- fr: Union[ForwardRef, sphinx.util.typing.ForwardRef],
+ fr: Union[ForwardRef, "sphinx.util.typing.ForwardRef"],
module: str,
) -> object:
"""
diff --git a/sphinx_toolbox/more_autodoc/variables.py b/sphinx_toolbox/more_autodoc/variables.py
index 7d965388..731ea1a7 100644
--- a/sphinx_toolbox/more_autodoc/variables.py
+++ b/sphinx_toolbox/more_autodoc/variables.py
@@ -657,12 +657,17 @@ def import_object(self, raiseerror: bool = False) -> bool:
with mock(self.env.config.autodoc_mock_imports):
try:
+ if sphinx.version_info >= (8, 1):
+ kwargs = {}
+ else:
+ kwargs = {"warningiserror": self.env.config.autodoc_warningiserror}
+
ret = import_object(
self.modname,
self.objpath[:-1],
"class",
attrgetter=self.get_attr,
- warningiserror=self.env.config.autodoc_warningiserror
+ **kwargs,
)
self.module, _, _, self.parent = ret
return True
diff --git a/sphinx_toolbox/more_autosummary/__init__.py b/sphinx_toolbox/more_autosummary/__init__.py
index 5434827f..4799240f 100644
--- a/sphinx_toolbox/more_autosummary/__init__.py
+++ b/sphinx_toolbox/more_autosummary/__init__.py
@@ -317,29 +317,71 @@ def import_by_name(self, name: str, prefixes: List[Optional[str]]) -> Tuple[str,
real_name = re.sub(rf"((?:{modname}\.)+)", f"{modname}.", real_name)
return real_name, obj, parent, modname
- def create_documenter(
+ if sphinx.version_info >= (8, 2):
+
+ def create_documenter( # type: ignore[override]
+ self,
+ obj: Any,
+ parent: Any,
+ full_name: str,
+ *,
+ registry: Any = None,
+ ) -> Documenter:
+ """
+ Get an :class:`autodoc.Documenter` class suitable for documenting the given object.
+
+ :param app: The Sphinx application.
+ :param obj: The object being documented.
+ :param parent: The parent of the object (e.g. a module or a class).
+ :param full_name: The full name of the object.
+ :param registry:
+
+ .. versionchanged:: 1.3.0
+
+ Now selects the appropriate documenter for attributes rather than
+ falling back to :class:`~sphinx.ext.autodoc.DataDocumenter`.
+
+ .. versionchanged:: 3.9.0
+
+ Function arguments now mirror those from Sphinx 8.2 or
+ older versions depending on the Sphinx version installed.
+ """
+
+ # 3rd party
+ from sphinx.ext.autosummary import _get_documenter # type: ignore[attr-defined]
+ doccls = _get_documenter(obj, parent, registry=registry)
+ return doccls(self.bridge, full_name)
+
+ else:
+
+ def create_documenter( # type: ignore[misc]
self,
app: Sphinx,
obj: Any,
parent: Any,
full_name: str,
) -> Documenter:
- """
- Get an :class:`autodoc.Documenter` class suitable for documenting the given object.
+ """
+ Get an :class:`autodoc.Documenter` class suitable for documenting the given object.
- :param app: The Sphinx application.
- :param obj: The object being documented.
- :param parent: The parent of the object (e.g. a module or a class).
- :param full_name: The full name of the object.
+ :param app: The Sphinx application.
+ :param obj: The object being documented.
+ :param parent: The parent of the object (e.g. a module or a class).
+ :param full_name: The full name of the object.
- .. versionchanged:: 1.3.0
+ .. versionchanged:: 1.3.0
- Now selects the appropriate documenter for attributes rather than
- falling back to :class:`~sphinx.ext.autodoc.DataDocumenter`.
- """
+ Now selects the appropriate documenter for attributes rather than
+ falling back to :class:`~sphinx.ext.autodoc.DataDocumenter`.
+
+ .. versionchanged:: 3.9.0
+
+ Function arguments now mirror those from Sphinx 8.2 or
+ older versions depending on the Sphinx version installed.
+ """
- doccls = get_documenter(app, obj, parent)
- return doccls(self.bridge, full_name)
+ doccls = get_documenter(app, obj, parent)
+ return doccls(self.bridge, full_name)
def get_table(self, items: List[Tuple[str, str, str, str]]) -> List[nodes.Node]:
"""
diff --git a/sphinx_toolbox/source.py b/sphinx_toolbox/source.py
index 6c062f74..4d43fec5 100644
--- a/sphinx_toolbox/source.py
+++ b/sphinx_toolbox/source.py
@@ -10,6 +10,12 @@
function signatures, checkout :mod:`sphinx.ext.linkcode` and :mod:`sphinx.ext.viewcode`.
+.. versionchanged:: 4.0.0
+
+ The :mod:`sphinx_toolbox.source` module no longer enables the :mod:`sphinx_toolbox.github` extension automatically.
+ If you have :confval:`source_link_target` set to ``'GitHub'`` you may need to enable the extension manually.
+
+
Usage
-------
@@ -21,6 +27,11 @@
The target of the source link, either ``'GitHub'`` or ``'Sphinx'``.
Case insensitive.
+ .. note::
+
+ The ``'GitHub'`` source option requires the :mod:`sphinx_toolbox.github` extension to be enabled in your ``conf.py`` file,
+ and its :confval:`github_username` and :confval:`github_repository` options set.
+ See that extension's documentation for more details.
.. rst:role:: source
@@ -259,6 +270,6 @@ def setup(app: Sphinx) -> SphinxExtMetadata:
app.add_config_value("source_link_target", "Sphinx", "env", types=[str])
app.connect("config-inited", _configure)
- app.setup_extension("sphinx_toolbox.github")
+ # app.setup_extension("sphinx_toolbox.github")
return {"parallel_read_safe": True}
diff --git a/sphinx_toolbox/testing.py b/sphinx_toolbox/testing.py
index 17ce3817..2eaeb204 100644
--- a/sphinx_toolbox/testing.py
+++ b/sphinx_toolbox/testing.py
@@ -748,7 +748,13 @@ def test_page(page: BeautifulSoup, html_regression: HTMLRegressionFixture):
for div in page.select("div.sphinxsidebar"):
div.extract()
+ for div in page.select("div.related"):
+ if div["aria-label"] == "Related":
+ div.extract()
+
if sphinx.version_info >= (4, 3): # pragma: no cover
+ for div in page.select("dt.sig em.property span.k"):
+ div.replace_with_children()
for div in page.select("span.w"):
div.extract()
for div in page.select("span.p"):
diff --git a/tests/common.py b/tests/common.py
index b4db5421..0a139e68 100644
--- a/tests/common.py
+++ b/tests/common.py
@@ -1,5 +1,6 @@
# stdlib
from http import HTTPStatus
+from types import SimpleNamespace
from typing import Any, Dict, NamedTuple, Sequence, Tuple
# 3rd party
@@ -30,10 +31,18 @@ class AppParams(NamedTuple):
def get_app_config_values(config: Any) -> Tuple[str, str, Any]:
if sphinx.version_info >= (7, 3):
- # valid_types =
valid_types = config.valid_types
- if isinstance(valid_types, (set, frozenset)):
- valid_types = list(valid_types)
- return (config.default, config.rebuild, valid_types)
+ default = config.default
+ rebuild = config.rebuild
else:
- return config
+ default, rebuild, valid_types = config
+
+ if isinstance(valid_types, (set, frozenset, tuple, list)):
+ valid_types = sorted(valid_types)
+
+ if hasattr(valid_types, "_candidates"):
+ new_valid_types = SimpleNamespace()
+ new_valid_types.candidates = sorted(valid_types._candidates)
+ valid_types = new_valid_types
+
+ return (default, rebuild, valid_types)
diff --git a/tests/test_autosummary_widths_/test_latex_output.tex b/tests/test_autosummary_widths_/test_latex_output.tex
index 8a8fc4cc..0dbfcb07 100644
--- a/tests/test_autosummary_widths_/test_latex_output.tex
+++ b/tests/test_autosummary_widths_/test_latex_output.tex
@@ -14,6 +14,7 @@
<%- macro sphinx6x_2nd(char) -%>
<% if (7, 2) > sphinx_version >= (6, 2) %>,<
-
+ {% if sphinx_version >= (8, 1) %}
+
missing.txt
- + {% if sphinx_version >= (8, 1) %} +
+
int
@@ -359,7 +359,7 @@
(
-
+
int
@@ -466,7 +466,7 @@
(
-
+
int
@@ -683,7 +683,7 @@
(
-
+
int
@@ -793,7 +793,7 @@
(
-
+
int
@@ -943,7 +943,9 @@
attribute.
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_autonamedtuple_pep563_.html b/tests/test_output/test_output_/test_html_output_autonamedtuple_pep563_.html
index 21ff1ae4..b39f2e46 100644
--- a/tests/test_output/test_output_/test_html_output_autonamedtuple_pep563_.html
+++ b/tests/test_output/test_output_/test_html_output_autonamedtuple_pep563_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -141,7 +141,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_autoprotocol_html_.html b/tests/test_output/test_output_/test_html_output_autoprotocol_html_.html
index b1a9d5a9..0c89f228 100644
--- a/tests/test_output/test_output_/test_html_output_autoprotocol_html_.html
+++ b/tests/test_output/test_output_/test_html_output_autoprotocol_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -482,7 +482,7 @@
-
- abstract
+ abstract{% if sphinx_version >= (8, 2) %}method{% endif %}
<{{ sig_prename_tag }} class="sig-name descname">
__abs__
@@ -524,7 +524,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_autotypeddict_html_.html b/tests/test_output/test_output_/test_html_output_autotypeddict_html_.html
index 6dc58c14..8ae66de5 100644
--- a/tests/test_output/test_output_/test_html_output_autotypeddict_html_.html
+++ b/tests/test_output/test_output_/test_html_output_autotypeddict_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -597,7 +597,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_changeset_html_.html b/tests/test_output/test_output_/test_html_output_changeset_html_.html
index 951fa847..02124478 100644
--- a/tests/test_output/test_output_/test_html_output_changeset_html_.html
+++ b/tests/test_output/test_output_/test_html_output_changeset_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -175,7 +175,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_code_block_html_.html b/tests/test_output/test_output_/test_html_output_code_block_html_.html
index f4fc434e..7d6de70e 100644
--- a/tests/test_output/test_output_/test_html_output_code_block_html_.html
+++ b/tests/test_output/test_output_/test_html_output_code_block_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -136,7 +136,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_collapse_html_.html b/tests/test_output/test_output_/test_html_output_collapse_html_.html
index 1115e1a0..cdafe3e8 100644
--- a/tests/test_output/test_output_/test_html_output_collapse_html_.html
+++ b/tests/test_output/test_output_/test_html_output_collapse_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -64,7 +64,9 @@
The text should be visible when the page loads.
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_confval_html_.html b/tests/test_output/test_output_/test_html_output_confval_html_.html
index 1e8dbc4f..6ed5538d 100644
--- a/tests/test_output/test_output_/test_html_output_confval_html_.html
+++ b/tests/test_output/test_output_/test_html_output_confval_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -270,7 +270,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_decorators_html_.html b/tests/test_output/test_output_/test_html_output_decorators_html_.html
index f12597b6..fa9ec2f4 100644
--- a/tests/test_output/test_output_/test_html_output_decorators_html_.html
+++ b/tests/test_output/test_output_/test_html_output_decorators_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -87,7 +87,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_documentation_summary_html_.html b/tests/test_output/test_output_/test_html_output_documentation_summary_html_.html
index 99365af8..0e6ad805 100644
--- a/tests/test_output/test_output_/test_html_output_documentation_summary_html_.html
+++ b/tests/test_output/test_output_/test_html_output_documentation_summary_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -49,7 +49,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_documentation_summary_meta_html_.html b/tests/test_output/test_output_/test_html_output_documentation_summary_meta_html_.html
index 59d37e40..0b976033 100644
--- a/tests/test_output/test_output_/test_html_output_documentation_summary_meta_html_.html
+++ b/tests/test_output/test_output_/test_html_output_documentation_summary_meta_html_.html
@@ -22,7 +22,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -52,7 +52,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_example_html_.html b/tests/test_output/test_output_/test_html_output_example_html_.html
index e8998a7f..02a29a0d 100644
--- a/tests/test_output/test_output_/test_html_output_example_html_.html
+++ b/tests/test_output/test_output_/test_html_output_example_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -62,7 +62,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_flake8_html_.html b/tests/test_output/test_output_/test_html_output_flake8_html_.html
index bb4a2bd5..40616433 100644
--- a/tests/test_output/test_output_/test_html_output_flake8_html_.html
+++ b/tests/test_output/test_output_/test_html_output_flake8_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -116,7 +116,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_footnote_symbols_html_.html b/tests/test_output/test_output_/test_html_output_footnote_symbols_html_.html
index 3fd3568d..9d87bcdb 100644
--- a/tests/test_output/test_output_/test_html_output_footnote_symbols_html_.html
+++ b/tests/test_output/test_output_/test_html_output_footnote_symbols_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -103,7 +103,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_formatting_html_.html b/tests/test_output/test_output_/test_html_output_formatting_html_.html
index fb6ae699..e7c9db45 100644
--- a/tests/test_output/test_output_/test_html_output_formatting_html_.html
+++ b/tests/test_output/test_output_/test_html_output_formatting_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -64,7 +64,9 @@
Other Extensions
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_generic_bases_.html b/tests/test_output/test_output_/test_html_output_generic_bases_.html
index a5c5813e..d842a068 100644
--- a/tests/test_output/test_output_/test_html_output_generic_bases_.html
+++ b/tests/test_output/test_output_/test_html_output_generic_bases_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -310,7 +310,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_genericalias_.html b/tests/test_output/test_output_/test_html_output_genericalias_.html
index ff48c201..d9439389 100644
--- a/tests/test_output/test_output_/test_html_output_genericalias_.html
+++ b/tests/test_output/test_output_/test_html_output_genericalias_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -97,7 +97,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_github_html_.html b/tests/test_output/test_output_/test_html_output_github_html_.html
index e887f748..866da40c 100644
--- a/tests/test_output/test_output_/test_html_output_github_html_.html
+++ b/tests/test_output/test_output_/test_html_output_github_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -150,7 +150,9 @@
.
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_installation_html_.html b/tests/test_output/test_output_/test_html_output_installation_html_.html
index d85d3728..9b16f4fe 100644
--- a/tests/test_output/test_output_/test_html_output_installation_html_.html
+++ b/tests/test_output/test_output_/test_html_output_installation_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}{% if sphinx_version >= (3, 5) %}
@@ -44,21 +44,23 @@
-
-
-
-
-
-
-
- python3 -m pip install my_project --user
+
@@ -67,17 +69,19 @@
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
@@ -86,17 +90,19 @@
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
@@ -105,17 +111,19 @@
-
-
-
-
-
-
-
- conda install my_project
+
+
+
+
+
+
+
+
+ conda install my_project
+
@@ -124,17 +132,19 @@
-
-
-
-
-
-
-
- conda install my-project
+
+
+
+
+
+
+
+
+ conda install my-project
+
@@ -143,17 +153,19 @@
-
-
-
-
-
-
-
- conda install my-project
+
+
+
+
+
+
+
+
+ conda install my-project
+
@@ -162,17 +174,19 @@
-
-
-
-
-
-
-
- python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
+
+
+
+
+
+
+
+ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
@@ -181,17 +195,19 @@
-
-
-
-
-
-
-
- python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
+
+
+
+
+
+
+
+ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
@@ -200,28 +216,30 @@
-
-
-
-
-
-
-
-
- python3 -m pip install my_project --user
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my_project --user
+
-
-
-
-
- conda install my_project
+
+
+
+ conda install my_project
+
@@ -230,28 +248,30 @@
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install my-project
+
+
+
+ conda install my-project
+
@@ -260,28 +280,30 @@
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install my-project
+
+
+
+ conda install my-project
+
@@ -290,28 +312,30 @@
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install conda-project
+
+
+
+ conda install conda-project
+
@@ -320,28 +344,30 @@
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install conda-project
+
+
+
+ conda install conda-project
+
@@ -350,39 +376,41 @@
-
-
-
-
-
-
-
-
-
- python3 -m pip install my_project --user
+
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my_project --user
+
-
-
-
-
- conda install my_project
+
+
+
+ conda install my_project
+
-
-
-
-
- python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
+
+
+ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
@@ -391,39 +419,41 @@
-
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install my-project
+
+
+
+ conda install my-project
+
-
-
-
-
- python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
+
+
+ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
@@ -432,39 +462,41 @@
-
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install my-project
+
+
+
+ conda install my-project
+
-
-
-
-
- python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
+
+
+ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@stable --user
+
@@ -473,39 +505,41 @@
-
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install conda-project
+
+
+
+ conda install conda-project
+
-
-
-
-
- python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
+
+
+ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
@@ -514,39 +548,41 @@
-
-
-
-
-
-
-
-
-
- python3 -m pip install my-project --user
+
+
+
+
+
+
+
+
+
+
+ python3 -m pip install my-project --user
+
-
-
-
-
- conda install conda-project
+
+
+
+ conda install conda-project
+
-
-
-
-
- python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
+
+
+ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+
@@ -782,7 +818,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_instancevar_html_.html b/tests/test_output/test_output_/test_html_output_instancevar_html_.html
index 0f64e0cc..6a2f777d 100644
--- a/tests/test_output/test_output_/test_html_output_instancevar_html_.html
+++ b/tests/test_output/test_output_/test_html_output_instancevar_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -187,7 +187,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_latex_html_.html b/tests/test_output/test_output_/test_html_output_latex_html_.html
index 69b47d88..cd41ca56 100644
--- a/tests/test_output/test_output_/test_html_output_latex_html_.html
+++ b/tests/test_output/test_output_/test_html_output_latex_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -404,7 +404,9 @@
-
+
{% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_no_docstring_html_.html b/tests/test_output/test_output_/test_html_output_no_docstring_html_.html
index b6294f4e..a6cfdd07 100644
--- a/tests/test_output/test_output_/test_html_output_no_docstring_html_.html
+++ b/tests/test_output/test_output_/test_html_output_no_docstring_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -388,7 +388,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_overloads_html_.html b/tests/test_output/test_output_/test_html_output_overloads_html_.html
index 4e5b9854..52f3c742 100644
--- a/tests/test_output/test_output_/test_html_output_overloads_html_.html
+++ b/tests/test_output/test_output_/test_html_output_overloads_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -205,7 +205,7 @@
:
-
+
int
@@ -213,7 +213,7 @@
) ->
-
+
str
@@ -236,13 +236,13 @@
:
-
+
slice
- ) ->{% if python_version >= (3, 12) %}
+ ) ->{% if python_version >= (3, 12) and sphinx_version < (7, 4) %}
List[str]
@@ -257,7 +257,7 @@
[
-
+
str
@@ -454,7 +454,7 @@
:
-
+
int
@@ -462,7 +462,7 @@
) ->
-
+
str
@@ -485,13 +485,13 @@
:
-
+
slice
- ) ->{% if python_version >= (3, 12) %}
+ ) ->{% if python_version >= (3, 12) and sphinx_version < (7, 4) %}
List[str]
@@ -506,7 +506,7 @@
[
-
+
str
@@ -788,7 +788,7 @@
cls
- :{% if python_version >= (3, 12) %}
+ :{% if python_version >= (3, 12) and sphinx_version < (7, 4) %}
Type[object]
@@ -833,7 +833,7 @@
= …,
to_key
- {% endif %}{% if python_version >= (3, 12) %}
+ {% endif %}{% if python_version >= (3, 12) and sphinx_version < (7, 4) %}
@@ -890,7 +890,7 @@
= None,
from_key
- {% if python_version >= (3, 12) %}
+ {% if python_version >= (3, 12) and sphinx_version < (7, 4) %}
:
@@ -1124,7 +1124,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_pre_commit_html_.html b/tests/test_output/test_output_/test_html_output_pre_commit_html_.html
index 301765ae..f44bfa7a 100644
--- a/tests/test_output/test_output_/test_html_output_pre_commit_html_.html
+++ b/tests/test_output/test_output_/test_html_output_pre_commit_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -100,7 +100,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_regex_html_.html b/tests/test_output/test_output_/test_html_output_regex_html_.html
index 589633ae..e1ad45b9 100644
--- a/tests/test_output/test_output_/test_html_output_regex_html_.html
+++ b/tests/test_output/test_output_/test_html_output_regex_html_.html
@@ -22,7 +22,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -2114,7 +2114,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_shields_html_.html b/tests/test_output/test_output_/test_html_output_shields_html_.html
index e3fc65ed..320d14e0 100644
--- a/tests/test_output/test_output_/test_html_output_shields_html_.html
+++ b/tests/test_output/test_output_/test_html_output_shields_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -127,7 +127,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_sourcelink_html_.html b/tests/test_output/test_output_/test_html_output_sourcelink_html_.html
index c5f28369..d0c4cda4 100644
--- a/tests/test_output/test_output_/test_html_output_sourcelink_html_.html
+++ b/tests/test_output/test_output_/test_html_output_sourcelink_html_.html
@@ -24,7 +24,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -696,7 +696,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_typevars_html_.html b/tests/test_output/test_output_/test_html_output_typevars_html_.html
index b4d7818d..5e30cfa3 100644
--- a/tests/test_output/test_output_/test_html_output_typevars_html_.html
+++ b/tests/test_output/test_output_/test_html_output_typevars_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -516,7 +516,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_variables_html_.html b/tests/test_output/test_output_/test_html_output_variables_html_.html
index d7421a07..fcd1af2c 100644
--- a/tests/test_output/test_output_/test_html_output_variables_html_.html
+++ b/tests/test_output/test_output_/test_html_output_variables_html_.html
@@ -23,7 +23,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -403,7 +403,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_html_output_wikipedia_html_.html b/tests/test_output/test_output_/test_html_output_wikipedia_html_.html
index ad3f8dfe..c21e0bdf 100644
--- a/tests/test_output/test_output_/test_html_output_wikipedia_html_.html
+++ b/tests/test_output/test_output_/test_html_output_wikipedia_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -60,7 +60,9 @@
Answer to the Ultimate Question of Life, the Universe, and Everything
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_output/test_output_/test_latex_output.tex b/tests/test_output/test_output_/test_latex_output.tex
index 3cf1db32..45664b21 100644
--- a/tests/test_output/test_output_/test_latex_output.tex
+++ b/tests/test_output/test_output_/test_latex_output.tex
@@ -12,7 +12,19 @@
<%- set du_role_2nd_n = ",n" if (7, 2) > sphinx_version >= (6, 2) else "" -%>
<# Latest Sphinx removed vertical rules from csv-table. Inconsequential for us #>
<%- set regex_columns = "TT" if sphinx_version >= (6, 0) else "|T|T|" -%>
-
+<%- set sphinx81_linebreak = "\n" if sphinx_version >= (8, 1) else "" -%>
+<%- macro versionadded(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{added}{Added in version <>.}}
+<%- else %>\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version <>.}<% endif %>
+<%- endmacro -%>
+<%- macro versionremoved(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{removed}{Removed in version <>: }}
+<%- else %>\DUrole{versionmodified,removed}{Removed in version <>: }
+<%- endif %><%- endmacro -%>
+<%- macro versionchanged(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{changed}{Changed in version <>: }}
+<%- else %>\DUrole{versionmodified,changed}{Changed in version <>: }
+<%- endif %><%- endmacro -%>
%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt,english]{sphinxmanual}
@@ -344,7 +356,7 @@ \chapter{from Anaconda}
\chapter{from GitHub}
\label{\detokenize{installation:installation-15-from_GitHub}}
\begin{Verbatim}[commandchars=\\\{\}]
-$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@stable --user
\end{Verbatim}
@@ -512,7 +524,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -537,7 +549,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -556,7 +568,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -579,7 +591,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -601,7 +613,7 @@ \chapter{Confval}
<% if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -625,7 +637,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-25px}
@@ -960,14 +972,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:param \textless{}name\textgreater{}: \textless{}docstring\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0") >>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1001,14 +1013,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:type \textless{}name\textgreater{}: \textless{}type\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0") >>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1044,7 +1056,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1079,7 +1091,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1120,7 +1132,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1160,7 +1172,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1195,7 +1207,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1230,7 +1242,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1265,7 +1277,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1342,14 +1354,14 @@ \chapter{Changeset}
\section{Removed}
\label{\detokenize{changeset:removed}}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
+<< versionremoved("1.2.3")>>Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Due to an unfixable bug this function has been removed.
+<< versionremoved("1.2.3")>>Due to an unfixable bug this function has been removed.
If you desperately need this functionality please write to the mailing list at
\sphinxhref{mailto:python-users@example.org}{python\sphinxhyphen{}users@example.org}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }\begin{itemize}
+<< versionremoved("1.2.3")>>\begin{itemize}
\item {}
Removed \sphinxcode{\sphinxupquote{mozarella}}
@@ -1361,10 +1373,10 @@ \section{Removed}
\section{Changed}
\label{\detokenize{changeset:changed}}
-\DUrole{versionmodified,changed}{Changed in version 1.2.3: }Moved from \sphinxcode{\sphinxupquote{mozarella}}
+<< versionchanged("1.2.3") >>Moved from \sphinxcode{\sphinxupquote{mozarella}}
-\DUrole{versionmodified,changed}{Changed in version 0.3.0: }\begin{itemize}
+<< versionchanged("0.3.0") >>\begin{itemize}
\item {}
Parameters for \sphinxcode{\sphinxupquote{\_\_init\_\_}} can be documented either in the class docstring
or alongside the attribute.
@@ -1381,7 +1393,7 @@ \section{Changed}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{foo}}}{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}{}<< tilde >>
+\pysiglinewithargsret<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{foo}}}<< sphinx81_linebreak >>{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}<< sphinx81_linebreak >>{}<< tilde >>
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif -%>
@@ -1411,7 +1423,33 @@ \section{Changed}
-\begin{savenotes}<%- if sphinx_version > (4, 5) -%>
+\begin{savenotes}<%- if sphinx_version > (8, 2) %>
+\sphinxatlongtablestart
+\sphinxthistablewithglobalstyle
+\sphinxthistablewithnovlinesstyle
+\makeatletter
+ \LTleft \@totalleftmargin plus1fill
+ \LTright\dimexpr\columnwidth-\@totalleftmargin-\linewidth\relax plus1fill
+\makeatother
+\begin{longtable}{\X{1}{2}\X{1}{2}}
+\sphinxtoprule
+\endfirsthead
+
+\multicolumn{2}{c}{\sphinxnorowcolor
+ \makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continued from previous page}}%
+}\\
+\sphinxtoprule
+\endhead
+
+\sphinxbottomrule
+\multicolumn{2}{r}{\sphinxnorowcolor
+ \makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}%
+}\\
+\endfoot
+
+\endlastfoot
+\sphinxtableatstartofbodyhook
+<% elif sphinx_version > (4, 5) -%>
\sphinxattablestart<% if sphinx_version >= (5, 3) %>
\sphinxthistablewithglobalstyle
\sphinxthistablewithnovlinesstyle<% endif %>
@@ -1420,10 +1458,8 @@ \section{Changed}
\sphinxtoprule
\sphinxtableatstartofbodyhook<% else %>
\hline
-<%- endif %>
-<%- else -%>
-\sphinxatlongtablestart\begin{longtable}[c]{\X{1}{2}\X{1}{2}}
+<%- endif %><% else %>\sphinxatlongtablestart\begin{longtable}[c]{\X{1}{2}\X{1}{2}}
\hline
\endfirsthead
@@ -1456,7 +1492,11 @@ \section{Changed}
Represents a movie.
\\
<% if sphinx_version >= (5, 3) %>\sphinxbottomrule<% else %>\hline<% endif %>
-<% if sphinx_version > (4, 5) -%>
+<% if sphinx_version > (8, 2) -%>
+\end{longtable}
+\sphinxtableafterendhook
+\sphinxatlongtableend
+\end{savenotes}<% elif sphinx_version > (4, 5) -%>
\end{tabulary}
<< par >>
\sphinxattableend\end{savenotes}
diff --git a/tests/test_output/test_output_/test_latex_output_autosummary_col_type.tex b/tests/test_output/test_output_/test_latex_output_autosummary_col_type.tex
index 7c2bd96b..716d8473 100644
--- a/tests/test_output/test_output_/test_latex_output_autosummary_col_type.tex
+++ b/tests/test_output/test_output_/test_latex_output_autosummary_col_type.tex
@@ -12,7 +12,19 @@
<%- set du_role_2nd_n = ",n" if (7, 2) > sphinx_version >= (6, 2) else "" -%>
<# Latest Sphinx removed vertical rules from csv-table. Inconsequential for us #>
<%- set regex_columns = "TT" if sphinx_version >= (6, 0) else "|T|T|" -%>
-
+<%- set sphinx81_linebreak = "\n" if sphinx_version >= (8, 1) else "" -%>
+<%- macro versionadded(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{added}{Added in version <>.}}
+<%- else %>\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version <>.}<% endif %>
+<%- endmacro -%>
+<%- macro versionremoved(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{removed}{Removed in version <>: }}
+<%- else %>\DUrole{versionmodified,removed}{Removed in version <>: }
+<%- endif %><%- endmacro -%>
+<%- macro versionchanged(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{changed}{Changed in version <>: }}
+<%- else %>\DUrole{versionmodified,changed}{Changed in version <>: }
+<%- endif %><%- endmacro -%>
%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt,english]{sphinxmanual}
@@ -344,7 +356,7 @@ \chapter{from Anaconda}
\chapter{from GitHub}
\label{\detokenize{installation:installation-15-from_GitHub}}
\begin{Verbatim}[commandchars=\\\{\}]
-$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@stable --user
\end{Verbatim}
@@ -512,7 +524,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -537,7 +549,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -556,7 +568,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -579,7 +591,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -601,7 +613,7 @@ \chapter{Confval}
<% if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -625,7 +637,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-25px}
@@ -960,14 +972,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:param \textless{}name\textgreater{}: \textless{}docstring\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0") >>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1001,14 +1013,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:type \textless{}name\textgreater{}: \textless{}type\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0") >>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1044,7 +1056,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1079,7 +1091,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1120,7 +1132,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1160,7 +1172,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1195,7 +1207,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1230,7 +1242,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1265,7 +1277,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1342,14 +1354,14 @@ \chapter{Changeset}
\section{Removed}
\label{\detokenize{changeset:removed}}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
+<< versionremoved("1.2.3")>>Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Due to an unfixable bug this function has been removed.
+<< versionremoved("1.2.3")>>Due to an unfixable bug this function has been removed.
If you desperately need this functionality please write to the mailing list at
\sphinxhref{mailto:python-users@example.org}{python\sphinxhyphen{}users@example.org}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }\begin{itemize}
+<< versionremoved("1.2.3")>>\begin{itemize}
\item {}
Removed \sphinxcode{\sphinxupquote{mozarella}}
@@ -1361,10 +1373,10 @@ \section{Removed}
\section{Changed}
\label{\detokenize{changeset:changed}}
-\DUrole{versionmodified,changed}{Changed in version 1.2.3: }Moved from \sphinxcode{\sphinxupquote{mozarella}}
+<< versionchanged("1.2.3") >>Moved from \sphinxcode{\sphinxupquote{mozarella}}
-\DUrole{versionmodified,changed}{Changed in version 0.3.0: }\begin{itemize}
+<< versionchanged("0.3.0") >>\begin{itemize}
\item {}
Parameters for \sphinxcode{\sphinxupquote{\_\_init\_\_}} can be documented either in the class docstring
or alongside the attribute.
@@ -1381,7 +1393,7 @@ \section{Changed}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{foo}}}{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}{}<< tilde >>
+\pysiglinewithargsret<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{foo}}}<< sphinx81_linebreak >>{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}<< sphinx81_linebreak >>{}<< tilde >>
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif -%>
@@ -1411,7 +1423,33 @@ \section{Changed}
-\begin{savenotes}<%- if sphinx_version > (4, 5) -%>
+\begin{savenotes}<%- if sphinx_version > (8, 2) %>
+\sphinxatlongtablestart
+\sphinxthistablewithglobalstyle
+\sphinxthistablewithnovlinesstyle
+\makeatletter
+ \LTleft \@totalleftmargin plus1fill
+ \LTright\dimexpr\columnwidth-\@totalleftmargin-\linewidth\relax plus1fill
+\makeatother
+\begin{longtable}{\Y{1}{2}\Y{1}{2}}
+\sphinxtoprule
+\endfirsthead
+
+\multicolumn{2}{c}{\sphinxnorowcolor
+ \makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continued from previous page}}%
+}\\
+\sphinxtoprule
+\endhead
+
+\sphinxbottomrule
+\multicolumn{2}{r}{\sphinxnorowcolor
+ \makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}%
+}\\
+\endfoot
+
+\endlastfoot
+\sphinxtableatstartofbodyhook
+<% elif sphinx_version > (4, 5) -%>
\sphinxattablestart<% if sphinx_version >= (5, 3) %>
\sphinxthistablewithglobalstyle
\sphinxthistablewithnovlinesstyle<% endif %>
@@ -1454,7 +1492,11 @@ \section{Changed}
Represents a movie.
\\
<% if sphinx_version >= (5, 3) %>\sphinxbottomrule<% else %>\hline<% endif %>
-<% if sphinx_version > (4, 5) -%>
+<% if sphinx_version > (8, 2) -%>
+\end{longtable}
+\sphinxtableafterendhook
+\sphinxatlongtableend
+\end{savenotes}<% elif sphinx_version > (4, 5) -%>
\end{tabulary}
<< par >>
\sphinxattableend\end{savenotes}
diff --git a/tests/test_output/test_output_/test_latex_output_better_header_layout.tex b/tests/test_output/test_output_/test_latex_output_better_header_layout.tex
index 0d3387da..3b8f5d1c 100644
--- a/tests/test_output/test_output_/test_latex_output_better_header_layout.tex
+++ b/tests/test_output/test_output_/test_latex_output_better_header_layout.tex
@@ -12,7 +12,19 @@
<%- set du_role_2nd_n = ",n" if (7, 2) > sphinx_version >= (6, 2) else "" -%>
<# Latest Sphinx removed vertical rules from csv-table. Inconsequential for us #>
<%- set regex_columns = "TT" if sphinx_version >= (6, 0) else "|T|T|" -%>
-
+<%- set sphinx81_linebreak = "\n" if sphinx_version >= (8, 1) else "" -%>
+<%- macro versionadded(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{added}{Added in version <>.}}
+<%- else %>\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version <>.}<% endif %>
+<%- endmacro -%>
+<%- macro versionremoved(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{removed}{Removed in version <>: }}
+<%- else %>\DUrole{versionmodified,removed}{Removed in version <>: }
+<%- endif %><%- endmacro -%>
+<%- macro versionchanged(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{changed}{Changed in version <>: }}
+<%- else %>\DUrole{versionmodified,changed}{Changed in version <>: }
+<%- endif %><%- endmacro -%>
%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt,english]{sphinxmanual}
@@ -368,7 +380,7 @@ \chapter{from Anaconda}
\chapter{from GitHub}
\label{\detokenize{installation:installation-15-from_GitHub}}
\begin{Verbatim}[commandchars=\\\{\}]
-$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@stable --user
\end{Verbatim}
@@ -536,7 +548,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -561,7 +573,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -580,7 +592,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -603,7 +615,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -625,7 +637,7 @@ \chapter{Confval}
<% if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -649,7 +661,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-25px}
@@ -984,14 +996,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:param \textless{}name\textgreater{}: \textless{}docstring\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0")>>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1025,14 +1037,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:type \textless{}name\textgreater{}: \textless{}type\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0")>>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1068,7 +1080,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1103,7 +1115,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1144,7 +1156,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1184,7 +1196,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1219,7 +1231,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1254,7 +1266,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1289,7 +1301,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1366,14 +1378,14 @@ \chapter{Changeset}
\section{Removed}
\label{\detokenize{changeset:removed}}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
+<< versionremoved("1.2.3") >>Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Due to an unfixable bug this function has been removed.
+<< versionremoved("1.2.3") >>Due to an unfixable bug this function has been removed.
If you desperately need this functionality please write to the mailing list at
\sphinxhref{mailto:python-users@example.org}{python\sphinxhyphen{}users@example.org}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }\begin{itemize}
+<< versionremoved("1.2.3") >>\begin{itemize}
\item {}
Removed \sphinxcode{\sphinxupquote{mozarella}}
@@ -1385,10 +1397,10 @@ \section{Removed}
\section{Changed}
\label{\detokenize{changeset:changed}}
-\DUrole{versionmodified,changed}{Changed in version 1.2.3: }Moved from \sphinxcode{\sphinxupquote{mozarella}}
+<< versionchanged("1.2.3") >>Moved from \sphinxcode{\sphinxupquote{mozarella}}
-\DUrole{versionmodified,changed}{Changed in version 0.3.0: }\begin{itemize}
+<< versionchanged("0.3.0") >>\begin{itemize}
\item {}
Parameters for \sphinxcode{\sphinxupquote{\_\_init\_\_}} can be documented either in the class docstring
or alongside the attribute.
@@ -1405,7 +1417,7 @@ \section{Changed}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{foo}}}{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}{}<< tilde >>
+\pysiglinewithargsret<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{foo}}}<< sphinx81_linebreak >>{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}<< sphinx81_linebreak >>{}<< tilde >>
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif -%>
@@ -1435,7 +1447,33 @@ \section{Changed}
-\begin{savenotes}<%- if sphinx_version > (4, 5) -%>
+\begin{savenotes}<%- if sphinx_version > (8, 2) %>
+\sphinxatlongtablestart
+\sphinxthistablewithglobalstyle
+\sphinxthistablewithnovlinesstyle
+\makeatletter
+ \LTleft \@totalleftmargin plus1fill
+ \LTright\dimexpr\columnwidth-\@totalleftmargin-\linewidth\relax plus1fill
+\makeatother
+\begin{longtable}{\X{1}{2}\X{1}{2}}
+\sphinxtoprule
+\endfirsthead
+
+\multicolumn{2}{c}{\sphinxnorowcolor
+ \makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continued from previous page}}%
+}\\
+\sphinxtoprule
+\endhead
+
+\sphinxbottomrule
+\multicolumn{2}{r}{\sphinxnorowcolor
+ \makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}%
+}\\
+\endfoot
+
+\endlastfoot
+\sphinxtableatstartofbodyhook
+<% elif sphinx_version > (4, 5) -%>
\sphinxattablestart<% if sphinx_version >= (5, 3) %>
\sphinxthistablewithglobalstyle
\sphinxthistablewithnovlinesstyle<% endif %>
@@ -1478,7 +1516,11 @@ \section{Changed}
Represents a movie.
\\
<% if sphinx_version >= (5, 3) %>\sphinxbottomrule<% else %>\hline<% endif %>
-<% if sphinx_version > (4, 5) -%>
+<% if sphinx_version > (8, 2) -%>
+\end{longtable}
+\sphinxtableafterendhook
+\sphinxatlongtableend
+\end{savenotes}<% elif sphinx_version > (4, 5) -%>
\end{tabulary}
<< par >>
\sphinxattableend\end{savenotes}
diff --git a/tests/test_output/test_output_/test_latex_output_latex_layout.tex b/tests/test_output/test_output_/test_latex_output_latex_layout.tex
index a16548ee..264e8fed 100644
--- a/tests/test_output/test_output_/test_latex_output_latex_layout.tex
+++ b/tests/test_output/test_output_/test_latex_output_latex_layout.tex
@@ -12,7 +12,19 @@
<%- set du_role_2nd_n = ",n" if (7, 2) > sphinx_version >= (6, 2) else "" -%>
<# Latest Sphinx removed vertical rules from csv-table. Inconsequential for us #>
<%- set regex_columns = "TT" if sphinx_version >= (6, 0) else "|T|T|" -%>
-
+<%- set sphinx81_linebreak = "\n" if sphinx_version >= (8, 1) else "" -%>
+<%- macro versionadded(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{added}{Added in version <>.}}
+<%- else %>\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version <>.}<% endif %>
+<%- endmacro -%>
+<%- macro versionremoved(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{removed}{Removed in version <>: }}
+<%- else %>\DUrole{versionmodified,removed}{Removed in version <>: }
+<%- endif %><%- endmacro -%>
+<%- macro versionchanged(v) -%>
+<%- if sphinx_version >= (8, 1) %>\DUrole{versionmodified}{\DUrole{changed}{Changed in version <>: }}
+<%- else %>\DUrole{versionmodified,changed}{Changed in version <>: }
+<%- endif %><%- endmacro -%>
%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt,english]{sphinxmanual}
@@ -344,7 +356,7 @@ \chapter{from Anaconda}
\chapter{from GitHub}
\label{\detokenize{installation:installation-15-from_GitHub}}
\begin{Verbatim}[commandchars=\\\{\}]
-$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@master --user
+$ python3 -m pip install git+https://github.com/sphinx-toolbox/sphinx-toolbox@stable --user
\end{Verbatim}
@@ -514,7 +526,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{source\_link\_target}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -541,7 +553,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_username}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -562,7 +574,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -587,7 +599,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{conda\_channels}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -611,7 +623,7 @@ \chapter{Confval}
<% if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{github\_repository}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-45px}
@@ -637,7 +649,7 @@ \chapter{Confval}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
+\pysigline<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{something}}}<< tilde >>
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\vspace{-25px}
@@ -974,14 +986,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{untyped\_param\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:param \textless{}name\textgreater{}: \textless{}docstring\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0") >>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1017,14 +1029,14 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{sphinx\_toolbox.utils.}}\sphinxbfcode{\sphinxupquote{typed\_flag\_regex}}}
<% if sphinx_version > (4, 5) %>\pysigstopsignatures
<% endif -%>
\sphinxstylestrong{Type:} \sphinxhref{https://docs.python.org/3/library/typing.html\#typing.Pattern}{\sphinxcode{\sphinxupquote{Pattern}}}{[}\sphinxhref{https://docs.python.org/3/library/stdtypes.html\#str}{\sphinxcode{\sphinxupquote{str}}}{]}
Regex to match \sphinxcode{\sphinxupquote{:type \textless{}name\textgreater{}: \textless{}type\textgreater{}}} flags.
-\DUrole{versionmodified,added}{<% if sphinx_version >= (7, 3) %>Added<% else %>New<% endif %> in version 0.8.0.}
+<< versionadded("0.8.0") >>
\begin{savenotes}\sphinxattablestart<% if sphinx_version >= (5, 3) %>
@@ -1062,7 +1074,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{no\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1099,7 +1111,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{one\_flag}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1142,7 +1154,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{two\_flags}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1184,7 +1196,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{backticks}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1221,7 +1233,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{leading\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1258,7 +1270,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{trailing\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1295,7 +1307,7 @@ \chapter{sphinx\sphinxhyphen{}toolbox Demo \sphinxhyphen{} Regex}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysigline{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
+\pysigline<< sphinx81_linebreak >>{\sphinxcode{\sphinxupquote{tests.regex\_demo.}}\sphinxbfcode{\sphinxupquote{single\_whitespace}}}
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif %>
@@ -1372,14 +1384,14 @@ \chapter{Changeset}
\section{Removed}
\label{\detokenize{changeset:removed}}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
+<< versionremoved("1.2.3") >>Use {\hyperref[\detokenize{index:foo}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{foo()}}}}} instead.
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }Due to an unfixable bug this function has been removed.
+<< versionremoved("1.2.3") >>Due to an unfixable bug this function has been removed.
If you desperately need this functionality please write to the mailing list at
\sphinxhref{mailto:python-users@example.org}{python\sphinxhyphen{}users@example.org}
-\DUrole{versionmodified,removed}{Removed in version 1.2.3: }\begin{itemize}
+<< versionremoved("1.2.3") >>\begin{itemize}
\item {}
Removed \sphinxcode{\sphinxupquote{mozarella}}
@@ -1391,10 +1403,10 @@ \section{Removed}
\section{Changed}
\label{\detokenize{changeset:changed}}
-\DUrole{versionmodified,changed}{Changed in version 1.2.3: }Moved from \sphinxcode{\sphinxupquote{mozarella}}
+<< versionchanged("1.2.3") >>Moved from \sphinxcode{\sphinxupquote{mozarella}}
-\DUrole{versionmodified,changed}{Changed in version 0.3.0: }\begin{itemize}
+<< versionchanged("0.3.0") >>\begin{itemize}
\item {}
Parameters for \sphinxcode{\sphinxupquote{\_\_init\_\_}} can be documented either in the class docstring
or alongside the attribute.
@@ -1413,7 +1425,7 @@ \section{Changed}
<%- if sphinx_version > (4, 5) %>
\pysigstartsignatures
<% endif -%>
-\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{foo}}}{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}{}<< tilde >>
+\pysiglinewithargsret<< sphinx81_linebreak >>{\sphinxbfcode{\sphinxupquote{foo}}}<< sphinx81_linebreak >>{\<>{\DUrole{n<< du_role_2nd_n >>}{bar}}<>{\DUrole{n<< du_role_2nd_n >>}{baz}}}<< sphinx81_linebreak >>{}<< tilde >>
<%- if sphinx_version > (4, 5) %>
\pysigstopsignatures
<%- endif -%>
@@ -1443,7 +1455,33 @@ \section{Changed}
-\begin{savenotes}<%- if sphinx_version > (4, 5) -%>
+\begin{savenotes}<%- if sphinx_version > (8, 2) %>
+\sphinxatlongtablestart
+\sphinxthistablewithglobalstyle
+\sphinxthistablewithnovlinesstyle
+\makeatletter
+ \LTleft \@totalleftmargin plus1fill
+ \LTright\dimexpr\columnwidth-\@totalleftmargin-\linewidth\relax plus1fill
+\makeatother
+\begin{longtable}{\X{1}{2}\X{1}{2}}
+\sphinxtoprule
+\endfirsthead
+
+\multicolumn{2}{c}{\sphinxnorowcolor
+ \makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continued from previous page}}%
+}\\
+\sphinxtoprule
+\endhead
+
+\sphinxbottomrule
+\multicolumn{2}{r}{\sphinxnorowcolor
+ \makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}%
+}\\
+\endfoot
+
+\endlastfoot
+\sphinxtableatstartofbodyhook
+<% elif sphinx_version > (4, 5) -%>
\sphinxattablestart<% if sphinx_version >= (5, 3) %>
\sphinxthistablewithglobalstyle
\sphinxthistablewithnovlinesstyle<% endif %>
@@ -1486,7 +1524,11 @@ \section{Changed}
Represents a movie.
\\
<% if sphinx_version >= (5, 3) %>\sphinxbottomrule<% else %>\hline<% endif %>
-<% if sphinx_version > (4, 5) -%>
+<% if sphinx_version > (8, 2) -%>
+\end{longtable}
+\sphinxtableafterendhook
+\sphinxatlongtableend
+\end{savenotes}<% elif sphinx_version > (4, 5) -%>
\end{tabulary}
<< par >>
\sphinxattableend\end{savenotes}
diff --git a/tests/test_output/test_output_/test_sidebar_links_output.html b/tests/test_output/test_output_/test_sidebar_links_output.html
index eb16bd8a..d3796e84 100644
--- a/tests/test_output/test_output_/test_sidebar_links_output.html
+++ b/tests/test_output/test_output_/test_sidebar_links_output.html
@@ -22,7 +22,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -503,7 +503,9 @@
document.getElementById('searchbox').style.display = "block"{% else %}
$('#searchbox').show(0);{% endif %}
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_source_output_github/conftest.py b/tests/test_source_output_github/conftest.py
index 56048e93..4bae8d06 100644
--- a/tests/test_source_output_github/conftest.py
+++ b/tests/test_source_output_github/conftest.py
@@ -27,7 +27,6 @@
#
# stdlib
-import pathlib
import shutil
from typing import Any, Dict, List, Sequence, Tuple, cast
@@ -56,8 +55,8 @@ def rootdir() -> PathPlus:
def app_params(
request: Any,
test_params: Dict,
- sphinx_test_tempdir: pathlib.Path,
- rootdir: pathlib.Path,
+ sphinx_test_tempdir: PathPlus,
+ rootdir: PathPlus,
) -> Tuple[Sequence, Dict]:
"""
parameters that is specified by 'pytest.mark.sphinx' for
diff --git a/tests/test_source_output_github/test_source_output_/test_output_github_index_html_.html b/tests/test_source_output_github/test_source_output_/test_output_github_index_html_.html
index 745a9864..628545be 100644
--- a/tests/test_source_output_github/test_source_output_/test_output_github_index_html_.html
+++ b/tests/test_source_output_github/test_source_output_/test_output_github_index_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -51,7 +51,9 @@
source code
-
+
{% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_source_output_sphinx/conftest.py b/tests/test_source_output_sphinx/conftest.py
index 7f9cb8f4..b9d50c1f 100644
--- a/tests/test_source_output_sphinx/conftest.py
+++ b/tests/test_source_output_sphinx/conftest.py
@@ -27,7 +27,6 @@
#
# stdlib
-import pathlib
import shutil
from typing import Any, Dict, List, Sequence, Tuple, cast
@@ -56,8 +55,8 @@ def rootdir() -> PathPlus:
def app_params(
request: Any,
test_params: Dict,
- sphinx_test_tempdir: pathlib.Path,
- rootdir: pathlib.Path,
+ sphinx_test_tempdir: PathPlus,
+ rootdir: PathPlus,
) -> Tuple[Sequence, Dict]:
"""
parameters that is specified by 'pytest.mark.sphinx' for
diff --git a/tests/test_source_output_sphinx/test_source_output_/test_output_sphinx_index_html_.html b/tests/test_source_output_sphinx/test_source_output_/test_output_sphinx_index_html_.html
index 32c5b6f0..2ddf2def 100644
--- a/tests/test_source_output_sphinx/test_source_output_/test_output_sphinx_index_html_.html
+++ b/tests/test_source_output_sphinx/test_source_output_/test_output_sphinx_index_html_.html
@@ -21,7 +21,7 @@
{% if sphinx_version >= (5, 0) %}
{% endif %}{% endif %}
- {% if sphinx_version >= (5, 2) %}
{% endif %}
@@ -69,7 +69,9 @@
-
+ {% if sphinx_version >= (8, 1) %}
+
+ {% endif %}
diff --git a/tests/test_sphinx_version.py b/tests/test_sphinx_version.py
new file mode 100644
index 00000000..9c84ac16
--- /dev/null
+++ b/tests/test_sphinx_version.py
@@ -0,0 +1,13 @@
+# stdlib
+import os
+import re
+
+# 3rd party
+import sphinx
+
+
+def test_sphinx_version_against_tox():
+ m = re.match(r"py.*-sphinx(\d)\.(\d)", os.getenv("TOX_ENV_NAME", ''))
+ if m is not None:
+ target_version = tuple(map(int, m.groups()))
+ assert target_version == sphinx.version_info[:2]
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 3674a396..b2c398ec 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -134,8 +134,8 @@ def test_testing():
assert get_app_config_values(app.config.values["source_link_target"]) == ("Sphinx", "env", [str])
assert get_app_config_values(app.config.values["github_username"]) == (None, "env", [str])
- assert get_app_config_values(app.config.values["rebuild_true"]) == (None, "env", ())
- assert get_app_config_values(app.config.values["rebuild_false"]) == (None, '', ())
+ assert get_app_config_values(app.config.values["rebuild_true"]) == (None, "env", [])
+ assert get_app_config_values(app.config.values["rebuild_false"]) == (None, '', [])
assert app.events.events["my-event"] == ''
assert app.registry.translators["my-translator"] is FakeNodeVisitor
diff --git a/tox.ini b/tox.ini
index 33557e98..6cff09a8 100644
--- a/tox.ini
+++ b/tox.ini
@@ -24,10 +24,10 @@ envlist =
py37-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3}
py38-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1}
py39-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4}
- py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}
- py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}
- py312-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}
- py313-dev-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0}
+ py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1}
+ py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2}
+ py312-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2}
+ py313-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2}
pypy37-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3}
pypy38-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1}
pypy39-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4}
@@ -46,10 +46,10 @@ test =
py37-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3}
py38-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1}
py39-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4}
- py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}
- py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}
- py312-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}
- py313-dev-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0}
+ py310-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1}
+ py311-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2}
+ py312-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2}
+ py313-sphinx{6.2,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2}
pypy37-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3}
pypy38-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1}
pypy39-sphinx{4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4}
@@ -62,7 +62,7 @@ setenv =
PYTHONDEVMODE=1
PIP_DISABLE_PIP_VERSION_CHECK=1
-[testenv:py313-dev]
+[testenv:py313]
download = True
setenv =
PYTHONDEVMODE=1
@@ -229,17 +229,6 @@ ignore = W002
toplevel = sphinx_toolbox
package = sphinx_toolbox
-[testenv:py312-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}]
-setenv =
- PYTHONDEVMODE=1
- PIP_DISABLE_PIP_VERSION_CHECK=1
-
-[testenv:py313-dev-sphinx{3.2,3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3,6.0,6.1,6.2,7.0,7.1,7.2,7.3,7.4,8.0}]
-setenv =
- PYTHONDEVMODE=1
- PIP_DISABLE_PIP_VERSION_CHECK=1
- UNSAFE_PYO3_SKIP_VERSION_CHECK=1
-
[testenv]
setenv =
PYTHONDEVMODE=1
@@ -282,42 +271,68 @@ commands =
python --version
python -m pytest --cov=sphinx_toolbox -r aR tests/ {posargs}
-[testenv:py{39,310,311,312,313-dev,py39}-sphinx7.2]
+[testenv:py{39,310,311,312,313,py39}-sphinx7.2]
deps =
-r{toxinidir}/tests/requirements.txt
-r{toxinidir}/requirements.txt
+extras =
commands =
pip install sphinx==7.2.6
pip install pygments>=2.7.4,<=2.13.0
python --version
python -m pytest --cov=sphinx_toolbox -r aR tests/ {posargs}
-[testenv:py{39,310,311,312,313-dev,py39}-sphinx7.3]
+[testenv:py{39,310,311,312,313,py39}-sphinx7.3]
deps =
-r{toxinidir}/tests/requirements.txt
-r{toxinidir}/requirements.txt
+extras =
commands =
pip install sphinx==7.3.7
pip install pygments>=2.7.4,<=2.13.0
python --version
python -m pytest --cov=sphinx_toolbox -r aR tests/ {posargs}
-[testenv:py{39,310,311,312,313-dev,py39}-sphinx7.4]
+[testenv:py{39,310,311,312,313,py39}-sphinx7.4]
deps =
-r{toxinidir}/tests/requirements.txt
-r{toxinidir}/requirements.txt
+extras =
commands =
pip install sphinx==7.4.7
pip install pygments>=2.7.4,<=2.13.0
python --version
python -m pytest --cov=sphinx_toolbox -r aR tests/ {posargs}
-[testenv:py{310,311,312,313-dev}-sphinx8.0]
+[testenv:py{310,311,312,313}-sphinx8.0]
deps =
-r{toxinidir}/tests/requirements.txt
-r{toxinidir}/requirements.txt
+extras =
commands =
pip install sphinx==8.0.2
+ pip install pygments>=2.7.4,<=2.13.0 alabaster==0.7.16
+ python --version
+ python -m pytest --cov=sphinx_toolbox -r aR tests/ {posargs}
+
+[testenv:py{310,311,312,313}-sphinx8.1]
+deps =
+ -r{toxinidir}/tests/requirements.txt
+ -r{toxinidir}/requirements.txt
+extras =
+commands =
+ pip install sphinx==8.1.3
+ pip install pygments>=2.7.4,<=2.13.0
+ python --version
+ python -m pytest --cov=sphinx_toolbox -r aR tests/ {posargs}
+
+[testenv:py{311,312,313}-sphinx8.2]
+deps =
+ -r{toxinidir}/tests/requirements.txt
+ -r{toxinidir}/requirements.txt
+extras =
+commands =
+ pip install sphinx==8.2.1
pip install pygments>=2.7.4,<=2.13.0
python --version
python -m pytest --cov=sphinx_toolbox -r aR tests/ {posargs}
@@ -346,8 +361,6 @@ filterwarnings =
always:The `docutils.parsers.rst.directive.html` module will be removed in Docutils 2.0.:DeprecationWarning
always:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning
always:nodes.Node.traverse\(\) is obsoleted by Node.findall\(\).:PendingDeprecationWarning
-
-[testenv:py{py37,py38,py39}-sphinx{3.3,3.4,3.5,4.0,4.1,4.2,4.3,4.4,4.5,5.0}]
-commands =
- python --version
- python -m pytest -p no:cov -r aR tests/ {posargs}
+ always:'parser.split_opt' is deprecated and will be removed in Click 9.0. The old parser is available in 'optparse'.:DeprecationWarning
+ always:'OptionParser' is deprecated and will be removed in Click 9.0. The old parser is available in 'optparse'.:DeprecationWarning
+ always:The '__version__' attribute is deprecated and will be removed in Click 9.1..:DeprecationWarning