|
18 | 18 | from pathlib import PurePosixPath as URL # noqa: N814 |
19 | 19 | from typing import TYPE_CHECKING, Any, Callable |
20 | 20 | from urllib.parse import urlsplit |
| 21 | +from warnings import warn |
21 | 22 |
|
22 | 23 | from mkdocs.config.base import Config |
23 | 24 | from mkdocs.config.config_options import Type |
@@ -110,8 +111,26 @@ def __init__(self) -> None: |
110 | 111 | self._primary_url_map: dict[str, list[str]] = {} |
111 | 112 | self._secondary_url_map: dict[str, list[str]] = {} |
112 | 113 | self._abs_url_map: dict[str, str] = {} |
113 | | - |
114 | | - self.get_fallback_anchor: Callable[[str], tuple[str, ...]] | None = None |
| 114 | + # YORE: Bump 2: Remove line. |
| 115 | + self._get_fallback_anchor: Callable[[str], tuple[str, ...]] | None = None |
| 116 | + |
| 117 | + # YORE: Bump 2: Remove block. |
| 118 | + @property |
| 119 | + def get_fallback_anchor(self) -> Callable[[str], tuple[str, ...]] | None: |
| 120 | + """Fallback anchors getter.""" |
| 121 | + return self._get_fallback_anchor |
| 122 | + |
| 123 | + # YORE: Bump 2: Remove block. |
| 124 | + @get_fallback_anchor.setter |
| 125 | + def get_fallback_anchor(self, value: Callable[[str], tuple[str, ...]] | None) -> None: |
| 126 | + """Fallback anchors setter.""" |
| 127 | + self._get_fallback_anchor = value |
| 128 | + if value is not None: |
| 129 | + warn( |
| 130 | + "Setting a fallback anchor function is deprecated and will be removed in a future release.", |
| 131 | + DeprecationWarning, |
| 132 | + stacklevel=2, |
| 133 | + ) |
115 | 134 |
|
116 | 135 | def register_anchor(self, page: str, identifier: str, anchor: str | None = None, *, primary: bool = True) -> None: |
117 | 136 | """Register that an anchor corresponding to an identifier was encountered when rendering the page. |
@@ -183,12 +202,14 @@ def _get_urls(self, identifier: str) -> tuple[list[str], str]: |
183 | 202 | def _get_item_url( |
184 | 203 | self, |
185 | 204 | identifier: str, |
186 | | - fallback: Callable[[str], Sequence[str]] | None = None, |
187 | 205 | from_url: str | None = None, |
| 206 | + # YORE: Bump 2: Remove line. |
| 207 | + fallback: Callable[[str], Sequence[str]] | None = None, |
188 | 208 | ) -> str: |
189 | 209 | try: |
190 | 210 | urls, qualifier = self._get_urls(identifier) |
191 | 211 | except KeyError: |
| 212 | + # YORE: Bump 2: Replace block with line 2. |
192 | 213 | if identifier in self._abs_url_map: |
193 | 214 | return self._abs_url_map[identifier] |
194 | 215 | if fallback: |
@@ -216,19 +237,20 @@ def get_item_url( |
216 | 237 | self, |
217 | 238 | identifier: str, |
218 | 239 | from_url: str | None = None, |
| 240 | + # YORE: Bump 2: Remove line. |
219 | 241 | fallback: Callable[[str], Sequence[str]] | None = None, |
220 | 242 | ) -> str: |
221 | 243 | """Return a site-relative URL with anchor to the identifier, if it's present anywhere. |
222 | 244 |
|
223 | 245 | Arguments: |
224 | 246 | identifier: The anchor (without '#'). |
225 | 247 | from_url: The URL of the base page, from which we link towards the targeted pages. |
226 | | - fallback: An optional function to suggest alternative anchors to try on failure. |
227 | 248 |
|
228 | 249 | Returns: |
229 | 250 | A site-relative URL. |
230 | 251 | """ |
231 | | - url = self._get_item_url(identifier, fallback, from_url) |
| 252 | + # YORE: Bump 2: Replace `, fallback` with `` within line. |
| 253 | + url = self._get_item_url(identifier, from_url, fallback) |
232 | 254 | if from_url is not None: |
233 | 255 | parsed = urlsplit(url) |
234 | 256 | if not parsed.scheme and not parsed.netloc: |
@@ -325,6 +347,7 @@ def on_post_page(self, output: str, page: Page, **kwargs: Any) -> str: # noqa: |
325 | 347 | """ |
326 | 348 | log.debug("Fixing references in page %s", page.file.src_path) |
327 | 349 |
|
| 350 | + # YORE: Bump 2: Replace `, fallback=self.get_fallback_anchor` with `` within line. |
328 | 351 | url_mapper = functools.partial(self.get_item_url, from_url=page.url, fallback=self.get_fallback_anchor) |
329 | 352 | fixed_output, unmapped = fix_refs(output, url_mapper, _legacy_refs=self.legacy_refs) |
330 | 353 |
|
|
0 commit comments