123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- """
- Type-annotation related support for the referencing library.
- """
- from __future__ import annotations
- from typing import TYPE_CHECKING, Protocol, TypeVar
- try:
- from collections.abc import Mapping as Mapping
- Mapping[str, str]
- except TypeError: # pragma: no cover
- from typing import Mapping as Mapping
- if TYPE_CHECKING:
- from referencing._core import Resolved, Resolver, Resource
- #: A URI which identifies a `Resource`.
- URI = str
- #: The type of documents within a registry.
- D = TypeVar("D")
- class Retrieve(Protocol[D]):
- """
- A retrieval callable, usable within a `Registry` for resource retrieval.
- Does not make assumptions about where the resource might be coming from.
- """
- def __call__(self, uri: URI) -> Resource[D]:
- """
- Retrieve the resource with the given URI.
- Raise `referencing.exceptions.NoSuchResource` if you wish to indicate
- the retriever cannot lookup the given URI.
- """
- ...
- class Anchor(Protocol[D]):
- """
- An anchor within a `Resource`.
- Beyond "simple" anchors, some specifications like JSON Schema's 2020
- version have dynamic anchors.
- """
- @property
- def name(self) -> str:
- """
- Return the name of this anchor.
- """
- ...
- def resolve(self, resolver: Resolver[D]) -> Resolved[D]:
- """
- Return the resource for this anchor.
- """
- ...
|