diff --git a/functions/classes.py b/functions/classes.py index c86206f196a3f028bfb1b10fdaa9de0a01004940..00df6998df423f85de2d4a821f169381afcddbf9 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