11from typing import List , cast
22from polywrap_core import IUriResolutionStep , Wrapper , IWrapPackage , UriResolutionResult , IUriResolver , UriPackageOrWrapper , Uri , Client , IUriResolutionContext , UriPackage , UriWrapper
3- from polywrap_result import Result
3+ from polywrap_result import Result , Err , Ok
44
55from .helpers import UriResolverLike
66
@@ -12,37 +12,42 @@ def __init__(self, uri_map: dict[str, UriPackageOrWrapper]):
1212 self .uri_map = uri_map
1313
1414 @staticmethod
15- def _from (static_resolver_likes : List [UriResolverLike ]) -> "StaticResolver" :
15+ def from_list (static_resolver_likes : List [UriResolverLike ]) -> Result [ "StaticResolver" ] :
1616 uri_map : dict [str , UriPackageOrWrapper ] = dict ()
1717 for static_resolver_like in static_resolver_likes :
1818 if type (static_resolver_like ) == list :
19- resolver = StaticResolver ._from (cast (List [UriResolverLike ], static_resolver_like ))
20- for uri , package_or_wrapper in resolver .uri_map .items ():
19+ resolver = StaticResolver .from_list (cast (List [UriResolverLike ], static_resolver_like ))
20+ for uri , package_or_wrapper in resolver .unwrap (). uri_map .items ():
2121 uri_map [uri ] = package_or_wrapper
2222
23- elif hasattr (static_resolver_like , "uri" ) and hasattr ( static_resolver_like , "package" ):
23+ elif isinstance (static_resolver_like , UriPackage ):
2424 uri_package = UriPackage (uri = static_resolver_like .uri , package = static_resolver_like .package ) # type: ignore
2525 uri_map [uri_package .uri .uri ] = uri_package
26- elif hasattr (static_resolver_like , "uri" ) and hasattr ( static_resolver_like , "wrapper" ):
26+ elif isinstance (static_resolver_like , UriWrapper ):
2727 uri_wrapper = UriWrapper (uri = static_resolver_like .uri , wrapper = static_resolver_like .wrapper ) # type: ignore
2828 uri_map [uri_wrapper .uri .uri ] = uri_wrapper
29+ elif isinstance (static_resolver_like , Uri ):
30+ uri_map [static_resolver_like .uri ] = static_resolver_like
2931 else :
30- raise Exception ("Unknown static-resolver-like type provided." )
32+ return Err ( Exception ("Unknown static-resolver-like type provided." ) )
3133
32- return StaticResolver (uri_map )
34+ return Ok ( StaticResolver (uri_map ) )
3335
3436 async def try_resolve_uri (self , uri : Uri , client : Client , resolution_context : IUriResolutionContext ) -> Result ["UriPackageOrWrapper" ]:
35- package_or_wrapper = self .uri_map .get (uri .uri )
37+ uri_package_or_wrapper = self .uri_map .get (uri .uri )
3638
3739 result : Result [UriPackageOrWrapper ] = UriResolutionResult .ok (uri )
3840 description : str = "StaticResolver - Miss"
3941
40- if package_or_wrapper :
41- if hasattr ( package_or_wrapper , "package" ):
42- result = UriResolutionResult .ok (uri , cast ( IWrapPackage , package_or_wrapper .package ) )
42+ if uri_package_or_wrapper :
43+ if isinstance ( uri_package_or_wrapper , UriPackage ):
44+ result = UriResolutionResult .ok (uri , uri_package_or_wrapper .package )
4345 description = f"Static - Package ({ uri .uri } )"
44- elif hasattr (package_or_wrapper , "wrapper" ):
45- result = UriResolutionResult .ok (uri , None , cast (Wrapper , package_or_wrapper .wrapper ))
46+ elif isinstance (uri_package_or_wrapper , UriWrapper ):
47+ result = UriResolutionResult .ok (uri , None , uri_package_or_wrapper .wrapper )
48+ description = f"Static - Wrapper ({ uri .uri } )"
49+ elif isinstance (uri_package_or_wrapper , Uri ):
50+ result = UriResolutionResult .ok (uri )
4651 description = f"Static - Wrapper ({ uri .uri } )"
4752
4853 step = IUriResolutionStep (source_uri = uri , result = result , description = description )
0 commit comments