Browse Source

addrlist.py: self.get_file() -> self.file

The MMGen Project 2 years ago
parent
commit
8e541ebf95

+ 6 - 3
mmgen/addrfile.py

@@ -47,6 +47,7 @@ class AddrFile(MMGenObject):
 		self.parent = parent
 		self.cfg    = parent.cfg
 		self.infile = None
+		self.fmt_data = None
 
 	def encrypt(self):
 		from .crypto import Crypto
@@ -62,15 +63,16 @@ class AddrFile(MMGenObject):
 			('.' + self.parent.proto.network) if self.parent.proto.testnet else '',
 			self.ext )
 
-	def write(self,fn=None,ask_tty=True,ask_write_default_yes=False,binary=False,desc=None):
+	def write(self,fn=None,ask_tty=True,binary=False,desc=None,ask_overwrite=True):
 		from .fileutil import write_data_to_file
 		write_data_to_file(
 			self.cfg,
 			fn or self.filename,
-			self.fmt_data,
+			self.fmt_data or self.format(),
 			desc or self.desc,
 			ask_tty = self.parent.has_keys and not self.cfg.quiet,
-			binary = binary )
+			binary = binary,
+			ask_overwrite = ask_overwrite )
 
 	def make_label(self):
 		p = self.parent
@@ -125,6 +127,7 @@ class AddrFile(MMGenObject):
 
 		out.append('}')
 		self.fmt_data = '\n'.join([l.rstrip() for l in out]) + '\n'
+		return self.fmt_data
 
 	def get_line(self,lines):
 		ret = lines.pop(0).split(None,2)

+ 7 - 4
mmgen/addrlist.py

@@ -189,7 +189,7 @@ class AddrList(MMGenObject): # Address info for a single seed ID
 			do_chksum = True
 		elif addrfile:           # data from MMGen address file
 			self.infile = addrfile
-			adata = self.get_file().parse_file(addrfile) # sets self.al_id
+			adata = self.file.parse_file(addrfile) # sets self.al_id
 			do_chksum = True
 		elif al_id and adata:    # data from tracking wallet
 			self.al_id = al_id
@@ -399,9 +399,12 @@ class AddrList(MMGenObject): # Address info for a single seed ID
 	def list_missing(self,attr):
 		return [d.addr for d in self.data if not getattr(d,attr)]
 
-	def get_file(self):
-		import mmgen.addrfile as mod
-		return getattr( mod, type(self).__name__.replace('List','File') )(self)
+	@property
+	def file(self):
+		if not hasattr(self,'_file'):
+			import mmgen.addrfile as mod
+			self._file = getattr( mod, type(self).__name__.replace('List','File') )(self)
+		return self._file
 
 class KeyAddrList(AddrList):
 	desc         = 'key-address'

+ 1 - 1
mmgen/main_addrgen.py

@@ -167,7 +167,7 @@ al = getattr( mmgen.addrlist, gen_clsname )(
 	addr_idxs = idxs,
 	mmtype    = addr_type )
 
-af = al.get_file()
+af = al.file
 
 af.format()
 

+ 1 - 1
mmgen/main_passgen.py

@@ -174,7 +174,7 @@ al = PasswordList(
 	pw_len    = pw_len,
 	pw_fmt    = pw_fmt )
 
-af = al.get_file()
+af = al.file
 
 af.format()
 

+ 1 - 1
mmgen/passwdlist.py

@@ -85,7 +85,7 @@ class PasswordList(AddrList):
 		if infile:
 			self.infile = infile
 			# sets self.pw_id_str, self.pw_fmt, self.pw_len, self.chk_func:
-			self.data = self.get_file().parse_file(infile)
+			self.data = self.file.parse_file(infile)
 		else:
 			if not chk_params_only:
 				for k in (seed,pw_idxs):

+ 8 - 3
test/test_py_d/ts_regtest.py

@@ -449,10 +449,15 @@ class TestSuiteRegtest(TestSuiteBase,TestSuiteShared):
 				a.set_comment(idx,get_comment())
 			else:
 				if n % 2: a.set_comment(idx,f'Test address {n}')
-		af = a.get_file()
-		af.format(add_comments=True)
+		a.file.format(add_comments=True)
 		from mmgen.fileutil import write_data_to_file
-		write_data_to_file(cfg,outfile,af.fmt_data,quiet=True,ignore_opt_outdir=True)
+		write_data_to_file(
+			cfg,
+			outfile           = outfile,
+			data              = a.file.fmt_data,
+			quiet             = True,
+			ignore_opt_outdir = True )
+
 		end_silence()
 
 	def setup(self):

+ 4 - 5
test/unit_tests_d/ut_addrlist.py

@@ -40,12 +40,11 @@ def do_test(list_type,chksum,idx_spec=None,pw_id_str=None,add_kwargs=None,coin=N
 
 	al = list_type( cfg, proto, **kwargs )
 
-	af = al.get_file()
-	af.format()
+	al.file.format()
 
-	qmsg(f'Filename: {af.filename}\n')
-#	af.write('-')
-	vmsg(f'------------\n{af.fmt_data}\n------------')
+	qmsg(f'Filename: {al.file.filename}\n')
+
+	vmsg(f'------------\n{al.file.fmt_data}\n------------')
 
 	if chksum:
 		assert al.chksum == chksum, f'{al.chksum} != {chksum}'