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')))
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')))
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')))
def test_infer_union_return(self): # type: () -> None self.assert_infer(['() -> int', '() -> str'], ([], UnionType([ClassType('int'), ClassType('str')])))
def test_remove_redundant_union_item(self): # type: () -> None self.assert_infer(['(str) -> None', '(unicode) -> None'], ([(ClassType('Text'), ARG_POS)], ClassType('None')))
def test_union_type_str(Self): # type: () -> None assert str(UnionType([ClassType('int'), ClassType('str')])) == 'Union[int, str]'
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')))
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')])])))
def test_infer_ignore_mock(self): # type: () -> None self.assert_infer(['(mock.mock.Mock) -> None', '(str) -> None'], ([(ClassType('str'), ARG_POS)], ClassType('None')))
def test_optional(self): # type: () -> None self.assert_type_comment('(Optional[int]) -> Any', ([ Argument(UnionType([ClassType('int'), ClassType('None')]), ARG_POS) ], AnyType()))
def class_arg(name, args=None): # type: (str, Optional[List[AbstractType]]) -> Argument return Argument(ClassType(name, args), ARG_POS)
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')])))
def test_empty(self): # type: () -> None self.assert_type_comment('() -> None', ([], ClassType('None')))
def test_infer_none_argument(self): # type: () -> None self.assert_infer(['(None) -> None'], ([(UnionType([ClassType('None'), AnyType()]), ARG_POS)], ClassType('None')))
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()))
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')])))
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[()]'
def test_simple(self): # type: () -> None self.assert_infer(['(int) -> str'], ([(ClassType('int'), ARG_POS)], ClassType('str')))
def test_uniform_tuple_str(self): # type: () -> None assert str(ClassType('Tuple', [ClassType('int')])) == 'Tuple[int, ...]'
def test_infer_union_arg(self): # type: () -> None self.assert_infer(['(int) -> None', '(str) -> None'], ([ (UnionType([ClassType('int'), ClassType('str')]), ARG_POS) ], ClassType('None')))