diff options
Diffstat (limited to 'tests/functional/g/generic_alias/generic_alias_typing.py')
-rw-r--r-- | tests/functional/g/generic_alias/generic_alias_typing.py | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/tests/functional/g/generic_alias/generic_alias_typing.py b/tests/functional/g/generic_alias/generic_alias_typing.py new file mode 100644 index 000000000..2ce05deaf --- /dev/null +++ b/tests/functional/g/generic_alias/generic_alias_typing.py @@ -0,0 +1,141 @@ +"""Test generic alias support for typing.py types.""" +# flake8: noqa +# pylint: disable=missing-docstring,pointless-statement +# pylint: disable=too-few-public-methods,multiple-statements,line-too-long +import abc +import typing + +# special +typing.Tuple[int, int] +typing.Type[int] +typing.Callable[[int], str] + +# builtins +typing.Dict[int, str] +typing.List[int] +typing.Set[int] +typing.FrozenSet[int] + +# collections +typing.DefaultDict[int, str] +typing.OrderedDict[int, str] +typing.ChainMap[int, str] +typing.Counter[int] +typing.Deque[int] + +# collections.abc +typing.AbstractSet[int] +typing.Collection[int] +typing.Container[int] +typing.ItemsView[int, str] +typing.KeysView[int] +typing.Mapping[int, str] +typing.MappingView[int] +typing.MutableMapping[int, str] +typing.MutableSequence[int] +typing.MutableSet[int] +typing.Sequence[int] +typing.ValuesView[int] + +typing.Iterable[int] +typing.Iterator[int] +typing.Generator[int, None, None] +typing.Reversible[int] + +typing.Coroutine[typing.List[str], str, int] +typing.AsyncGenerator[int, None] +typing.AsyncIterable[int] +typing.AsyncIterator[int] +typing.Awaitable[int] + +# contextlib +typing.ContextManager[int] +typing.AsyncContextManager[int] + +# re +typing.Pattern[str] +typing.Match[str] +typing.re.Pattern[str] +typing.re.Match[str] + + +# unsubscriptable types +typing.ByteString +typing.Hashable +typing.Sized +typing.ByteString[int] # [unsubscriptable-object] +typing.Hashable[int] # [unsubscriptable-object] +typing.Sized[int] # [unsubscriptable-object] + + +# Missing implementation for 'collections.abc' derived classes +class DerivedHashable(typing.Hashable): # [abstract-method] # __hash__ + pass + +class DerivedIterable(typing.Iterable[int]): # [abstract-method] # __iter__ + pass + +class DerivedCollection(typing.Collection[int]): # [abstract-method,abstract-method,abstract-method] # __contains__, __iter__, __len__ + pass + + +# No implementation required for 'builtins' and 'collections' types +class DerivedList(typing.List[int]): + def func(self): + return self.__iter__() + +class DerivedSet(typing.Set[int]): + def func(self): + return self.add(2) + +class DerivedOrderedDict(typing.OrderedDict[int, str]): + def func(self): + return self.items() + +class DerivedListIterable(typing.List[typing.Iterable[int]]): + pass + + +# Multiple generic base classes +class DerivedMultiple(typing.Sized, typing.Hashable): # [abstract-method,abstract-method] + pass + +class CustomAbstractCls1(abc.ABC): + pass +class CustomAbstractCls2(typing.Sized, typing.Iterable[CustomAbstractCls1]): # [abstract-method,abstract-method] # __iter__, __len__ + pass +class CustomImplementation(CustomAbstractCls2): # [abstract-method,abstract-method] # __iter__, __len__ + pass + + +# Inheritance without generic +class DerivedList2(typing.List): + pass + +class DerivedOrderedDict2(typing.OrderedDict): + pass + +class DerivedIterable2(typing.Iterable): # [abstract-method] # __iter__ + pass + + +# Type annotations +var_tuple: typing.Tuple[int, int] +var_dict: typing.Dict[int, str] +var_orderedDict: typing.OrderedDict[int, str] +var_container: typing.Container[int] +var_sequence: typing.Sequence[int] +var_iterable: typing.Iterable[int] +var_awaitable: typing.Awaitable[int] +var_contextmanager: typing.ContextManager[int] +var_pattern: typing.Pattern[int] +var_pattern2: typing.re.Pattern[int] +var_bytestring: typing.ByteString +var_hashable: typing.Hashable +var_sized: typing.Sized + +# Type annotation with unsubscriptable type +var_int: int[int] # [unsubscriptable-object] +var_bytestring2: typing.ByteString[int] # [unsubscriptable-object] +var_hashable2: typing.Hashable[int] # [unsubscriptable-object] +var_sized2: typing.Sized[int] # [unsubscriptable-object] |