Skip to content

Commit 3957124

Browse files
committed
feat:packages property on CCB
1 parent 002eecc commit 3957124

2 files changed

Lines changed: 46 additions & 8 deletions

File tree

packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from abc import ABC, abstractmethod
22
from dataclasses import dataclass
3-
from polywrap_core import Uri, IUriResolver, Env
3+
from polywrap_core import Uri, IUriResolver, Env, UriWrapper,UriPackage
4+
from polywrap_uri_resolvers import IUriResolver
45
from typing import Dict, Any, List, Optional, Union
56

67
@dataclass(slots=True, kw_only=True)
@@ -11,8 +12,9 @@ class ClientConfig():
1112
"""
1213
envs: Dict[Uri, Dict[str, Any]]
1314
interfaces: Dict[Uri, List[Uri]]
15+
packages: List[UriPackage]
1416
resolver: List[IUriResolver]
15-
wrappers: List[Uri]
17+
wrappers: List[UriWrapper]
1618

1719

1820
class BaseClientConfigBuilder(ABC):
@@ -22,7 +24,7 @@ class BaseClientConfigBuilder(ABC):
2224
"""
2325

2426
def __init__(self):
25-
self.config = ClientConfig(envs={}, interfaces={}, resolver=[], wrappers= [])
27+
self.config = ClientConfig(envs={}, interfaces={}, resolver=[], wrappers= [], packages=[])
2628

2729
@abstractmethod
2830
def build(self) -> ClientConfig:
@@ -37,13 +39,11 @@ def get_envs(self)-> Dict[Uri, Dict[str, Any]]:
3739
@abstractmethod
3840
def set_env(self, env: Env, uri: Uri):
3941
"""Sets the envs dictionary in the builder's config, overiding any existing values."""
40-
if (env or uri) is None:
41-
raise KeyError("Must provide both an env or uri")
4242
self.config.envs[uri] = env
4343
return self
4444

4545
@abstractmethod
46-
def add_env(self, env: Env = None , uri: Uri = None):
46+
def add_env(self, env: Env, uri: Uri):
4747
"""Adds an environment (in the form of an `Env`) for a given uri, without overwriting existing environments,
4848
unless the env key already exists in the environment, then it will overwrite the existing value"""
4949
if (env or uri) is None:
@@ -103,6 +103,31 @@ def remove_wrapper(self, wrapper_uri: Uri) :
103103
self.config.wrappers.remove(wrapper_uri)
104104
return self
105105

106+
@abstractmethod
107+
def set_package(self, uri_package: UriPackage):
108+
"""
109+
Sets the package in the builder's config, overiding any existing values.
110+
"""
111+
self.config.packages = [uri_package]
112+
return self
113+
114+
@abstractmethod
115+
def add_package(self, uri_package: UriPackage):
116+
"""
117+
Adds a package to the list of packages
118+
"""
119+
self.config.packages.append(uri_package)
120+
return self
121+
122+
@abstractmethod
123+
def add_packages(self, uri_packages: List[UriPackage]):
124+
"""
125+
Adds a list of packages to the list of packages
126+
"""
127+
for uri_package in uri_packages:
128+
self.add_package(uri_package)
129+
return self
130+
106131
@abstractmethod
107132
def set_resolver(self, uri_resolver):
108133
"""
@@ -170,6 +195,18 @@ def remove_wrapper(self, wrapper_uri: Uri)-> BaseClientConfigBuilder:
170195
super().remove_wrapper(wrapper_uri)
171196
return self
172197

198+
def set_package(self, uri_package: UriPackage)-> BaseClientConfigBuilder:
199+
super().set_package(uri_package)
200+
return self
201+
202+
def add_package(self, uri_package: UriPackage)-> BaseClientConfigBuilder:
203+
super().add_package(uri_package)
204+
return self
205+
206+
def add_packages(self, uri_packages: List[UriPackage])-> BaseClientConfigBuilder:
207+
super().add_packages(uri_packages)
208+
return self
209+
173210
def set_resolver(self, uri_resolver: IUriResolver)-> BaseClientConfigBuilder:
174211
super().set_resolver(uri_resolver)
175212
return self

packages/polywrap-client-config-builder/tests/test_clientconfig.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ def test_client_config_structure_starts_empty():
1010
envs={},
1111
interfaces={},
1212
resolver = [],
13-
wrappers = []
13+
wrappers = [],
14+
packages=[]
1415
)
1516
assert asdict(client_config) == asdict(result)
1617

@@ -24,5 +25,5 @@ def test_client_config_structure_sets_env():
2425
env = env
2526
)
2627
client_config = ccb.build()
27-
assert asdict(client_config) == asdict(ClientConfig(envs={uri: env}, interfaces={}, resolver = [], wrappers=[]))
28+
assert asdict(client_config) == asdict(ClientConfig(envs={uri: env}, interfaces={}, resolver = [], wrappers=[], packages=[]))
2829

0 commit comments

Comments
 (0)