def _magic_sets(mcls, name, default, newargs): #{{{
     classname, bases, clsdict = newargs
     past = set(default)
     cur = clsdict.pop(name, [])
     if not isbasemetaclass(bases, mcls):
         allowed = (CustomDecoSignal, DecoSignalExtension)
         for b in bases:
             if not issubclass(b, allowed):
                 continue
             for bcls in mro(b):
                 battr = getattr(bcls, name, None)
                 if battr is None or not issubclass(bcls, allowed):
                     continue
                 past.update(battr)
     return frozenset(past) | frozenset(str(s) for s in cur)
Example #2
0
 def call_streamin(self, cw, func, ret, args, kwargs): #{{{
     callfunc, cnam, sig, signame = self.caller, 'streamin', None, cw.__name__
     if args:
         for cls in mro(args[0].__class__):
             sig = getsignal(getattr(cls, signame, None))
             if sig and cw is sig.func:
                 break
         else:
             sig = None
     if sig:
         args = (args[0], list(args[1:]), kwargs)
     else:
         args = (list(args), kwargs)
     for sfunc, t in cleanlist(cnam):
         callfunc(self, sfunc, cnam, False, ret, *args)
     return ret
Example #3
0
 def wrap(cw, *args, **kwargs): #{{{
     sig, signame = None, cw.__name__
     if args:
         for cls in mro(args[0].__class__):
             sig = getsignal(getattr(cls, signame, None))
             if sig and cw is sig.func:
                 break
         else:
             sig = None
     if sig:
         args = (args[0], list(args[1:]), kwargs)
     else:
         args = (list(args), kwargs)
     callfunc = self.caller
     for sfunc, t in cleanlist('streamin'):
         callfunc(self, sfunc, 'streamin', False, None, *args, **kwargs)
     args, kwargs = args
     return func(*args, **kwargs)