From c894598551f1f130d8f195356f4f8af8a5b85d59 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Tue, 23 Sep 2025 09:20:55 +0000 Subject: [PATCH] sub-level mods: use match statement where practicable (4 files) --- mmgen/bip_hd/__init__.py | 9 +++++---- mmgen/bip_hd/chainparams.py | 15 ++++++++------- mmgen/tool/coin.py | 17 +++++++++-------- mmgen/tx/__init__.py | 25 +++++++++++++------------ 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/mmgen/bip_hd/__init__.py b/mmgen/bip_hd/__init__.py index 1f37d414..a72fcfca 100644 --- a/mmgen/bip_hd/__init__.py +++ b/mmgen/bip_hd/__init__.py @@ -128,10 +128,11 @@ def get_bip_by_addr_type(addr_type): 44) def check_privkey(key_int): - if key_int == 0: - raise ValueError('private key is zero!') - elif key_int >= secp256k1_order: - raise ValueError(f'{key_int:x}: private key >= group order!') + match key_int: + case 0: + raise ValueError('private key is zero!') + case n if n >= secp256k1_order: + raise ValueError(f'{n:x}: private key >= group order!') class BipHDConfig(Lockable): diff --git a/mmgen/bip_hd/chainparams.py b/mmgen/bip_hd/chainparams.py index 27500a9e..7045ae54 100644 --- a/mmgen/bip_hd/chainparams.py +++ b/mmgen/bip_hd/chainparams.py @@ -48,13 +48,14 @@ def parse_data(): key = line[1:-1] continue p = parse_line(line) - if key in out: - out[key][p[1]] = p - elif key == 'defaults': - out['defaults'] = p - defaults = p - else: - out[key] = {p[1]: p} + match key: + case k if k in out: + out[key][p[1]] = p + case 'defaults': + out['defaults'] = p + defaults = p + case _: + out[key] = {p[1]: p} return out diff --git a/mmgen/tool/coin.py b/mmgen/tool/coin.py index fbc49d71..fe747557 100755 --- a/mmgen/tool/coin.py +++ b/mmgen/tool/coin.py @@ -165,14 +165,15 @@ class tool_cmd(tool_cmd_base): def pubhash2addr(self, pubhashhex: 'sstr'): "convert public key hash to address" pubhash = bytes.fromhex(pubhashhex) - if self.mmtype.name == 'segwit': - return self.proto.pubhash2segwitaddr(pubhash) - elif self.mmtype.name == 'bech32': - return self.proto.pubhash2bech32addr(pubhash) - elif self.mmtype.name == 'bech32x': - return self.proto.encode_addr_bech32x(pubhash) - else: - return self.proto.pubhash2addr(pubhash, self.mmtype.addr_fmt) + match self.mmtype.name: + case 'segwit': + return self.proto.pubhash2segwitaddr(pubhash) + case 'bech32': + return self.proto.pubhash2bech32addr(pubhash) + case 'bech32x': + return self.proto.encode_addr_bech32x(pubhash) + case _: + return self.proto.pubhash2addr(pubhash, self.mmtype.addr_fmt) def addr2pubhash(self, addr: 'sstr'): "convert coin address to public key hash" diff --git a/mmgen/tx/__init__.py b/mmgen/tx/__init__.py index 692243b9..6d2f5b08 100755 --- a/mmgen/tx/__init__.py +++ b/mmgen/tx/__init__.py @@ -39,18 +39,19 @@ def _get_cls_info(clsname, modname, kwargs): raise ValueError( f"{clsname} must be instantiated with 'proto', 'data' or 'filename' keyword") - if clsname == 'Completed': - from ..util import get_extension, die - from .completed import Completed - ext = get_extension(kwargs['filename']) - cls = Completed.ext_to_cls(ext, proto) - if not cls: - die(1, f'{ext!r}: unrecognized file extension for CompletedTX') - clsname = cls.__name__ - modname = cls.__module__.rsplit('.', maxsplit=1)[-1] - elif clsname == 'New' and kwargs['target'] == 'swaptx': - clsname = 'NewSwap' - modname = 'new_swap' + match clsname: + case 'Completed': + from ..util import get_extension, die + from .completed import Completed + ext = get_extension(kwargs['filename']) + cls = Completed.ext_to_cls(ext, proto) + if not cls: + die(1, f'{ext!r}: unrecognized file extension for CompletedTX') + clsname = cls.__name__ + modname = cls.__module__.rsplit('.', maxsplit=1)[-1] + case 'New' if kwargs['target'] == 'swaptx': + clsname = 'NewSwap' + modname = 'new_swap' kwargs['proto'] = proto