From 3cf9dfebb2392e72f20ab28a4e2b7d99ae5ccbfa Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 23 Oct 2026 17:01:32 +0000 Subject: [PATCH] tx.file, xmrwallet.file: encapsulated compat data changes --- mmgen/tx/base.py | 1 + mmgen/tx/file.py | 4 ++-- mmgen/xmrwallet/file/__init__.py | 11 +++++------ mmgen/xmrwallet/file/outputs.py | 2 +- mmgen/xmrwallet/file/tx.py | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mmgen/tx/base.py b/mmgen/tx/base.py index 70cbaf50..bb87d432 100644 --- a/mmgen/tx/base.py +++ b/mmgen/tx/base.py @@ -83,6 +83,7 @@ class Base(MMGenObject): is_refreq = False is_memoless = False is_compat = False + compat_data = None has_comment = True swap_attrs = { 'swap_proto': None, diff --git a/mmgen/tx/file.py b/mmgen/tx/file.py index b26d251a..c44eeb99 100644 --- a/mmgen/tx/file.py +++ b/mmgen/tx/file.py @@ -283,13 +283,13 @@ class MMGenTxFile(MMGenObject): data = txfile_json_dumps({ 'coin_id': coin_id, 'version': tx.txfile_version - } | { + } | (tx.compat_data or ({ k: getattr(tx, k) for k in self.attrs } | { 'inputs': [e._asdict() for e in tx.inputs], 'outputs': [{k: v for k,v in e._asdict().items() if not (type(v) is bool and v is False)} for e in tx.outputs] - } | { + })) | { k: getattr(tx, k) for k in self.extra_attrs if getattr(tx, k, None) } | ({ k: getattr(tx, k) for k in tx.swap_attrs if getattr(tx, k, None) diff --git a/mmgen/xmrwallet/file/__init__.py b/mmgen/xmrwallet/file/__init__.py index 7f8eb2bf..1f5d803b 100644 --- a/mmgen/xmrwallet/file/__init__.py +++ b/mmgen/xmrwallet/file/__init__.py @@ -40,18 +40,17 @@ class MoneroMMGenFile: b = d_wrap[k] assert a == b, f'{k} mismatch: {a} != {b}' + def make_wrapped_json_data(self, in_data): + return json.dumps(self.make_wrapped_data(in_data), cls=json_encoder, indent=2) + def make_wrapped_data(self, in_data): - out = { + return {self.data_label: { 'base_chksum': self.base_chksum, 'full_chksum': self.full_chksum, 'data': in_data, } if self.full_chksum else { 'base_chksum': self.base_chksum, - 'data': in_data} - return json.dumps( - {self.data_label: out}, - cls = json_encoder, - indent = 2) + 'data': in_data}} def extract_data_from_file(self, cfg, fn): return json.loads( diff --git a/mmgen/xmrwallet/file/outputs.py b/mmgen/xmrwallet/file/outputs.py index 637f719f..8ed5cf4f 100644 --- a/mmgen/xmrwallet/file/outputs.py +++ b/mmgen/xmrwallet/file/outputs.py @@ -47,7 +47,7 @@ class MoneroWalletOutputsFile: write_data_to_file( cfg = self.cfg, outfile = str(self.get_outfile(self.cfg, self.wallet_fn)) + add_suf, - data = self.make_wrapped_data(self.data._asdict()), + data = self.make_wrapped_json_data(self.data._asdict()), desc = self.desc, ask_overwrite = False, quiet = quiet, diff --git a/mmgen/xmrwallet/file/tx.py b/mmgen/xmrwallet/file/tx.py index d7688192..7e20d03a 100644 --- a/mmgen/xmrwallet/file/tx.py +++ b/mmgen/xmrwallet/file/tx.py @@ -170,7 +170,7 @@ class MoneroMMGenTX: write_data_to_file( cfg = self.cfg, outfile = str(fn), - data = self.make_wrapped_data(dict_data), + data = self.make_wrapped_json_data(dict_data), desc = self.desc, ask_write = ask_write, ask_write_default_yes = not ask_write,