@@ -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
173134class 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