usawa

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

commit 9f64900820eb5f9452ffe49fafb1b9ddba87bd72
parent 24654fb1ac02d4ccb432584ac4b5f93cb5db94ee
Author: lash <dev@holbrook.no>
Date:   Wed,  7 Jan 2026 12:16:26 +0100

WIP Keep running total on ledger xml truncate

Diffstat:
Mdummy/usawa/constant.py | 2+-
Mdummy/usawa/ledger.py | 36+++++++++++++++++++-----------------
2 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/dummy/usawa/constant.py b/dummy/usawa/constant.py @@ -1,5 +1,5 @@ DEFAULTPARENT = b'\x00' * 64 NS = 'http://usawa.defalsify.org/' -NAMESPACES = {None: NS} +NAMESPACES = {None: NS, 'ns': NS} NSPREFIX = '{' + NS + '}' CATEGORIES = ['income', 'expense', 'asset', 'liability'] diff --git a/dummy/usawa/ledger.py b/dummy/usawa/ledger.py @@ -210,7 +210,7 @@ class Ledger: self.serial = self.base_serial self.cur = self.base self.entries[self.uidx.base] = [] - self.running[self.uidx.base] = RunningTotal(self.uidx.base, self.uidx) +# self.running[self.uidx.base] = RunningTotal(self.uidx.base, self.uidx) self.tree = lxml.etree.XML('<ledger xmlns="http://usawa.defalsify.org/" version="{}"></ledger>'.format(XML_FORMAT_VERSION)) #self.tree = lxml.etree.Element('ledger', nsmap=nsmap()) o = lxml.etree.SubElement(self.tree, NSPREFIX + 'topic', nsmap=nsmap()) @@ -234,7 +234,6 @@ class Ledger: units = lxml.etree.SubElement(self.tree, NSPREFIX + 'units', nsmap=nsmap()) logg.debug('uidx {} units {} base {}'.format(self.uidx, units, self.uidx.base)) - #units.attrib['base'] = self.uidx.base units.set('base', self.uidx.base) for v in self.uidx.syms(): unit = lxml.etree.SubElement(units, NSPREFIX + 'unit', nsmap=nsmap()) @@ -249,23 +248,22 @@ class Ledger: #self.tree.append(units) incoming = lxml.etree.SubElement(self.tree, NSPREFIX + 'incoming', nsmap=nsmap()) - incoming.attrib['serial'] = str(self.serial) - - real = lxml.etree.SubElement(incoming, NSPREFIX + 'real', nsmap=nsmap()) - real.attrib['unit'] = self.uidx.base - o = lxml.etree.SubElement(real, NSPREFIX + 'asset', nsmap=nsmap()) - o.text = '0' - #real.append(o) - o = lxml.etree.SubElement(real, NSPREFIX + 'liability', nsmap=nsmap()) - o.text = '0' - #real.append(o) - #incoming.append(real) + incoming.set('serial', str(self.serial)) + + # xpath does not support empty namespace names + # turns out we didnt need xpath anyway, but leaving it here as reminder for later + #ns = {'ns': nsmap()[None]} + for k in self.running: + balance = lxml.etree.SubElement(incoming, NSPREFIX + 'incoming', nsmap=nsmap()) + asset = lxml.etree.SubElement(balance, NSPREFIX + 'asset', nsmap=nsmap()) + asset.text = str(self.running[k].asset) + + liability = lxml.etree.SubElement(balance, NSPREFIX + 'liability', nsmap=nsmap()) + liability.text = str(self.running[k].liability) o = lxml.etree.SubElement(incoming, NSPREFIX + 'digest', nsmap=nsmap()) o.attrib['algo'] = 'sha512' o.text = self.base.hex() - #incoming.append(o) - #self.tree.append(incoming) """Add a decentralized identity definition for signers of the ledger. @@ -466,9 +464,13 @@ class Ledger: def truncate(self, modify_tree=True): self.base = self.cur self.serial_base = self.serial - if modify_tree: - self.reset() + if not modify_tree: + return + + self.reset() + + """Verify digest chain and signatures in ledger.