This commit is contained in:
John Lancaster
2026-02-21 22:51:21 -06:00
parent 1d2fcd13f9
commit 58ab0aae6c
3 changed files with 29 additions and 9 deletions

View File

@@ -20,19 +20,17 @@ class HookedContainer(Generic[T], ABC):
def __repr__(self): def __repr__(self):
return f"{self.__class__.__name__}({self._data!r})" return f"{self.__class__.__name__}({self._data!r})"
def __iter__(self): # Sequence Methods
return iter(self._data) # __contains__, __iter__, __reversed__, index, and count
def __contains__(self, value): @abstractmethod
return value in self._data def __getitem__(self, key): ...
# MutableSequence Methods
def __len__(self): def __len__(self):
return len(self._data) return len(self._data)
@abstractmethod # MutableSequence Methods
def __getitem__(self, key): ... # append, reverse, extend, pop, remove, and __iadd__
def __setitem__(self, s, value): def __setitem__(self, s, value):
self._data[s] = value self._data[s] = value

View File

@@ -26,7 +26,7 @@ class HookedList(HookedContainer[T], MutableSequence[T]):
def __getitem__(self, s): def __getitem__(self, s):
# print("Getting item:", s) # print("Getting item:", s)
match self._data[s]: match self._data[s]:
case MutableSequence() as seq: case HookedContainer(_data=seq):
new_path = copy(self._path) new_path = copy(self._path)
new_path.append(s) new_path.append(s)
# print(new_path) # print(new_path)

View File

@@ -0,0 +1,22 @@
from datetime import datetime
from .mapping import HookedMapping
class DomainState(HookedMapping[str]):
def __setitem__(self, key, value):
super().__setitem__(key, value)
super().__setitem__("last_changed", datetime.now())
class NameSpaceState(HookedMapping[str]):
_data: DomainState
def __setitem__(self, key, value):
super().__setitem__(key, value)
# print("ns SetItem")
def __getitem__(self, key):
val = super().__getitem__(key)
# print("ns GetItem")
return DomainState(self.hook, existing=val, path=self._path + [key])