Skip to content

Commit ba79da0

Browse files
authored
Merge pull request #23 from NACLab/dev
Deprecators and bug fixes
2 parents 2325073 + b975baf commit ba79da0

File tree

3 files changed

+43
-9
lines changed

3 files changed

+43
-9
lines changed

ngcsimlib/context.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
get_context, add_context, get_current_path, get_current_context, set_new_context, load_module, is_pre_loaded
55
from ngcsimlib import preload_modules
66
from ngcsimlib.compilers.command_compiler import dynamic_compile, wrap_command
7-
import json, os, shutil
7+
import json, os, shutil, copy
88

99

1010

@@ -241,8 +241,8 @@ def save_to_json(self, directory, model_name=None, custom_save=True, overwrite=F
241241

242242
with open(path + "/components.json", 'w') as fp:
243243
hyperparameters = {}
244-
245-
for c_path, component in self._json_objects['components'].items():
244+
_components = copy.deepcopy(self._json_objects['components'])
245+
for c_path, component in _components.items():
246246
if component['kwargs'].get('parameter_map', None) is not None:
247247
for cKey, pKey in component['kwargs']['parameter_map'].items():
248248
pVal = component['kwargs'][cKey]
@@ -264,19 +264,19 @@ def save_to_json(self, directory, model_name=None, custom_save=True, overwrite=F
264264

265265
for c_path, cKey, _ in hyperparameters[param]:
266266
if matched:
267-
self._json_objects['components'][c_path]['kwargs'][cKey] = param
267+
_components[c_path]['kwargs'][cKey] = param
268268

269269
else:
270270
warn("Unable to extract hyperparameter", param,
271271
"as it is mismatched between components. Parameter will not be extracted")
272272

273-
for c_path, component in self._json_objects['components'].items():
273+
for c_path, component in _components.items():
274274
if "parameter_map" in component['kwargs'].keys():
275275
del component['kwargs']["parameter_map"]
276276
if "module" in component.keys():
277277
del component['module']
278278

279-
obj = {"components": self._json_objects['components']}
279+
obj = {"components": _components}
280280
if len(hp.keys()) != 0:
281281
obj["hyperparameters"] = hp
282282

ngcsimlib/deprecators.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from ngcsimlib.logger import warn
2+
3+
4+
def deprecated(fn):
5+
def _wrapped(*args, **kwargs):
6+
warn(fn.__qualname__, "is deprecated")
7+
return fn(*args, **kwargs)
8+
return _wrapped
9+
10+
11+
def deprecate_args(_rebind=True, **arg_list):
12+
def _deprecate_args(fn):
13+
def _wrapped(*args, **kwargs):
14+
for kwarg in list(kwargs.keys()):
15+
if kwarg in arg_list.keys():
16+
new_kwarg = arg_list[kwarg]
17+
if new_kwarg is None:
18+
warn(f"The argument \"{kwarg}\" is depricated for {fn.__qualname__}, and will no longer be supported")
19+
else:
20+
warn(f"The argument \"{kwarg}\" is deprecated for {fn.__qualname__}, use \"{new_kwarg}\" instead")
21+
22+
if _rebind:
23+
if new_kwarg is not None:
24+
kwargs[new_kwarg] = kwargs[kwarg]
25+
del kwargs[kwarg]
26+
27+
return fn(*args, **kwargs)
28+
return _wrapped
29+
return _deprecate_args

ngcsimlib/metaComponent.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ def pre_init(self, name, *args, **kwargs):
1515
Called before the classes default init
1616
"""
1717
self.connections = []
18-
self.path = get_current_context().path + "/" + name
19-
get_current_context().register_component(self, name, *args, **kwargs)
18+
cc = get_current_context()
19+
if cc is None:
20+
self.path = "/" + name
21+
else:
22+
self.path = cc.path + "/" + name
23+
cc.register_component(self, name, *args, **kwargs)
2024
self._meta_init = True
2125

2226

@@ -29,7 +33,8 @@ def post_init(self, *args, **kwargs):
2933
if Compartment.is_compartment(value):
3034
value._setup(self, key)
3135
# add component to context
32-
get_current_context().add_component(self)
36+
if get_current_context() is not None:
37+
get_current_context().add_component(self)
3338

3439
@staticmethod
3540
def add_connection(self, op):

0 commit comments

Comments
 (0)