Browse Source

minor fixes and cleanups

MMGen 5 years ago
parent
commit
3d004c3600
7 changed files with 36 additions and 35 deletions
  1. 2 2
      mmgen/addr.py
  2. 21 16
      mmgen/devtools.py
  3. 1 3
      mmgen/regtest.py
  4. 2 2
      mmgen/tx.py
  5. 1 8
      mmgen/util.py
  6. 8 3
      test/objtest.py
  7. 1 1
      test/unit_tests_d/ut_subseed.py

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

+ 21 - 16
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))

+ 1 - 3
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()

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

+ 1 - 8
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)]

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

+ 1 - 1
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')