From 3d004c36002ef06e28bef20b5c15636a6c6b613a Mon Sep 17 00:00:00 2001 From: MMGen Date: Fri, 11 Oct 2019 12:37:51 +0000 Subject: [PATCH] minor fixes and cleanups --- mmgen/addr.py | 4 ++-- mmgen/devtools.py | 37 +++++++++++++++++++-------------- mmgen/regtest.py | 4 +--- mmgen/tx.py | 4 ++-- mmgen/util.py | 9 +------- test/objtest.py | 11 +++++++--- test/unit_tests_d/ut_subseed.py | 2 +- 7 files changed, 36 insertions(+), 35 deletions(-) diff --git a/mmgen/addr.py b/mmgen/addr.py index d4d0d325..6eceaf29 100755 --- a/mmgen/addr.py +++ b/mmgen/addr.py @@ -474,7 +474,7 @@ Removed {{}} duplicate WIF key{{}} from keylist (also in {pnm} key-address file out.append(e) if g.debug_addrlist: - Msg('generate():\n{}'.format(e.ppformat())) + Msg('generate():\n{}'.format(e.pformat())) qmsg('\r{}: {} {}{} generated{}'.format( self.al_id.hl(),t_addrs,self.gen_desc,suf(t_addrs,self.gen_desc_pl),' '*15)) @@ -579,7 +579,7 @@ Removed {{}} duplicate WIF key{{}} from keylist (also in {pnm} key-address file qmsg_r('\rGenerating addresses from keylist: {}/{}'.format(n,len(d))) e.addr = ag.to_addr(kg.to_pubhex(e.sec)) if g.debug_addrlist: - Msg('generate_addrs_from_keys():\n{}'.format(e.ppformat())) + Msg('generate_addrs_from_keys():\n{}'.format(e.pformat())) qmsg('\rGenerated addresses from keylist: {}/{} '.format(n,len(d))) def format(self,enable_comments=False): diff --git a/mmgen/devtools.py b/mmgen/devtools.py index ca67d828..78453a23 100755 --- a/mmgen/devtools.py +++ b/mmgen/devtools.py @@ -4,16 +4,21 @@ import sys,os,pprint,traceback,re,json from decimal import Decimal from difflib import unified_diff -def ppformat(d): - return pprint.PrettyPrinter(indent=4,compact=True).pformat(d) -def ppmsg(*args): - sys.stderr.write(ppformat(args if len(args) > 1 else args[0]) + '\n') -def PPmsg(*args): - sys.stdout.write(ppformat(args if len(args) > 1 else args[0]) + '\n') -def ppdie(*args,exit_val=1): - sys.stderr.write(ppformat(args if len(args) > 1 else args[0])) +def pmsg(*args,out=sys.stderr): + d = args if len(args) > 1 else '' if not args else args[0] + out.write(pprint.PrettyPrinter(indent=4,compact=True).pformat(d) + '\n') +def pdie(*args,exit_val=1,out=sys.stderr): + pmsg(*args,out=out) sys.exit(exit_val) -def ppdie2(*args): ppdie(*args,exit_val=0) +def pexit(*args,out=sys.stderr): + pdie(*args,exit_val=0,out=out) + +def Pmsg(*args): + pmsg(*args,out=sys.stdout) +def Pdie(*args): + pdie(*args,out=sys.stdout) +def Pexit(*args): + pexit(*args,out=sys.stdout) def print_stack_trace(message): tb1 = traceback.extract_stack() @@ -28,9 +33,9 @@ def print_stack_trace(message): class MMGenObject(object): # Pretty-print any object subclassed from MMGenObject, recursing into sub-objects - WIP - def ppmsg(self): print(self.ppformat()) - def ppdie(self): print(self.ppformat()); sys.exit(0) - def ppformat(self,lvl=0,id_list=[]): + def pmsg(self): print(self.pformat()) + def pdie(self): print(self.pformat()); sys.exit(0) + def pformat(self,lvl=0,id_list=[]): scalars = (str,int,float,Decimal) def do_list(out,e,lvl=0,is_dict=False): out.append('\n') @@ -38,8 +43,8 @@ class MMGenObject(object): el = i if not is_dict else e[i] if is_dict: out.append('{s}{:<{l}}'.format(i,s=' '*(4*lvl+8),l=10,l2=8*(lvl+1)+8)) - if hasattr(el,'ppformat'): - out.append('{:>{l}}{}'.format('',el.ppformat(lvl=lvl+1,id_list=id_list+[id(self)]),l=(lvl+1)*8)) + if hasattr(el,'pformat'): + out.append('{:>{l}}{}'.format('',el.pformat(lvl=lvl+1,id_list=id_list+[id(self)]),l=(lvl+1)*8)) elif isinstance(el,scalars): if isList(e): out.append('{:>{l}}{:16}\n'.format('',repr(el),l=lvl*8)) @@ -84,8 +89,8 @@ class MMGenObject(object): if isList(e) or isDict(e): out.append('{:>{l}}{:<10} {:16}'.format('',k,'<'+type(e).__name__+'>',l=(lvl*8)+4)) do_list(out,e,lvl=lvl,is_dict=isDict(e)) - elif hasattr(e,'ppformat') and type(e) != type: - out.append('{:>{l}}{:10} {}'.format('',k,e.ppformat(lvl=lvl+1,id_list=id_list+[id(self)]),l=(lvl*8)+4)) + elif hasattr(e,'pformat') and type(e) != type: + out.append('{:>{l}}{:10} {}'.format('',k,e.pformat(lvl=lvl+1,id_list=id_list+[id(self)]),l=(lvl*8)+4)) else: out.append('{:>{l}}{:<10} {:16} {}\n'.format( '',k,'<'+type(e).__name__+'>',repr(e),l=(lvl*8)+4)) diff --git a/mmgen/regtest.py b/mmgen/regtest.py index 708c9e8e..c3786e44 100755 --- a/mmgen/regtest.py +++ b/mmgen/regtest.py @@ -160,14 +160,12 @@ def send(addr,amt): def show_mempool(): p = start_cmd('cli','getrawmempool') - from pprint import pformat from ast import literal_eval - msg(pformat(literal_eval(p.stdout.read().decode()))) + msg(mmgen_pformat(literal_eval(p.stdout.read().decode()))) p.wait() def cli(*args): p = start_cmd(*(('cli',) + args)) - from pprint import pformat Msg_r(p.stdout.read().decode()) msg_r(p.stderr.read().decode()) p.wait() diff --git a/mmgen/tx.py b/mmgen/tx.py index ee7015a4..fd8c117f 100755 --- a/mmgen/tx.py +++ b/mmgen/tx.py @@ -818,8 +818,8 @@ Selected non-{pnm} inputs: {{}}""".strip().format(pnm=g.proj_name,pnl=g.proj_nam def check_equal(desc,hexio,mmio): if mmio != hexio: - msg('\nMMGen {}:\n{}'.format(desc,pformat(mmio))) - msg('Hex {}:\n{}'.format(desc,pformat(hexio))) + msg('\nMMGen {}:\n{}'.format(desc,mmgen_pformat(mmio))) + msg('Hex {}:\n{}'.format(desc,mmgen_pformat(hexio))) m2 = '{} in hex transaction data from coin daemon do not match those in MMGen transaction!\n' raise TxHexMismatch((m2+m).format(desc.capitalize())) diff --git a/mmgen/util.py b/mmgen/util.py index 35e3fdc9..259ce658 100755 --- a/mmgen/util.py +++ b/mmgen/util.py @@ -90,16 +90,9 @@ def Die(ev=0,s=''): def rdie(ev=0,s=''): die(ev,red(s)) def ydie(ev=0,s=''): die(ev,yellow(s)) -def pformat(d): +def mmgen_pformat(d): import pprint return pprint.PrettyPrinter(indent=4,compact=True).pformat(d) -def pmsg(*args): - msg(pformat(args if len(args) > 1 else args[0])) -def Pmsg(*args): - sys.stdout.write(pformat(args if len(args) > 1 else args[0]) + '\n') -def pdie(*args,exit_val=1): - sys.stderr.write(pformat(args if len(args) > 1 else args[0])) - sys.exit(exit_val) def set_for_type(val,refval,desc,invert_bool=False,src=None): src_str = (''," in '{}'".format(src))[bool(src)] diff --git a/test/objtest.py b/test/objtest.py index a18ced35..747c3f71 100755 --- a/test/objtest.py +++ b/test/objtest.py @@ -53,7 +53,7 @@ cmd_args = opts.init(opts_data) def run_test(test,arg,input_data): arg_copy = arg - kwargs = {'on_fail':'silent'} if opt.silent else {} + kwargs = {'on_fail':'silent'} if opt.silent else {'on_fail':'die'} ret_chk = arg exc_type = None if input_data == 'good' and type(arg) == tuple: arg,ret_chk = arg @@ -98,7 +98,7 @@ def run_test(test,arg,input_data): if not opt.super_silent: msg('==> {}'.format(ret)) if opt.verbose and issubclass(cls,MMGenObject): - ret.ppmsg() if hasattr(ret,'ppmsg') else ppmsg(ret) + ret.pmsg() if hasattr(ret,'pmsg') else pmsg(ret) except Exception as e: if not type(e).__name__ == exc_type: raise @@ -120,10 +120,15 @@ def do_loop(): gl = globals() exec('from test.objtest_py_d.ot_{}_{} import tests'.format(g.coin.lower(),network),gl,gl) gmsg('Running data objest tests for {} {}'.format(g.coin,network)) + clr = None for test in tests: if utests and test not in utests: continue - msg((blue,nocolor)[bool(opt.super_silent)]('Testing {}'.format(test))) + nl = ('\n','')[bool(opt.super_silent) or clr == None] + clr = (blue,nocolor)[bool(opt.super_silent)] + msg(clr('{}Testing {}'.format(nl,test))) for k in ('bad','good'): + if not opt.silent: + msg(purple(capfirst(k)+' input:')) for arg in tests[test][k]: run_test(test,arg,input_data=k) diff --git a/test/unit_tests_d/ut_subseed.py b/test/unit_tests_d/ut_subseed.py index 67aabd28..effd6444 100755 --- a/test/unit_tests_d/ut_subseed.py +++ b/test/unit_tests_d/ut_subseed.py @@ -53,7 +53,7 @@ class unit_test(object): seed2.subseeds._generate(10) assert len(ss2_list) == 10, len(ss2_list) - assert seed.ppformat() == seed2.ppformat() + assert seed.pformat() == seed2.pformat() s = seed.subseeds.format(1,g.subseeds) s_lines = s.strip().split('\n')