def getSwitch(_InstanceVariable,_MethodVariable=None): #Check if _MethodVariable==None: SwitchItemTuplesList=_InstanceVariable.SwitchMethodDict.items() elif type(_MethodVariable) in [list,tuple]: SwitchItemTuplesList=map( lambda __MethodStr: ( __MethodStr, _InstanceVariable.SwitchMethodDict[__MethodStr] ), _MethodVariable ) else: SwitchItemTuplesList=[ ( _MethodVariable, _InstanceVariable.SwitchMethodDict[_MethodVariable] ) ] #Debug ''' print('getSwitch l 266') print('_MethodVariable is ') print(_MethodVariable) print('SwitchItemTuplesList is ') print(SwitchItemTuplesList) print('') ''' #return WatchKeyStrsList=SYS.flat( SYS.flat( map( lambda __SwitchItemTuple: map( lambda __ClassStr: map( lambda __HookStr: 'Watch'+__HookStr+SYS.getUpperWordStr( __SwitchItemTuple[0] )+'With'+SYS.getNameStrWithClassStr( __ClassStr )+'Bool', ['Before','After'] ), map(lambda __Class:__Class.__name__,__SwitchItemTuple[1]) ), SwitchItemTuplesList ) ) ) #Debug ''' print('getSwitch l 300') print('WatchKeyStrsList is ') print(WatchKeyStrsList) print('WatchKeyStrsList is ') print(WatchKeyStrsList) print('') ''' #return return dict( zip( WatchKeyStrsList, map( lambda __WatchKeyStr: getattr(_InstanceVariable,__WatchKeyStr), WatchKeyStrsList ) ) )
def do_mimic(self): #Debug ''' print('l 174 Mimicker') print('self.MimickingDoMethodStr is ',self.MimickingDoMethodStr) print('') ''' #Check if self.MimickingDoMethodStr!="": #observe self.observe(True,self.MimickingDoMethodStr) #set self.MimickedWrapMethodStr=MimickingWrapPrefixStr+self.MimickingDoMethodStr #Debug ''' print('l 75 Mimicker ') print('self.MimickedWrapMethodStr is ',self.MimickedWrapMethodStr) print('') ''' #Define MimickedDoStr=SYS.getUpperWordStr( self.MimickingDoMethodStr ) MimickedDoerStr=Doer.DoStrToDoerStrOrderedDict[MimickedDoStr] #Debug ''' print('l 84 Mimicker ') print('MimickedDoStr is ',MimickedDoStr) print('MimickedDoerStr is ',MimickedDoerStr) print('MimickedBaseModule is ',MimickedBaseModule) print('') ''' #Definitions MimickedBaseClass=getattr( SYS, SYS.getClassStrWithNameStr(MimickedDoerStr) ) #get MimickedDoExecStr=getattr( MimickedBaseClass, 'Do'+MimickedBaseClass.NameStr+'ExecStr' ) #debug ''' print('l 206 Mimicker') print('MimickedDoExecStr is ') print(MimickedDoExecStr) print('') ''' #replace MimickedDecorationMethodStr=MimickingDecorationPrefixStr+MimickingDecorationTagStr+MimickingDecorationSuffixStr MimickedDecorationMethodStr+=self.ObservedWrapMethodStr #Debug ''' print('l 232 Mimicker') print('MimickedDecorationMethodStr is '+MimickedDecorationMethodStr) print('') ''' #replace MimickedExecStr='def '+MimickedDecorationMethodStr+'('+'('.join( MimickedDoExecStr.split('(')[1:] ) #Debug ''' print('l 208 Mimicker') print('MimickedExecStr is ') print(MimickedExecStr) print('') ''' #Add to the ImitatedDoneExecStr MimickedExecStr+='\n\treturn mimic(_InstanceVariable,*_LiargVariablesList,' MimickedExecStr+='**dict({\'MimicMethodStr\':\''+self.MimickedWrapMethodStr+'\',' MimickedExecStr+='\'MimicClassStr\':\''+self.DoClass.__name__+'\',' MimickedExecStr+='\'BaseClassStr\':\''+MimickedBaseClass.__name__+'\'' MimickedExecStr+='},**_KwargVariablesDict))' #Debug ''' print('l 223 Mimicker') print('MimickedExecStr is ') print(MimickedExecStr) print('') ''' #exec six.exec_(MimickedExecStr) #set self.MimickedDecorationUnboundMethod=locals()[MimickedDecorationMethodStr] #set in the __class__ self.setMethod( MimickedDecorationMethodStr, self.MimickedDecorationUnboundMethod ) #make the amalgam self.setMethod( self.MimickingDoMethodStr, self.MimickedDecorationUnboundMethod ) #set a pointer to the fundamental class self.MimickedDecorationUnboundMethod.BaseDoClass=MimickedBaseClass