11from abc import ABC , abstractmethod
22from dataclasses import dataclass
3- from polywrap_core import Uri , IUriResolver , Env , UriWrapper ,UriPackage
4- from polywrap_uri_resolvers import IUriResolver
5- from typing import Dict , Any , List , Optional , Union
3+ from typing import Any , Dict , List , Optional , Union
64
7- @dataclass (slots = True , kw_only = True )
8- class ClientConfig ():
5+ from polywrap_core import Env , Uri , UriPackage , UriWrapper
6+ from polywrap_uri_resolvers import UriResolverLike
7+
8+ # from polywrap_plugin import PluginPackage
9+
10+
11+ @dataclass (slots = True , kw_only = True )
12+ class ClientConfig :
913 """
1014 This Abstract class is used to configure the polywrap client before it executes a call
1115 The ClientConfig class is created and modified with the ClientConfigBuilder module
1216 """
17+
1318 envs : Dict [Uri , Dict [str , Any ]]
1419 interfaces : Dict [Uri , List [Uri ]]
15- packages : List [UriPackage ]
16- resolver : List [IUriResolver ]
1720 wrappers : List [UriWrapper ]
21+ packages : List [UriPackage ]
22+ resolver : List [UriResolverLike ]
1823
1924
2025class BaseClientConfigBuilder (ABC ):
@@ -24,14 +29,16 @@ class BaseClientConfigBuilder(ABC):
2429 """
2530
2631 def __init__ (self ):
27- self .config = ClientConfig (envs = {}, interfaces = {}, resolver = [], wrappers = [], packages = [])
32+ self .config = ClientConfig (
33+ envs = {}, interfaces = {}, resolver = [], wrappers = [], packages = []
34+ )
2835
2936 @abstractmethod
3037 def build (self ) -> ClientConfig :
3138 """Returns a sanitized config object from the builder's config."""
3239 pass
3340
34- @ abstractmethod
41+
3542 def add (self , new_config : ClientConfig ) -> ClientConfig :
3643 """Returns a sanitized config object from the builder's config after receiving a partial `ClientConfig` object."""
3744 if new_config .envs :
@@ -46,95 +53,86 @@ def add(self, new_config: ClientConfig) -> ClientConfig:
4653 self .config .packages .extend (new_config .packages )
4754 return self .config
4855
49- @abstractmethod
50- def get_envs (self )-> Dict [Uri , Dict [str , Any ]]:
56+ def get_envs (self ) -> Dict [Uri , Dict [str , Any ]]:
5157 """Returns the envs dictionary from the builder's config."""
5258 return self .config .envs
5359
54- @abstractmethod
5560 def set_env (self , env : Env , uri : Uri ):
5661 """Sets the envs dictionary in the builder's config, overiding any existing values."""
5762 self .config .envs [uri ] = env
5863 return self
5964
60- @abstractmethod
6165 def add_env (self , env : Env , uri : Uri ):
6266 """Adds an environment (in the form of an `Env`) for a given uri, without overwriting existing environments,
6367 unless the env key already exists in the environment, then it will overwrite the existing value"""
64- if (env or uri ) is None :
65- raise KeyError ("Must provide both an env or uri" )
66-
68+
6769 if uri in self .config .envs .keys ():
6870 for key in env .keys ():
6971 self .config .envs [uri ][key ] = env [key ]
7072 else :
7173 self .config .envs [uri ] = env
7274 return self
7375
74- @abstractmethod
7576 def add_envs (self , envs : List [Env ], uri : Uri = None ):
7677 """
7778 Adds a list of environments (each in the form of an `Env`) for a given uri
7879 """
7980 for env in envs :
80- self .add_env (env , uri )
81+ self .add_env (env , uri )
8182 return self
8283
83- @abstractmethod
84- def add_interface_implementations (self , interface_uri : Uri , implementations_uris : List [Uri ]):
84+ def add_interface_implementations (
85+ self , interface_uri : Uri , implementations_uris : List [Uri ]
86+ ):
8587 """
8688 Adds a list of implementations (each in the form of an `Uri`) for a given interface
8789 """
8890 if interface_uri is None :
8991 raise ValueError ()
9092 if interface_uri in self .config .interfaces .keys ():
91- self .config .interfaces [interface_uri ] = self .config .interfaces [interface_uri ] + implementations_uris
93+ self .config .interfaces [interface_uri ] = (
94+ self .config .interfaces [interface_uri ] + implementations_uris
95+ )
9296 else :
9397 self .config .interfaces [interface_uri ] = implementations_uris
9498 return self
9599
96- @abstractmethod
97- def add_wrapper (self , wrapper_uri : Uri ) :
100+ def add_wrapper (self , wrapper_uri : Uri ):
98101 """
99102 Adds a wrapper to the list of wrappers
100103 """
101104 self .config .wrappers .append (wrapper_uri )
102105 return self
103106
104- @abstractmethod
105- def add_wrappers (self , wrappers_uris : List [Uri ]) :
107+ def add_wrappers (self , wrappers_uris : List [Uri ]):
106108 """
107109 Adds a list of wrappers to the list of wrappers
108110 """
109111 for wrapper_uri in wrappers_uris :
110112 self .add_wrapper (wrapper_uri )
111113 return self
112114
113- @abstractmethod
114- def remove_wrapper (self , wrapper_uri : Uri ) :
115+ def remove_wrapper (self , wrapper_uri : Uri ):
115116 """
116117 Removes a wrapper from the list of wrappers
117118 """
118119 self .config .wrappers .remove (wrapper_uri )
119120 return self
120121
121- @abstractmethod
122122 def set_package (self , uri_package : UriPackage ):
123123 """
124124 Sets the package in the builder's config, overiding any existing values.
125125 """
126126 self .config .packages = [uri_package ]
127127 return self
128128
129- @abstractmethod
130129 def add_package (self , uri_package : UriPackage ):
131130 """
132131 Adds a package to the list of packages
133132 """
134133 self .config .packages .append (uri_package )
135134 return self
136-
137- @abstractmethod
135+
138136 def add_packages (self , uri_packages : List [UriPackage ]):
139137 """
140138 Adds a list of packages to the list of packages
@@ -143,114 +141,114 @@ def add_packages(self, uri_packages: List[UriPackage]):
143141 self .add_package (uri_package )
144142 return self
145143
146- @abstractmethod
147144 def remove_package (self , uri_package : UriPackage ):
148145 """
149146 Removes a package from the list of packages
150147 """
151148 self .config .packages .remove (uri_package )
152149 return self
153150
154- @abstractmethod
155151 def set_resolver (self , uri_resolver ):
156152 """
157153 Sets a single resolver for the `ClientConfig` object before it is built
158154 """
159155 self .config .resolver = [uri_resolver ]
160156 return self
161157
162- @abstractmethod
163- def add_resolver (self , resolver : IUriResolver ) :
158+ def add_resolver (self , resolver : UriResolverLike ):
164159 """
165160 Adds a resolver to the list of resolvers
166161 """
167162
168163 if self .config .resolver is None :
169- raise ValueError ("This resolver is not set. Please set a resolver before adding resolvers." )
164+ raise ValueError (
165+ "This resolver is not set. Please set a resolver before adding resolvers."
166+ )
170167 self .config .resolver .append (resolver )
171168 return self
172169
173- @abstractmethod
174- def add_resolvers (self , resolvers_list : List [IUriResolver ]):
170+ def add_resolvers (self , resolvers_list : List [UriResolverLike ]):
175171 """
176172 Adds a list of resolvers to the list of resolvers
177173 """
178174 for resolver in resolvers_list :
179175 self .add_resolver (resolver )
180176 return self
181177
178+
182179class ClientConfigBuilder (BaseClientConfigBuilder ):
183-
184- def build (self )-> ClientConfig :
180+ def build (self ) -> ClientConfig :
185181 """
186182 Returns a sanitized config object from the builder's config.
187183 """
188184 return self .config
189-
185+
190186 def add (self , new_config : ClientConfig ) -> ClientConfig :
191187 """
192188 Returns a sanitized config object from the builder's config after receiving a partial `ClientConfig` object.
193189 """
194190 super ().add (new_config )
195- return self .config
191+ return self .config
196192
197193 def get_envs (self ) -> Dict [Uri , Dict [str , Any ]]:
198194 return super ().get_envs ()
199195
200- def set_env (self , env : Env , uri : Uri )-> BaseClientConfigBuilder :
196+ def set_env (self , env : Env , uri : Uri ) -> BaseClientConfigBuilder :
201197 super ().set_env (env , uri )
202198 return self
203199
204- def add_env (self , env : Env , uri : Uri )-> BaseClientConfigBuilder :
200+ def add_env (self , env : Env , uri : Uri ) -> BaseClientConfigBuilder :
205201 super ().add_env (env , uri )
206202 return self
207203
208- def add_envs (self , envs : List [Env ], uri : Uri )-> BaseClientConfigBuilder :
204+ def add_envs (self , envs : List [Env ], uri : Uri ) -> BaseClientConfigBuilder :
209205 super ().add_envs (envs , uri )
210206 return self
211207
212- def add_interface_implementations (self , interface_uri : Uri , implementations_uris : List [Uri ])-> BaseClientConfigBuilder :
208+ def add_interface_implementations (
209+ self , interface_uri : Uri , implementations_uris : List [Uri ]
210+ ) -> BaseClientConfigBuilder :
213211 super ().add_interface_implementations (interface_uri , implementations_uris )
214212 return self
215213
216- def add_wrapper (self , wrapper_uri : Uri )-> BaseClientConfigBuilder :
214+ def add_wrapper (self , wrapper_uri : Uri ) -> BaseClientConfigBuilder :
217215 super ().add_wrapper (wrapper_uri )
218216 return self
219217
220- def add_wrappers (self , wrappers_uris : List [Uri ])-> BaseClientConfigBuilder :
218+ def add_wrappers (self , wrappers_uris : List [Uri ]) -> BaseClientConfigBuilder :
221219 super ().add_wrappers (wrappers_uris )
222220 return self
223221
224- def remove_wrapper (self , wrapper_uri : Uri )-> BaseClientConfigBuilder :
222+ def remove_wrapper (self , wrapper_uri : Uri ) -> BaseClientConfigBuilder :
225223 super ().remove_wrapper (wrapper_uri )
226- return self
227-
228- def set_package (self , uri_package : UriPackage )-> BaseClientConfigBuilder :
224+ return self
225+
226+ def set_package (self , uri_package : UriPackage ) -> BaseClientConfigBuilder :
229227 super ().set_package (uri_package )
230228 return self
231229
232- def add_package (self , uri_package : UriPackage )-> BaseClientConfigBuilder :
230+ def add_package (self , uri_package : UriPackage ) -> BaseClientConfigBuilder :
233231 super ().add_package (uri_package )
234232 return self
235233
236- def add_packages (self , uri_packages : List [UriPackage ])-> BaseClientConfigBuilder :
234+ def add_packages (self , uri_packages : List [UriPackage ]) -> BaseClientConfigBuilder :
237235 super ().add_packages (uri_packages )
238236 return self
239237
240- def remove_package (self , uri_package : UriPackage )-> BaseClientConfigBuilder :
238+ def remove_package (self , uri_package : UriPackage ) -> BaseClientConfigBuilder :
241239 super ().remove_package (uri_package )
242240 return self
243241
244- def set_resolver (self , uri_resolver : IUriResolver ) -> BaseClientConfigBuilder :
242+ def set_resolver (self , uri_resolver : UriResolverLike ) -> BaseClientConfigBuilder :
245243 super ().set_resolver (uri_resolver )
246244 return self
247245
248- def add_resolver (self , resolver : IUriResolver ) -> BaseClientConfigBuilder :
246+ def add_resolver (self , resolver : UriResolverLike ) -> BaseClientConfigBuilder :
249247 super ().add_resolver (resolver )
250248 return self
251249
252- def add_resolvers (self , resolvers_list : List [IUriResolver ])-> BaseClientConfigBuilder :
250+ def add_resolvers (
251+ self , resolvers_list : List [UriResolverLike ]
252+ ) -> BaseClientConfigBuilder :
253253 super ().add_resolvers (resolvers_list )
254254 return self
255-
256-
0 commit comments