Source code for polywrap_uri_resolvers.resolvers.package.package_resolver

"""This module contains the PackageResolver class."""
from polywrap_core import (
    InvokerClient,
    Uri,
    UriPackage,
    UriPackageOrWrapper,
    UriResolutionContext,
    WrapPackage,
)

from ..abc import ResolverWithHistory


[docs]class PackageResolver(ResolverWithHistory): """Defines a resolver that resolves a uri to a package. Args: uri (Uri): The uri to resolve. package (WrapPackage): The wrap package to return. """ __slots__ = ("uri", "package") uri: Uri package: WrapPackage def __init__(self, uri: Uri, package: WrapPackage): """Initialize a new PackageResolver instance.""" self.uri = uri self.package = package super().__init__()
[docs] def get_step_description(self) -> str: """Get the description of the resolver step. Returns: str: The description of the resolver step. """ return f"Package ({self.uri.uri})"
def _try_resolve_uri( self, uri: Uri, client: InvokerClient, resolution_context: UriResolutionContext, ) -> UriPackageOrWrapper: """Try to resolve a URI to a wrap package, a wrapper, or a URI. This method tries to resolve the given uri to a wrap package, a wrapper, or a URI.\ If the given uri is the same as the uri of the resolver, the wrap package is returned.\ Otherwise, the given uri is returned. Args: uri (Uri): The URI to resolve. client (InvokerClient): The client to use for\ resolving the URI. resolution_context (UriResolutionContext): The\ resolution context. Returns: UriPackageOrWrapper: The resolved URI package, wrapper, or URI. """ return uri if uri != self.uri else UriPackage(uri=uri, package=self.package)
__all__ = ["PackageResolver"]