From 21b8084b37cd942966f75dc82fb9521d44a3090f Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 14 Nov 2022 09:54:02 +0000 Subject: [PATCH] class rename: TrackingWallet -> TwCtl --- mmgen/main_addrimport.py | 4 ++-- mmgen/main_txbump.py | 4 ++-- mmgen/main_txcreate.py | 2 +- mmgen/main_txdo.py | 2 +- mmgen/proto/btc/tw/ctl.py | 4 ++-- mmgen/proto/eth/addrdata.py | 4 ++-- mmgen/proto/eth/tw/addresses.py | 2 +- mmgen/proto/eth/tw/bal.py | 4 ++-- mmgen/proto/eth/tw/ctl.py | 8 ++++---- mmgen/proto/eth/tw/rpc.py | 2 +- mmgen/proto/eth/tx/new.py | 4 ++-- mmgen/tool/rpc.py | 20 ++++++++++---------- mmgen/tw/ctl.py | 10 +++++----- mmgen/tw/json.py | 6 +++--- mmgen/tw/view.py | 4 ++-- mmgen/tx/__init__.py | 4 ++-- test/test_py_d/ts_ethdev.py | 8 ++++---- 17 files changed, 46 insertions(+), 46 deletions(-) diff --git a/mmgen/main_addrimport.py b/mmgen/main_addrimport.py index 7320fc66..ddf5fc41 100755 --- a/mmgen/main_addrimport.py +++ b/mmgen/main_addrimport.py @@ -133,11 +133,11 @@ def check_opts(tw): return batch,rescan async def main(): - from .tw.ctl import TrackingWallet + from .tw.ctl import TwCtl if opt.token_addr: proto.tokensym = 'foo' # hack to trigger 'Token' in proto.base_proto_subclass() - tw = await TrackingWallet( + tw = await TwCtl( proto = proto, token_addr = opt.token_addr, mode = 'i' ) diff --git a/mmgen/main_txbump.py b/mmgen/main_txbump.py index f944a650..115ec6ae 100755 --- a/mmgen/main_txbump.py +++ b/mmgen/main_txbump.py @@ -130,11 +130,11 @@ async def main(): kl = get_keylist(orig_tx.proto,opt) sign_and_send = bool(seed_files or kl or kal) - from .tw.ctl import TrackingWallet + from .tw.ctl import TwCtl tx = await BumpTX( data = orig_tx.__dict__, send = sign_and_send, - tw = await TrackingWallet(orig_tx.proto) if orig_tx.proto.tokensym else None ) + tw = await TwCtl(orig_tx.proto) if orig_tx.proto.tokensym else None ) from .rpc import rpc_init tx.rpc = await rpc_init(tx.proto) diff --git a/mmgen/main_txcreate.py b/mmgen/main_txcreate.py index 9bc143ea..d06c9c47 100755 --- a/mmgen/main_txcreate.py +++ b/mmgen/main_txcreate.py @@ -82,7 +82,7 @@ async def main(): proto = init_proto_from_opts(need_amt=True) from .tx import NewTX - from .tw.ctl import TrackingWallet + from .tw.ctl import TwCtl tx1 = await NewTX(proto=proto) from .rpc import rpc_init diff --git a/mmgen/main_txdo.py b/mmgen/main_txdo.py index eaba4375..40c5ce01 100755 --- a/mmgen/main_txdo.py +++ b/mmgen/main_txdo.py @@ -122,7 +122,7 @@ from .tx.sign import * seed_files = get_seed_files(opt,cmd_args) async def main(): - from .tw.ctl import TrackingWallet + from .tw.ctl import TwCtl from .protocol import init_proto_from_opts proto = init_proto_from_opts(need_amt=True) diff --git a/mmgen/proto/btc/tw/ctl.py b/mmgen/proto/btc/tw/ctl.py index aaf5a3e0..5d4eed7d 100755 --- a/mmgen/proto/btc/tw/ctl.py +++ b/mmgen/proto/btc/tw/ctl.py @@ -13,10 +13,10 @@ proto.btc.tw.ctl: Bitcoin base protocol tracking wallet control class """ from ....globalvars import g -from ....tw.ctl import TrackingWallet,write_mode +from ....tw.ctl import TwCtl,write_mode from ....util import msg,msg_r,rmsg,vmsg,die,suf,fmt_list -class BitcoinTrackingWallet(TrackingWallet): +class BitcoinTwCtl(TwCtl): def init_empty(self): self.data = { 'coin': self.proto.coin, 'addresses': {} } diff --git a/mmgen/proto/eth/addrdata.py b/mmgen/proto/eth/addrdata.py index d968cb4b..df983f22 100755 --- a/mmgen/proto/eth/addrdata.py +++ b/mmgen/proto/eth/addrdata.py @@ -33,10 +33,10 @@ class EthereumTwAddrData(TwAddrData): } async def get_tw_data(self,wallet=None): - from ...tw.ctl import TrackingWallet + from ...tw.ctl import TwCtl from ...util import vmsg vmsg('Getting address data from tracking wallet') - tw = (wallet or await TrackingWallet(self.proto)).mmid_ordered_dict + tw = (wallet or await TwCtl(self.proto)).mmid_ordered_dict # emulate the output of RPC 'listaccounts' and 'getaddressesbyaccount' return [(mmid+' '+d['comment'],[d['addr']]) for mmid,d in list(tw.items())] diff --git a/mmgen/proto/eth/tw/addresses.py b/mmgen/proto/eth/tw/addresses.py index a03e13d8..27efe4a3 100755 --- a/mmgen/proto/eth/tw/addresses.py +++ b/mmgen/proto/eth/tw/addresses.py @@ -13,7 +13,7 @@ proto.eth.tw.addresses: Ethereum base protocol tracking wallet address list clas """ from ....tw.addresses import TwAddresses -from ....tw.ctl import TrackingWallet +from ....tw.ctl import TwCtl from ....addr import CoinAddr from .view import EthereumTwView from .rpc import EthereumTwRPC diff --git a/mmgen/proto/eth/tw/bal.py b/mmgen/proto/eth/tw/bal.py index 5037a4d1..2031593f 100755 --- a/mmgen/proto/eth/tw/bal.py +++ b/mmgen/proto/eth/tw/bal.py @@ -20,7 +20,7 @@ proto.eth.twbal: Ethereum tracking wallet getbalance class """ -from ....tw.ctl import TrackingWallet +from ....tw.ctl import TwCtl from ....tw.bal import TwGetBalance class EthereumTwGetBalance(TwGetBalance): @@ -31,7 +31,7 @@ class EthereumTwGetBalance(TwGetBalance): } async def __init__(self,proto,*args,**kwargs): - self.wallet = await TrackingWallet(proto,mode='w') + self.wallet = await TwCtl(proto,mode='w') await super().__init__(proto,*args,**kwargs) async def create_data(self): diff --git a/mmgen/proto/eth/tw/ctl.py b/mmgen/proto/eth/tw/ctl.py index c3648628..a56ec500 100755 --- a/mmgen/proto/eth/tw/ctl.py +++ b/mmgen/proto/eth/tw/ctl.py @@ -21,12 +21,12 @@ proto.eth.twctl: Ethereum tracking wallet control class """ from ....util import msg,ymsg,die -from ....tw.ctl import TrackingWallet,write_mode +from ....tw.ctl import TwCtl,write_mode from ....addr import is_coin_addr,is_mmgen_id from ....amt import ETHAmt from ..contract import Token,TokenResolve -class EthereumTrackingWallet(TrackingWallet): +class EthereumTwCtl(TwCtl): caps = ('batch',) data_key = 'accounts' @@ -166,7 +166,7 @@ class EthereumTrackingWallet(TrackingWallet): def mmid_ordered_dict(self): return dict((x['mmid'],{'addr':x['addr'],'comment':x['comment']}) for x in self.sorted_list) -class EthereumTokenTrackingWallet(EthereumTrackingWallet): +class EthereumTokenTwCtl(EthereumTwCtl): desc = 'Ethereum token tracking wallet' decimals = None @@ -183,7 +183,7 @@ class EthereumTokenTrackingWallet(EthereumTrackingWallet): if not is_coin_addr(proto,token_addr): die( 'InvalidTokenAddress', f'{token_addr!r}: invalid token address' ) else: - assert token_addr == None,'EthereumTokenTrackingWallet_chk1' + assert token_addr == None,'EthereumTokenTwCtl_chk1' token_addr = await self.sym2addr(proto.tokensym) # returns None on failure if not is_coin_addr(proto,token_addr): die( 'UnrecognizedTokenSymbol', f'Specified token {proto.tokensym!r} could not be resolved!' ) diff --git a/mmgen/proto/eth/tw/rpc.py b/mmgen/proto/eth/tw/rpc.py index 736d79f8..0f3dcd41 100755 --- a/mmgen/proto/eth/tw/rpc.py +++ b/mmgen/proto/eth/tw/rpc.py @@ -12,7 +12,7 @@ proto.eth.tw.rpc: Ethereum base protocol tracking wallet RPC class """ -from ....tw.ctl import TrackingWallet +from ....tw.ctl import TwCtl from ....addr import CoinAddr from ....tw.shared import TwLabel from ....tw.rpc import TwRPC diff --git a/mmgen/proto/eth/tx/new.py b/mmgen/proto/eth/tx/new.py index 4722f98c..b1f0b1c0 100755 --- a/mmgen/proto/eth/tx/new.py +++ b/mmgen/proto/eth/tx/new.py @@ -20,7 +20,7 @@ from ....opts import opt from ....obj import Int,ETHNonce,MMGenTxID,Str,HexStr from ....amt import ETHAmt from ....util import msg,is_int,is_hex_str,make_chksum_6 -from ....tw.ctl import TrackingWallet +from ....tw.ctl import TwCtl from ....addr import is_mmgen_id,is_coin_addr from ..contract import Token @@ -144,7 +144,7 @@ class New(Base,TxBase.New): async def get_cmdline_input_addrs(self): ret = [] if opt.inputs: - data_root = (await TrackingWallet(self.proto)).data_root # must create new instance here + data_root = (await TwCtl(self.proto)).data_root # must create new instance here errmsg = 'Address {!r} not in tracking wallet' for addr in opt.inputs.split(','): if is_mmgen_id(self.proto,addr): diff --git a/mmgen/tool/rpc.py b/mmgen/tool/rpc.py index 5935b702..fbcef4f5 100755 --- a/mmgen/tool/rpc.py +++ b/mmgen/tool/rpc.py @@ -140,8 +140,8 @@ class tool_cmd(tool_cmd_base): async def add_label(self,mmgen_or_coin_addr:str,label:str): "add descriptive label for address in tracking wallet" - from ..tw.ctl import TrackingWallet - return await (await TrackingWallet(self.proto,mode='w')).set_comment(mmgen_or_coin_addr,label) + from ..tw.ctl import TwCtl + return await (await TwCtl(self.proto,mode='w')).set_comment(mmgen_or_coin_addr,label) async def remove_label(self,mmgen_or_coin_addr:str): "remove descriptive label for address in tracking wallet" @@ -150,9 +150,9 @@ class tool_cmd(tool_cmd_base): async def remove_address(self,mmgen_or_coin_addr:str): "remove an address from tracking wallet" - from ..tw.ctl import TrackingWallet + from ..tw.ctl import TwCtl # returns None on failure: - ret = await (await TrackingWallet(self.proto,mode='w')).remove_address(mmgen_or_coin_addr) + ret = await (await TwCtl(self.proto,mode='w')).remove_address(mmgen_or_coin_addr) if ret: from ..util import msg msg(f'Address {ret!r} deleted from tracking wallet') @@ -160,8 +160,8 @@ class tool_cmd(tool_cmd_base): async def resolve_address(self,mmgen_or_coin_addr:str): "resolve an MMGen address in the tracking wallet to a coin address or vice-versa" - from ..tw.ctl import TrackingWallet - ret = await (await TrackingWallet(self.proto,mode='w')).resolve_address( mmgen_or_coin_addr ) + from ..tw.ctl import TwCtl + ret = await (await TwCtl(self.proto,mode='w')).resolve_address( mmgen_or_coin_addr ) if ret: from ..util import Msg from ..addr import is_coin_addr @@ -171,8 +171,8 @@ class tool_cmd(tool_cmd_base): async def rescan_address(self,mmgen_or_coin_addr:str): "rescan an address in the tracking wallet to update its balance" - from ..tw.ctl import TrackingWallet - return await (await TrackingWallet(self.proto,mode='w')).rescan_address( mmgen_or_coin_addr ) + from ..tw.ctl import TwCtl + return await (await TwCtl(self.proto,mode='w')).rescan_address( mmgen_or_coin_addr ) async def rescan_blockchain(self, start_block: int = None, @@ -186,8 +186,8 @@ class tool_cmd(tool_cmd_base): using Ctrl-C. An interrupted rescan may be resumed using the ‘start_block’ parameter. """ - from ..tw.ctl import TrackingWallet - ret = await (await TrackingWallet(self.proto,mode='w')).rescan_blockchain(start_block,stop_block) + from ..tw.ctl import TwCtl + ret = await (await TwCtl(self.proto,mode='w')).rescan_blockchain(start_block,stop_block) return True async def twexport(self,include_amts=True,pretty=False): diff --git a/mmgen/tw/ctl.py b/mmgen/tw/ctl.py index 6e37ef2d..c879571b 100755 --- a/mmgen/tw/ctl.py +++ b/mmgen/tw/ctl.py @@ -34,7 +34,7 @@ from .shared import TwMMGenID,TwLabel addr_info = namedtuple('addr_info',['twmmid','coinaddr']) -# decorator for TrackingWallet +# decorator for TwCtl def write_mode(orig_func): def f(self,*args,**kwargs): if self.mode != 'w': @@ -45,7 +45,7 @@ def write_mode(orig_func): return orig_func(self,*args,**kwargs) return f -class TrackingWallet(MMGenObject,metaclass=AsyncInit): +class TwCtl(MMGenObject,metaclass=AsyncInit): caps = ('rescan','batch') data_key = 'addresses' @@ -122,9 +122,9 @@ class TrackingWallet(MMGenObject,metaclass=AsyncInit): def __del__(self): """ - TrackingWallet instances opened in write or import mode must be explicitly destroyed - with 'del twctl', 'del twuo.wallet' and the like to ensure the instance is deleted and - wallet is written before global vars are destroyed by the interpreter at shutdown. + TwCtl instances opened in write or import mode must be explicitly destroyed with 'del + twuo.twctl' and the like to ensure the instance is deleted and wallet is written before + global vars are destroyed by the interpreter at shutdown. Not that this code can only be debugged by examining the program output, as exceptions are ignored within __del__(): diff --git a/mmgen/tw/json.py b/mmgen/tw/json.py index 02b9f1fb..d1735a25 100755 --- a/mmgen/tw/json.py +++ b/mmgen/tw/json.py @@ -19,7 +19,7 @@ from ..util import msg,ymsg,fmt,die,make_timestamp,make_chksum_8,compare_or_die from ..base_obj import AsyncInit from ..objmethods import MMGenObject from ..rpc import json_encoder -from .ctl import TrackingWallet +from .ctl import TwCtl class TwJSON: @@ -66,7 +66,7 @@ class TwJSON: super().__init__(proto) - self.tw = await TrackingWallet( proto, mode='i', rpc_ignore_wallet=True ) + self.tw = await TwCtl( proto, mode='i', rpc_ignore_wallet=True ) def check_network(data): coin,network = data['network'].split('_') @@ -132,7 +132,7 @@ class TwJSON: if not include_amts: self.keys.remove('amount') - self.tw = await TrackingWallet( proto ) + self.tw = await TwCtl( proto ) self.entries = await self.get_entries() diff --git a/mmgen/tw/view.py b/mmgen/tw/view.py index f3435acb..3a09186b 100755 --- a/mmgen/tw/view.py +++ b/mmgen/tw/view.py @@ -119,8 +119,8 @@ class TwView(MMGenObject,metaclass=AsyncInit): self.proto = proto self.rpc = await rpc_init(proto) if self.has_wallet: - from .ctl import TrackingWallet - self.wallet = await TrackingWallet(proto,mode='w') + from .ctl import TwCtl + self.wallet = await TwCtl(proto,mode='w') self.amt_keys = {'amt':'iwidth','amt2':'iwidth2'} if self.has_amt2 else {'amt':'iwidth'} @property diff --git a/mmgen/tx/__init__.py b/mmgen/tx/__init__.py index c7070c0d..5450a7c2 100755 --- a/mmgen/tx/__init__.py +++ b/mmgen/tx/__init__.py @@ -71,8 +71,8 @@ async def _get_obj_async( _clsname, _modname, *args, **kwargs ): # No tracking wallet required for the Unsigned and Signed(data=unsigned.__dict__) classes used # during signing. if proto and proto.tokensym and clsname in ('New','OnlineSigned'): - from ..tw.ctl import TrackingWallet - kwargs['tw'] = await TrackingWallet(proto) + from ..tw.ctl import TwCtl + kwargs['tw'] = await TwCtl(proto) return _base_proto_subclass( clsname, modname, proto )(*args,**kwargs) diff --git a/test/test_py_d/ts_ethdev.py b/test/test_py_d/ts_ethdev.py index 61222842..5e2a0fef 100755 --- a/test/test_py_d/ts_ethdev.py +++ b/test/test_py_d/ts_ethdev.py @@ -1322,8 +1322,8 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared): async def twmove(self): self.spawn('',msg_only=True) - from mmgen.tw.ctl import TrackingWallet - tw = await TrackingWallet(self.proto) + from mmgen.tw.ctl import TwCtl + tw = await TwCtl(self.proto) imsg(f'Moving tracking wallet') bakfile = tw.tw_fn + '.bak.json' if os.path.exists(bakfile): @@ -1354,8 +1354,8 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared): async def twcompare(self): self.spawn('',msg_only=True) - from mmgen.tw.ctl import TrackingWallet - tw = await TrackingWallet(self.proto) + from mmgen.tw.ctl import TwCtl + tw = await TwCtl(self.proto) fn = tw.tw_fn imsg(f'Comparing imported tracking wallet with original') data = [json.dumps(json.loads(read_from_file(f)),sort_keys=True) for f in (fn,fn+'.bak.json')]