Skip to content
Snippets Groups Projects
Commit ad3c4eef authored by Hock, Martin's avatar Hock, Martin
Browse files

Merge branch 'deepcopy' into 'development'

Adjust dict and key/value pair assignments to use deepcopy in constructor and clone()

See merge request fst-tuda/projects/lehre/praktikum_digitalisierung/quality-kpi!4
parents cce49d38 da6f429f
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ import json ...@@ -8,6 +8,7 @@ import json
import operator import operator
from enum import Enum, auto from enum import Enum, auto
from typing import List, Dict, Optional from typing import List, Dict, Optional
from copy import deepcopy
class AggregationLayer(Enum): class AggregationLayer(Enum):
...@@ -83,14 +84,14 @@ class LegoComponent: ...@@ -83,14 +84,14 @@ class LegoComponent:
if label is not None: if label is not None:
self.properties["label"] = label self.properties["label"] = label
if datasheet is not None: if datasheet is not None:
self.properties.update(datasheet) self.properties.update(deepcopy(datasheet))
for prop in more_properties: for prop in more_properties:
if isinstance(prop, dict): if isinstance(prop, dict):
self.properties.update(prop) self.properties.update(deepcopy(prop))
else: else:
raise ValueError(f"Unexpected argument type: {type(more_properties)}") raise ValueError(f"Unexpected argument type: {type(more_properties)}")
for key, value in kwargs.items(): for key, value in kwargs.items():
self.properties[key] = value self.properties[key] = deepcopy(value)
def clone(self, new_label: Optional[str] = None) -> LegoComponent: def clone(self, new_label: Optional[str] = None) -> LegoComponent:
""" """
...@@ -113,7 +114,7 @@ class LegoComponent: ...@@ -113,7 +114,7 @@ class LegoComponent:
""" """
if new_label is None: if new_label is None:
new_label = self.properties["label"] new_label = self.properties["label"]
clone = LegoComponent(None, None, self.properties) clone = LegoComponent(None, None, deepcopy(self.properties))
clone.properties["label"] = new_label clone.properties["label"] = new_label
return clone return clone
...@@ -207,11 +208,11 @@ class LegoAssembly: ...@@ -207,11 +208,11 @@ class LegoAssembly:
self.properties["label"] = label self.properties["label"] = label
for prop in properties: for prop in properties:
if isinstance(prop, dict): if isinstance(prop, dict):
self.properties.update(prop) self.properties.update(deepcopy(prop))
else: else:
raise ValueError(f"Unexpected argument type: {type(properties)}") raise ValueError(f"Unexpected argument type: {type(properties)}")
for key, value in kwargs.items(): for key, value in kwargs.items():
self.properties[key] = value self.properties[key] = deepcopy(value)
self.components: List[LegoComponent] = [] self.components: List[LegoComponent] = []
self.assemblies: List[LegoAssembly] = [] self.assemblies: List[LegoAssembly] = []
...@@ -419,7 +420,7 @@ class LegoAssembly: ...@@ -419,7 +420,7 @@ class LegoAssembly:
""" """
if label is None: if label is None:
label = self.properties["label"] label = self.properties["label"]
clone = LegoAssembly(self.layer, None, self.properties) clone = LegoAssembly(self.layer, None, deepcopy(self.properties))
clone.properties["label"] = label clone.properties["label"] = label
for component in self.components: for component in self.components:
clone.add_component(component.clone()) clone.add_component(component.clone())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment