From ff104847d8f08bab2a91c9286565f732516fe5c5 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Wed, 12 Feb 2020 10:38:24 +0000 Subject: [PATCH] SeedSource.__new__(): cleanups, fixes --- mmgen/seed.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/mmgen/seed.py b/mmgen/seed.py index a8503bc8..d06faeba 100755 --- a/mmgen/seed.py +++ b/mmgen/seed.py @@ -515,21 +515,24 @@ class SeedSource(MMGenObject): in_fmt = in_fmt or opt.in_fmt + if hasattr(opt,'out_fmt') and opt.out_fmt: + out_cls = cls.fmt_code_to_type(opt.out_fmt) + if not out_cls: + die(1,'{!r}: unrecognized output format'.format(opt.out_fmt)) + else: + out_cls = None + def die_on_opt_mismatch(opt,sstype): - opt_sstype = cls.fmt_code_to_type(opt) compare_or_die( - opt_sstype.__name__, 'input format requested on command line', - sstype.__name__, 'input file format' - ) + cls.fmt_code_to_type(opt).__name__, 'input format requested on command line', + sstype.__name__, 'input file format' ) if seed or seed_bin: - sstype = cls.fmt_code_to_type(opt.out_fmt) - me = super(cls,cls).__new__(sstype or Wallet) # default to Wallet + me = super(cls,cls).__new__(out_cls or Wallet) # default to Wallet me.seed = seed or Seed(seed_bin=seed_bin) me.op = 'new' elif ss: - sstype = ss.__class__ if passchg else cls.fmt_code_to_type(opt.out_fmt) - me = super(cls,cls).__new__(sstype or Wallet) + me = super(cls,cls).__new__((ss.__class__ if passchg else out_cls) or Wallet) me.seed = ss.seed me.ss_in = ss me.op = ('conv','pwchg_new')[bool(passchg)] @@ -547,12 +550,10 @@ class SeedSource(MMGenObject): me.infile = f me.op = ('old','pwchg_old')[bool(passchg)] elif in_fmt: - sstype = cls.fmt_code_to_type(in_fmt) - me = super(cls,cls).__new__(sstype) + me = super(cls,cls).__new__(cls.fmt_code_to_type(in_fmt)) me.op = ('old','pwchg_old')[bool(passchg)] else: # called with no arguments: initialize with random seed - sstype = cls.fmt_code_to_type(opt.out_fmt) - me = super(cls,cls).__new__(sstype or Wallet) + me = super(cls,cls).__new__(out_cls or Wallet) me.seed = Seed(None) me.op = 'new'