summaryrefslogtreecommitdiff
path: root/tests/functional/p/postponed_evaluation_pep585_py39.py
blob: 387c2273c848b8bc8b9dfdffebb88b1f26cb918f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
"""Test PEP 585 works as expected, starting with Python 3.9"""
# pylint: disable=missing-docstring,unused-argument,unused-import,too-few-public-methods,invalid-name,inherit-non-class,unsupported-binary-operation,wrong-import-position,ungrouped-imports
import collections
import dataclasses
import typing
from dataclasses import dataclass
from typing import Dict, NamedTuple, TypedDict, Union, Tuple


AliasValid = list[int]

class CustomIntList(typing.List[int]):
    pass

class CustomIntListError(list[int]):
    pass

cast_variable = [1, 2, 3]
cast_variable = typing.cast(list[int], cast_variable)

T = typing.TypeVar("T", list[int], str)

(lambda x: 2)(list[int])


# Check typing.NamedTuple
CustomNamedTuple = typing.NamedTuple(
    "CustomNamedTuple", [("my_var", list[int])])

class CustomNamedTuple2(NamedTuple):
    my_var: list[int]

class CustomNamedTuple3(typing.NamedTuple):
    my_var: list[int]


# Check typing.TypedDict
CustomTypedDict = TypedDict("CustomTypedDict", my_var=list[int])

CustomTypedDict2 = TypedDict("CustomTypedDict2", {"my_var": list[int]})

class CustomTypedDict3(TypedDict):
    my_var: list[int]

class CustomTypedDict4(typing.TypedDict):
    my_var: list[int]


# Check dataclasses
def my_decorator(*args, **kwargs):
    def wraps(*args, **kwargs):
        pass
    return wraps

@dataclass
class CustomDataClass:
    my_var: list[int]

@dataclasses.dataclass
class CustomDataClass2:
    my_var: list[int]

@dataclass()
class CustomDataClass3:
    my_var: list[int]

@my_decorator
@dataclasses.dataclass
class CustomDataClass4:
    my_var: list[int]


var1: set[int]
var2: collections.OrderedDict[str, int]
var3: dict[str, list[int]]
var4: Dict[str, list[int]]
var5: dict[tuple[int, int], str]
var6: Dict[tuple[int, int], str]
var7: list[list[int]]
var8: tuple[list[int]]
var9: int | list[str | int]
var10: Union[list[str], None]
var11: Union[Union[list[int], int]]

def func(arg: list[int]):
    pass

def func2() -> list[int]:
    pass

Alias2 = Union[list[str], None]
Alias3 = Union[Union[list[int], int]]
Alias4 = Tuple[list[int]]
Alias5 = Dict[str, list[int]]
Alias6 = int | list[int]
Alias7 = list[list[int]]


import collections.abc
import contextlib
import re

class OrderedDict:
    pass

var12: OrderedDict[str, int]  # [unsubscriptable-object]
var13: list[int]
var14: collections.OrderedDict[str, int]
var15: collections.Counter[int]
var16: collections.abc.Iterable[int]
var17: contextlib.AbstractContextManager[int]
var18: re.Pattern[str]