This commit is contained in:
John Lancaster
2026-02-21 23:29:45 -06:00
parent 3281c7c1ea
commit 2da2002cb9
2 changed files with 8 additions and 9 deletions

View File

@@ -1,10 +1,9 @@
from collections.abc import MutableMapping, MutableSequence, Sequence from collections.abc import MutableMapping, Sequence
from copy import copy from copy import copy
from typing import TypeVar from typing import TypeVar
from . import events as e from . import events as e
from .common import HookedContainer, MutableNesting from .common import HookedContainer, MutableNesting
from .sequence import HookedList
T = TypeVar("T") T = TypeVar("T")
@@ -28,9 +27,9 @@ class HookedMapping(HookedContainer[T], MutableMapping[T, MutableNesting[T]]):
new_path.append(key) new_path.append(key)
match value: match value:
case MutableMapping() as mapping: case MutableMapping() as mapping:
return HookedMapping(hook=self.hook, existing=mapping, path=new_path) return HookedMapping(mapping, self.hook, path=new_path)
case MutableSequence() as seq: case HookedContainer() as seq:
return HookedList(hook=self.hook, existing=seq, path=new_path) return type(self)(seq, self.hook, path=new_path)
case _ as item: case _ as item:
return item return item

View File

@@ -20,10 +20,10 @@ class HookedList(HookedContainer[T], MutableSequence[T]):
) -> None: ) -> None:
self.hook = hook self.hook = hook
match existing: match existing:
case MutableSequence() as seq:
self._data = seq
case HookedContainer(_data=seq): case HookedContainer(_data=seq):
self._data = seq self._data = seq
case MutableSequence() as seq:
self._data = seq
case _ as it: case _ as it:
self._data = list(it) self._data = list(it)
self._path = list(path) if path is not None else [] self._path = list(path) if path is not None else []
@@ -32,10 +32,10 @@ class HookedList(HookedContainer[T], MutableSequence[T]):
new_path = copy(self._path) new_path = copy(self._path)
new_path.append(s) new_path.append(s)
match self._data[s]: match self._data[s]:
case MutableSequence() as seq:
return type(self)(seq, self.hook, path=new_path)
case HookedContainer(_data=seq): case HookedContainer(_data=seq):
return type(self)(seq, self.hook, path=new_path) return type(self)(seq, self.hook, path=new_path)
case MutableSequence() as seq:
return HookedList(seq, self.hook, path=new_path)
case _ as item: case _ as item:
return item return item