From 89f533d9bf096fe36f1b142c14c4e980c405c62f Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Sat, 21 Feb 2026 19:01:03 -0600 Subject: [PATCH] pruning --- src/hooked_containers/mapping.py | 20 ++++++++++++++++++++ src/hooked_containers/sequence.py | 11 +---------- 2 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 src/hooked_containers/mapping.py diff --git a/src/hooked_containers/mapping.py b/src/hooked_containers/mapping.py new file mode 100644 index 0000000..08dbfda --- /dev/null +++ b/src/hooked_containers/mapping.py @@ -0,0 +1,20 @@ +from collections.abc import Callable, MutableMapping, MutableSequence, Sequence +from typing import Generic, TypeVar + +from . import events as e + +T = TypeVar("T") + + +class HookedMapping(Generic[T], MutableMapping[T, T | MutableSequence[T], MutableMapping[T]]): + _data: MutableSequence[T] + _path: MutableSequence[int] + hook: Callable[[e.ChangeEvent[T]], None] | None + + def __init__(self, hook, existing: MutableMapping[T], path: Sequence[int] | None = None): + self.hook = hook + self._data = existing + self._path = list(path) if path is not None else [] + + def __setitem__(self, key): + return diff --git a/src/hooked_containers/sequence.py b/src/hooked_containers/sequence.py index 4a4b3bf..5c439b0 100644 --- a/src/hooked_containers/sequence.py +++ b/src/hooked_containers/sequence.py @@ -1,6 +1,5 @@ -from collections.abc import Callable, Iterable, MutableSequence, Sequence +from collections.abc import Iterable, MutableSequence, Sequence from copy import copy -from enum import Enum, auto from typing import TypeVar from . import events as e @@ -9,16 +8,8 @@ from .common import HookedContainer T = TypeVar("T") -class ListChange(Enum): - ADD_ITEM = auto() - REMOVE_ITEM = auto() - SET_ITEM = auto() - - class HookedList(HookedContainer[T], MutableSequence[T]): _data: MutableSequence[T] - _path: MutableSequence[int] - hook: Callable[[e.ChangeEvent[T]], None] | None def __init__(self, hook, existing: Iterable[T], path: Sequence[int] | None = None): self.hook = hook