From e482b0337f34308b08dc1bd5ad01920db6954e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADckolas=20Goline?= Date: Mon, 18 May 2026 10:29:07 -0300 Subject: [PATCH] grpc2py: fix F401 and E261 flake8 violations in generator and generated output The generator emitted `import json` in its header template despite json never being referenced in the generated output (F401), and used a single space before three inline `#` comments (E261). Fix by removing the unused import from the template and adding the required second space before each comment. Regenerate the output file accordingly. Changelog-None Co-Authored-By: Claude Sonnet 4.6 --- contrib/msggen/msggen/gen/grpc2py.py | 9 +- contrib/pyln-testing/pyln/testing/grpc2py.py | 123 +++++++++---------- 2 files changed, 63 insertions(+), 69 deletions(-) diff --git a/contrib/msggen/msggen/gen/grpc2py.py b/contrib/msggen/msggen/gen/grpc2py.py index 3f4e1809eadb..c4c55f088d4d 100644 --- a/contrib/msggen/msggen/gen/grpc2py.py +++ b/contrib/msggen/msggen/gen/grpc2py.py @@ -82,9 +82,6 @@ def generate(self, service: Service) -> None: # `doc/schemas`. Do not edit this file manually as it would get # overwritten. - import json - - def hexlify(b): return b if b is None else b.hex() @@ -108,7 +105,7 @@ def remove_default(d): self.write("""\ - def decodekeysend_routes2py(m): # manual override + def decodekeysend_routes2py(m): # manual override return remove_default({ "expirydelta": m.expirydelta, "feebase": amount2msat(m.feebase), @@ -121,7 +118,7 @@ def decodekeysend_routes2py(m): # manual override self.write("""\ - def decodepay_routes2py(m): # manual override + def decodepay_routes2py(m): # manual override return remove_default({ "cltv_expiry_delta": m.cltv_expiry_delta, "fee_base_msat": amount2msat(m.fee_base_msat), @@ -188,7 +185,7 @@ def {converter_name}(m): elif isinstance(f, ArrayField) and isinstance(f.itemtype, PrimitiveField): rhs = self.converters[f.itemtype.typename].format(name=name) self.write( - f' "{name}": [{rhs} for i in {rhs}], # ArrayField[primitive] in generate_composite\n', + f' "{name}": [{rhs} for i in {rhs}], # ArrayField[primitive] in generate_composite\n', cleanup=False, ) diff --git a/contrib/pyln-testing/pyln/testing/grpc2py.py b/contrib/pyln-testing/pyln/testing/grpc2py.py index 6e9bb23d4d69..6fbd0e617fb3 100644 --- a/contrib/pyln-testing/pyln/testing/grpc2py.py +++ b/contrib/pyln-testing/pyln/testing/grpc2py.py @@ -2,9 +2,6 @@ # `doc/schemas`. Do not edit this file manually as it would get # overwritten. -import json - - def hexlify(b): return b if b is None else b.hex() @@ -85,7 +82,7 @@ def listpeers_peers_log2py(m): def listpeers_peers2py(m): return remove_default({ "log": [listpeers_peers_log2py(i) for i in m.log], # ArrayField[composite] in generate_composite - "netaddr": [m.netaddr for i in m.netaddr], # ArrayField[primitive] in generate_composite + "netaddr": [m.netaddr for i in m.netaddr], # ArrayField[primitive] in generate_composite "connected": m.connected, # PrimitiveField in generate_composite "features": hexlify(m.features), # PrimitiveField in generate_composite "id": hexlify(m.id), # PrimitiveField in generate_composite @@ -332,8 +329,8 @@ def checkmessage2py(m): def close2py(m): return remove_default({ - "txids": [hexlify(m.txids) for i in hexlify(m.txids)], # ArrayField[primitive] in generate_composite - "txs": [hexlify(m.txs) for i in hexlify(m.txs)], # ArrayField[primitive] in generate_composite + "txids": [hexlify(m.txids) for i in hexlify(m.txids)], # ArrayField[primitive] in generate_composite + "txs": [hexlify(m.txs) for i in hexlify(m.txs)], # ArrayField[primitive] in generate_composite "type": str(m.item_type), # EnumField in generate_composite }) @@ -384,7 +381,7 @@ def createinvoice2py(m): def datastore2py(m): return remove_default({ - "key": [m.key for i in m.key], # ArrayField[primitive] in generate_composite + "key": [m.key for i in m.key], # ArrayField[primitive] in generate_composite "generation": m.generation, # PrimitiveField in generate_composite "hex": hexlify(m.hex), # PrimitiveField in generate_composite "string": m.string, # PrimitiveField in generate_composite @@ -405,14 +402,14 @@ def datastoreusage2py(m): def createonion2py(m): return remove_default({ - "shared_secrets": [hexlify(m.shared_secrets) for i in hexlify(m.shared_secrets)], # ArrayField[primitive] in generate_composite + "shared_secrets": [hexlify(m.shared_secrets) for i in hexlify(m.shared_secrets)], # ArrayField[primitive] in generate_composite "onion": hexlify(m.onion), # PrimitiveField in generate_composite }) def deldatastore2py(m): return remove_default({ - "key": [m.key for i in m.key], # ArrayField[primitive] in generate_composite + "key": [m.key for i in m.key], # ArrayField[primitive] in generate_composite "generation": m.generation, # PrimitiveField in generate_composite "hex": hexlify(m.hex), # PrimitiveField in generate_composite "string": m.string, # PrimitiveField in generate_composite @@ -450,13 +447,13 @@ def dev_forget_channel2py(m): def emergencyrecover2py(m): return remove_default({ - "stubs": [hexlify(m.stubs) for i in hexlify(m.stubs)], # ArrayField[primitive] in generate_composite + "stubs": [hexlify(m.stubs) for i in hexlify(m.stubs)], # ArrayField[primitive] in generate_composite }) def getemergencyrecoverdata2py(m): return remove_default({ - "backed_up_channel_ids": [hexlify(m.backed_up_channel_ids) for i in hexlify(m.backed_up_channel_ids)], # ArrayField[primitive] in generate_composite + "backed_up_channel_ids": [hexlify(m.backed_up_channel_ids) for i in hexlify(m.backed_up_channel_ids)], # ArrayField[primitive] in generate_composite "can_create_penalty": m.can_create_penalty, # PrimitiveField in generate_composite "filedata": hexlify(m.filedata), # PrimitiveField in generate_composite }) @@ -478,7 +475,7 @@ def recover2py(m): def recoverchannel2py(m): return remove_default({ - "stubs": [m.stubs for i in m.stubs], # ArrayField[primitive] in generate_composite + "stubs": [m.stubs for i in m.stubs], # ArrayField[primitive] in generate_composite }) @@ -538,7 +535,7 @@ def listinvoicerequests2py(m): def listdatastore_datastore2py(m): return remove_default({ - "key": [m.key for i in m.key], # ArrayField[primitive] in generate_composite + "key": [m.key for i in m.key], # ArrayField[primitive] in generate_composite "generation": m.generation, # PrimitiveField in generate_composite "hex": hexlify(m.hex), # PrimitiveField in generate_composite "string": m.string, # PrimitiveField in generate_composite @@ -914,7 +911,7 @@ def listpeerchannels_channels_alias2py(m): def listpeerchannels_channels_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1007,7 +1004,7 @@ def listpeerchannels_channels2py(m): "opener": str(m.opener), # EnumField in generate_composite "state": str(m.state), # EnumField in generate_composite "state_changes": [listpeerchannels_channels_state_changes2py(i) for i in m.state_changes], # ArrayField[composite] in generate_composite - "status": [m.status for i in m.status], # ArrayField[primitive] in generate_composite + "status": [m.status for i in m.status], # ArrayField[primitive] in generate_composite "channel_id": hexlify(m.channel_id), # PrimitiveField in generate_composite "close_to": hexlify(m.close_to), # PrimitiveField in generate_composite "close_to_addr": m.close_to_addr, # PrimitiveField in generate_composite @@ -1075,7 +1072,7 @@ def listclosedchannels_closedchannels_alias2py(m): def listclosedchannels_closedchannels_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1233,7 +1230,7 @@ def decode_offer_recurrence2py(m): def decode_restrictions2py(m): return remove_default({ - "alternatives": [m.alternatives for i in m.alternatives], # ArrayField[primitive] in generate_composite + "alternatives": [m.alternatives for i in m.alternatives], # ArrayField[primitive] in generate_composite "summary": m.summary, # PrimitiveField in generate_composite }) @@ -1277,11 +1274,11 @@ def decode2py(m): "invoice_fallbacks": [decode_invoice_fallbacks2py(i) for i in m.invoice_fallbacks], # ArrayField[composite] in generate_composite "invoice_paths": [decode_invoice_paths2py(i) for i in m.invoice_paths], # ArrayField[composite] in generate_composite "invreq_paths": [decode_invreq_paths2py(i) for i in m.invreq_paths], # ArrayField[composite] in generate_composite - "offer_chains": [hexlify(m.offer_chains) for i in hexlify(m.offer_chains)], # ArrayField[primitive] in generate_composite + "offer_chains": [hexlify(m.offer_chains) for i in hexlify(m.offer_chains)], # ArrayField[primitive] in generate_composite "offer_paths": [decode_offer_paths2py(i) for i in m.offer_paths], # ArrayField[composite] in generate_composite - "proof_leaf_hashes": [hexlify(m.proof_leaf_hashes) for i in hexlify(m.proof_leaf_hashes)], # ArrayField[primitive] in generate_composite - "proof_missing_hashes": [hexlify(m.proof_missing_hashes) for i in hexlify(m.proof_missing_hashes)], # ArrayField[primitive] in generate_composite - "proof_omitted_tlvs": [m.proof_omitted_tlvs for i in m.proof_omitted_tlvs], # ArrayField[primitive] in generate_composite + "proof_leaf_hashes": [hexlify(m.proof_leaf_hashes) for i in hexlify(m.proof_leaf_hashes)], # ArrayField[primitive] in generate_composite + "proof_missing_hashes": [hexlify(m.proof_missing_hashes) for i in hexlify(m.proof_missing_hashes)], # ArrayField[primitive] in generate_composite + "proof_omitted_tlvs": [m.proof_omitted_tlvs for i in m.proof_omitted_tlvs], # ArrayField[primitive] in generate_composite "restrictions": [decode_restrictions2py(i) for i in m.restrictions], # ArrayField[composite] in generate_composite "type": str(m.item_type), # EnumField in generate_composite "unknown_invoice_request_tlvs": [decode_unknown_invoice_request_tlvs2py(i) for i in m.unknown_invoice_request_tlvs], # ArrayField[composite] in generate_composite @@ -1566,7 +1563,7 @@ def fundchannel_complete2py(m): def fundchannel_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1584,7 +1581,7 @@ def fundchannel2py(m): def fundchannel_start_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1767,7 +1764,7 @@ def listhtlcs2py(m): def multifundchannel_channel_ids_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1834,7 +1831,7 @@ def openchannel_abort2py(m): def openchannel_bump_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1851,7 +1848,7 @@ def openchannel_bump2py(m): def openchannel_init_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1876,7 +1873,7 @@ def openchannel_signed2py(m): def openchannel_update_channel_type2py(m): return remove_default({ - "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite + "bits": [m.bits for i in m.bits], # ArrayField[primitive] in generate_composite "names": [str(i) for i in m.names], # ArrayField[composite] in generate_composite }) @@ -1916,7 +1913,7 @@ def plugin2py(m): def renepaystatus_paystatus2py(m): return remove_default({ - "notes": [m.notes for i in m.notes], # ArrayField[primitive] in generate_composite + "notes": [m.notes for i in m.notes], # ArrayField[primitive] in generate_composite "status": str(m.status), # EnumField in generate_composite "amount_msat": amount2msat(m.amount_msat), # PrimitiveField in generate_composite "amount_sent_msat": amount2msat(m.amount_sent_msat), # PrimitiveField in generate_composite @@ -2015,8 +2012,8 @@ def setchannel2py(m): def setconfig_config2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite "config": m.config, # PrimitiveField in generate_composite "dynamic": m.dynamic, # PrimitiveField in generate_composite "plugin": m.plugin, # PrimitiveField in generate_composite @@ -2095,8 +2092,8 @@ def spliceout2py(m): def dev_splice2py(m): return remove_default({ - "dryrun": [m.dryrun for i in m.dryrun], # ArrayField[primitive] in generate_composite - "log": [m.log for i in m.log], # ArrayField[primitive] in generate_composite + "dryrun": [m.dryrun for i in m.dryrun], # ArrayField[primitive] in generate_composite + "log": [m.log for i in m.log], # ArrayField[primitive] in generate_composite "psbt": m.psbt, # PrimitiveField in generate_composite "tx": m.tx, # PrimitiveField in generate_composite "txid": m.txid, # PrimitiveField in generate_composite @@ -2227,8 +2224,8 @@ def wait2py(m): def listconfigs_configs_addr2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2255,8 +2252,8 @@ def listconfigs_configs_always_use_proxy2py(m): def listconfigs_configs_announce_addr2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2297,8 +2294,8 @@ def listconfigs_configs_autolisten2py(m): def listconfigs_configs_bind_addr2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2353,16 +2350,16 @@ def listconfigs_configs_conf2py(m): def listconfigs_configs_currencyrate_add_source2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite "plugin": m.plugin, # PrimitiveField in generate_composite }) def listconfigs_configs_currencyrate_disable_source2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite "plugin": m.plugin, # PrimitiveField in generate_composite }) @@ -2405,8 +2402,8 @@ def listconfigs_configs_disable_mpp2py(m): def listconfigs_configs_disable_plugin2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2525,8 +2522,8 @@ def listconfigs_configs_ignore_fee_limits2py(m): def listconfigs_configs_important_plugin2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2546,8 +2543,8 @@ def listconfigs_configs_lightning_dir2py(m): def listconfigs_configs_log_file2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2631,15 +2628,15 @@ def listconfigs_configs_pid_file2py(m): def listconfigs_configs_plugin2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) def listconfigs_configs_plugin_dir2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2701,8 +2698,8 @@ def listconfigs_configs_signet2py(m): def listconfigs_configs_subdaemon2py(m): return remove_default({ - "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite - "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite + "sources": [m.sources for i in m.sources], # ArrayField[primitive] in generate_composite + "values_str": [m.values_str for i in m.values_str], # ArrayField[primitive] in generate_composite }) @@ -2775,7 +2772,7 @@ def preapproveinvoice2py(m): def staticbackup2py(m): return remove_default({ - "scb": [hexlify(m.scb) for i in hexlify(m.scb)], # ArrayField[primitive] in generate_composite + "scb": [hexlify(m.scb) for i in hexlify(m.scb)], # ArrayField[primitive] in generate_composite }) @@ -2980,7 +2977,7 @@ def bkpr_editdescriptionbyoutpoint2py(m): def bkpr_report2py(m): return remove_default({ - "report": [m.report for i in m.report], # ArrayField[primitive] in generate_composite + "report": [m.report for i in m.report], # ArrayField[primitive] in generate_composite }) @@ -3106,8 +3103,8 @@ def askrene_listlayers_layers2py(m): "channel_updates": [askrene_listlayers_layers_channel_updates2py(i) for i in m.channel_updates], # ArrayField[composite] in generate_composite "constraints": [askrene_listlayers_layers_constraints2py(i) for i in m.constraints], # ArrayField[composite] in generate_composite "created_channels": [askrene_listlayers_layers_created_channels2py(i) for i in m.created_channels], # ArrayField[composite] in generate_composite - "disabled_channels": [m.disabled_channels for i in m.disabled_channels], # ArrayField[primitive] in generate_composite - "disabled_nodes": [hexlify(m.disabled_nodes) for i in hexlify(m.disabled_nodes)], # ArrayField[primitive] in generate_composite + "disabled_channels": [m.disabled_channels for i in m.disabled_channels], # ArrayField[primitive] in generate_composite + "disabled_nodes": [hexlify(m.disabled_nodes) for i in hexlify(m.disabled_nodes)], # ArrayField[primitive] in generate_composite "node_biases": [askrene_listlayers_layers_node_biases2py(i) for i in m.node_biases], # ArrayField[composite] in generate_composite "layer": m.layer, # PrimitiveField in generate_composite "persistent": m.persistent, # PrimitiveField in generate_composite @@ -3173,8 +3170,8 @@ def askrene_create_layer_layers2py(m): "channel_updates": [askrene_create_layer_layers_channel_updates2py(i) for i in m.channel_updates], # ArrayField[composite] in generate_composite "constraints": [askrene_create_layer_layers_constraints2py(i) for i in m.constraints], # ArrayField[composite] in generate_composite "created_channels": [askrene_create_layer_layers_created_channels2py(i) for i in m.created_channels], # ArrayField[composite] in generate_composite - "disabled_channels": [m.disabled_channels for i in m.disabled_channels], # ArrayField[primitive] in generate_composite - "disabled_nodes": [hexlify(m.disabled_nodes) for i in hexlify(m.disabled_nodes)], # ArrayField[primitive] in generate_composite + "disabled_channels": [m.disabled_channels for i in m.disabled_channels], # ArrayField[primitive] in generate_composite + "disabled_nodes": [hexlify(m.disabled_nodes) for i in hexlify(m.disabled_nodes)], # ArrayField[primitive] in generate_composite "node_biases": [askrene_create_layer_layers_node_biases2py(i) for i in m.node_biases], # ArrayField[composite] in generate_composite "layer": m.layer, # PrimitiveField in generate_composite "persistent": m.persistent, # PrimitiveField in generate_composite @@ -3375,7 +3372,7 @@ def listchannelmoves2py(m): def listchainmoves_chainmoves2py(m): return remove_default({ - "extra_tags": [m.extra_tags for i in m.extra_tags], # ArrayField[primitive] in generate_composite + "extra_tags": [m.extra_tags for i in m.extra_tags], # ArrayField[primitive] in generate_composite "primary_tag": str(m.primary_tag), # EnumField in generate_composite "account_id": m.account_id, # PrimitiveField in generate_composite "blockheight": m.blockheight, # PrimitiveField in generate_composite @@ -3462,7 +3459,7 @@ def sendamount2py(m): }) -def decodekeysend_routes2py(m): # manual override +def decodekeysend_routes2py(m): # manual override return remove_default({ "expirydelta": m.expirydelta, "feebase": amount2msat(m.feebase), @@ -3472,7 +3469,7 @@ def decodekeysend_routes2py(m): # manual override }) -def decodepay_routes2py(m): # manual override +def decodepay_routes2py(m): # manual override return remove_default({ "cltv_expiry_delta": m.cltv_expiry_delta, "fee_base_msat": amount2msat(m.fee_base_msat),