Exemple #1
0
    def callback(frm, name, value, old_locals):
        import inspect
        funcname = value.__name__
        args, varargs, kwargs, defaults = inspect.getargspec(value)
        if argument_name not in args:
            raise NameError("%r does not have an argument named %r" %
                            (value, argument_name))
        argpos = args.index(argument_name)

        func = value

        def when(cond):
            """Add following function to this GF, using 'cond' as a guard"""
            def callback(frm, name, value, old_locals):
                core.when(func, (object, ) * argpos + (cond, ))(value)
                if old_locals.get(name) is func:
                    return func
                return value

            return decorate_assignment(callback)

        def clone():
            raise AssertionError("PEAK-Rules can't clone() generic functions")

        func.when = when
        func.clone = clone
        return core.abstract(func)
    def callback(frm,name,value,old_locals):
        import inspect
        funcname = value.__name__
        args, varargs, kwargs, defaults = inspect.getargspec(value)
        if argument_name not in args:
            raise NameError("%r does not have an argument named %r"
                % (value, argument_name))
        argpos = args.index(argument_name)

        func = value

        def when(cond):
            """Add following function to this GF, using 'cond' as a guard"""
            def callback(frm,name,value,old_locals):
                core.when(func, (object,)*argpos + (cond,))(value)
                if old_locals.get(name) is func:
                    return func
                return value
            return decorate_assignment(callback)

        def clone():
            raise AssertionError("PEAK-Rules can't clone() generic functions")

        func.when = when
        func.clone = clone
        return core.abstract(func)
 def callback(frm,name,value,old_locals):
     value.when   = core.when.__get__(value)
     value.around = core.around.__get__(value)
     value.before = core.before.__get__(value)
     value.after  = core.after.__get__(value)
     def clear(): core.rules_for(value).clear()
     value.clear = clear
     return core.abstract(value)
Exemple #4
0
    def callback(frm, name, value, old_locals):
        value.when = core.when.__get__(value)
        value.around = core.around.__get__(value)
        value.before = core.before.__get__(value)
        value.after = core.after.__get__(value)

        def clear():
            core.rules_for(value).clear()

        value.clear = clear
        return core.abstract(value)
 def callback(frame, name, func, old_locals):
     if core.Dispatching.exists_for(func) and list(core.rules_for(func)):
         raise RuntimeError("Methods already defined for", func)
     if is_abstract:
         func = abstract(func)
     r = core.Dispatching(func).rules
     if r.default_actiontype is not core.Method:
         raise RuntimeError("Method type already defined for", func)
     r.default_actiontype = core.MethodList.make
     r.methodlist_wrappers = wrappers[::-1]
     if not is_abstract:
         r.add(core.Rule(core.clone_function(func)))
     return func