This commit is contained in:
Andrej730
2024-03-29 12:38:37 +05:00
parent 75e6147dbc
commit 232b4ec34d
3 changed files with 61 additions and 26 deletions
@@ -30,7 +30,7 @@ import functools
import subprocess
import sys
import time
from typing import Union, Any, Callable
from typing import Union, Any, Callable, TypeVar
from . import ifcopenshell_wrapper
from . import settings
@@ -40,6 +40,8 @@ try:
except ImportError as e:
logging = type("logger", (object,), {"exception": staticmethod(lambda s: print(s))})
T = TypeVar("T")
def set_derived_attribute(*args):
raise TypeError("Unable to set derived attribute")
@@ -272,16 +274,16 @@ class entity_instance(object):
"""
return self.wrapped_data.get_argument_name(attr_idx)
def __setattr__(self, key, value):
def __setattr__(self, key: str, value: Any) -> None:
index = self.wrapped_data.get_argument_index(key)
self[index] = value
def __getitem__(self, key):
def __getitem__(self, key: int) -> Any:
if key < 0 or key >= len(self):
raise IndexError("Attribute index {} out of range for instance of type {}".format(key, self.is_a()))
return entity_instance.wrap_value(self.wrapped_data.get_argument(key), self.wrapped_data.file)
def __setitem__(self, idx, value):
def __setitem__(self, idx: int, value: T) -> T:
if self.wrapped_data.file and self.wrapped_data.file.transaction:
self.wrapped_data.file.transaction.store_edit(self, idx, value)