usawa

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | Submodules | LICENSE

commit 898489edf80a14f0e107433009465ae6d075f960
parent 6e83a2f0e29f14351529d9fb2645be09a31a792b
Author: lash <dev@holbrook.no>
Date:   Sat,  3 Jan 2026 09:41:05 +0100

Add store documentation

Diffstat:
Mdummy/usawa/store.py | 46++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 42 insertions(+), 4 deletions(-)

diff --git a/dummy/usawa/store.py b/dummy/usawa/store.py @@ -13,21 +13,44 @@ PFX_ENTRY = b'\x04' def pfx_ledger_topic(topic): + """Return ledger store prefix for topic. + + :params topic: Topic to generate prefix for. + :type topic: bytes + :returns: Prefix. + :rtype: bytes + """ r = PFX_LEDGER + topic return r def pfx_ledger_lock(topic): + """Return ledger store locking prefix for topic. + + :params topic: Topic to generate prefix for. + :type topic: bytes + :returns: Prefix. + :rtype: bytes + """ r = PFX_LEDGER_LOCK + topic return r -def pfx_ledger(ledger): - if not isinstance(ledger, Ledger): - raise ValueError('invalid ledger') - return pfx_ledger_topic(topic) +#def pfx_ledger(ledger): +# if not isinstance(ledger, Ledger): +# raise ValueError('invalid ledger') +# return pfx_ledger_topic(topic) def pfx_entry(ledger, entry): + """Return ledger store prefix for an entry. + + :param ledger: Ledger context for the entry. + :type ledger: usawa.Ledger + :param entry: Entry to create prefix for. + :type entry: usawa.Entry + :returns: Prefix. + :rtype: bytes + """ if not isinstance(entry, Entry): raise ValueError('invalid entry') if not isinstance(ledger, Ledger): @@ -36,7 +59,13 @@ def pfx_entry(ledger, entry): class LedgerStore(Interface): + """Wrapper for an implementation of the whee store that handles encoding of ledgers and entries. + :param implementation: Store implementation. + :type implementation: whee.Interface (implementation) + :param ledger: The ledger for which to execute store operations. + :type ledger: usawa.Ledger + """ def __init__(self, implementation, ledger): if not isinstance(implementation, Interface): raise ValueError('store must be whee interface instance') @@ -46,6 +75,7 @@ class LedgerStore(Interface): self.__o = implementation + # WIP implementation of couchdb? def start(self): serial = 0 k = pfx_ledger_topic(self.ledger.topic) @@ -58,6 +88,7 @@ class LedgerStore(Interface): self.ledger.serial = serial + # WIP implementation of couchdb? def lock(self): k = pfx_ledger_lock(self.ledger.topic) v = None @@ -70,11 +101,18 @@ class LedgerStore(Interface): # atomic until here + # WIP implementation of couchdb? def unlock(self): k = pfx_ledger_lock(self.ledger.topic) v = self.__o.delete(k) + """Add an entry to the store. + + :param entry: Entry to add. + :type entry: usawa.Entry + :raises: FileExistsError if entry is already in store. + """ def add_entry(self, entry): k = pfx_entry(self.ledger, entry) v = entry.wrap()