fleche.storage.destructuring
Classes
Helper class that provides a standard way to create an ABC using |
|
Helper class that provides a standard way to create an ABC using |
|
Helper class that provides a standard way to create an ABC using |
|
Mixin that recursively destructures collections on save/load. |
Module Contents
- class fleche.storage.destructuring.Digested[source]
Bases:
abc.ABCHelper class that provides a standard way to create an ABC using inheritance.
- abstractmethod underlying()[source]
Return plain underlying value, ie. list/dict/etc of nested values or their partial digests
- abstractmethod mend(storage: DestructuringMixin)[source]
- class fleche.storage.destructuring.DigestedIterable[source]
Bases:
DigestedHelper class that provides a standard way to create an ABC using inheritance.
- underlying()[source]
Return plain underlying value, ie. list/dict/etc of nested values or their partial digests
- mend(storage: DestructuringMixin) list | tuple[source]
- class fleche.storage.destructuring.DigestedDict[source]
Bases:
DigestedHelper class that provides a standard way to create an ABC using inheritance.
- underlying()[source]
Return plain underlying value, ie. list/dict/etc of nested values or their partial digests
- mend(storage: DestructuringMixin) dict[source]
- class fleche.storage.destructuring.DestructuringMixin[source]
Bases:
fleche.storage.base.StorageBackendMixin that recursively destructures collections on save/load.
Place before a concrete
StorageBackendin the MRO to add destructuring behavior. Lists, tuples, and dicts are broken apart so each element is stored independently; on load the original structure is reassembled.Example:
@dataclass(frozen=True) class ValueMemory(ValueMixin, DestructuringMixin, MemoryBackend): ... vm = ValueMemory(storage={}) key = vm.save([1, [2, 3]]) assert vm.load(key) == [1, [2, 3]]
- _intern_rec(value: Any, key: fleche.digest.Digest | None = None) tuple[Any, int | float][source]
Post-order traversal: recurse to leaves, decide inline-vs-store on the way back up.
Returns
(result, depth)where result is the plain value whendepth < remaining_depth(the element is inlined in its parent’sDigestedwrapper) or aDigestwhen the element was written to storage separately. Every node in the structure is visited exactly once (O(n)), unlike a separate depth-counting pass.
- put(value: Any, key: fleche.digest.Digest) fleche.digest.Digest[source]
- get(key: fleche.digest.Digest | Any) Any[source]