From 673282847946be13a532a53d2cf23aa6a8ad449b Mon Sep 17 00:00:00 2001
From: "Hock, Martin" <martin.hock@fst.tu-darmstadt.de>
Date: Thu, 2 Mar 2023 05:20:59 +0100
Subject: [PATCH] Fix some label in dict issues. Fix optional label parameter
 typing.

Fix Assembly property parameter options.
---
 functions/classes.py | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/functions/classes.py b/functions/classes.py
index c86206f..00df699 100644
--- a/functions/classes.py
+++ b/functions/classes.py
@@ -50,9 +50,9 @@ class LegoComponent:
 
 
 
-    def clone(self, new_label: str = None) -> LegoComponent:
+    def clone(self, new_label: Optional[str] = None) -> LegoComponent:
         if new_label is None:
-            new_label = self.properties.label
+            new_label = self.properties['label']
         clone = LegoComponent(None, None, self.properties)
         clone.properties['label'] = new_label
         return clone
@@ -68,7 +68,6 @@ class LegoComponent:
     def to_dict(self) -> Dict:
         dict_ = {
             "uuid": self.uuid,
-            "label": self.label,
             "properties": self.properties,
             "layer": self.layer,
         }
@@ -93,10 +92,16 @@ class LegoAssembly:
         self.uuid: uuid.UUID = uuid.uuid4()
         self.parent: None | LegoAssembly = None
         self.properties: dict = {}
+        self.layer: AggregationLayer = layer
         if label is not None:
             self.properties['label'] = label
-        self.layer: AggregationLayer = layer
-        self.properties.update(properties)
+        for prop in properties:
+            if isinstance(prop, dict):
+                self.properties.update(prop)
+            else:
+                raise ValueError(f"Unexpected argument type: {type(properties)}")
+        for key, value in kwargs.items():
+            self.properties[key] = value
         self.components: List[LegoComponent] = []
         self.assemblies: List[LegoAssembly] = []
 
@@ -249,6 +254,3 @@ class KPIEncoder(json.JSONEncoder):
             return "kpi-" + str(o)
         if isinstance(o, (AggregationLayer)):
             return "kpi-" + o.properties.label
-        return super().default(o)
-
-pass
\ No newline at end of file
-- 
GitLab