pylint throughout (excluding tests) - use "is" for bool,None,type equality

This commit is contained in:
The MMGen Project 2023-10-11 12:58:49 +00:00
commit b660ba4235
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
43 changed files with 87 additions and 87 deletions

View file

@ -110,7 +110,7 @@ class AddrFile(MMGenObject):
fs = ' {:<%s} {:<34}{}' % len(str(p.data[-1].idx))
for e in p.data:
c = ' ' + e.comment if add_comments and e.comment else ''
if type(p) == KeyList:
if type(p) is KeyList:
out.append(fs.format( e.idx, f'{p.al_id.mmtype.wif_label}: {e.sec.wif}', c ))
elif type(p).__name__ == 'PasswordList':
out.append(fs.format(e.idx,e.passwd,c))
@ -119,7 +119,7 @@ class AddrFile(MMGenObject):
if p.has_keys:
if self.cfg.b16:
out.append(fs.format( '', f'orig_hex: {e.sec.orig_bytes.hex()}', c ))
if type(self) != ViewKeyAddrFile:
if type(self) is not ViewKeyAddrFile:
out.append(fs.format( '', f'{p.al_id.mmtype.wif_label}: {e.sec.wif}', c ))
for k in ('viewkey','wallet_passwd'):
v = getattr(e,k)
@ -154,7 +154,7 @@ class AddrFile(MMGenObject):
a = le(**{ 'proto': p.proto, 'idx':int(idx), p.main_attr:addr, 'comment':comment })
if p.has_keys: # order: wif,(orig_hex),viewkey,wallet_passwd
if type(self) != ViewKeyAddrFile:
if type(self) is not ViewKeyAddrFile:
d = self.get_line(lines)
assert d[0] == p.al_id.mmtype.wif_label+':', iifs.format(d[0],p.al_id.mmtype.wif_label)
a.sec = PrivKey(proto=p.proto,wif=d[1])
@ -168,7 +168,7 @@ class AddrFile(MMGenObject):
ret.append(a)
if type(self) != ViewKeyAddrFile and p.has_keys and p.ka_validity_chk != False:
if type(self) is not ViewKeyAddrFile and p.has_keys and p.ka_validity_chk is not False:
def verify_keys():
from .addrgen import KeyGenerator,AddrGenerator
@ -230,7 +230,7 @@ class AddrFile(MMGenObject):
proto = init_proto( p.cfg, coin=coin, network=network )
if mmtype_key == None:
if mmtype_key is None:
mmtype_key = proto.mmtypes[0]
return ( proto, proto.addr_type(mmtype_key) )

View file

@ -66,9 +66,9 @@ def AddrGenerator(cfg,proto,addr_type):
from .addr import MMGenAddrType
if type(addr_type) == str:
if type(addr_type) is str:
addr_type = MMGenAddrType(proto=proto,id_str=addr_type)
elif type(addr_type) == MMGenAddrType:
elif type(addr_type) is MMGenAddrType:
assert addr_type in proto.mmtypes, f'{addr_type}: invalid address type for coin {proto.coin}'
else:
raise TypeError(f'{type(addr_type)}: incorrect argument type for {cls.__name__}()')

View file

@ -216,16 +216,16 @@ class AddrList(MMGenObject): # Address info for a single seed ID
self.fmt_data = ''
self.chksum = None
if self.al_id == None:
if self.al_id is None:
return
if type(self) == ViewKeyAddrList:
if type(self) is ViewKeyAddrList:
if not 'viewkey' in self.al_id.mmtype.extra_attrs:
die(1,f'viewkeys not supported for address type {self.al_id.mmtype.desc!r}')
self.id_str = AddrListIDStr(self)
if type(self) == KeyList:
if type(self) is KeyList:
return
if do_chksum and not skip_chksum:
@ -288,7 +288,7 @@ class AddrList(MMGenObject): # Address info for a single seed ID
e.viewkey = ag.to_viewkey(data)
if gen_wallet_passwd:
e.wallet_passwd = self.gen_wallet_passwd(
e.viewkey.encode() if type(self) == ViewKeyAddrList else e.sec )
e.viewkey.encode() if type(self) is ViewKeyAddrList else e.sec )
elif self.gen_passwds:
e.passwd = self.gen_passwd(e.sec) # TODO - own type

