Ejemplo n.º 1
0
    def test_dynamic_adapter_instancemethod(self):
        def _adapter(self, arg1, arg2, arg3=None, *args, **kwargs):
            pass

        argspec = getfullargspec(_adapter)

        @wrapt.decorator(adapter=argspec)
        def _wrapper_1(wrapped, instance, args, kwargs):
            return wrapped(*args, **kwargs)

        class Class1(object):
            @_wrapper_1
            def function(self):
                pass

        instance1 = Class1()

        self.assertEqual(getfullargspec(Class1.function), argspec)
        self.assertEqual(getfullargspec(instance1.function), argspec)

        args = '(self, arg1, arg2, arg3=None, *args, **kwargs)'

        @wrapt.decorator(adapter=args)
        def _wrapper_2(wrapped, instance, args, kwargs):
            return wrapped(*args, **kwargs)

        class Class2(object):
            @_wrapper_2
            def function(self):
                pass

        instance2 = Class2()

        self.assertEqual(getfullargspec(Class2.function), argspec)
        self.assertEqual(getfullargspec(instance2.function), argspec)
Ejemplo n.º 2
0
    def test_dynamic_adapter_function(self):
        def _adapter(arg1, arg2, arg3=None, *args, **kwargs):
            pass

        argspec = getfullargspec(_adapter)

        @wrapt.decorator(adapter=argspec)
        def _wrapper_1(wrapped, instance, args, kwargs):
            return wrapped(*args, **kwargs)

        @_wrapper_1
        def _function_1():
            pass

        self.assertEqual(getfullargspec(_function_1), argspec)

        args = '(arg1, arg2, arg3=None, *args, **kwargs)'

        @wrapt.decorator(adapter=args)
        def _wrapper_2(wrapped, instance, args, kwargs):
            return wrapped(*args, **kwargs)

        @_wrapper_2
        def _function_2():
            pass

        self.assertEqual(getfullargspec(_function_2), argspec)
Ejemplo n.º 3
0
    def test_argspec(self):
        # Test preservation of function argument specification. It
        # actually needs to match that of the adapter function the
        # prototype of which was supplied via the dummy function.

        def _adapter(arg1, arg2, arg3=None, *args, **kwargs):
            pass

        function1a_argspec = getfullargspec(_adapter)
        function1d_argspec = getfullargspec(function1d)
        self.assertEqual(function1a_argspec, function1d_argspec)

        # Now bind the function to an instance. The argspec should
        # still match.

        bound_function1d = function1d.__get__(object(), object)
        bound_function1d_argspec = getfullargspec(bound_function1d)
        self.assertEqual(function1a_argspec, bound_function1d_argspec)
Ejemplo n.º 4
0
    def test_adapter_factory(self):
        def factory(wrapped):
            argspec = getfullargspec(wrapped)
            argspec.args.insert(0, 'arg0')
            return argspec

        @wrapt.decorator(adapter=wrapt.adapter_factory(factory))
        def _wrapper_1(wrapped, instance, args, kwargs):
            return wrapped(*args, **kwargs)

        @_wrapper_1
        def _function_1(arg1, arg2):
            pass

        argspec = getfullargspec(_function_1)

        self.assertEqual(argspec.args, ['arg0', 'arg1', 'arg2'])
Ejemplo n.º 5
0
    def test_class_argspec(self):
        # Test preservation of instance method argument specification.

        original_argspec = getfullargspec(Original.function)
        function_argspec = getfullargspec(Class.function)
        self.assertEqual(original_argspec, function_argspec)
Ejemplo n.º 6
0
    def test_argspec(self):
        # Test preservation of function argument specification.

        function1o_argspec = getfullargspec(function1o)
        function1d_argspec = getfullargspec(function1d)
        self.assertEqual(function1o_argspec, function1d_argspec)
Ejemplo n.º 7
0
    def test_instance_argspec(self):
        # Test preservation of instance method argument specification.

        original_argspec = getfullargspec(NewClass1o().function)
        function_argspec = getfullargspec(NewClass1d().function)
        self.assertEqual(original_argspec, function_argspec)
Ejemplo n.º 8
0
 def factory(wrapped):
     argspec = getfullargspec(wrapped)
     argspec.args.insert(0, 'arg0')
     return argspec