From 1700b68acb37e8be5a0002f6aa7e3c7a6255ed61 Mon Sep 17 00:00:00 2001
From: Benedikt Hock <benedikt.hock@stud.tu-darmstadt.de>
Date: Thu, 9 Feb 2023 19:17:11 +0100
Subject: [PATCH] Add typing and kwargs

---
 functions/lego_classes.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/functions/lego_classes.py b/functions/lego_classes.py
index 19da189..7e05af7 100644
--- a/functions/lego_classes.py
+++ b/functions/lego_classes.py
@@ -7,12 +7,15 @@ from typing import Any, Union, Literal, TypedDict, TypeVar, Type, List, Optional
 
 
 class LegoItem:
-    def __init__(self, item_number: int, mass: float, delivery_time: int) -> None:
+    def __init__(self, item_number: int, mass: float, delivery_time: int, **kwargs) -> None:
         # , *args, **kwargs not handling additional/optional specs right now
-        self.id = uuid.uuid4()
-        self.item_number = item_number
-        self.mass = mass
-        self.delivery_time = delivery_time
+        self.id: uuid.UUID = uuid.uuid4()
+        self.properties: dict = kwargs
+        self.item_number: int = item_number
+        self.mass: float = mass
+        self.delivery_time: int = delivery_time
+        # TODO: Set parent directly and not via id? This would allow for easier traversal of the tree
+        #   Currently there is no way to search for parts and components in tree by id.
         self.parent_id = None  # This will be set when added to a component
 
     def __str__(self):
@@ -22,6 +25,8 @@ class LegoItem:
             f"parent_id={self.parent_id})"
         )
 
+    def __repr__(self):
+        return f"Lego Item [{self.id}]"
 
 class LegoComponent:
     def __init__(self, items=None | LegoItem | list[LegoItem],
-- 
GitLab