Skip to content

Commit 61155b3

Browse files
Denis Navarroticdenis
authored andcommitted
refactor(*): Remove mutable arguments from ContainerBuilder
1 parent 7801b10 commit 61155b3

5 files changed

Lines changed: 33 additions & 27 deletions

File tree

aiodi/resolver/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def times(self) -> int:
4343

4444
class Resolver(ABC, Generic[Metadata, Value]):
4545
@abstractmethod
46-
def extract_metadata(self, data: Dict[str, Any], extra: Dict[str, Any] = {}) -> Metadata:
46+
def extract_metadata(self, data: Dict[str, Any], extra: Dict[str, Any]) -> Metadata:
4747
"""
4848
Extract metadata from data
4949
@@ -53,7 +53,7 @@ def extract_metadata(self, data: Dict[str, Any], extra: Dict[str, Any] = {}) ->
5353
"""
5454

5555
@abstractmethod
56-
def parse_value(self, metadata: Metadata, retries: int = -1, extra: Dict[str, Any] = {}) -> Value:
56+
def parse_value(self, metadata: Metadata, retries: int, extra: Dict[str, Any]) -> Value:
5757
"""
5858
Parse value from metadata
5959

aiodi/resolver/loader.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,7 @@ def from_metadata(cls, metadata: LoaderMetadata, data: OutputData) -> 'LoadData'
6262

6363

6464
class LoaderResolver(Resolver[LoaderMetadata, LoadData]):
65-
def extract_metadata(
66-
self, data: Dict[str, Any], extra: Dict[str, Any] = {} # pylint: disable=W0613
67-
) -> LoaderMetadata:
65+
def extract_metadata(self, data: Dict[str, Any], extra: Dict[str, Any]) -> LoaderMetadata: # pylint: disable=W0613
6866
return LoaderMetadata(
6967
path_data=data['path_data'],
7068
decoders=data['decoders'],
@@ -73,8 +71,8 @@ def extract_metadata(
7371
def parse_value(
7472
self,
7573
metadata: LoaderMetadata,
76-
retries: int = -1, # pylint: disable=W0613
77-
extra: Dict[str, Any] = {}, # pylint: disable=W0613
74+
retries: int, # pylint: disable=W0613
75+
extra: Dict[str, Any], # pylint: disable=W0613
7876
) -> LoadData:
7977
return LoadData.from_metadata(metadata=metadata, data=metadata.decode())
8078

@@ -83,5 +81,5 @@ def prepare_loader_to_parse(
8381
resolver: Resolver[Any, Any], items: Dict[str, Any], extra: Dict[str, Any] # pylint: disable=W0613
8482
) -> Dict[str, Tuple[LoaderMetadata, int]]:
8583
return {
86-
'value': (resolver.extract_metadata(data=items), 0),
84+
'value': (resolver.extract_metadata(data=items, extra=extra), 0),
8785
}

aiodi/resolver/path.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,14 @@ def from_metadata(cls, metadata: PathMetadata) -> 'PathData':
4747

4848

4949
class PathResolver(Resolver[PathMetadata, PathData]):
50-
def extract_metadata(
51-
self, data: Dict[str, Any], extra: Dict[str, Any] = {} # pylint: disable=W0613
52-
) -> PathMetadata:
50+
def extract_metadata(self, data: Dict[str, Any], extra: Dict[str, Any]) -> PathMetadata: # pylint: disable=W0613
5351
return PathMetadata(cwd=data.get('cwd', None), filenames=data.get('filenames', []))
5452

5553
def parse_value(
5654
self,
5755
metadata: PathMetadata,
58-
retries: int = -1, # pylint: disable=W0613
59-
extra: Dict[str, Any] = {}, # pylint: disable=W0613
56+
retries: int, # pylint: disable=W0613
57+
extra: Dict[str, Any], # pylint: disable=W0613
6058
) -> PathData:
6159
return PathData.from_metadata(metadata)
6260

@@ -65,5 +63,5 @@ def prepare_path_to_parse(
6563
resolver: Resolver[Any, Any], items: Dict[str, Any], extra: Dict[str, Any] # pylint: disable=W0613
6664
) -> Dict[str, Tuple[PathMetadata, int]]:
6765
return {
68-
'value': (resolver.extract_metadata(data=items), 0),
66+
'value': (resolver.extract_metadata(data=items, extra=extra), 0),
6967
}

aiodi/resolver/service.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def compute_excludes(self) -> List[str]:
7373
return [left] if len(rights) == 0 else rights
7474

7575
def compute_services(
76-
self, resolver: Resolver[Any, Any], resources: List[str], excludes: List[str]
76+
self, resolver: Resolver[Any, Any], resources: List[str], excludes: List[str], extra: Dict[str, Any]
7777
) -> Dict[str, Tuple['ServiceMetadata', int]]:
7878
names: List[str] = []
7979
for include in resources:
@@ -100,7 +100,8 @@ def compute_services(
100100
autowire=self.autowire,
101101
autoconfigure=self.autoconfigure,
102102
),
103-
}
103+
},
104+
extra=extra,
104105
),
105106
0,
106107
)
@@ -208,9 +209,7 @@ def _define_service_type(name: str, typ: str, cls: str) -> Tuple[Type[Any], Type
208209

209210
return typ, cls # type: ignore
210211

211-
def extract_metadata(
212-
self, data: Dict[str, Any], extra: Dict[str, Any] = {} # pylint: disable=W0613
213-
) -> ServiceMetadata:
212+
def extract_metadata(self, data: Dict[str, Any], extra: Dict[str, Any]) -> ServiceMetadata: # pylint: disable=W0613
214213
key = cast(str, data.get('key'))
215214
val = data.get('val')
216215
defaults = cast(ServiceDefaults, data.get('defaults'))
@@ -233,7 +232,7 @@ def extract_metadata(
233232
defaults=defaults,
234233
)
235234

236-
def parse_value(self, metadata: ServiceMetadata, retries: int = -1, extra: Dict[str, Any] = {}) -> Any:
235+
def parse_value(self, metadata: ServiceMetadata, retries: int, extra: Dict[str, Any]) -> Any:
237236
_variables = cast(Dict[str, Any], extra.get('variables'))
238237
_services = cast(Dict[str, Any], extra.get('services'))
239238
variable_resolver = cast(Resolver, extra.get('resolvers', {}).get('variable'))
@@ -248,8 +247,10 @@ def parse_value(self, metadata: ServiceMetadata, retries: int = -1, extra: Dict[
248247
data={
249248
'key': '@{0}:{1}'.format(metadata.name, param.name),
250249
'val': metadata.arguments[param.name],
251-
}
250+
},
251+
extra=extra,
252252
),
253+
retries=-1,
253254
extra={'variables': _variables},
254255
)
255256
elif param.source_kind == 'svc':
@@ -287,11 +288,14 @@ def prepare_services_to_parse(
287288
if defaults.has_resources():
288289
services.update(
289290
defaults.compute_services(
290-
resolver=resolver, resources=defaults.compute_resources(), excludes=defaults.compute_excludes()
291+
resolver=resolver,
292+
resources=defaults.compute_resources(),
293+
excludes=defaults.compute_excludes(),
294+
extra=extra,
291295
)
292296
)
293297
else:
294-
metadata = resolver.extract_metadata(data={'key': key, 'val': val, 'defaults': defaults})
298+
metadata = resolver.extract_metadata(data={'key': key, 'val': val, 'defaults': defaults}, extra=extra)
295299
if is_abstract(metadata.type):
296300
raise TypeError('Can not instantiate abstract class <{0}>!'.format(metadata.name))
297301
services[key] = (metadata, 0)

aiodi/resolver/variable.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
class VariableMetadata(NamedTuple):
1212
name: str
1313
value: Any
14-
matches: List['VariableMetadata.MatchMetadata'] = [] # type: ignore
14+
matches: List['VariableMetadata.MatchMetadata'] # type: ignore
1515

1616
class MatchMetadata(NamedTuple): # type: ignore
1717
source_kind: str
@@ -49,7 +49,7 @@ def __call__(string: Any) -> List[Match]:
4949
return __call__(string=val) or __call__(string=STATIC_TEMPLATE.format(type(val).__name__, key, val))
5050

5151
def extract_metadata(
52-
self, data: Dict[str, Any], extra: Dict[str, Any] = {} # pylint: disable=W0613
52+
self, data: Dict[str, Any], extra: Dict[str, Any] # pylint: disable=W0613
5353
) -> VariableMetadata:
5454
key: str = data.get('key') or raise_(KeyError('Missing key "key" to extract variable metadata')) # type: ignore
5555
val: Any = data.get('val') or raise_(KeyError('Missing key "val" to extract variable metadata'))
@@ -64,8 +64,9 @@ def extract_metadata(
6464
)
6565

6666
def parse_value(
67-
self, metadata: VariableMetadata, retries: int = -1, extra: Dict[str, Any] = {} # pylint: disable=W0613
67+
self, metadata: VariableMetadata, retries: int, extra: Dict[str, Any] # pylint: disable=W0613
6868
) -> Any:
69+
extra = {} if extra is None or not isinstance(extra, dict) else extra
6970
_variables: Dict[str, Any] = extra.get('variables') # type: ignore
7071
if _variables is None:
7172
raise KeyError('Missing key "variables" to parse variable value')
@@ -100,4 +101,9 @@ def parse_value(
100101
def prepare_variables_to_parse(
101102
resolver: Resolver[Any, Any], items: Dict[str, Any], extra: Dict[str, Any] # pylint: disable=W0613
102103
) -> Dict[str, Tuple[VariableMetadata, int]]:
103-
return dict([(key, (resolver.extract_metadata(data={'key': key, 'val': val}), 0)) for key, val in items.items()])
104+
return dict(
105+
[
106+
(key, (resolver.extract_metadata(data={'key': key, 'val': val}, extra=extra), 0))
107+
for key, val in items.items()
108+
]
109+
)

0 commit comments

Comments
 (0)