Skip to content
Snippets Groups Projects

Add support for namespaced attributes in DynamicAttributes

Merged Olivier BICHLER requested to merge attr_ns into dev
Files
33
@@ -73,15 +73,26 @@ class test_operator_binding(unittest.TestCase):
@@ -73,15 +73,26 @@ class test_operator_binding(unittest.TestCase):
self.assertEqual(attrs.get_attr("b"), "test")
self.assertEqual(attrs.get_attr("b"), "test")
self.assertEqual(attrs.has_attr("c"), True)
self.assertEqual(attrs.has_attr("c"), True)
self.assertEqual(attrs.get_attr("c"), [True, False, True])
self.assertEqual(attrs.get_attr("c"), [True, False, True])
self.assertEqual(attrs.dict().keys(), {"a", "b", "c"})
self.assertEqual(attrs.dict().keys(), {"a", "b", "c", "mem", "impl"})
self.assertEqual(attrs.has_attr("d"), False)
self.assertEqual(attrs.has_attr("d"), False)
 
self.assertEqual(attrs.has_attr("mem.a"), True)
 
self.assertEqual(attrs.get_attr("mem.a"), 1)
 
self.assertEqual(attrs.has_attr("mem.data.b"), True)
 
self.assertEqual(attrs.get_attr("mem.data.b"), 1.0)
 
self.assertEqual(attrs.get_attr("mem").get_attr("data").get_attr("b"), 1.0)
 
self.assertEqual(attrs.has_attr("impl.c"), True)
 
self.assertEqual(attrs.get_attr("impl.c"), "test")
# Add Python attributes
# Add Python attributes
attrs.add_attr("d", 18.56)
attrs.add_attr("d", 18.56)
self.assertEqual(attrs.get_attr("d"), 18.56)
self.assertEqual(attrs.get_attr("d"), 18.56)
self.assertEqual(attrs.has_attr("d"), True)
self.assertEqual(attrs.has_attr("d"), True)
self.assertEqual(attrs.dict().keys(), {"a", "b", "c", "d"})
self.assertEqual(attrs.dict().keys(), {"a", "b", "c", "d", "mem", "impl"})
self.assertEqual(attrs.has_attr("e"), False)
self.assertEqual(attrs.has_attr("e"), False)
 
attrs.add_attr("mem.data.c", 19.36)
 
self.assertEqual(attrs.get_attr("mem.data.c"), 19.36)
 
self.assertEqual(attrs.has_attr("mem.data.c"), True)
 
self.assertEqual(attrs.dict().keys(), {"a", "b", "c", "d", "mem", "impl"})
# Check that added Python attribute is accessible in C++
# Check that added Python attribute is accessible in C++
# Return the value of an attribute named "d" of type float64 (double in C++)
# Return the value of an attribute named "d" of type float64 (double in C++)
@@ -89,6 +100,23 @@ class test_operator_binding(unittest.TestCase):
@@ -89,6 +100,23 @@ class test_operator_binding(unittest.TestCase):
attrs.d = 23.89
attrs.d = 23.89
self.assertEqual(aidge_core.test_DynamicAttributes_binding_check(attrs), 23.89)
self.assertEqual(aidge_core.test_DynamicAttributes_binding_check(attrs), 23.89)
 
op = aidge_core.GenericOperatorOp("any_type", 1,0,1)
 
with self.assertRaises(RuntimeError):
 
op.attr.something
 
 
op.attr.something = aidge_core.DynamicAttributes()
 
try:
 
self.assertEqual(str(op.attr), "AttrDict({'something': AttrDict({})})")
 
except Exception:
 
self.fail("op.attr.something raised Exception unexpectedly!")
 
 
op.attr.something.arg1 = 4
 
self.assertEqual(op.attr.something.arg1, 4)
 
 
# auto create the namespace another_thing (not enabled)
 
#op.attr.another_thing.arg = 44
 
#self.assertEqual(op.attr.another_thing.arg, 44)
 
def test_forward_dims(self):
def test_forward_dims(self):
in_dims=[25, 25]
in_dims=[25, 25]
input = aidge_core.Producer(in_dims, name="In")
input = aidge_core.Producer(in_dims, name="In")
Loading