from datetime import datetime from .mapping import HookedMapping class EntityState(HookedMapping[str]): pass class DomainState(HookedMapping[str]): _data: EntityState def __setitem__(self, key, value): super().__setitem__(key, value) super().__setitem__("last_changed", datetime.now()) class NameSpaceState(HookedMapping[str]): _data: DomainState def __iter__(self): return super().__iter__() 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(val, hook=self.hook, path=self.new_path(key))