コード例 #1
0
ファイル: parser_test.py プロジェクト: bodegus/tf_docs
  def test_argspec_for_functools_partial_starargs(self):
    # pylint: disable=unused-argument
    def test_function_for_partial2(arg1, arg2, *my_args, **my_kwargs):
      pass
    # pylint: enable=unused-argument
    # Make sure *args, *kwargs is accounted for.
    expected = tf_inspect.FullArgSpec(
        args=[],
        varargs='my_args',
        varkw='my_kwargs',
        defaults=None,
        kwonlyargs=[],
        kwonlydefaults=None,
        annotations={})
    partial = functools.partial(test_function_for_partial2, 0, 1)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))

    # Make sure *args, *kwargs is accounted for.
    expected = tf_inspect.FullArgSpec(
        args=[],
        varargs='my_args',
        varkw='my_kwargs',
        defaults=None,
        kwonlyargs=[],
        kwonlydefaults=None,
        annotations={})
    partial = functools.partial(test_function_for_partial2, 0, 1, 2, 3, 4, 5)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))

    # Make sure *args, *kwargs is accounted for.
    expected = tf_inspect.FullArgSpec(
        args=['arg1', 'arg2'],
        varargs='my_args',
        varkw='my_kwargs',
        defaults=None,
        kwonlyargs=[],
        kwonlydefaults=None,
        annotations={})
    partial = functools.partial(test_function_for_partial2, a=1, b=2, c=3)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))
コード例 #2
0
    def testGetFullArgSpecOnNewClass(self):
        class NewClass(object):
            def __new__(cls, a, b=1, c='hello'):
                pass

        argspec = tf_inspect.FullArgSpec(args=['cls', 'a', 'b', 'c'],
                                         varargs=None,
                                         varkw=None,
                                         defaults=(1, 'hello'),
                                         kwonlyargs=[],
                                         kwonlydefaults=None,
                                         annotations={})

        self.assertEqual(argspec, tf_inspect.getfullargspec(NewClass))
コード例 #3
0
    def testGetFullArgsSpecForPartial(self):
        def func(a, b):
            del a, b

        partial_function = functools.partial(func, 1)
        argspec = tf_inspect.FullArgSpec(args=['b'],
                                         varargs=None,
                                         varkw=None,
                                         defaults=None,
                                         kwonlyargs=[],
                                         kwonlydefaults=None,
                                         annotations={})

        self.assertEqual(argspec, tf_inspect.getfullargspec(partial_function))
コード例 #4
0
    def testGetFullArgSpecOnCallableObject(self):
        class Callable(object):
            def __call__(self, a, b=1, c='hello'):
                pass

        argspec = tf_inspect.FullArgSpec(args=['self', 'a', 'b', 'c'],
                                         varargs=None,
                                         varkw=None,
                                         defaults=(1, 'hello'),
                                         kwonlyargs=[],
                                         kwonlydefaults=None,
                                         annotations={})

        test_obj = Callable()
        self.assertEqual(argspec, tf_inspect.getfullargspec(test_obj))
コード例 #5
0
    def testGetFullArgSpecOnPartialWithVarargs(self):
        """Tests getfullargspec on partial function with variable arguments."""
        def func(m, *arg):
            return m + len(arg)

        partial_func = functools.partial(func, 7, 8)
        argspec = tf_inspect.FullArgSpec(args=[],
                                         varargs='arg',
                                         varkw=None,
                                         defaults=None,
                                         kwonlyargs=[],
                                         kwonlydefaults=None,
                                         annotations={})

        self.assertEqual(argspec, tf_inspect.getfullargspec(partial_func))
コード例 #6
0
    def testGetFullArgSpecOnPartialNoArgumentsLeft(self):
        """Tests getfullargspec on partial function that prunes all arguments."""
        def func(m, n):
            return 2 * m + n

        partial_func = functools.partial(func, 7, 10)
        argspec = tf_inspect.FullArgSpec(args=[],
                                         varargs=None,
                                         varkw=None,
                                         defaults=None,
                                         kwonlyargs=[],
                                         kwonlydefaults=None,
                                         annotations={})

        self.assertEqual(argspec, tf_inspect.getfullargspec(partial_func))
コード例 #7
0
    def testGetFullArgSpecOnPartialWithVarkwargs(self):
        """Tests getfullargspec.

    Tests on partial function with variable keyword arguments.
    """
        def func(m, n, **kwarg):
            return m * n + len(kwarg)

        partial_func = functools.partial(func, 7)
        argspec = tf_inspect.FullArgSpec(args=['n'],
                                         varargs=None,
                                         varkw='kwarg',
                                         defaults=None,
                                         kwonlyargs=[],
                                         kwonlydefaults=None,
                                         annotations={})

        self.assertEqual(argspec, tf_inspect.getfullargspec(partial_func))
