overwrite the cached exports for a node with the recalculated exports
diff --git a/reclass/datatypes/entity.py b/reclass/datatypes/entity.py
index 41c9db6..000d39f 100644
--- a/reclass/datatypes/entity.py
+++ b/reclass/datatypes/entity.py
@@ -77,7 +77,7 @@
def interpolate(self, nodename, exports):
self._exports.interpolate_from_external(self._parameters)
- exports.merge({ nodename: self._exports.as_dict() })
+ exports.overwrite({ nodename: self._exports.as_dict() })
exports.render_simple()
self._parameters.interpolate(exports=exports.as_dict())
diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index 75b8f26..f830187 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -217,6 +217,10 @@
raise TypeError('Cannot merge %s objects into %s' % (type(other),
self.__class__.__name__))
+ def overwrite(self, other):
+ overdict = {'~' + key: value for key, value in other.iteritems()}
+ self.merge(overdict)
+
def render_simple(self, options=None):
if options is None:
options = MergeOptions()
diff --git a/reclass/datatypes/tests/test_parameters.py b/reclass/datatypes/tests/test_parameters.py
index 1cc3804..0315859 100644
--- a/reclass/datatypes/tests/test_parameters.py
+++ b/reclass/datatypes/tests/test_parameters.py
@@ -401,5 +401,12 @@
p1.interpolate()
self.assertEqual(p1.as_dict(), r)
+ def test_overwrite_method(self):
+ p = Parameters({'alpha': { 'one': 1, 'two': 2}})
+ d = {'alpha': { 'three': 3, 'four': 4}}
+ p.overwrite(d)
+ p.render_simple()
+ self.assertEqual(p.as_dict(), d)
+
if __name__ == '__main__':
unittest.main()