|
5 | 5 | import re
|
6 | 6 | import inspect
|
7 | 7 | from io import StringIO
|
8 |
| -from typing import TYPE_CHECKING, Any, AnyStr, NoReturn, cast, get_origin |
| 8 | +from typing import TYPE_CHECKING, Any, AnyStr, NoReturn, NamedTuple, cast, get_origin |
9 | 9 | from pathlib import Path
|
10 | 10 | from operator import attrgetter
|
11 | 11 | from collections.abc import Mapping, Callable
|
| 12 | +from importlib.metadata import version |
12 | 13 |
|
13 | 14 | import pytest
|
| 15 | +from packaging.version import Version |
| 16 | + |
| 17 | + |
| 18 | +if TYPE_CHECKING or Version(version("sphinx")) >= Version("8.2"): |
| 19 | + from sphinx.util.inventory import _InventoryItem |
| 20 | +else: |
| 21 | + |
| 22 | + class _InventoryItem(NamedTuple): |
| 23 | + project_name: str |
| 24 | + project_version: str |
| 25 | + uri: str |
| 26 | + display_name: str |
| 27 | + |
14 | 28 |
|
15 | 29 | from scanpydoc.elegant_typehints import _last_resolve, qualname_overrides
|
16 | 30 | from scanpydoc.elegant_typehints._formatting import typehints_formatter
|
@@ -262,7 +276,12 @@ def test_resolve(app: Sphinx, qualname: str, docname: str) -> None:
|
262 | 276 |
|
263 | 277 | # Inventory contains documented name
|
264 | 278 | InventoryAdapter(app.env).main_inventory["py:class"] = {
|
265 |
| - docname: ("TestProj", "1", "https://x.com", docname.split(".")[-1]), |
| 279 | + docname: _InventoryItem( |
| 280 | + project_name="TestProj", |
| 281 | + project_version="1", |
| 282 | + uri="https://x.com", |
| 283 | + display_name=docname.split(".")[-1], |
| 284 | + ), |
266 | 285 | }
|
267 | 286 | # Node contains name from code
|
268 | 287 | node = pending_xref(refdomain="py", reftarget=qualname, reftype="class")
|
|
0 commit comments