コード例 #8
0
    def testGetArgSpecOnPartialKeywordArgument(self):
        """Tests getargspec on partial function that prunes some arguments."""
        def func(m, n):
            return 2 * m + n

        partial_func = functools.partial(func, n=7)
        argspec = tf_inspect.FullArgSpec(args=['m'],
                                         varargs=None,
                                         varkw=None,
                                         defaults=None,
                                         kwonlyargs=['n'],
                                         kwonlydefaults={'n': 7},
                                         annotations={})

        self.assertEqual(argspec, tf_inspect.getfullargspec(partial_func))

        with self.assertRaisesRegexp(ValueError,
                                     'Function has keyword-only.*'):
            tf_inspect.getargspec(partial_func)
コード例 #9
0
    def testGetArgSpecOnPartialValidArgspec(self):
        """Tests getargspec on partial function with valid argspec."""
        def func(m, n, l, k=4):
            return 2 * m + l + n * k

        partial_func = functools.partial(func, n=7, l=2)
        argspec = tf_inspect.FullArgSpec(args=['m'],
                                         varargs=None,
                                         varkw=None,
                                         defaults=None,
                                         kwonlyargs=['n', 'l', 'k'],
                                         kwonlydefaults={
                                             'n': 7,
                                             'l': 2,
                                             'k': 4
                                         },
                                         annotations={})

        self.assertEqual(argspec, tf_inspect.getfullargspec(partial_func))
        with self.assertRaisesRegexp(ValueError,
                                     'Function has keyword-only.*'):
            tf_inspect.getargspec(partial_func)
コード例 #10
0
ファイル: parser_test.py プロジェクト: bodegus/tf_docs
  def test_argspec_for_functools_partial(self):
    # pylint: disable=unused-argument
    def test_function_for_partial1(arg1, arg2, kwarg1=1, kwarg2=2):
      pass
    # pylint: enable=unused-argument

    # pylint: disable=protected-access
    # Make sure everything works for regular functions.
    expected = tf_inspect.FullArgSpec(
        args=['arg1', 'arg2', 'kwarg1', 'kwarg2'],
        varargs=None,
        varkw=None,
        defaults=(1, 2),
        kwonlyargs=[],
        kwonlydefaults=None,
        annotations={})
    self.assertEqual(expected,
                     tf_inspect.getfullargspec(test_function_for_partial1))

    # Make sure doing nothing works.
    expected = tf_inspect.FullArgSpec(
        args=['arg1', 'arg2', 'kwarg1', 'kwarg2'],
        varargs=None,
        varkw=None,
        defaults=(1, 2),
        kwonlyargs=[],
        kwonlydefaults=None,
        annotations={})
    partial = functools.partial(test_function_for_partial1)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))

    # Make sure setting args from the front works.
    expected = tf_inspect.FullArgSpec(
        args=['arg2', 'kwarg1', 'kwarg2'],
        varargs=None,
        varkw=None,
        defaults=(1, 2),
        kwonlyargs=[],
        kwonlydefaults=None,
        annotations={})
    partial = functools.partial(test_function_for_partial1, 1)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))

    expected = tf_inspect.FullArgSpec(
        args=['kwarg2'],
        varargs=None,
        varkw=None,
        defaults=(2,),
        kwonlyargs=[],
        kwonlydefaults=None,
        annotations={})
    partial = functools.partial(test_function_for_partial1, 1, 2, 3)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))

    # Make sure setting kwargs works.
    expected = tf_inspect.FullArgSpec(
        args=['arg1', 'arg2'],
        varargs=None,
        varkw=None,
        defaults=None,
        kwonlyargs=['kwarg1', 'kwarg2'],
        kwonlydefaults={
            'kwarg1': 0,
            'kwarg2': 2
        },
        annotations={})
    partial = functools.partial(test_function_for_partial1, kwarg1=0)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))

    expected = tf_inspect.FullArgSpec(
        args=['arg1', 'arg2', 'kwarg1'],
        varargs=None,
        varkw=None,
        defaults=(1,),
        kwonlyargs=['kwarg2'],
        kwonlydefaults={'kwarg2': 0},
        annotations={})
    partial = functools.partial(test_function_for_partial1, kwarg2=0)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))

    expected = tf_inspect.FullArgSpec(
        args=['arg1'],
        varargs=None,
        varkw=None,
        defaults=None,
        kwonlyargs=['arg2', 'kwarg1', 'kwarg2'],
        kwonlydefaults={
            'arg2': 0,
            'kwarg1': 0,
            'kwarg2': 0
        },
        annotations={})
    partial = functools.partial(test_function_for_partial1,
                                arg2=0, kwarg1=0, kwarg2=0)
    self.assertEqual(expected, tf_inspect.getfullargspec(partial))