def __call__(self,_Class): #debug ''' print('Defaultor l.31 __call__ method') print('_Class is ',_Class) print('') ''' #Call the parent init method BaseClass.__call__(self,_Class) #debug ''' print('Defaultor l.47 look for an __init__ method') print('_Class is ',_Class) print('') ''' #Check if hasattr(_Class,"__init__"): #debug ''' print('It has an __init__ method') print('') ''' #get InitWrapUnboundMethod=getattr(_Class,DefaultWrapMethodStr) if hasattr(_Class,DefaultWrapMethodStr) else DefaultInitFunction #set the DefaultDict _Class.InitInspectDict=SYS.InspectDict(InitWrapUnboundMethod) #Definition the DefaultAttributeItemTuplesList DefaultAttributeItemTuplesList=map( lambda __DefaultSetItemTuple: ( DefaultPrefixStr.join( __DefaultSetItemTuple[0].split(DefaultPrefixStr)[1:] ), getDefaultedValueVariableWithSetVariable( __DefaultSetItemTuple[1] ) ), SYS._filter( lambda __DefaultItemTuple: __DefaultItemTuple[0].startswith(DefaultPrefixStr), _Class.InitInspectDict['DefaultOrderedDict'].items() ) ) #set _Class.DefaultAttributeVariablesOrderedDict=collections.OrderedDict( DefaultAttributeItemTuplesList ) #debug ''' print('_Class.DefaultAttributeItemTuplesList is ',_Class.DefaultAttributeItemTuplesList) print('') ''' #set at the level of the class map( lambda __DefaultSetItemTuple: setattr(_Class,*__DefaultSetItemTuple), _Class.DefaultAttributeVariablesOrderedDict.items() ) #set the DefaultSpecificKeyStrsList _Class.DefaultSpecificKeyStrsList=_Class.DefaultAttributeVariablesOrderedDict.keys() #Get the BaseKeyStrsList _Class.DefaultBaseKeyStrsList=list( SYS.collect( _Class, '__bases__', 'DefaultSpecificKeyStrsList' ) ) #Debug ''' print("l 269 Defaultor") print("DefaultDecorationMethodStr is ",DefaultDecorationMethodStr) print("") ''' #Define the decorated function InitExecStr="def "+DefaultDecorationMethodStr+"(_InstanceVariable," InitExecStr+="*_LiargVariablesList," InitExecStr+="**_KwargVariablesDict):\n\t" InitExecStr+="initDefault(_InstanceVariable," InitExecStr+="*_LiargVariablesList," InitExecStr+="**dict(_KwargVariablesDict,**{'DefaultWrapMethodStr':'"+DefaultWrapMethodStr+"','DefaultClassStr':'"+_Class.__name__+"'}))\n" #debug ''' print('Defaultor l 280') print('InitExecStr is ') print(InitExecStr) print('') ''' #exec six.exec_(InitExecStr) #set with the specific name setattr( _Class, DefaultDecorationMethodStr, locals()[DefaultDecorationMethodStr] ) #set with the DoMethodStr shortcut setattr( _Class, "__init__", locals()[DefaultDecorationMethodStr] ) #set in the class fi not already if hasattr(_Class,'setDefault')==False: #set setDefault setattr( _Class, setDefault.__name__, setDefault ) #set setDefaultMutable setattr( _Class, setDefaultMutable.__name__, setDefaultMutable ) #Add to the KeyStrsList _Class.KeyStrsList+=[ #'DefaultAttributeItemTuplesList', 'DefaultAttributeVariablesOrderedDict', 'InitInspectDict', 'DefaultBaseKeyStrsList', 'DefaultSpecificKeyStrsList' ] #Return return _Class
def do_represent(self): #alias RepresentedClass=self.DoClass #debug ''' print('Representer l.352 : RepresentedClass is ',RepresentedClass) print('') ''' #Check ''' if hasattr(RepresentedClass,'RepresentingKeyStrsList')==False or ( len(RepresentedClass.__bases__)>0 and hasattr(RepresentedClass.__bases__[0 ],'RepresentingKeyStrsList') and RepresentedClass.__bases__[0 ].RepresentingKeyStrsList==RepresentedClass.RepresentingKeyStrsList): #init RepresentedClass.RepresentingKeyStrsList=[] ''' RepresentedClass.RepresentingKeyStrsList=RepresentedClass.DefaultSetKeyStrsList #init #RepresentedClass.RepresentingSkipKeyStrsList=None #init #RepresentedClass.RepresentingForceKeyStrsList=None #set the BaseKeyStrsList KeyStrsSet=set( SYS.collect( RepresentedClass, '__bases__', 'RepresentingKeyStrsList' ) ) #KeyStrsSet.difference_update(set(RepresentedClass.RepresentingKeyStrsList)) RepresentedClass.RepresentedBaseKeyStrsList=list(KeyStrsSet) #Split between the one from the class or not [ RepresentedClass.RepresentedSpecificKeyStrsList, RepresentedClass.RepresentedNotSpecificKeyStrsList ]=SYS.groupby( lambda __KeyStr: __KeyStr not in RepresentedClass.RepresentedBaseKeyStrsList, RepresentedClass.RepresentingKeyStrsList ) #debug ''' print( RepresentedClass.__name__, #Class.__mro__, #Class.RepresentedNotGettingStrsList, list(RepresentedClass.RepresentedBasedKeyStrsList) ) ''' #Add to the KeyStrsList RepresentedClass.KeyStrsList+=[ 'RepresentingKeyStrsList', 'RepresentingSkipKeyStrsList', 'RepresentingForceKeyStrsList', 'RepresentedBaseKeyStrsList', 'RepresentedSpecificKeyStrsList', 'RepresentedNotSpecificKeyStrsList', ] """