def maketext(self, name = '', default = '', obj = None): if default is None: default = '' if callable(default): default = callany(default, obj) ctrl = wx.TextCtrl(self.content, -1, name=name, value=default) return (name, ctrl)
def maketext(self, name='', default='', obj=None): if default is None: default = '' if callable(default): default = callany(default, obj) ctrl = wx.TextCtrl(self.content, -1, name=name, value=default) return (name, ctrl)
def wrapper(*secret_a, **secret_kws): # Check that the original function has a callback argument cb = None # User can optionally can pass a Callback object if 'callback' in secret_kws: if any((cbname in secret_kws) for cbname in callbacks_): raise AssertionError('use callback or individual callbacks') cb = secret_kws['callback'] else: # Otherwise calllables like "success = lambda: ..." can be passed for cbname in callbacks_: if cbname in secret_kws: if cb is None: cb = Callback(_cbnames = None if callbacks_ is CALLBACKS else callbacks_) if not callable(secret_kws[cbname]): raise TypeError('%s must be callable' % cbname) mycb = CallLaterDelegate(secret_kws[cbname]) setattr(cb, cbname, mycb) del secret_kws[cbname] secret_kws['callback'] = cb # No callbacks were specified. Use the empty one. if cb is None: _cbnames = None if callbacks_ is CALLBACKS else callbacks_ secret_kws['callback'] = cb = Callback(_cbnames = _cbnames) ''' Details of semantics of return values: If an exception is raised during the function: cb.error returns a false value: exception is re-raised. returns a true value: exception is not raised -- has been handled If execution completes normally: func returns a false value: no added effect, value is returned returns True (NOTE: must be the value True!): cb.success is called, value is returned These conditions are to guarantee that old callbacks still function the same way and future functionality is present. ''' try: val = func(*secret_a, **secret_kws) except Exception, e: print_exc() from util import callany if not callany(cb.error, e): raise val = None
def wrapper(*secret_a, **secret_kws): # Check that the original function has a callback argument cb = None # User can optionally can pass a Callback object if 'callback' in secret_kws: if any((cbname in secret_kws) for cbname in callbacks_): raise AssertionError('use callback or individual callbacks') cb = secret_kws['callback'] else: # Otherwise calllables like "success = lambda: ..." can be passed for cbname in callbacks_: if cbname in secret_kws: if cb is None: cb = Callback(_cbnames=None if callbacks_ is CALLBACKS else callbacks_) if not callable(secret_kws[cbname]): raise TypeError('%s must be callable' % cbname) mycb = CallLaterDelegate(secret_kws[cbname]) setattr(cb, cbname, mycb) del secret_kws[cbname] secret_kws['callback'] = cb # No callbacks were specified. Use the empty one. if cb is None: _cbnames = None if callbacks_ is CALLBACKS else callbacks_ secret_kws['callback'] = cb = Callback(_cbnames=_cbnames) ''' Details of semantics of return values: If an exception is raised during the function: cb.error returns a false value: exception is re-raised. returns a true value: exception is not raised -- has been handled If execution completes normally: func returns a false value: no added effect, value is returned returns True (NOTE: must be the value True!): cb.success is called, value is returned These conditions are to guarantee that old callbacks still function the same way and future functionality is present. ''' try: val = func(*secret_a, **secret_kws) except Exception, e: print_exc() from util import callany if not callany(cb.error, e): raise val = None