diff options
Diffstat (limited to 'tests/functional/p/postponed_evaluation_pep585_error.py')
-rw-r--r-- | tests/functional/p/postponed_evaluation_pep585_error.py | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/functional/p/postponed_evaluation_pep585_error.py b/tests/functional/p/postponed_evaluation_pep585_error.py new file mode 100644 index 000000000..71f09dc4c --- /dev/null +++ b/tests/functional/p/postponed_evaluation_pep585_error.py @@ -0,0 +1,116 @@ +"""Test PEP 585 without postponed evaluation. Everything should fail. + +This check requires Python 3.7 or Python 3.8! +Testing with 3.8 only, to support TypedDict. +""" +# pylint: disable=missing-docstring,unused-argument,unused-import,too-few-public-methods,invalid-name,inherit-non-class,unsupported-binary-operation,unused-variable,line-too-long +import collections +import dataclasses +import typing +from dataclasses import dataclass +from typing import Any, Dict, NamedTuple, TypedDict, Union + + +AliasInvalid = list[int] # [unsubscriptable-object] + +class CustomIntList(typing.List[int]): + pass + +class CustomIntListError(list[int]): # [unsubscriptable-object] + pass + +cast_variable = [1, 2, 3] +cast_variable = typing.cast(list[int], cast_variable) # [unsubscriptable-object] + +T = typing.TypeVar("T", list[int], str) # [unsubscriptable-object] + +(lambda x: 2)(list[int]) # [unsubscriptable-object] + + +# Check typing.NamedTuple +CustomNamedTuple = typing.NamedTuple( + "CustomNamedTuple", [("my_var", list[int])]) # [unsubscriptable-object] + +class CustomNamedTuple2(NamedTuple): + my_var: list[int] # [unsubscriptable-object] + +class CustomNamedTuple3(typing.NamedTuple): + my_var: list[int] # [unsubscriptable-object] + + +# Check typing.TypedDict +CustomTypedDict = TypedDict("CustomTypedDict", my_var=list[int]) # [unsubscriptable-object] + +CustomTypedDict2 = TypedDict("CustomTypedDict2", {"my_var": list[int]}) # [unsubscriptable-object] + +class CustomTypedDict3(TypedDict): + my_var: list[int] # [unsubscriptable-object] + +class CustomTypedDict4(typing.TypedDict): + my_var: list[int] # [unsubscriptable-object] + + +# Check dataclasses +def my_decorator(*args, **kwargs): + def wraps(*args, **kwargs): + pass + return wraps + +@dataclass +class CustomDataClass: + my_var: list[int] # [unsubscriptable-object] + +@dataclasses.dataclass +class CustomDataClass2: + my_var: list[int] # [unsubscriptable-object] + +@dataclass() +class CustomDataClass3: + my_var: list[int] # [unsubscriptable-object] + +@my_decorator +@dataclasses.dataclass +class CustomDataClass4: + my_var: list[int] # [unsubscriptable-object] + + +var1: set[int] # [unsubscriptable-object] +var2: collections.OrderedDict[str, int] # [unsubscriptable-object] +var3: dict[str, list[int]] # [unsubscriptable-object,unsubscriptable-object] +var4: Dict[str, list[int]] # [unsubscriptable-object] +var5: dict[tuple[int, int], str] # [unsubscriptable-object,unsubscriptable-object] +var6: Dict[tuple[int, int], str] # [unsubscriptable-object] +var7: list[list[int]] # [unsubscriptable-object,unsubscriptable-object] +var8: tuple[list[int]] # [unsubscriptable-object,unsubscriptable-object] +var9: int | list[str | int] # [unsubscriptable-object] +var10: Union[list[str], None] # [unsubscriptable-object] +var11: Union[Union[list[int], int]] # [unsubscriptable-object] + +def func(arg: list[int]): # [unsubscriptable-object] + pass + +def func2() -> list[int]: # [unsubscriptable-object] + pass + +Alias2 = Union[list[str], None] # [unsubscriptable-object] +Alias3 = Union[Union[list[int], int]] # [unsubscriptable-object] +Alias5 = Dict[str, list[int]] # [unsubscriptable-object] +Alias6 = int | list[int] # [unsubscriptable-object] +Alias7 = list[list[int]] # [unsubscriptable-object,unsubscriptable-object] + + +def func3(): + AliasInvalid2 = list[int] # [unsubscriptable-object] + cast_variable2 = [1, 2, 3] + cast_variable2 = typing.cast(list[int], cast_variable2) # [unsubscriptable-object] + var12: list[int] # [unsubscriptable-object] + +def func4(var=list[int]): # [unsubscriptable-object] + pass + +def func5(arg1: list[int], arg2=set[int]): # [unsubscriptable-object,unsubscriptable-object] + pass + +def func6(arg1: list[int], /, *args: tuple[str], arg2: set[int], **kwargs: dict[str, Any]): + # -1:[unsubscriptable-object,unsubscriptable-object,unsubscriptable-object,unsubscriptable-object] + pass |