Browse Source

aInitMeta -> AsyncInit

The MMGen Project 3 years ago
parent
commit
21c9690069
6 changed files with 28 additions and 43 deletions
  1. 2 5
      mmgen/addr.py
  2. 3 6
      mmgen/altcoins/eth/contract.py
  3. 7 7
      mmgen/altcoins/eth/tw.py
  4. 3 3
      mmgen/obj.py
  5. 5 11
      mmgen/rpc.py
  6. 8 11
      mmgen/tw.py

+ 2 - 5
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)

+ 3 - 6
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)

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

+ 3 - 3
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):

+ 5 - 11
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):
-
-	def __init__(self,*args,**kwargs):
-		pass
+class EthereumRPCClient(RPCClient,metaclass=AsyncInit):
 
-	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)

+ 8 - 11
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