Skip to content

Commit c27ff74

Browse files
committed
chore: refactoring abstract base classes to remove IClientConfigBuilder
1 parent 76bf954 commit c27ff74

1 file changed

Lines changed: 80 additions & 69 deletions

File tree

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

Lines changed: 80 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -15,82 +15,35 @@ class ClientConfig():
1515
wrappers: List[Uri]
1616

1717

18-
class IClientConfigBuilder(ABC):
18+
class BaseClientConfigBuilder(ABC):
1919
"""
20-
Interface used by the BaseClientConfigBuilder class.
21-
This interface is used to configure the polywrap client before it executes a call
22-
It defines the methods that can be used to configure the ClientConfig object.
20+
An abstract base class of the `ClientConfigBuilder`, which uses the ABC module
21+
to define the methods that can be used to configure the `ClientConfig` object.
2322
"""
2423

24+
def __init__(self):
25+
self.config = ClientConfig(envs={}, interfaces={}, resolver=[], wrappers= [])
26+
2527
@abstractmethod
2628
def build(self) -> ClientConfig:
2729
"""Returns a sanitized config object from the builder's config."""
2830
pass
2931

30-
def get_envs(self) -> Optional[Dict[Uri, Dict[str, Any]]]:
31-
"""Returns the envs dictionary from the builder's config."""
32-
pass
33-
34-
@abstractmethod
35-
def set_env(self, env: Dict[str, Any], uri: Uri)-> ClientConfig:
36-
pass
37-
38-
@abstractmethod
39-
def add_env(self, env: Dict[str, Any], uri: Uri) -> ClientConfig:
40-
pass
41-
42-
@abstractmethod
43-
def add_envs(self, envs: List[Env], uri: Uri) -> ClientConfig:
44-
pass
45-
46-
@abstractmethod
47-
def add_interface_implementations(self, interface_uri: Uri, implementations_uris: List[Uri]):
48-
pass
49-
50-
@abstractmethod
51-
def add_wrapper(self, wrapper_uri: Uri) -> ClientConfig:
52-
pass
53-
54-
@abstractmethod
55-
def add_wrappers(self, wrapper_uris: Optional[List[Uri]]) -> ClientConfig:
56-
pass
57-
58-
@abstractmethod
59-
def set_resolver(self, resolver: IUriResolver) -> ClientConfig:
60-
pass
61-
62-
@abstractmethod
63-
def add_resolver(self, resolver: IUriResolver) -> ClientConfig:
64-
pass
65-
6632
@abstractmethod
67-
def add_resolvers(self, resolvers_list: List[IUriResolver]) -> ClientConfig:
68-
pass
69-
class BaseClientConfigBuilder(IClientConfigBuilder):
70-
"""A concrete class of the Client Config Builder, which uses the IClientConfigBuilder Abstract Base Class"""
71-
# config: ClientConfig
72-
73-
def __init__(self):
74-
self.config = ClientConfig(envs={}, interfaces={}, resolver=[], wrappers= [])
75-
76-
def build(self)-> ClientConfig:
77-
"""
78-
Returns a sanitized config object from the builder's config.
79-
"""
80-
return self.config
81-
8233
def get_envs(self)-> Dict[Uri, Dict[str, Any]]:
34+
"""Returns the envs dictionary from the builder's config."""
8335
return self.config.envs
84-
85-
def set_env(self, env: Env={'test':'tested'}, uri: Uri=Uri("wrap://ens/eth.plugin.one"))-> IClientConfigBuilder:
86-
# TODO: This is a temporary solution to the problem of the Uri / Env not being able to pass as None initially
87-
# should be (self, env: Env=None, uri: Uri=None): but that causes an error
36+
37+
@abstractmethod
38+
def set_env(self, env: Env, uri: Uri):
39+
"""Sets the envs dictionary in the builder's config, overiding any existing values."""
8840
if (env or uri) is None:
8941
raise KeyError("Must provide both an env or uri")
9042
self.config.envs[uri] = env
9143
return self
9244

93-
def add_env(self, env: Env = None , uri: Uri = None)-> IClientConfigBuilder:
45+
@abstractmethod
46+
def add_env(self, env: Env = None , uri: Uri = None):
9447
"""Adds an environment (in the form of an `Env`) for a given uri, without overwriting existing environments,
9548
unless the env key already exists in the environment, then it will overwrite the existing value"""
9649
if (env or uri) is None:
@@ -103,15 +56,17 @@ def add_env(self, env: Env = None , uri: Uri = None)-> IClientConfigBuilder:
10356
self.config.envs[uri] = env
10457
return self
10558

106-
def add_envs(self, envs: List[Env], uri: Uri = None) -> IClientConfigBuilder:
59+
@abstractmethod
60+
def add_envs(self, envs: List[Env], uri: Uri = None):
10761
"""
10862
Adds a list of environments (each in the form of an `Env`) for a given uri
10963
"""
11064
for env in envs:
11165
self.add_env(env, uri )
11266
return self
11367

