Пример #1
0
 def test_simplify_list_item_types(self):
     # type: () -> None
     self.assert_infer(['(List[Union[bool, int]]) -> None'],
                       ([(ClassType('List', [ClassType('int')]), ARG_POS)],
                         ClassType('None')))
Пример #2
0
 def test_remove_redundant_dict_item(self):
     # type: () -> None
     self.assert_infer(['(Dict[str, Any]) -> None',
                        '(Dict[str, str]) -> None'],
                        ([(ClassType('Dict', [ClassType('str'), AnyType()]), ARG_POS)],
                         ClassType('None')))
Пример #3
0
 def test_remove_redundant_dict_item_when_simplified(self):
     # type: () -> None
     self.assert_infer(['(Dict[str, Any]) -> None',
                         '(Dict[str, Union[str, List, Dict, int]]) -> None'],
                         ([(ClassType('Dict', [ClassType('str'), AnyType()]), ARG_POS)],
                         ClassType('None')))
Пример #4
0
 def test_infer_union_return(self):
     # type: () -> None
     self.assert_infer(['() -> int',
                        '() -> str'],
                        ([],
                         UnionType([ClassType('int'), ClassType('str')])))
Пример #5
0
 def test_remove_redundant_union_item(self):
     # type: () -> None
     self.assert_infer(['(str) -> None',
                        '(unicode) -> None'],
                        ([(ClassType('Text'), ARG_POS)],
                         ClassType('None')))
Пример #6
0
 def test_union_type_str(Self):
     # type: () -> None
     assert str(UnionType([ClassType('int'),
                           ClassType('str')])) == 'Union[int, str]'
Пример #7
0
 def test_star_arg(self):
     # type: () -> None
     self.assert_infer(['(int) -> None', '(int, *bool) -> None'],
                       ([(ClassType('int'), ARG_POS),
                         (ClassType('bool'), ARG_STAR)], ClassType('None')))
Пример #8
0
 def test_simplify_multiple_empty_collections(self):
     # type: () -> None
     self.assert_infer(['() -> Tuple[List, List[x]]',
                        '() -> Tuple[List, List]'],
                        ([],
                         TupleType([ClassType('List'), ClassType('List', [ClassType('x')])])))
Пример #9
0
 def test_infer_ignore_mock(self):
     # type: () -> None
     self.assert_infer(['(mock.mock.Mock) -> None',
                        '(str) -> None'],
                        ([(ClassType('str'), ARG_POS)],
                         ClassType('None')))
Пример #10
0
 def test_optional(self):
     # type: () -> None
     self.assert_type_comment('(Optional[int]) -> Any', ([
         Argument(UnionType([ClassType('int'),
                             ClassType('None')]), ARG_POS)
     ], AnyType()))
Пример #11
0
def class_arg(name, args=None):
    # type: (str, Optional[List[AbstractType]]) -> Argument
    return Argument(ClassType(name, args), ARG_POS)
Пример #12
0
 def test_generic(self):
     # type: () -> None
     self.assert_type_comment('(List[int]) -> Dict[str, bool]', ([
         class_arg('List', [ClassType('int')])
     ], ClassType('Dict',
                  [ClassType('str'), ClassType('bool')])))
Пример #13
0
 def test_empty(self):
     # type: () -> None
     self.assert_type_comment('() -> None', ([], ClassType('None')))
Пример #14
0
 def test_infer_none_argument(self):
     # type: () -> None
     self.assert_infer(['(None) -> None'],
                        ([(UnionType([ClassType('None'), AnyType()]), ARG_POS)],
                         ClassType('None')))
Пример #15
0
 def test_simplify_potential_typed_dict(self):
     # type: () -> None
     # Fall back to Dict[x, Any] in case of a complex Dict type.
     self.assert_infer(['(Dict[str, Union[int, str]]) -> Any'],
                       ([(ClassType('Dict', [ClassType('str'), AnyType()]), ARG_POS)],
                        AnyType()))
     self.assert_infer(['(Dict[Text, Union[int, str]]) -> Any'],
                       ([(ClassType('Dict', [ClassType('Text'), AnyType()]), ARG_POS)],
                        AnyType()))
     # Not a potential TypedDict so ordinary simplification applies.
     self.assert_infer(['(Dict[str, Union[str, Text]]) -> Any'],
                       ([(ClassType('Dict', [ClassType('str'), ClassType('Text')]), ARG_POS)],
                        AnyType()))
     self.assert_infer(['(Dict[str, Union[int, None]]) -> Any'],
                       ([(ClassType('Dict', [ClassType('str'),
                                             UnionType([ClassType('int'),
                                                        ClassType('None')])]), ARG_POS)],
                        AnyType()))
Пример #16
0
 def test_infer_ignore_mock_fallback_to_any(self):
     # type: () -> None
     self.assert_infer(['(mock.mock.Mock) -> str',
                        '(mock.mock.Mock) -> int'],
                        ([(AnyType(), ARG_POS)],
                         UnionType([ClassType('str'), ClassType('int')])))
Пример #17
0
 def test_tuple_type_str(self):
     # type: () -> None
     assert str(TupleType([ClassType('int')])) == 'Tuple[int]'
     assert str(TupleType([ClassType('int'),
                           ClassType('str')])) == 'Tuple[int, str]'
     assert str(TupleType([])) == 'Tuple[()]'
Пример #18
0
 def test_simple(self):
     # type: () -> None
     self.assert_infer(['(int) -> str'], ([(ClassType('int'), ARG_POS)],
                                          ClassType('str')))
Пример #19
0
 def test_uniform_tuple_str(self):
     # type: () -> None
     assert str(ClassType('Tuple', [ClassType('int')])) == 'Tuple[int, ...]'
Пример #20
0
 def test_infer_union_arg(self):
     # type: () -> None
     self.assert_infer(['(int) -> None', '(str) -> None'], ([
         (UnionType([ClassType('int'), ClassType('str')]), ARG_POS)
     ], ClassType('None')))