Skip to content

Commit 694f4e7

Browse files
committed
Test on Sphinx up to 8.3
1 parent e5b28e4 commit 694f4e7

9 files changed

Lines changed: 254 additions & 95 deletions

File tree

.github/workflows/python_ci.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ jobs:
2929
matrix:
3030
config:
3131
- {python-version: "3.7", testenvs: "py37-sphinx{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}
32-
- {python-version: "3.8", testenvs: "py38-sphinx{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},build", experimental: False}
33-
- {python-version: "3.9", testenvs: "py39-sphinx{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},build", experimental: False}
34-
- {python-version: "3.10", testenvs: "py310-sphinx{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},build", experimental: False}
35-
- {python-version: "3.11", testenvs: "py311-sphinx{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},build", experimental: False}
36-
- {python-version: "3.12", testenvs: "py312-sphinx{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},build", experimental: False}
37-
- {python-version: "3.13", testenvs: "py313-dev-sphinx{6.2,7.0},build", experimental: True}
38-
- {python-version: "pypy-3.7", testenvs: "pypy37-sphinx{4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
39-
- {python-version: "pypy-3.8", testenvs: "pypy38-sphinx{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},build", experimental: False}
40-
- {python-version: "pypy-3.9-v7.3.15", testenvs: "pypy39-sphinx{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},build", experimental: True}
32+
- {python-version: "3.8", testenvs: "py38-sphinx{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}
33+
- {python-version: "3.9", testenvs: "py39-sphinx{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}
34+
- {python-version: "3.10", testenvs: "py310-sphinx{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}
35+
- {python-version: "3.11", testenvs: "py311-sphinx{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}
36+
- {python-version: "3.12", testenvs: "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},build", experimental: False}
37+
- {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}
38+
- {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}
39+
- {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}
40+
- {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}
4141

4242
steps:
4343
- name: Checkout 🛎️

.github/workflows/python_ci_linux.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ jobs:
3030
matrix:
3131
config:
3232
- {python-version: "3.7", testenvs: "py37-sphinx{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}
33-
- {python-version: "3.8", testenvs: "py38-sphinx{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},build", experimental: False}
34-
- {python-version: "3.9", testenvs: "py39-sphinx{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},build", experimental: False}
35-
- {python-version: "3.10", testenvs: "py310-sphinx{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},build", experimental: False}
36-
- {python-version: "3.11", testenvs: "py311-sphinx{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},build", experimental: False}
37-
- {python-version: "3.12", testenvs: "py312-sphinx{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},build", experimental: False}
38-
- {python-version: "3.13", testenvs: "py313-dev-sphinx{6.2,7.0},build", experimental: True}
39-
- {python-version: "pypy-3.7", testenvs: "pypy37-sphinx{4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
40-
- {python-version: "pypy-3.8", testenvs: "pypy38-sphinx{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},build", experimental: False}
41-
- {python-version: "pypy-3.9", testenvs: "pypy39-sphinx{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},build", experimental: True}
33+
- {python-version: "3.8", testenvs: "py38-sphinx{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}
34+
- {python-version: "3.9", testenvs: "py39-sphinx{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}
35+
- {python-version: "3.10", testenvs: "py310-sphinx{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}
36+
- {python-version: "3.11", testenvs: "py311-sphinx{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}
37+
- {python-version: "3.12", testenvs: "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},build", experimental: False}
38+
- {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}
39+
- {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}
40+
- {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}
41+
- {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}
4242

4343
steps:
4444
- name: Checkout 🛎️

.github/workflows/python_ci_macos.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ jobs:
2929
matrix:
3030
config:
3131
- {python-version: "3.7", os-ver: "13", testenvs: "py37-sphinx{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}
32-
- {python-version: "3.8", os-ver: "14", testenvs: "py38-sphinx{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},build", experimental: False}
33-
- {python-version: "3.9", os-ver: "14", testenvs: "py39-sphinx{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},build", experimental: False}
34-
- {python-version: "3.10", os-ver: "14", testenvs: "py310-sphinx{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},build", experimental: False}
35-
- {python-version: "3.11", os-ver: "14", testenvs: "py311-sphinx{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},build", experimental: False}
36-
- {python-version: "3.12", os-ver: "14", testenvs: "py312-sphinx{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},build", experimental: False}
37-
- {python-version: "3.13", os-ver: "14", testenvs: "py313-dev-sphinx{6.2,7.0},build", experimental: True}
38-
- {python-version: "pypy-3.7", os-ver: "13", testenvs: "pypy37-sphinx{4.0,4.1,4.2,4.3,4.4,4.5,5.0,5.1,5.2,5.3},build", experimental: False}
39-
- {python-version: "pypy-3.8", os-ver: "14", testenvs: "pypy38-sphinx{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},build", experimental: False}
40-
- {python-version: "pypy-3.9", os-ver: "14", testenvs: "pypy39-sphinx{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},build", experimental: True}
32+
- {python-version: "3.8", os-ver: "14", testenvs: "py38-sphinx{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}
33+
- {python-version: "3.9", os-ver: "14", testenvs: "py39-sphinx{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}
34+
- {python-version: "3.10", os-ver: "14", testenvs: "py310-sphinx{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}
35+
- {python-version: "3.11", os-ver: "14", testenvs: "py311-sphinx{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}
36+
- {python-version: "3.12", os-ver: "14", testenvs: "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},build", experimental: False}
37+
- {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}
38+
- {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}
39+
- {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}
40+
- {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}
4141

4242
steps:
4343
- name: Checkout 🛎️

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ base-classifiers = [
3333
"Topic :: Software Development :: Documentation",
3434
"Typing :: Typed",
3535
]
36-
python-versions = [ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12",]
36+
python-versions = [ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13",]
3737
python-implementations = [ "CPython", "PyPy",]
3838
platforms = [ "Windows", "macOS", "Linux",]
3939
license-key = "MIT"

repo_helper.yml

Lines changed: 84 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,55 +27,122 @@ python_versions:
2727
- 6.1
2828
- 6.2
2929
- 7.0
30+
- 7.1
31+
- 7.2
32+
- 7.3
33+
- 7.4
34+
- 8.0
35+
- 8.1
36+
- 8.2
37+
- latest
3038
3.8:
39+
matrix_exclude:
40+
sphinx:
41+
- 7.2
42+
- 7.3
43+
- 7.4
44+
- 8.0
45+
- 8.1
46+
- 8.2
47+
- latest
3148
3.9:
49+
matrix_exclude:
50+
sphinx:
51+
- 8.0
52+
- 8.1
53+
- 8.2
3254
"3.10":
55+
matrix_exclude:
56+
sphinx:
57+
- 8.2
3358
"3.11":
3459
"3.12":
35-
3.13-dev:
3660
matrix_exclude:
3761
sphinx:
62+
- 3.2
3863
- 3.3
3964
- 3.4
4065
- 3.5
4166
- 4.0
4267
- 4.1
4368
- 4.2
44-
- 4.3
45-
- 4.4
46-
- 4.5
47-
- 5.0
48-
- 5.1
49-
- 5.2
50-
- 5.3
51-
- 6.0
52-
- 6.1
69+
"3.13":
70+
matrix_exclude:
71+
sphinx:
72+
- 3.2
73+
- 3.3
74+
- 3.4
75+
- 3.5
76+
- 4.0
77+
- 4.1
78+
- 4.2
79+
- 4.3
80+
- 4.4
81+
- 4.5
82+
- 5.0
83+
- 5.1
84+
- 5.2
85+
- 5.3
86+
- 6.0
87+
- 6.1
5388
pypy37:
5489
matrix_exclude:
5590
sphinx:
91+
- 3.2
5692
- 3.3
5793
- 3.4
5894
- 3.5
95+
- 4.0
96+
- 4.1
97+
- 4.2
5998
- 6.0
6099
- 6.1
61100
- 6.2
62101
- 7.0
102+
- 7.1
103+
- 7.2
104+
- 7.3
105+
- 7.4
106+
- 8.0
107+
- 8.1
108+
- 8.2
109+
- latest
63110
pypy38:
64111
matrix_exclude:
65112
sphinx:
113+
- 3.2
66114
- 3.3
67115
- 3.4
68116
- 3.5
117+
- 4.0
118+
- 4.1
119+
- 4.2
120+
- 7.2
121+
- 7.3
122+
- 7.4
123+
- 8.0
124+
- 8.1
125+
- 8.2
126+
- latest
69127
pypy39:
70128
matrix_exclude:
71129
sphinx:
130+
- 3.2
72131
- 3.3
73132
- 3.4
74133
- 3.5
134+
- 4.0
135+
- 4.1
136+
- 4.2
137+
- 8.0
138+
- 8.1
139+
- 8.2
140+
- latest
75141

76142
exclude_files:
77143
- bumpversion
78144
- contributing
145+
- tox
79146

80147
classifiers:
81148
- 'Development Status :: 4 - Beta'
@@ -116,3 +183,10 @@ third_party_version_matrix:
116183
- 6.1
117184
- 6.2
118185
- 7.0
186+
- 7.1
187+
- 7.2
188+
- 7.3
189+
- 7.4
190+
- 8.0
191+
- 8.1
192+
- 8.2

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
docutils>=0.16
2-
sphinx<8,>=3.2.0
2+
sphinx>=3.2.0
33
sphinx-jinja2-compat>=0.1.0

tests/test_setup.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1+
# stdlib
2+
from types import SimpleNamespace
3+
from typing import Any, Tuple
4+
15
# 3rd party
6+
import sphinx
27
from sphinx.events import EventListener
38
from sphinx_toolbox.testing import Sphinx, run_setup
49

@@ -27,6 +32,26 @@ def add_source_parser(self, *args, **kwargs):
2732
pass
2833

2934

35+
# https://github.com/sphinx-toolbox/sphinx-toolbox/blob/d1750cf9d19f8f5e7fc5e408f0b50164ac9fad63/tests/common.py#L32
36+
def get_app_config_values(config: Any) -> Tuple[str, str, Any]:
37+
if sphinx.version_info >= (7, 3):
38+
valid_types = config.valid_types
39+
default = config.default
40+
rebuild = config.rebuild
41+
else:
42+
default, rebuild, valid_types = config
43+
44+
if isinstance(valid_types, (set, frozenset, tuple, list)):
45+
valid_types = sorted(valid_types)
46+
47+
if hasattr(valid_types, "_candidates"):
48+
new_valid_types = SimpleNamespace()
49+
new_valid_types.candidates = sorted(valid_types._candidates)
50+
valid_types = new_valid_types
51+
52+
return (default, rebuild, valid_types)
53+
54+
3055
def test_setup():
3156

3257
app: Sphinx
@@ -38,7 +63,7 @@ def test_setup():
3863
"parallel_write_safe": True,
3964
}
4065

41-
assert app.config.values["default_description_format"] == ("Default %s", "env", [str])
66+
assert get_app_config_values(app.config.values["default_description_format"]) == ("Default %s", "env", [str])
4267

4368
assert app.events.listeners == {
4469
"builder-inited": [EventListener(id=0, handler=process_default_format, priority=500)],

tests/test_sphinx_version.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# stdlib
2+
import os
3+
import re
4+
5+
# 3rd party
6+
import sphinx
7+
8+
9+
def test_sphinx_version_against_tox():
10+
m = re.match(r"py.*-sphinx(\d)\.(\d)", os.getenv("TOX_ENV_NAME", ''))
11+
if m is not None:
12+
target_version = tuple(map(int, m.groups()))
13+
assert target_version == sphinx.version_info[:2]

0 commit comments

Comments
 (0)