View file

@ -42,7 +42,7 @@ from .cfg import gc,Config
from .util import msg
def test_equal(desc,a,b,*cdata):
if type(a) == int:
if type(a) is int:
a = hex(a)
b = hex(b)
(network,coin,e,b_desc,verbose) = cdata
@ -625,7 +625,7 @@ class CoinInfo(object):
except:
pass
else:
if bl == True or coin in bl:
if bl is True or coin in bl:
if verbose:
msg(f'Tool {tool!r} blacklisted for coin {coin}, addr_type {addr_type!r}')
return None
@ -708,7 +708,7 @@ def init_genonly_altcoins(usr_coin=None,testnet=False):
networks = ['mainnet'] + (['testnet'] if testnet else [])
network = 'testnet' if testnet else 'mainnet'
if usr_coin == None:
if usr_coin is None:
for network in networks:
data[network] = CoinInfo.get_supported_coins(network)
trust_level = 0

View file

@ -47,7 +47,7 @@ class CoinAmt(Decimal,Hilite,InitErrors): # abstract class
try:
if from_unit:
assert from_unit in cls.units, f'{from_unit!r}: unrecognized denomination for {cls.__name__}'
assert type(num) == int,'value is not an integer'
assert type(num) is int,'value is not an integer'
me = Decimal.__new__(cls,num * getattr(cls,from_unit))
elif from_decimal:
assert isinstance(num,Decimal), f'number must be of type Decimal, not {type(num).__name__})'

View file