114-
def add_interface_implementations(self, interface_uri: Uri, implementations_uris: List[Uri]) -> IClientConfigBuilder:
68+
@abstractmethod
69+
def add_interface_implementations(self, interface_uri: Uri, implementations_uris: List[Uri]):
11570
"""
11671
Adds a list of implementations (each in the form of an `Uri`) for a given interface
11772
"""
@@ -123,36 +78,41 @@ def add_interface_implementations(self, interface_uri: Uri, implementations_uris
12378
self.config.interfaces[interface_uri] = implementations_uris
12479
return self
12580

126-
def add_wrapper(self, wrapper_uri: Uri) -> IClientConfigBuilder:
81+
@abstractmethod
82+
def add_wrapper(self, wrapper_uri: Uri) :
12783
"""
12884
Adds a wrapper to the list of wrappers
12985
"""
13086
self.config.wrappers.append(wrapper_uri)
13187
return self
13288

133-
def add_wrappers(self, wrappers_uris: List[Uri]) -> IClientConfigBuilder:
89+
@abstractmethod
90+
def add_wrappers(self, wrappers_uris: List[Uri]) :
13491
"""
13592
Adds a list of wrappers to the list of wrappers
13693
"""
13794
for wrapper_uri in wrappers_uris:
13895
self.add_wrapper(wrapper_uri)
13996
return self
14097

141-
def remove_wrapper(self, wrapper_uri: Uri) -> IClientConfigBuilder:
98+
@abstractmethod
99+
def remove_wrapper(self, wrapper_uri: Uri) :
142100
"""
143101
Removes a wrapper from the list of wrappers
144102
"""
145103
self.config.wrappers.remove(wrapper_uri)
146104
return self
147105

148-
def set_resolver(self, uri_resolver) -> IClientConfigBuilder:
106+
@abstractmethod
107+
def set_resolver(self, uri_resolver):
149108
"""
150109
Sets a single resolver for the `ClientConfig` object before it is built
151110
"""
152111
self.config.resolver = [uri_resolver]
153112
return self
154113

155-
def add_resolver(self, resolver: IUriResolver) -> IClientConfigBuilder:
114+
@abstractmethod
115+
def add_resolver(self, resolver: IUriResolver) :
156116
"""
157117
Adds a resolver to the list of resolvers
158118
"""
@@ -162,7 +122,8 @@ def add_resolver(self, resolver: IUriResolver) -> IClientConfigBuilder:
162122
self.config.resolver.append(resolver)
163123
return self
164124

165-
def add_resolvers(self, resolvers_list: List[IUriResolver]) -> IClientConfigBuilder:
125+
@abstractmethod
126+
def add_resolvers(self, resolvers_list: List[IUriResolver]):
166127
"""
167128
Adds a list of resolvers to the list of resolvers
168129
"""
@@ -171,4 +132,54 @@ def add_resolvers(self, resolvers_list: List[IUriResolver]) -> IClientConfigBuil
171132
return self
172133

173134
class ClientConfigBuilder(BaseClientConfigBuilder):
174-
...
135+
136+
def build(self)-> ClientConfig:
137+
"""
138+
Returns a sanitized config object from the builder's config.
139+
"""
140+
return self.config
141+
142+
def get_envs(self) -> Dict[Uri, Dict[str, Any]]:
143+
return super().get_envs()
144+
145+
def set_env(self, env: Env, uri: Uri)-> BaseClientConfigBuilder:
146+
super().set_env(env, uri)
147+
return self
148+
149+
def add_env(self, env: Env, uri: Uri)-> BaseClientConfigBuilder:
150+
super().add_env(env, uri)
151+
return self
152+
153+
def add_envs(self, envs: List[Env], uri: Uri)-> BaseClientConfigBuilder:
154+
super().add_envs(envs, uri)
155+
return self
156+
157+
def add_interface_implementations(self, interface_uri: Uri, implementations_uris: List[Uri])-> BaseClientConfigBuilder:
158+
super().add_interface_implementations(interface_uri, implementations_uris)
159+
return self
160+
161+
def add_wrapper(self, wrapper_uri: Uri)-> BaseClientConfigBuilder:
162+
super().add_wrapper(wrapper_uri)
163+
return self
164+
165+
def add_wrappers(self, wrappers_uris: List[Uri])-> BaseClientConfigBuilder:
166+
super().add_wrappers(wrappers_uris)
167+
return self
168+
169+
def remove_wrapper(self, wrapper_uri: Uri)-> BaseClientConfigBuilder:
170+
super().remove_wrapper(wrapper_uri)
171+
return self
172+
173+
def set_resolver(self, uri_resolver: IUriResolver)-> BaseClientConfigBuilder:
174+
super().set_resolver(uri_resolver)
175+
return self
176+
177+
def add_resolver(self, resolver: IUriResolver)-> BaseClientConfigBuilder:
178+
super().add_resolver(resolver)
179+
return self
180+
181+
def add_resolvers(self, resolvers_list: List[IUriResolver])-> BaseClientConfigBuilder:
182+
super().add_resolvers(resolvers_list)
183+
return self
184+
185+

0 commit comments

Comments
 (0)