aInitMeta -> AsyncInit

This commit is contained in:
The MMGen Project 2021-08-07 19:49:45 +00:00
commit 21c9690069
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
6 changed files with 28 additions and 43 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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):

View file

@ -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)

View file

@ -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