예제 #1
0
    def test_type_annotations(self):
        # pylint: disable=unused-argument

        def example_fun(self,
                        cls,
                        x: List[str],
                        z: int,
                        a: Union[List[str], str, int] = None,
                        b: str = 'test',
                        *,
                        y: bool = False,
                        c: int,
                        **kwargs) -> None:
            pass

        # pylint: enable=unused-argument

        sig = parser.generate_signature(example_fun,
                                        parser_config=self.parser_config,
                                        func_full_name='')
        self.assertEqual(sig.arguments, [
            'cls', 'x: List[str]', 'z: int',
            'a: Union[List[str], str, int] = None', "b: str = 'test'", '*',
            'y: bool = False', 'c: int', '**kwargs'
        ])
        self.assertEqual(sig.return_type, 'None')
        self.assertEqual(sig.arguments_typehint_exists, True)
        self.assertEqual(sig.return_typehint_exists, True)
예제 #2
0
  def test_dotted_name(self):
    # pylint: disable=g-bad-name

    class a(object):

      class b(object):

        class c(object):

          class d(object):

            def __init__(self, *args):
              pass

    # pylint: enable=g-bad-name

    e = {'f': 1}

    def example_fun(arg1=a.b.c.d, arg2=a.b.c.d(1, 2), arg3=e['f']):  # pylint: disable=unused-argument
      pass

    sig = parser.generate_signature(
        example_fun, parser_config=self.parser_config, func_full_name='')
    self.assertEqual(
        sig.arguments,
        ['arg1=a.b.c.d', 'arg2=a.b.c.d(1, 2)', 'arg3=e['f']'])
예제 #3
0
    def test_dataclasses_type_annotations(self):
        @dataclasses.dataclass
        class ExampleClass:
            x: List[str]
            z: int
            c: List[int] = dataclasses.field(default_factory=list)
            a: Union[List[str], str, int] = None
            b: str = 'test'
            y: bool = False

            def add(self, x: int, y: int) -> int:
                return x + y

        sig = parser.generate_signature(ExampleClass,
                                        parser_config=self.parser_config,
                                        func_full_name='')

        self.assertEqual(sig.arguments, [
            'x: List[str]',
            'z: int',
            'c: List[int] = <factory>',
            'a: Union[List[str], str, int] = None',
            'b: str = 'test'',
            'y: bool = False',
        ])
        self.assertEqual(sig.return_type, 'None')
        self.assertEqual(sig.arguments_typehint_exists, True)
예제 #4
0
    def test_known_object(self):
        def example_fun(arg=self.known_object):  # pylint: disable=unused-argument
            pass

        sig = parser.generate_signature(example_fun,
                                        parser_config=self.parser_config,
                                        func_full_name='')
        self.assertEqual(sig.arguments, ['arg=location.of.object.in.api'])
예제 #5
0
    def test_literals(self):
        def example_fun(a=5, b=5.0, c=None, d=True, e='hello', f=(1, (2, 3))):  # pylint: disable=g-bad-name, unused-argument
            pass

        sig = parser.generate_signature(example_fun,
                                        parser_config=self.parser_config,
                                        func_full_name='')
        self.assertEqual(
            sig.arguments,
            ['a=5', 'b=5.0', 'c=None', 'd=True', "e='hello'", 'f=(1, (2, 3))'])
예제 #6
0
    def test_compulsory_kwargs_without_defaults_with_args(self):
        def example_fun(x, z, *args, a=True, b='test', y=None, c, **kwargs):  # pylint: disable=unused-argument
            return True

        sig = parser.generate_signature(example_fun,
                                        parser_config=self.parser_config,
                                        func_full_name='')
        self.assertEqual(sig.arguments, [
            'x', 'z', '*args', 'a=True', "b='test'", 'y=None', 'c', '**kwargs'
        ])
        self.assertEqual(sig.arguments_typehint_exists, False)
        self.assertEqual(sig.return_typehint_exists, False)
예제 #7
0
  def test_dataclasses_type_annotations(self):

    sig = parser.generate_signature(
        ExampleDataclass, parser_config=self.parser_config, func_full_name='')

    self.assertEqual(sig.arguments, [
        'x: List[str]',
        'z: int',
        'c: List[int] = <factory>',
        'a: Union[List[str], str, int] = None',
        'b: str = 'test'',
        'y: bool = False',
    ])
    self.assertEqual(sig.return_type, 'None')
    self.assertEqual(sig.arguments_typehint_exists, True)
예제 #8
0
파일: parser_test.py 프로젝트: guoci/docs
  def test_compulsory_kwargs_without_defaults(self):

    def example_fun(x, z, a=True, b='test', *, y=None, c, **kwargs) -> bool:  # pylint: disable=unused-argument
      return True

    sig = parser.generate_signature(
        example_fun,
        parser_config=self.parser_config,
        func_full_name='',
        func_type=parser.FuncType.FUNCTION)
    self.assertEqual(sig.arguments, [
        'x', 'z', 'a=True', 'b='test'', '*', 'y=None', 'c', '**kwargs'
    ])
    self.assertEqual(sig.return_type, 'bool')
    self.assertEqual(sig.arguments_typehint_exists, False)
    self.assertEqual(sig.return_typehint_exists, True)
예제 #9
0
    def test_literals(self):
        def example_fun(
                self,
                cls,
                a=5,
                b=5.0,
                c=None,
                d=True,
                e='hello',
                f=(1, (2, 3)),
        ):  # pylint: disable=g-bad-name, unused-argument
            pass

        sig = parser.generate_signature(example_fun,
                                        parser_config=self.parser_config,
                                        func_full_name='',
                                        func_type=parser.FuncType.FUNCTION)
        self.assertEqual(sig.arguments, [
            'self', 'cls', 'a=5', 'b=5.0', 'c=None', 'd=True',
            'e='hello'', 'f=(1, (2, 3))'
        ])
예제 #10
0
파일: parser_test.py 프로젝트: guoci/docs
  def test_type_annotations(self):
    # pylint: disable=unused-argument

    class TestMethodSig:

      def example_fun(self,
                      x: List[str],
                      z: int,
                      a: Union[List[str], str, int] = None,
                      b: str = 'test',
                      *,
                      y: bool = False,
                      c: Callable[..., int],
                      **kwargs) -> None:
        pass

    # pylint: enable=unused-argument

    sig = parser.generate_signature(
        TestMethodSig.example_fun,
        parser_config=self.parser_config,
        func_full_name='',
        func_type=parser.FuncType.METHOD,
    )
    self.assertEqual(sig.arguments, [
        'x: List[str]',
        'z: int',
        'a: Union[List[str], str, int] = None',
        'b: str = 'test'',
        '*',
        'y: bool = False',
        'c: Callable[..., int]',
        '**kwargs',
    ])
    self.assertEqual(sig.return_type, 'None')
    self.assertEqual(sig.arguments_typehint_exists, True)
    self.assertEqual(sig.return_typehint_exists, True)