From 478b393418791ed65f074b8fb464d772e73babf6 Mon Sep 17 00:00:00 2001 From: drodarie Date: Thu, 18 Jan 2024 13:21:47 +0100 Subject: [PATCH] Re-add deepcopy signature and tests. --- bsb/config/_make.py | 3 ++- tests/test_configuration.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/bsb/config/_make.py b/bsb/config/_make.py index d58b13128..4febbb9e2 100644 --- a/bsb/config/_make.py +++ b/bsb/config/_make.py @@ -585,10 +585,11 @@ def get_tree(instance): def make_copyable(node_cls): - def loc_copy(instance): + def loc_copy(instance, memo=None): return type(instance)(instance.__tree__()) node_cls.__copy__ = loc_copy + node_cls.__deepcopy__ = loc_copy def walk_node_attributes(node): diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 345d8da2a..9235e97ca 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1288,6 +1288,10 @@ class Test: class TestCopy(unittest.TestCase): def test_copy(self): + """ + Check copy and deepcopy functions for the nodes. + """ + @config.node class SubClass: c = config.attr( @@ -1306,6 +1310,12 @@ class MainClass: instance = MainClass({"a": {"c": tab}, "b": 3.0}) copied = instance.__copy__() self.assertTrue(id(instance.a) != id(copied.a)) + # check that the c arrays elements are equals + self.assertTrue(np.all(instance.a.c == copied.a.c)) + self.assertEqual(instance.b, copied.b) + copied = instance.__deepcopy__() + self.assertTrue(id(instance.a) != id(copied.a)) + # check that the c arrays elements are equals self.assertTrue(np.all(instance.a.c == copied.a.c)) self.assertEqual(instance.b, copied.b)