From 2bbf186de555b0146db5e57f87b57f6794a95bc2 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 15 Jan 2022 14:00:10 +0000 Subject: [PATCH] obj.py: cleanups --- mmgen/obj.py | 74 +++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/mmgen/obj.py b/mmgen/obj.py index 1a10ac79..69f1710a 100755 --- a/mmgen/obj.py +++ b/mmgen/obj.py @@ -24,10 +24,8 @@ import sys,os,re,unicodedata from decimal import * from string import hexdigits,ascii_letters,digits -from .exception import * -from .globalvars import * -from .color import * from .objmethods import * +from .exception import BadTwComment def get_obj(objname,*args,**kwargs): """ @@ -93,38 +91,6 @@ class MMGenList(list,MMGenObject): class MMGenDict(dict,MMGenObject): pass -class Str(str,Hilite): - pass - -class Int(int,Hilite,InitErrors): - min_val = None - max_val = None - max_digits = None - color = 'red' - - def __new__(cls,n,base=10): - if type(n) == cls: - return n - try: - me = int.__new__(cls,str(n),base) - if cls.min_val != None: - assert me >= cls.min_val, f'is less than cls.min_val ({cls.min_val})' - if cls.max_val != None: - assert me <= cls.max_val, f'is greater than cls.max_val ({cls.max_val})' - if cls.max_digits != None: - assert len(str(me)) <= cls.max_digits, f'has more than {cls.max_digits} digits' - return me - except Exception as e: - return cls.init_fail(e,n) - - @classmethod - def fmtc(cls,*args,**kwargs): - cls.method_not_implemented() - - @classmethod - def colorize(cls,n,color=True): - return super().colorize(repr(n),color=color) - class ImmutableAttr: # Descriptor """ For attributes that are always present in the data instance @@ -253,9 +219,6 @@ class MMGenListItem(MMGenObject): def _asdict(self): return dict((k,v) for k,v in self.__dict__.items() if k in self.valid_attrs) -class MMGenIdx(Int): - min_val = 1 - class MMGenRange(tuple,InitErrors,MMGenObject): min_idx = None @@ -299,6 +262,41 @@ class MMGenRange(tuple,InitErrors,MMGenObject): def items(self): return list(self.iterate()) +class Int(int,Hilite,InitErrors): + min_val = None + max_val = None + max_digits = None + color = 'red' + + def __new__(cls,n,base=10): + if type(n) == cls: + return n + try: + me = int.__new__(cls,str(n),base) + if cls.min_val != None: + assert me >= cls.min_val, f'is less than cls.min_val ({cls.min_val})' + if cls.max_val != None: + assert me <= cls.max_val, f'is greater than cls.max_val ({cls.max_val})' + if cls.max_digits != None: + assert len(str(me)) <= cls.max_digits, f'has more than {cls.max_digits} digits' + return me + except Exception as e: + return cls.init_fail(e,n) + + @classmethod + def fmtc(cls,*args,**kwargs): + cls.method_not_implemented() + + @classmethod + def colorize(cls,n,color=True): + return super().colorize(repr(n),color=color) + +class MMGenIdx(Int): + min_val = 1 + +class Str(str,Hilite): + pass + class HexStr(str,Hilite,InitErrors): color = 'red' width = None