| """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 |