new class: tw.rpc.TwRPC
This commit is contained in:
parent
e7d75ff60d
commit
69b15a4ff9
8 changed files with 45 additions and 17 deletions
|
|
@ -15,9 +15,8 @@ proto.btc.tw.ctl: Bitcoin base protocol tracking wallet control class
|
|||
from ....globalvars import g
|
||||
from ....tw.ctl import TrackingWallet,write_mode
|
||||
from ....util import msg,msg_r,rmsg,vmsg,die,suf,fmt_list
|
||||
from .rpc import BitcoinTwRPC
|
||||
|
||||
class BitcoinTrackingWallet(TrackingWallet,BitcoinTwRPC):
|
||||
class BitcoinTrackingWallet(TrackingWallet):
|
||||
|
||||
def init_empty(self):
|
||||
self.data = { 'coin': self.proto.coin, 'addresses': {} }
|
||||
|
|
|
|||
|
|
@ -16,8 +16,9 @@ from ....addr import CoinAddr
|
|||
from ....util import die,msg,rmsg
|
||||
from ....obj import MMGenList
|
||||
from ....tw.shared import get_tw_label
|
||||
from ....tw.rpc import TwRPC
|
||||
|
||||
class BitcoinTwRPC:
|
||||
class BitcoinTwRPC(TwRPC):
|
||||
|
||||
async def get_addr_label_pairs(self,twmmid=None):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ from ....color import nocolor,red,pink,gray
|
|||
from ....obj import TwComment,CoinTxID,Int
|
||||
from .rpc import BitcoinTwRPC
|
||||
|
||||
class BitcoinTwTransaction(BitcoinTwRPC):
|
||||
class BitcoinTwTransaction:
|
||||
|
||||
def __init__(self,parent,proto,rpc,
|
||||
idx, # unique numeric identifier of this transaction in listing
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ from ....addr import CoinAddr
|
|||
from .view import EthereumTwView
|
||||
from .rpc import EthereumTwRPC
|
||||
|
||||
class EthereumTwAddresses(EthereumTwView,EthereumTwRPC,TwAddresses):
|
||||
class EthereumTwAddresses(TwAddresses,EthereumTwView,EthereumTwRPC):
|
||||
|
||||
has_age = False
|
||||
prompt = """
|
||||
|
|
|
|||
|
|
@ -25,9 +25,8 @@ from ....tw.ctl import TrackingWallet,write_mode
|
|||
from ....addr import is_coin_addr,is_mmgen_id
|
||||
from ....amt import ETHAmt
|
||||
from ..contract import Token,TokenResolve
|
||||
from .rpc import EthereumTwRPC
|
||||
|
||||
class EthereumTrackingWallet(EthereumTwRPC,TrackingWallet):
|
||||
class EthereumTrackingWallet(TrackingWallet):
|
||||
|
||||
caps = ('batch',)
|
||||
data_key = 'accounts'
|
||||
|
|
|
|||
|
|
@ -15,24 +15,26 @@ proto.eth.tw.rpc: Ethereum base protocol tracking wallet RPC class
|
|||
from ....tw.ctl import TrackingWallet
|
||||
from ....addr import CoinAddr
|
||||
from ....tw.shared import TwLabel
|
||||
from ....tw.rpc import TwRPC
|
||||
|
||||
class EthereumTwRPC:
|
||||
class EthereumTwRPC(TwRPC):
|
||||
|
||||
async def get_addr_label_pairs(self,twmmid=None):
|
||||
wallet = (
|
||||
self if isinstance(self,TrackingWallet) else
|
||||
(self.wallet or await TrackingWallet(self.proto,mode='w'))
|
||||
)
|
||||
|
||||
wallet = self.wallet or await TrackingWallet(self.proto,mode='w')
|
||||
|
||||
ret = [(
|
||||
TwLabel( self.proto, mmid + ' ' + d['comment'] ),
|
||||
CoinAddr( self.proto, d['addr'] )
|
||||
) for mmid,d in wallet.mmid_ordered_dict.items() ]
|
||||
|
||||
if wallet is not self:
|
||||
del wallet
|
||||
|
||||
if twmmid:
|
||||
ret = [e for e in ret if e[0].mmid == twmmid]
|
||||
|
||||
if wallet is not self.wallet:
|
||||
del wallet
|
||||
|
||||
return ret or None
|
||||
|
||||
class EthereumTokenTwRPC(EthereumTwRPC):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -220,7 +220,8 @@ class TrackingWallet(MMGenObject,metaclass=AsyncInit):
|
|||
msg(f'{addrspec!r}: invalid address for this network')
|
||||
return None
|
||||
|
||||
pairs = await self.get_addr_label_pairs(twmmid)
|
||||
from .rpc import TwRPC
|
||||
pairs = await TwRPC(proto=self.proto,rpc=self.rpc,wallet=self).get_addr_label_pairs(twmmid)
|
||||
|
||||
if not pairs:
|
||||
msg(f'MMGen address {twmmid!r} not found in tracking wallet')
|
||||
|
|
@ -270,7 +271,8 @@ class TrackingWallet(MMGenObject,metaclass=AsyncInit):
|
|||
|
||||
if await self.set_label(res.coinaddr,lbl):
|
||||
# redundant paranoia step:
|
||||
pairs = await self.get_addr_label_pairs(res.twmmid)
|
||||
from .rpc import TwRPC
|
||||
pairs = await TwRPC(proto=self.proto,rpc=self.rpc,wallet=self).get_addr_label_pairs(res.twmmid)
|
||||
assert pairs[0][0].comment == comment, f'{pairs[0][0].comment!r} != {comment!r}'
|
||||
|
||||
desc = '{} address {} in tracking wallet'.format(
|
||||
|
|
|
|||
25
mmgen/tw/rpc.py
Executable file
25
mmgen/tw/rpc.py
Executable file
|
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# mmgen = Multi-Mode GENerator, a command-line cryptocurrency wallet
|
||||
# Copyright (C)2013-2022 The MMGen Project <mmgen@tuta.io>
|
||||
# Licensed under the GNU General Public License, Version 3:
|
||||
# https://www.gnu.org/licenses
|
||||
# Public project repositories:
|
||||
# https://github.com/mmgen/mmgen
|
||||
# https://gitlab.com/mmgen/mmgen
|
||||
|
||||
"""
|
||||
tw.rpc: Tracking wallet RPC class for the MMGen suite
|
||||
"""
|
||||
|
||||
from ..objmethods import MMGenObject
|
||||
|
||||
class TwRPC:
|
||||
|
||||
def __new__(cls,proto,*args,**kwargs):
|
||||
return MMGenObject.__new__(proto.base_proto_subclass(cls,'tw','rpc'))
|
||||
|
||||
def __init__(self,proto,rpc,wallet):
|
||||
self.proto = proto
|
||||
self.rpc = rpc
|
||||
self.wallet = wallet
|
||||
Loading…
Add table
Add a link
Reference in a new issue