Skip to content

Commit 7dd6a59

Browse files
committed
feat: set packages tests and functionality
1 parent 2c2c61e commit 7dd6a59

3 files changed

Lines changed: 230 additions & 98 deletions

File tree

Lines changed: 58 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
11
from abc import ABC, abstractmethod
22
from 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

2025
class 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+
182179
class 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

Comments
 (0)