Weak entry, strong value immutable registry data structure
Project description
Overview
Registtro provides a weak entry, strong value immutable registry data structure. Think of it as an immutable WeakKeyDictionary.
Example
>>> from registtro import Registry
>>> class Entry:
... pass
...
>>> # Initialize registry with 2 entries.
>>> entry_a = Entry()
>>> entry_b = Entry()
>>> registry = Registry({entry_a: 1, entry_b: 2})
>>> registry.query(entry_a)
1
>>> # Update a value and add a new entry, retrieve new registry (immutable).
>>> entry_c = Entry()
>>> registry = registry.update({entry_a: 10, entry_c: 3})
>>> registry.query(entry_a)
10
>>> registry.query(entry_c)
3
>>> # Get evolver and perform updates on it (mutable).
>>> evolver = registry.get_evolver()
>>> evolver.update({entry_b: 20})
<registtro.RegistryEvolver object at ...>
>>> evolver.update({entry_c: 30})
<registtro.RegistryEvolver object at ...>
>>> evolver.query(entry_c)
30
>>> # Freeze evolver into a registry (immutable).
>>> registry = evolver.get_registry()
>>> registry.query(entry_c)
30
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
registtro-0.2.1.tar.gz
(5.5 kB
view hashes)
Built Distribution
Close
Hashes for registtro-0.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7380b84026ad147df7f74211ccb316f6f4454b865f0d3d094b0f805a35abf5d6 |
|
MD5 | 1f06c66e0bccd49863416ad8580bb00a |
|
BLAKE2b-256 | 65904538effab7ec152b41b9476cf71470cd5c5147f089dfa6dc49963c19669c |