obj.py: make arg_chk a classmethod

This commit is contained in:
The MMGen Project 2019-05-13 09:40:13 +00:00
commit 0bb1b3f73d
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
2 changed files with 19 additions and 19 deletions

View file

@ -47,7 +47,7 @@ class ETHAmt(BTCAmt):
class ETHNonce(int,Hilite,InitErrors): # WIP
def __new__(cls,n,on_fail='die'):
if type(n) == cls: return n
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
from mmgen.util import is_int
try:
assert is_int(n),"'{}': value is not an integer".format(n)

View file

@ -116,7 +116,7 @@ class AddrListList(list,MMGenObject): pass
class InitErrors(object):
@staticmethod
@classmethod
def arg_chk(cls,on_fail):
assert on_fail in ('die','return','silent','raise'),(
"'{}': invalid value for 'on_fail' in class {}".format(on_fail,cls.__name__) )
@ -276,7 +276,7 @@ class MMGenListItem(MMGenObject):
class AddrIdx(int,InitErrors):
max_digits = 7
def __new__(cls,num,on_fail='die'):
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
assert type(num) is not float,'is float'
me = int.__new__(cls,num)
@ -290,7 +290,7 @@ class AddrIdx(int,InitErrors):
class AddrIdxList(list,InitErrors,MMGenObject):
max_len = 1000000
def __init__(self,fmt_str=None,idx_list=None,on_fail='die',sep=','):
self.arg_chk(type(self),on_fail)
type(self).arg_chk(on_fail)
try:
if idx_list:
return list.__init__(self,sorted({AddrIdx(i,on_fail='raise') for i in idx_list}))
@ -323,7 +323,7 @@ class MMGenRange(tuple,InitErrors,MMGenObject):
max_idx = None
def __new__(cls,*args,on_fail='die'):
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
if len(args) == 1:
s = args[0]
@ -379,7 +379,7 @@ class BTCAmt(Decimal,Hilite,InitErrors):
def __new__(cls,num,from_unit=None,on_fail='die'):
if type(num) == cls: return num
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
if from_unit:
assert from_unit in cls.units,(
@ -468,7 +468,7 @@ class CoinAddr(str,Hilite,InitErrors,MMGenObject):
trunc_ok = False
def __new__(cls,s,on_fail='die'):
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
from mmgen.globalvars import g
try:
assert set(s) <= set(ascii_letters+digits),'contains non-alphanumeric characters'
@ -535,7 +535,7 @@ class SeedID(str,Hilite,InitErrors):
trunc_ok = False
def __new__(cls,seed=None,sid=None,on_fail='die'):
if type(sid) == cls: return sid
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
if seed:
from mmgen.seed import Seed,SubSeed
@ -556,7 +556,7 @@ class SubSeedIdx(str,Hilite,InitErrors):
trunc_ok = False
def __new__(cls,s,on_fail='die'):
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
assert issubclass(type(s),str),'not a string or string subclass'
idx = s[:-1] if s[-1] in 'SsLl' else s
@ -580,7 +580,7 @@ class MMGenID(str,Hilite,InitErrors,MMGenObject):
width = 0
trunc_ok = False
def __new__(cls,s,on_fail='die'):
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
from mmgen.globalvars import g
try:
ss = str(s).split(':')
@ -604,7 +604,7 @@ class TwMMGenID(str,Hilite,InitErrors,MMGenObject):
trunc_ok = False
def __new__(cls,s,on_fail='die'):
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
ret = None
try:
ret = MMGenID(s,on_fail='raise')
@ -631,7 +631,7 @@ class TwMMGenID(str,Hilite,InitErrors,MMGenObject):
class TwLabel(str,InitErrors,MMGenObject):
def __new__(cls,s,on_fail='die'):
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
ss = s.split(None,1)
mmid = TwMMGenID(ss[0],on_fail='raise')
@ -651,7 +651,7 @@ class HexStr(str,Hilite,InitErrors):
def __new__(cls,s,on_fail='die',case='lower'):
if type(s) == cls: return s
assert case in ('upper','lower')
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
assert issubclass(type(s),str),'not a string or string subclass'
assert set(s) <= set(getattr(hexdigits,case)()),'not {}case hexadecimal symbols'.format(case)
@ -670,7 +670,7 @@ class HexStrWithWidth(HexStr):
width = None
parent_cls = HexStr
def __new__(cls,s,on_fail='die'):
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
ret = cls.parent_cls.__new__(cls,s,case=cls.hexcase,on_fail='raise')
assert len(s) == cls.width,'Value is not {} characters wide'.format(cls.width)
@ -689,7 +689,7 @@ class WifKey(str,Hilite,InitErrors):
color = 'blue'
def __new__(cls,s,on_fail='die'):
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
assert set(s) <= set(ascii_letters+digits),'not an ascii alphanumeric string'
from mmgen.globalvars import g
@ -724,7 +724,7 @@ class PrivKey(str,Hilite,InitErrors,MMGenObject):
from mmgen.globalvars import g
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
if wif:
try:
@ -763,7 +763,7 @@ class AddrListID(str,Hilite,InitErrors,MMGenObject):
trunc_ok = False
color = 'yellow'
def __new__(cls,sid,mmtype,on_fail='die'):
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
try:
assert type(sid) == SeedID,"{!r} not a SeedID instance".format(sid)
t = MMGenAddrType,MMGenPasswordType
@ -785,7 +785,7 @@ class MMGenLabel(str,Hilite,InitErrors):
desc = 'label'
def __new__(cls,s,on_fail='die',msg=None):
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
for k in cls.forbidden,cls.allowed:
assert type(k) == list
for ch in k: assert type(ch) == str and len(ch) == 1
@ -884,7 +884,7 @@ class MMGenAddrType(str,Hilite,InitErrors,MMGenObject):
}
def __new__(cls,s,on_fail='die',errmsg=None):
if type(s) == cls: return s
cls.arg_chk(cls,on_fail)
cls.arg_chk(on_fail)
from mmgen.globalvars import g
try:
for k,v in list(cls.mmtypes.items()):