|
10 | 10 | import sys |
11 | 11 | import tempfile |
12 | 12 | import tomllib |
| 13 | +import warnings |
13 | 14 | from importlib.metadata import entry_points |
14 | 15 | from pathlib import Path |
15 | 16 | from typing import TYPE_CHECKING |
16 | 17 | from zipfile import ZipFile |
17 | 18 |
|
18 | 19 | from sphinx import package_dir |
19 | 20 | from sphinx.config import check_confval_types as _config_post_init |
| 21 | +from sphinx.deprecation import RemovedInSphinx10Warning |
20 | 22 | from sphinx.errors import ThemeError |
21 | 23 | from sphinx.locale import __ |
22 | 24 | from sphinx.util import logging |
@@ -152,12 +154,30 @@ class HTMLThemeFactory: |
152 | 154 |
|
153 | 155 | def __init__( |
154 | 156 | self, |
| 157 | + _deprecated_positional_parameter: Sphinx | None = None, |
| 158 | + /, |
155 | 159 | *, |
156 | | - confdir: Path, |
157 | | - app: Sphinx, |
158 | | - config: Config, |
159 | | - registry: SphinxComponentRegistry, |
| 160 | + confdir: Path | None = None, |
| 161 | + app: Sphinx | None = None, |
| 162 | + config: Config | None = None, |
| 163 | + registry: SphinxComponentRegistry | None = None, |
160 | 164 | ) -> None: |
| 165 | + if _deprecated_positional_parameter is not None: |
| 166 | + warnings.warn( |
| 167 | + 'Positional parameters for HTMLThemeFactory are deprecated, ' |
| 168 | + 'and will be removed in Sphinx 10. ' |
| 169 | + 'Please use keyword parameters instead.', |
| 170 | + category=RemovedInSphinx10Warning, |
| 171 | + stacklevel=2, |
| 172 | + ) |
| 173 | + app = _deprecated_positional_parameter |
| 174 | + confdir = app.confdir |
| 175 | + config = app.config |
| 176 | + registry = app.registry |
| 177 | + assert app is not None |
| 178 | + assert confdir is not None |
| 179 | + assert config is not None |
| 180 | + assert registry is not None |
161 | 181 | self._app = app |
162 | 182 | self._confdir = confdir |
163 | 183 | self._themes = registry.html_themes |
|
0 commit comments