usawa

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

commit 7a5464f4646437451fadc1b15c96b7452c1985a3
parent 352de9e744b03f9795eb1945c4a7fefc1c140896
Author: lash <dev@holbrook.no>
Date:   Sat,  6 Dec 2025 19:47:08 +0000

›Correct digest index in sum on entry

Diffstat:
Mdummy/create.py | 1-
Mdummy/svcontas/ledger.py | 11++++++++++-
Mdummy/tests/ledger.py | 25++++++++++++++++++++++++-
Mdummy/tests/test.xml | 2+-
4 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/dummy/create.py b/dummy/create.py @@ -55,6 +55,5 @@ if __name__ == '__main__': entry.sign(wallet) ledger.add_entry(entry) tree = ledger.to_tree() - #r = lxml.etree.tostring(tree, method='c14n2', strip_text=True, inclusive_ns_prefixes='sv') r = lxml.etree.tostring(tree, method='xml', standalone=True, xml_declaration=True, encoding='UTF-8') print(r.decode('utf-8')) diff --git a/dummy/svcontas/ledger.py b/dummy/svcontas/ledger.py @@ -93,10 +93,15 @@ class Ledger: base = h.digest() self.base = base self.topic = topic + self.cur = base self.acl = acl logg.debug('ledger base {} from topic {}'.format(self.base.hex(), self.topic.hex())) + def peek(self): + return self.serial + 1 + + def next_serial(self): self.serial += 1 return self.serial @@ -211,7 +216,7 @@ class Ledger: #entries = self.entries[entry.serial] self.serial = entry.serial oldbase = self.base - self.base = entry.sum() + self.cur = entry.sum()[0] entry.parent = oldbase self.entries[entry.serial].append(entry) self.running[entry.unit].apply_entry(entry) @@ -289,5 +294,9 @@ class Ledger: return lxml.etree.tostring(self.tree) + def current(self): + return self.cur + + def __str__(self): return "state: " + self.base.hex() diff --git a/dummy/tests/ledger.py b/dummy/tests/ledger.py @@ -7,7 +7,7 @@ import copy import lxml.etree from whee.mem import MemStore -from svcontas import Ledger, UnitIndex +from svcontas import Ledger, UnitIndex, EntryPart, Entry, DemoWallet from svcontas.store import LedgerStore logging.basicConfig(level=logging.DEBUG) @@ -38,6 +38,29 @@ class TestLedger(unittest.TestCase): ledger = Ledger.from_tree(tree, uidx) + def test_ledger_firstfew(self): + s = 'FOO' + uidx = UnitIndex(s) + o = Ledger(uidx) + store = LedgerStore(self.store, ledger=o) + store.start() + print(o.to_string()) + + wallet = DemoWallet() + x = EntryPart('income', 'foo', 1337, src=True) + y = EntryPart('asset', 'foo', 1337) + v = Entry(x, y, s, o.peek(), datetime.datetime.now(), parent=o.current()) + v.sign(wallet) + o.add_entry(v) + + x = EntryPart('expense', 'bar̈́', 42, src=True) + y = EntryPart('liability', 'bar', 42) + v = Entry(x, y, s, o.peek(), datetime.datetime.now(), parent=o.current()) + v.sign(wallet) + o.add_entry(v) + + print(o.to_string()) + if __name__ == '__main__': unittest.main() diff --git a/dummy/tests/test.xml b/dummy/tests/test.xml @@ -38,4 +38,4 @@ <sig type="ed25519" keyid="566c38287d3f31c7e50836cae58e426c6bccc52d">117a57c72ed210b91469307a1c2e73fe2d5ee306cd8ccf1a9db4ecb15d38ecbbfc97d62fec4ab8aadb08c531f2d1ede34cb6e4d3987bcba63322a0767e532e13</sig> </incoming> -<entry><src type="income"><account>Miscellaneous</account><amount>12300</amount></src><dst type="asset"><account>Miscellaneous</account><amount>12300</amount></dst><data><parent>b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944cb5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c</parent><ref>4052f317-a4e5-4ce3-9f6d-cb691a8cf4c7</ref><serial>1</serial><unit>USD</unit><date>2025-12-06</date><dateTimeRegistered>2025-12-06T19:26:06Z</dateTimeRegistered></data><sig type="ed25519" keyid="34d26579dbb456693e540672cf922f52dde0d6532e35bf06be013a7c532f20e0">5c35d6f01428e383e798ec218f07541c97c6f23c195422641e7ad36020678a76e0cec13ef8301c3a3cc0aac7ee72e96b3ebb2c19fb1c8a9bc318b8e5acaabf0a</sig></entry></ledger> +<entry><src type="income"><account>Miscellaneous</account><amount>12300</amount></src><dst type="asset"><account>Miscellaneous</account><amount>12300</amount></dst><data><parent>b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944cb5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c</parent><ref>7fd69cab-7dd2-4c76-afb7-aa7a70104029</ref><serial>1</serial><unit>USD</unit><date>2025-12-06</date><dateTimeRegistered>2025-12-06T19:39:41Z</dateTimeRegistered></data><sig type="ed25519" keyid="34d26579dbb456693e540672cf922f52dde0d6532e35bf06be013a7c532f20e0">923ebe46ca2b316c8ad86ba29d77c07671be918fba11f755995b1c1212a1575a11ae5741068eae29f723fbc334805a4ed67f66b3bf6746f8b845f540f8900d09</sig></entry></ledger>