mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Split `sphinx.ext.intersphinx._shared
`
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
This commit is contained in:
parent
56b793d1c2
commit
3a1f2f377c
@ -54,16 +54,18 @@ from sphinx.addnodes import pending_xref
|
||||
from sphinx.builders.html import INVENTORY_FILENAME
|
||||
from sphinx.deprecation import _deprecation_warning
|
||||
from sphinx.errors import ExtensionError
|
||||
from sphinx.ext.intersphinx._shared import LOGGER as logger
|
||||
from sphinx.ext.intersphinx._shared import InventoryAdapter
|
||||
from sphinx.locale import _, __
|
||||
from sphinx.transforms.post_transforms import ReferencesResolver
|
||||
from sphinx.util import logging, requests
|
||||
from sphinx.util import requests
|
||||
from sphinx.util.docutils import CustomReSTDispatcher, SphinxRole
|
||||
from sphinx.util.inventory import InventoryFile
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from collections.abc import Iterable
|
||||
from types import ModuleType
|
||||
from typing import IO, Any, Union
|
||||
from typing import IO, Any
|
||||
|
||||
from docutils.nodes import Node, TextElement, system_message
|
||||
from docutils.utils import Reporter
|
||||
@ -72,50 +74,9 @@ if TYPE_CHECKING:
|
||||
from sphinx.config import Config
|
||||
from sphinx.domains import Domain
|
||||
from sphinx.environment import BuildEnvironment
|
||||
from sphinx.ext.intersphinx._shared import InventoryCacheEntry
|
||||
from sphinx.util.typing import ExtensionMetadata, Inventory, InventoryItem, RoleFunction
|
||||
|
||||
InventoryCacheEntry = tuple[Union[str, None], int, Inventory]
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class InventoryAdapter:
|
||||
"""Inventory adapter for environment"""
|
||||
|
||||
def __init__(self, env: BuildEnvironment) -> None:
|
||||
self.env = env
|
||||
|
||||
if not hasattr(env, 'intersphinx_cache'):
|
||||
# initial storage when fetching inventories before processing
|
||||
self.env.intersphinx_cache = {} # type: ignore[attr-defined]
|
||||
|
||||
self.env.intersphinx_inventory = {} # type: ignore[attr-defined]
|
||||
self.env.intersphinx_named_inventory = {} # type: ignore[attr-defined]
|
||||
|
||||
@property
|
||||
def cache(self) -> dict[str, InventoryCacheEntry]:
|
||||
"""Intersphinx cache.
|
||||
|
||||
- Key is the URI of the remote inventory
|
||||
- Element one is the key given in the Sphinx intersphinx_mapping
|
||||
configuration value
|
||||
- Element two is a time value for cache invalidation, a float
|
||||
- Element three is the loaded remote inventory, type Inventory
|
||||
"""
|
||||
return self.env.intersphinx_cache # type: ignore[attr-defined]
|
||||
|
||||
@property
|
||||
def main_inventory(self) -> Inventory:
|
||||
return self.env.intersphinx_inventory # type: ignore[attr-defined]
|
||||
|
||||
@property
|
||||
def named_inventory(self) -> dict[str, Inventory]:
|
||||
return self.env.intersphinx_named_inventory # type: ignore[attr-defined]
|
||||
|
||||
def clear(self) -> None:
|
||||
self.env.intersphinx_inventory.clear() # type: ignore[attr-defined]
|
||||
self.env.intersphinx_named_inventory.clear() # type: ignore[attr-defined]
|
||||
|
||||
|
||||
def _strip_basic_auth(url: str) -> str:
|
||||
"""Returns *url* with basic auth credentials removed. Also returns the
|
||||
|
53
sphinx/ext/intersphinx/_shared.py
Normal file
53
sphinx/ext/intersphinx/_shared.py
Normal file
@ -0,0 +1,53 @@
|
||||
"""This module contains code shared between intersphinx modules."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Final, Union
|
||||
|
||||
from sphinx.util import logging
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from sphinx.environment import BuildEnvironment
|
||||
from sphinx.util.typing import Inventory
|
||||
|
||||
InventoryCacheEntry = tuple[Union[str, None], int, Inventory]
|
||||
|
||||
LOGGER: Final[logging.SphinxLoggerAdapter] = logging.getLogger('sphinx.ext.intersphinx')
|
||||
|
||||
|
||||
class InventoryAdapter:
|
||||
"""Inventory adapter for environment"""
|
||||
|
||||
def __init__(self, env: BuildEnvironment) -> None:
|
||||
self.env = env
|
||||
|
||||
if not hasattr(env, 'intersphinx_cache'):
|
||||
# initial storage when fetching inventories before processing
|
||||
self.env.intersphinx_cache = {} # type: ignore[attr-defined]
|
||||
|
||||
self.env.intersphinx_inventory = {} # type: ignore[attr-defined]
|
||||
self.env.intersphinx_named_inventory = {} # type: ignore[attr-defined]
|
||||
|
||||
@property
|
||||
def cache(self) -> dict[str, InventoryCacheEntry]:
|
||||
"""Intersphinx cache.
|
||||
|
||||
- Key is the URI of the remote inventory
|
||||
- Element one is the key given in the Sphinx intersphinx_mapping
|
||||
configuration value
|
||||
- Element two is a time value for cache invalidation, a float
|
||||
- Element three is the loaded remote inventory, type Inventory
|
||||
"""
|
||||
return self.env.intersphinx_cache # type: ignore[attr-defined]
|
||||
|
||||
@property
|
||||
def main_inventory(self) -> Inventory:
|
||||
return self.env.intersphinx_inventory # type: ignore[attr-defined]
|
||||
|
||||
@property
|
||||
def named_inventory(self) -> dict[str, Inventory]:
|
||||
return self.env.intersphinx_named_inventory # type: ignore[attr-defined]
|
||||
|
||||
def clear(self) -> None:
|
||||
self.env.intersphinx_inventory.clear() # type: ignore[attr-defined]
|
||||
self.env.intersphinx_named_inventory.clear() # type: ignore[attr-defined]
|
Loading…
Reference in New Issue
Block a user