@ -121,9 +121,9 @@ class baseconv(object):
If 'seed', output length will be mapped from input length using data in seedlen_map.
If an integer, the string, hex string or byte output will be padded to this length.
"""
if pad == None:
if pad is None:
return 0
elif type(pad) == int:
elif type(pad) is int:
return pad
elif pad == 'seed':
return seed_pad_func()
@ -132,7 +132,7 @@ class baseconv(object):
def tohex(self,words_arg,pad=None):
"convert string or list data of instance base to a hexadecimal string"
return self.tobytes(words_arg,pad//2 if type(pad)==int else pad).hex()
return self.tobytes(words_arg, pad//2 if type(pad) is int else pad).hex()
def tobytes(self,words_arg,pad=None):
"convert string or list data of instance base to byte string"

View file

@ -110,7 +110,7 @@ class bip39(baseconv):
def fromhex(self,seed_hex,pad=None,tostr=False):
assert is_hex_str(seed_hex),'seed data not a hexadecimal string'
assert tostr == False,"'tostr' must be False for 'bip39'"
assert tostr is False,"'tostr' must be False for 'bip39'"
assert pad in (None,'seed'), f"{pad}: invalid 'pad' argument (must be None or 'seed')"
wl = self.digits

View file

@ -675,7 +675,7 @@ class Config(Lockable):
def _die_on_incompatible_opts(self):
for group in self._incompatible_opts:
bad = [k for k in self.__dict__ if k in group and getattr(self,k) != None]
bad = [k for k in self.__dict__ if k in group and getattr(self,k) is not None]
if len(bad) > 1:
die(1,'Conflicting options: {}'.format(', '.join(map(fmt_opt,bad))))
@ -881,7 +881,7 @@ def conv_type(
d = f' in {src!r}' if src else '',
e = type(refval).__name__ ))
if type(refval) == bool:
if type(refval) is bool:
v = str(val).lower()
ret = (
True if v in ('true','yes','1','on') else

View file

@ -148,7 +148,7 @@ class cfg_file_sample(cfg_file):
if line == '':
in_chunk = False
elif line.startswith('#'):
if in_chunk == False:
if in_chunk is False:
if chunk:
yield process_chunk(chunk,last_nonblank)
chunk = [line]

View file

@ -306,7 +306,7 @@ class Crypto:
desc,
urand = {'data':b'', 'counter':0} ):
assert type(rand_bytes) == bytes, 'add_user_random_chk1'
assert type(rand_bytes) is bytes, 'add_user_random_chk1'
if self.cfg.usr_randchars:

View file

@ -170,7 +170,7 @@ def write_data_to_file(
if cfg.quiet:
ask_overwrite = False
if ask_write_default_yes == False or ask_write_prompt:
if ask_write_default_yes is False or ask_write_prompt:
ask_write = True
def do_stdout():

View file

@ -74,7 +74,7 @@ class PrivKey(bytes,Hilite,InitErrors,MMGenObject):
return s
if wif:
try:
assert s == None,"'wif' and key hex args are mutually exclusive"
assert s is None,"'wif' and key hex args are mutually exclusive"
assert wif.isascii() and wif.isalnum(), 'not an ASCII alphanumeric string'
k = proto.decode_wif(wif) # raises exception on error
me = bytes.__new__(cls,k.sec)
@ -100,7 +100,7 @@ class PrivKey(bytes,Hilite,InitErrors,MMGenObject):
me = bytes.__new__(cls,s)
else:
assert compressed is not None, "'compressed' arg missing"
assert type(compressed) == bool,(
assert type(compressed) is bool,(
f"'compressed' must be of type bool, not {type(compressed).__name__}" )
me = bytes.__new__( cls, proto.preprocess_key(s,pubkey_type) )
me.wif = WifKey( proto, proto.encode_wif(me,pubkey_type,compressed) )

View file

@ -126,7 +126,7 @@ class ImmutableAttr: # Descriptor
else:
"check this attribute's type"
def assign_with_check(instance,value):
if type(value) == dtype:
if type(value) is dtype:
return value
raise TypeError('Attribute {!r} of {} instance must of type {}'.format(
self.name,
@ -171,7 +171,7 @@ class ListItemAttr(ImmutableAttr):
return None
def setattr_condition(self,instance):
return getattr(instance,self.name) == None or self.reassign_ok
return getattr(instance,self.name) is None or self.reassign_ok
def __delete__(self,instance):
if self.delete_ok:
@ -205,7 +205,7 @@ class MMGenListItem(MMGenObject):
raise ValueError(f'Non-keyword args not allowed in {type(self).__name__!r} constructor')
for k,v in kwargs.items():
if v != None:
if v is not None:
setattr(self,k,v)
# Require all immutables to be initialized. Check performed only when testing.
@ -274,11 +274,11 @@ class Int(int,Hilite,InitErrors):
return n
try:
me = int.__new__(cls,str(n),base)
if cls.min_val != None:
if cls.min_val is not None:
assert me >= cls.min_val, f'is less than cls.min_val ({cls.min_val})'
if cls.max_val != None:
if cls.max_val is not None:
assert me <= cls.max_val, f'is greater than cls.max_val ({cls.max_val})'
if cls.max_digits != None:
if cls.max_digits is not None:
assert len(str(me)) <= cls.max_digits, f'has more than {cls.max_digits} digits'
return me
except Exception as e:
@ -314,7 +314,7 @@ class HexStr(str,Hilite,InitErrors):
def __new__(cls,s,case=None):
if isinstance(s,cls):
return s
if case == None:
if case is None:
case = cls.hexcase
from .util import hexdigits_lc,hexdigits_uc
try:

View file

@ -229,7 +229,7 @@ class MMGenRegtest(MMGenObject):
async def fork(self,coin): # currently disabled
proto = init_proto( self.cfg, coin, False )
if not [f for f in proto.forks if f[2] == proto.coin.lower() and f[3] == True]:
if not [f for f in proto.forks if f[2] == proto.coin.lower() and f[3] is True]:
die(1,f'Coin {proto.coin} is not a replayable fork of coin {coin}')
gmsg(f'Creating fork from coin {coin} to coin {proto.coin}')

View file

@ -170,7 +170,7 @@ class BitcoinRPCClient(RPCClient,metaclass=AsyncInit):
if block0 != self.proto.block0:
raise ValueError(f'Invalid Genesis block for {self.proto.cls_name} protocol')
for fork in self.proto.forks:
if fork.height == None or self.blockcount < fork.height:
if fork.height is None or self.blockcount < fork.height:
break
if fork.hash != await self.call('getblockhash',fork.height):
die(3,f'Bad block hash at fork block {fork.height}. Is this the {fork.name} chain?')
@ -286,7 +286,7 @@ class BitcoinRPCClient(RPCClient,metaclass=AsyncInit):
d = self.cached['blockchaininfo']
try:
if d['softforks']['segwit']['active'] == True:
if d['softforks']['segwit']['active'] is True:
return True
except:
pass

View file

@ -52,7 +52,7 @@ class BitcoinTwCtl(TwCtl):
async def rescan_blockchain(self,start,stop):
start = start or 0
endless = stop == None
endless = stop is None
CR = '\n' if self.cfg.test_suite else '\r'
if not ( start >= 0 and (stop if stop is not None else start) >= start ):

View file

@ -141,7 +141,7 @@ class BitcoinTwTransaction:
return self.parent.date_formatter[age_fmt](self.rpc,self.time)
def txid_disp(self,color,width=None):
return self.txid.hl(color=color) if width == None else self.txid.truncate(width=width,color=color)
return self.txid.hl(color=color) if width is None else self.txid.truncate(width=width,color=color)
def vouts_list_disp(self,src,color,indent=''):

View file

@ -32,7 +32,7 @@ class Bump(Completed,New,TxBase.Bump):
def convert_and_check_fee(self,fee,desc):
ret = super().convert_and_check_fee(fee,desc)
if ret == False:
if ret is False:
return ret
if ret < self.min_fee:
msg('{} {c}: {} fee too small. Minimum fee: {} {c} ({} {})'.format(

View file

@ -124,7 +124,7 @@ class TxInfo(TxInfo):
# format (the number of seconds elapsed since 1970-01-01T00:00 UTC). The transaction can be
# added to any block whose block time is greater than the locktime.
num = locktime or self.tx.locktime
if num == None:
if num is None:
return '(None)'
elif num >= 5 * 10**6:
import time

View file

@ -69,10 +69,10 @@ class New(Base,TxBase.New):
def convert_and_check_fee(self,fee,desc):
abs_fee = self.feespec2abs(fee,self.estimate_size())
if abs_fee == None:
if abs_fee is None:
raise ValueError(f'{fee}: cannot convert {self.rel_fee_desc} to {self.coin}'
+ ' because transaction size is unknown')
if abs_fee == False:
if abs_fee is False:
err = f'{fee!r}: invalid TX fee (not a {self.coin} amount or {self.rel_fee_desc} specification)'
elif abs_fee > self.proto.max_tx_fee:
err = f'{abs_fee} {self.coin}: {desc} fee too large (maximum fee: {self.proto.max_tx_fee} {self.coin})'

View file

@ -50,7 +50,7 @@ class OnlineSigned(Signed,TxBase.OnlineSigned):
errmsg = str(e)
ret = False
if ret == False: # TODO: test send errors
if ret is False: # TODO: test send errors
if errmsg.count('Signature must use SIGHASH_FORKID'):
m = ('The Aug. 1 2017 UAHF has activated on this chain.\n'
+ 'Re-run the script with the --coin=bch option.' )

View file

@ -131,7 +131,7 @@ class TokenCommon(MMGenObject):
if chain_id is None:
res = await self.rpc.call('eth_chainId')
chain_id = None if res == None else int(res,16)
chain_id = None if res is None else int(res,16)
tx = Transaction(**tx_in).sign(key,chain_id)

View file

@ -78,7 +78,7 @@ class EthereumRPCClient(RPCClient,metaclass=AsyncInit):
if self.daemon.id in ('parity','openethereum'):
if (await self.call('parity_nodeKind'))['capability'] == 'full':
self.caps += ('full_node',)
self.chainID = None if ci == None else Int(ci,16) # parity/oe return chainID only for dev chain
self.chainID = None if ci is None else Int(ci,16) # parity/oe return chainID only for dev chain
self.chain = (await self.call('parity_chain')).replace(' ','_').replace('_testnet','')
elif self.daemon.id in ('geth','erigon'):
if self.daemon.network == 'mainnet':

View file

@ -183,7 +183,7 @@ class EthereumTokenTwCtl(EthereumTwCtl):
if not is_coin_addr(proto,token_addr):
die( 'InvalidTokenAddress', f'{token_addr!r}: invalid token address' )
else:
assert token_addr == None,'EthereumTokenTwCtl_chk1'
assert token_addr is 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!' )
@ -217,7 +217,7 @@ class EthereumTokenTwCtl(EthereumTwCtl):
cache = self.cur_eth_balances
r = self.data['accounts']
ret = None if force_rpc else self.get_cached_balance(addr,cache,r)
if ret == None:
if ret is None:
ret = await super().rpc_get_balance(addr)
self.cache_balance(addr,ret,cache,r)
return ret

View file

@ -127,7 +127,7 @@ class New(Base,TxBase.New):
def convert_and_check_fee(self,fee,desc):
abs_fee = self.feespec2abs(fee,None)
if abs_fee == False:
if abs_fee is False:
return False
elif not self.disable_fee_check and (abs_fee > self.proto.max_tx_fee):
msg('{} {c}: {} fee too large (maximum fee: {} {c})'.format(

View file

@ -220,7 +220,7 @@ class CoinProtocol(MMGenObject):
"""
def encode_wif(self,privbytes,pubkey_type,compressed):
assert pubkey_type == self.pubkey_type, f'{pubkey_type}: invalid pubkey_type for {self.name} protocol!'
assert compressed == False, f'{self.name} protocol does not support compressed pubkeys!'
assert compressed is False, f'{self.name} protocol does not support compressed pubkeys!'
return privbytes.hex()
def decode_wif(self,wif):
@ -239,8 +239,8 @@ def init_proto(
tokensym = None,
need_amt = False ):
assert type(testnet) == bool, 'init_proto_chk1'
assert type(regtest) == bool, 'init_proto_chk2'
assert type(testnet) is bool, 'init_proto_chk1'
assert type(regtest) is bool, 'init_proto_chk2'
assert coin or network_id, 'init_proto_chk3'
assert not (coin and network_id), 'init_proto_chk4'
@ -248,8 +248,8 @@ def init_proto(
coin,network = CoinProtocol.Base.parse_network_id(network_id)
elif network:
assert network in CoinProtocol.Base.networks, f'init_proto_chk5 - {network!r}: invalid network'
assert testnet == False, 'init_proto_chk6'
assert regtest == False, 'init_proto_chk7'
assert testnet is False, 'init_proto_chk6'
assert regtest is False, 'init_proto_chk7'
else:
network = 'regtest' if regtest else 'testnet' if testnet else 'mainnet'

View file

@ -34,7 +34,7 @@ auth_data = namedtuple('rpc_auth_data',['user','passwd'])
def dmsg_rpc(fs,data=None,is_json=False):
msg(
fs if data == None else
fs if data is None else
fs.format(pp_fmt(json.loads(data) if is_json else data))
)
@ -222,7 +222,7 @@ class RPCBackends:
yield s
if caller.auth_type == 'digest':
yield '--digest'
if caller.network_proto == 'https' and caller.verify_server == False:
if caller.network_proto == 'https' and caller.verify_server is False:
yield '--insecure'
super().__init__(caller)
@ -338,7 +338,7 @@ class RPCClient(MMGenObject):
1) method = methodname, args_list = [args_tuple1, args_tuple2,...]
2) method = None, args_list = [(methodname1,args_tuple1), (methodname2,args_tuple2), ...]
"""
cmd_list = args_list if method == None else tuple(zip([method] * len(args_list), args_list))
cmd_list = args_list if method is None else tuple(zip([method] * len(args_list), args_list))
cur_pos = 0
chunk_size = 1024

View file

@ -199,7 +199,7 @@ class SeedShare(SeedShareBase,SubSeed):
@staticmethod
def make_subseed_bin(parent_list,idx:int,nonce:int,length:str):
seed = parent_list.parent_seed
assert parent_list.have_short == False
assert parent_list.have_short is False
assert length == 'long'
# field maximums: id_str: none (256 chars), count: 65535 (1024), idx: 65535 (1024), nonce: 65535 (1000)
scramble_key = (

View file

@ -74,7 +74,7 @@ class Sha2(object):
def __init__(self,message,preprocess=True):
'Use preprocess=False for Sha256Compress'
assert isinstance(message,(bytes,bytearray,list)),'message must be of type bytes, bytearray or list'
if self.K == None:
if self.K is None:
type(self).initConstants()
self.H = list(self.H_init)
self.M = message

View file

@ -139,7 +139,7 @@ class SubSeedList(MMGenObject):
subseed.ss_idx.hl(),
))
if last_idx == None:
if last_idx is None:
last_idx = self.len
subseed = get_existing_subseed_by_seed_id(sid)
@ -174,7 +174,7 @@ class SubSeedList(MMGenObject):
def _generate(self,last_idx=None,last_sid=None):
if last_idx == None:
if last_idx is None:
last_idx = self.len
first_idx = len(self) + 1
@ -182,7 +182,7 @@ class SubSeedList(MMGenObject):
if first_idx > last_idx:
return None
if last_sid != None:
if last_sid is not None:
last_sid = SeedID(sid=last_sid)
def add_subseed(idx,length):

View file

@ -266,7 +266,7 @@ class TwAddresses(TwView):
yield (sid_save, sid_range(bot, n-1))
assert self.sort_key == 'twmmid'
assert self.reverse == False
assert self.reverse is False
if not hasattr(self,'_sid_ranges'):
self._sid_ranges = dict(gen_sid_ranges())
@ -311,7 +311,7 @@ class TwAddresses(TwView):
n = (top + bot) >> 1
assert self.sort_key == 'twmmid'
assert self.reverse == False
assert self.reverse is False
data = self.data
start = get_start(

View file

@ -175,7 +175,7 @@ class TwCtl(MMGenObject,metaclass=AsyncInit):
async def get_balance(self,addr,force_rpc=False):
ret = None if force_rpc else self.get_cached_balance(addr,self.cur_balances,self.data_root)
if ret == None:
if ret is None:
ret = await self.rpc_get_balance(addr)
self.cache_balance(addr,ret,self.cur_balances,self.data_root)
return ret
@ -264,7 +264,7 @@ class TwCtl(MMGenObject,metaclass=AsyncInit):
comment = get_obj(TwComment,s=comment)
if comment == False:
if comment is False:
return False
lbl = get_obj(
@ -272,7 +272,7 @@ class TwCtl(MMGenObject,metaclass=AsyncInit):
proto = self.proto,
text = res.twmmid + (' ' + comment if comment else ''))
if lbl == False:
if lbl is False:
return False
if await self.set_label(res.coinaddr,lbl):

View file

@ -690,7 +690,7 @@ class TwView(MMGenObject,metaclass=AsyncInit):
break
await asyncio.sleep(0.5)
if parent.scroll and ret == False:
if parent.scroll and ret is False:
# error messages could leave screen in messy state, so do complete redraw:
msg_r(
CUR_HOME + ERASE_ALL +

View file

@ -134,7 +134,7 @@ class Base(MMGenObject):
return sum(e.amt for e in self.inputs)
def sum_outputs(self,exclude=None):
if exclude == None:
if exclude is None:
olist = self.outputs
else:
olist = self.outputs[:exclude] + self.outputs[exclude+1:]

View file

@ -59,15 +59,15 @@ class Bump(Completed,New):
chg_idx = self.chg_idx
while True:
if init_reply == None:
if init_reply is None:
from ..ui import line_input
m = 'Choose an output to deduct the fee from (Hit ENTER for the change output): '
reply = line_input( self.cfg, m ) or 'c'
else:
reply,init_reply = init_reply,None
if chg_idx == None and not is_int(reply):
if chg_idx is None and not is_int(reply):
msg('Output must be an integer')
elif chg_idx != None and not is_int(reply) and reply != 'c':
elif chg_idx is not None and not is_int(reply) and reply != 'c':
msg("Output must be an integer, or 'c' for the change output")
else:
idx = chg_idx if reply == 'c' else (int(reply) - 1)

View file

@ -83,7 +83,7 @@ class MMGenTxFile(MMGenObject):
desc = 'encoded comment (not base58)'
from ..baseconv import baseconv
comment = baseconv('b58').tobytes(c).decode()
assert comment != False,'invalid comment'
assert comment is not False,'invalid comment'
desc = 'comment'
tx.comment = MMGenTxComment(comment)
@ -197,7 +197,7 @@ class MMGenTxFile(MMGenObject):
ask_tty = True,
ask_overwrite = True ):
if ask_write == False:
if ask_write is False:
ask_write_default_yes = True
if not self.filename:

View file

@ -38,7 +38,7 @@ def get_seed_for_seed_id(sid,infiles,saved_seeds):
while True:
if infiles:
seed = Wallet(cfg,infiles.pop(0),ignore_in_fmt=True).seed
elif subseeds_checked == False:
elif subseeds_checked is False:
seed = saved_seeds[list(saved_seeds)[0]].subseed_by_seed_id(sid,print_msg=True)
subseeds_checked = True
if not seed:

View file

@ -324,11 +324,11 @@ def decode_timestamp(s):
def make_timestamp(secs=None):
return '{:04d}{:02d}{:02d}_{:02d}{:02d}{:02d}'.format(*time.gmtime(
int(secs) if secs != None else time.time() )[:6])
int(secs) if secs is not None else time.time() )[:6])
def make_timestr(secs=None):
return '{}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}'.format(*time.gmtime(
int(secs) if secs != None else time.time() )[:6])
int(secs) if secs is not None else time.time() )[:6])
def secs_to_dhms(secs):
hrs = secs // 3600

View file

@ -137,7 +137,7 @@ def block_format(data,gw=2,cols=8,line_nums=None,data_is_hex=False):
gw *= 2
nchunks = len(data)//gw + bool(len(data)%gw)
return ''.join(
('' if (line_nums == None or i % cols) else ln_fs.format(i*bytes_per_chunk))
('' if (line_nums is None or i % cols) else ln_fs.format(i*bytes_per_chunk))
+ data[i*gw:i*gw+gw]
+ (' ' if (not cols or (i+1) % cols) else '\n')
for i in range(nchunks)

View file

@ -155,7 +155,7 @@ class wallet(wallet):
return False
val = baseconv('b58').tobytes(b58_val,pad='seed')
if val == False:
if val is False:
msg(f'Invalid base 58 number: {b58_val}')
return False

View file

@ -55,7 +55,7 @@ class wallet(wallet):
ret = baseconv('b58').tobytes(b,pad='seed')
if ret == False:
if ret is False:
msg(f'Invalid base-58 encoded seed: {val}')
return False

View file

@ -48,7 +48,7 @@ class xmrseed(baseconv):
def tobytes(self,words,pad=None):
assert isinstance(words,(list,tuple)),'words must be list or tuple'
assert pad == None, f"{pad}: invalid 'pad' argument (must be None)"
assert pad is None, f"{pad}: invalid 'pad' argument (must be None)"
desc = self.desc.short
wl = self.digits
@ -75,7 +75,7 @@ class xmrseed(baseconv):
return b''.join(gen())
def frombytes(self,bytestr,pad=None,tostr=False):
assert pad == None, f"{pad}: invalid 'pad' argument (must be None)"
assert pad is None, f"{pad}: invalid 'pad' argument (must be None)"
desc = self.desc.short
wl = self.digits

View file

@ -1396,7 +1396,7 @@ class MoneroWalletOps:
def gen():
for i,k in self.spec_key:
if m[i] == None:
if m[i] is None:
setattr(self,k,None)
else:
idx = int(m[i])
@ -1463,7 +1463,7 @@ class MoneroWalletOps:
gmsg(f'\n{self.stem.capitalize()}ing account #{self.account} of wallet {self.source.idx}' + (
f': {self.amount} XMR to {self.dest_addr}' if self.name == 'transfer'
else ' to new address' if self.dest == None
else ' to new address' if self.dest is None
else f' to new account in wallet {self.dest.idx}' ))
h = self.rpc(self,self.source)
@ -1479,7 +1479,7 @@ class MoneroWalletOps:
if self.name == 'transfer':
dest_addr = self.dest_addr
elif self.dest == None:
elif self.dest is None:
dest_acct = self.account
if keypress_confirm( self.cfg, f'\nCreate new address for account #{self.account}?' ):
dest_addr_chk = h.create_new_addr(self.account)
@ -1556,9 +1556,9 @@ class MoneroWalletOps:
h = self.rpc(self,self.source)
h.open_wallet('Monero')
label = '{a} [{b}]'.format(
a = self.label or f"xmrwallet new {'account' if self.account == None else 'address'}",
a = self.label or f"xmrwallet new {'account' if self.account is None else 'address'}",
b = make_timestr() )
if self.account == None:
if self.account is None:
acct,addr = h.create_acct(label=label)
else:
msg_r(f'\n Account index: {pink(str(self.account))}')
@ -1566,7 +1566,7 @@ class MoneroWalletOps:
accts_data = h.get_accts()[0]
if self.account != None:
if self.account is not None:
h.print_addrs(accts_data,self.account)
# wallet must be left open: otherwise the 'stop_wallet' RPC call used to stop the daemon will fail