From 21c9690069b6b17f214cf4df1eb39b32235e2987 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 7 Aug 2021 19:49:45 +0000 Subject: [PATCH] aInitMeta -> AsyncInit --- mmgen/addr.py | 7 ++----- mmgen/altcoins/eth/contract.py | 9 +++------ mmgen/altcoins/eth/tw.py | 14 +++++++------- mmgen/obj.py | 6 +++--- mmgen/rpc.py | 16 +++++----------- mmgen/tw.py | 19 ++++++++----------- 6 files changed, 28 insertions(+), 43 deletions(-) diff --git a/mmgen/addr.py b/mmgen/addr.py index 2ceca112..ac5ed285 100755 --- a/mmgen/addr.py +++ b/mmgen/addr.py @@ -1140,15 +1140,12 @@ re-import your addresses. d.update(self.al_ids[al_id].make_reverse_dict_addrlist(coinaddrs)) return d -class TwAddrData(AddrData,metaclass=aInitMeta): +class TwAddrData(AddrData,metaclass=AsyncInit): def __new__(cls,proto,*args,**kwargs): return MMGenObject.__new__(altcoin_subclass(cls,proto,'tw')) - def __init__(self,proto,*args,**kwargs): - pass - - async def __ainit__(self,proto,wallet=None): + async def __init__(self,proto,wallet=None): self.proto = proto from .rpc import rpc_init self.rpc = await rpc_init(proto) diff --git a/mmgen/altcoins/eth/contract.py b/mmgen/altcoins/eth/contract.py index b4c684ed..d542b6ac 100755 --- a/mmgen/altcoins/eth/contract.py +++ b/mmgen/altcoins/eth/contract.py @@ -25,7 +25,7 @@ from . import rlp from mmgen.globalvars import g from mmgen.common import * -from mmgen.obj import MMGenObject,CoinAddr,TokenAddr,CoinTxID,ETHAmt,aInitMeta +from mmgen.obj import MMGenObject,CoinAddr,TokenAddr,CoinTxID,ETHAmt,AsyncInit from mmgen.util import msg try: @@ -156,12 +156,9 @@ class Token(TokenBase): self.base_unit = Decimal('10') ** -self.decimals self.rpc = rpc -class TokenResolve(TokenBase,metaclass=aInitMeta): +class TokenResolve(TokenBase,metaclass=AsyncInit): - def __init__(self,*args,**kwargs): - return super().__init__() - - async def __ainit__(self,proto,rpc,addr): + async def __init__(self,proto,rpc,addr): self.proto = proto self.rpc = rpc self.addr = TokenAddr(proto,addr) diff --git a/mmgen/altcoins/eth/tw.py b/mmgen/altcoins/eth/tw.py index c535b97d..8ac18c05 100755 --- a/mmgen/altcoins/eth/tw.py +++ b/mmgen/altcoins/eth/tw.py @@ -152,8 +152,8 @@ class EthereumTokenTrackingWallet(EthereumTrackingWallet): symbol = None cur_eth_balances = {} - async def __ainit__(self,proto,mode='r',token_addr=None): - await super().__ainit__(proto,mode=mode) + async def __init__(self,proto,mode='r',token_addr=None): + await super().__init__(proto,mode=mode) for v in self.data['tokens'].values(): self.conv_types(v) @@ -244,10 +244,10 @@ Actions: [q]uit view, [p]rint to file, pager [v]iew, [w]ide view, 'q':'a_quit','p':'a_print','v':'a_view','w':'a_view_wide', 'l':'a_lbl_add','D':'a_addr_delete','R':'a_balance_refresh' } - async def __ainit__(self,proto,*args,**kwargs): + async def __init__(self,proto,*args,**kwargs): if g.cached_balances: self.hdr_fmt += '\n' + yellow('WARNING: Using cached balances. These may be out of date!') - await TwUnspentOutputs.__ainit__(self,proto,*args,**kwargs) + await TwUnspentOutputs.__init__(self,proto,*args,**kwargs) def do_sort(self,key=None,reverse=False): if key == 'txid': return @@ -289,7 +289,7 @@ class EthereumTwAddrList(TwAddrList): has_age = False - async def __ainit__(self,proto,usr_addr_list,minconf,showempty,showbtcaddrs,all_labels,wallet=None): + async def __init__(self,proto,usr_addr_list,minconf,showempty,showbtcaddrs,all_labels,wallet=None): self.proto = proto self.wallet = wallet or await TrackingWallet(self.proto,mode='w') @@ -322,9 +322,9 @@ class EthereumTwGetBalance(TwGetBalance): fs = '{w:13} {c}\n' # TODO - for now, just suppress display of meaningless data - async def __ainit__(self,proto,*args,**kwargs): + async def __init__(self,proto,*args,**kwargs): self.wallet = await TrackingWallet(proto,mode='w') - await TwGetBalance.__ainit__(self,proto,*args,**kwargs) + await TwGetBalance.__init__(self,proto,*args,**kwargs) async def create_data(self): data = self.wallet.mmid_ordered_dict diff --git a/mmgen/obj.py b/mmgen/obj.py index 430b42fc..0efbb827 100755 --- a/mmgen/obj.py +++ b/mmgen/obj.py @@ -28,10 +28,10 @@ from .exception import * from .globalvars import * from .color import * -class aInitMeta(type): +class AsyncInit(type): async def __call__(cls,*args,**kwargs): - instance = super().__call__(*args,**kwargs) - await instance.__ainit__(*args,**kwargs) + instance = cls.__new__(cls,*args,**kwargs) + await type(instance).__init__(instance,*args,**kwargs) return instance def get_obj(objname,*args,**kwargs): diff --git a/mmgen/rpc.py b/mmgen/rpc.py index 78e63d36..3413718f 100755 --- a/mmgen/rpc.py +++ b/mmgen/rpc.py @@ -23,7 +23,7 @@ rpc.py: Cryptocoin RPC library for the MMGen suite import base64,json,asyncio from decimal import Decimal from .common import * -from .obj import aInitMeta +from .obj import AsyncInit rpc_credentials_msg = '\n'+fmt(""" Error: no {proto_name} RPC authentication method found @@ -397,15 +397,12 @@ class RPCClient(MMGenObject): except: m = text raise RPCFailure(f'{s.value} {s.name}: {m}') -class BitcoinRPCClient(RPCClient,metaclass=aInitMeta): +class BitcoinRPCClient(RPCClient,metaclass=AsyncInit): auth_type = 'basic' has_auth_cookie = True - def __init__(self,*args,**kwargs): - pass - - async def __ainit__(self,proto,daemon,backend): + async def __init__(self,proto,daemon,backend): self.proto = proto self.daemon = daemon @@ -579,12 +576,9 @@ class BitcoinRPCClient(RPCClient,metaclass=aInitMeta): 'walletpassphrase', ) -class EthereumRPCClient(RPCClient,metaclass=aInitMeta): +class EthereumRPCClient(RPCClient,metaclass=AsyncInit): - def __init__(self,*args,**kwargs): - pass - - async def __ainit__(self,proto,daemon,backend): + async def __init__(self,proto,daemon,backend): self.proto = proto self.daemon = daemon self.call_sigs = getattr(getattr(CallSigs,proto.base_proto),daemon.id,None) diff --git a/mmgen/tw.py b/mmgen/tw.py index 2ac00381..d28a7186 100755 --- a/mmgen/tw.py +++ b/mmgen/tw.py @@ -64,7 +64,7 @@ if os.getenv('MMGEN_BOGUS_WALLET_DATA'): for o in us: o.date = 1831006505 - int(9.7 * 60 * (o.confs - 1)) -class TwUnspentOutputs(MMGenObject,metaclass=aInitMeta): +class TwUnspentOutputs(MMGenObject,metaclass=AsyncInit): def __new__(cls,proto,*args,**kwargs): return MMGenObject.__new__(altcoin_subclass(cls,proto,'tw')) @@ -121,7 +121,7 @@ Actions: [q]uit view, [p]rint to file, pager [v]iew, [w]ide view, add [l]abel: def amt2(self,value): return self.proto.coin_amt(value) - async def __ainit__(self,proto,minconf=1,addrs=[]): + async def __init__(self,proto,minconf=1,addrs=[]): self.proto = proto self.unspent = self.MMGenTwOutputList() self.fmt_display = '' @@ -539,7 +539,7 @@ Actions: [q]uit view, [p]rint to file, pager [v]iew, [w]ide view, add [l]abel: else: return _date_formatter[age_fmt](self.rpc,o.date) -class TwAddrList(MMGenDict,metaclass=aInitMeta): +class TwAddrList(MMGenDict,metaclass=AsyncInit): has_age = True age_fmts = TwUnspentOutputs.age_fmts age_disp = TwUnspentOutputs.age_disp @@ -547,10 +547,7 @@ class TwAddrList(MMGenDict,metaclass=aInitMeta): def __new__(cls,proto,*args,**kwargs): return MMGenDict.__new__(altcoin_subclass(cls,proto,'tw'),*args,**kwargs) - def __init__(self,proto,*args,**kwargs): - pass - - async def __ainit__(self,proto,usr_addr_list,minconf,showempty,showbtcaddrs,all_labels,wallet=None): + async def __init__(self,proto,usr_addr_list,minconf,showempty,showbtcaddrs,all_labels,wallet=None): def check_dup_mmid(acct_labels): mmid_prev,err = None,False @@ -702,7 +699,7 @@ class TwAddrList(MMGenDict,metaclass=aInitMeta): return '\n'.join(gen_output()) -class TrackingWallet(MMGenObject,metaclass=aInitMeta): +class TrackingWallet(MMGenObject,metaclass=AsyncInit): caps = ('rescan','batch') data_key = 'addresses' @@ -713,7 +710,7 @@ class TrackingWallet(MMGenObject,metaclass=aInitMeta): def __new__(cls,proto,*args,**kwargs): return MMGenObject.__new__(altcoin_subclass(cls,proto,'tw')) - async def __ainit__(self,proto,mode='r',token_addr=None): + async def __init__(self,proto,mode='r',token_addr=None): assert mode in ('r','w','i'), "{!r}: wallet mode must be 'r','w' or 'i'".format(mode) if mode == 'i': @@ -986,14 +983,14 @@ class TrackingWallet(MMGenObject,metaclass=aInitMeta): async def remove_address(self,addr): raise NotImplementedError(f'address removal not implemented for coin {self.proto.coin}') -class TwGetBalance(MMGenObject,metaclass=aInitMeta): +class TwGetBalance(MMGenObject,metaclass=AsyncInit): fs = '{w:13} {u:<16} {p:<16} {c}' def __new__(cls,proto,*args,**kwargs): return MMGenObject.__new__(altcoin_subclass(cls,proto,'tw')) - async def __ainit__(self,proto,minconf,quiet): + async def __init__(self,proto,minconf,quiet): self.minconf = minconf self.quiet = quiet