@@ -8,15 +8,15 @@ class TypeParamsInvalidTest(unittest.TestCase):
8
8
def test_name_collision_01 (self ):
9
9
10000
code = """def func[**A, A](): ..."""
10
10
with self .assertRaisesRegex (SyntaxError , "duplicate type parameter 'A'" ):
11
- exec (code , {}, {} )
11
+ exec (code , {})
12
12
13
13
def test_name_non_collision_02 (self ):
14
14
code = """def func[A](A): ..."""
15
- exec (code , {}, {} )
15
+ exec (code , {})
16
16
17
17
def test_name_non_collision_03 (self ):
18
18
code = """def func[A](*A): ..."""
19
- exec (code , {}, {} )
19
+ exec (code , {})
20
20
21
21
def test_name_non_collision_04 (self ):
22
22
# Mangled names should not cause a conflict.
@@ -25,23 +25,23 @@ class ClassA:
25
25
def func[__A](self, __A): ...
26
26
"""
27
27
)
28
- exec (code , {}, {} )
28
+ exec (code , {})
29
29
30
30
def test_name_non_collision_05 (self ):
31
31
code = textwrap .dedent ("""\
32
32
class ClassA:
33
33
def func[_ClassA__A](self, __A): ...
34
34
"""
35
35
)
36
- exec (code , {}, {} )
36
+ exec (code , {})
37
37
38
38
def test_name_non_collision_06 (self ):
39
39
code = textwrap .dedent ("""\
40
40
class ClassA[X]:
41
41
def func(self, X): ...
42
42
"""
43
43
)
44
- exec (code , {}, {} )
44
+ exec (code , {})
45
45
46
46
def test_name_non_collision_07 (self ):
47
47
code = textwrap .dedent ("""\
@@ -50,7 +50,7 @@ def func(self):
50
50
X = 1
51
51
"""
52
52
)
53
- exec (code , {}, {} )
53
+ exec (code , {})
54
54
55
55
def test_name_non_collision_08 (self ):
56
56
code = textwrap .dedent ("""\
@@ -59,7 +59,7 @@ def func(self):
59
59
a = [X for X in []]
60
60
"""
61
61
)
62
- exec (code , {}, {} )
62
+ exec (code , {})
63
63
64
64
def test_name_non_collision_9 (self ):
65
65
code = textwrap .dedent ("""\
@@ -68,15 +68,15 @@ def func[X](self):
68
68
...
69
69
"""
70
70
)
71
- exec (code , {}, {} )
71
+ exec (code , {})
72
72
73
73
def test_name_non_collision_10 (self ):
74
74
code = textwrap .dedent ("""\
75
75
class ClassA[X]:
76
76
X: int
77
77
"""
78
78
)
79
- exec (code , {}, {} )
79
+ exec (code , {})
80
80
81
81
def test_name_non_collision_11 (self ):
82
82
code = textwrap .dedent ("""\
@@ -86,7 +86,7 @@ def inner[X]():
86
86
nonlocal X
87
87
"""
88
88
)
89
- exec (code , {}, {} )
89
+ exec (code , {})
90
90
91
91
def test_name_non_collision_13 (self ):
92
92
code = textwrap .dedent ("""\
@@ -96,7 +96,7 @@ def inner[X]():
96
96
global X
97
97
"""
98
98
)
99
- exec (code , {}, {} )
99
+ exec (code , {})
100
100
101
101
102
102
class TypeParamsAccessTest (unittest .TestCase ):
@@ -106,7 +106,7 @@ class ClassA[A, B](dict[A, B]):
106
106
...
107
107
"""
108
108
)
109
- exec (code , {}, {} )
109
+ exec (code , {})
110
110
111
111
def test_class_access_02 (self ):
112
112
code = textwrap .dedent ("""\
@@ -115,7 +115,7 @@ class ClassA[A, B](metaclass=MyMeta[A, B]):
115
115
...
116
116
"""
117
117
)
118
- exec (code , {}, {} )
118
+ exec (code , {})
119
119
120
120
def test_class_access_03 (self ):
121
121
code = textwrap .dedent ("""\
@@ -128,15 +128,15 @@ class ClassA[A, B]():
128
128
)
129
129
130
130
with self .assertRaisesRegex (NameError , "name 'A' is not defined" ):
131
- exec (code , {}, {} )
131
+ exec (code , {})
132
132
133
133
def test_function_access_01 (self ):
134
134
code = textwrap .dedent ("""\
135
135
def func[A, B](a: dict[A, B]):
136
136
...
137
137
"""
138
138
)
139
- exec (code , {}, {} )
139
+ exec (code , {})
140
140
141
141
def test_function_access_02 (self ):
142
142
code = textwrap .dedent ("""\
@@ -146,7 +146,7 @@ def func[A](a = list[A]()):
146
146
)
147
147
148
148
with self .assertRaisesRegex (NameError , "name 'A' is not defined" ):
149
- exec (code , {}, {} )
149
+ exec (code , {})
150
150
151
151
def test_function_access_03 (self ):
152
152
code = textwrap .dedent ("""\
@@ -159,7 +159,7 @@ def func[A]():
159
159
)
160
160
161
161
with self .assertRaisesRegex (NameError , "name 'A' is not defined" ):
162
- exec (code , {}, {} )
162
+ exec (code , {})
163
163
164
164
def test_nested_access_01 (self ):
165
165
code = textwrap .dedent ("""\
@@ -170,7 +170,7 @@ def funcD[D](self):
170
170
lambda : (A, B, C, D)
171
171
"""
172
172
)
173
- exec (code , {}, {} )
173
+ exec (code , {})
174
174
175
175
def test_out_of_scope_01 (self ):
176
176
code = textwrap .dedent ("""\
@@ -180,7 +180,7 @@ class ClassA[T]: ...
180
180
)
181
181
182
182
with self .assertRaisesRegex (NameError , "name 'T' is not defined" ):
183
- exec (code , {}, {} )
183
+ exec (code , {})
184
184
185
185
def test_out_of_scope_02 (self ):
186
186
code = textwrap .dedent ("""\
@@ -192,7 +192,7 @@ def funcB[B](self): ...
192
192
)
193
193
194
194
with self .assertRaisesRegex (NameError , "name 'B' is not defined" ):
195
- exec (code , {}, {} )
195
+ exec (code , {})
196
196
197
197
198
198
class TypeParamsTraditionalTypeVars (unittest .TestCase ):
@@ -204,7 +204,7 @@ class ClassA[T](Generic[T]): ...
204
204
)
205
205
206
206
with self .assertRaisesRegex (TypeError , r"Cannot inherit from Generic\[...\] multiple types." ):
207
- exec (code , {}, {} )
207
+ exec (code , {})
208
208
209
209
def test_traditional_02 (self ):
210
210
code = textwrap .dedent ("""\
@@ -215,20 +215,15 @@ class ClassA[T](dict[T, S]): ...
215
215
)
216
216
217
217
with self .assertRaisesRegex (TypeError , r"Some type variables \(~S\) are not listed in Generic\[T\]" ):
218
- exec (code , {}, {} )
218
+ exec (code , {})
219
219
220
220
def test_traditional_03 (self ):
221
- code = textwrap .dedent ("""\
222
- from typing import TypeVar
223
- S = TypeVar("S")
224
- def func[T](a: T, b: S) -> T | S:
225
- return a
226
- """
227
- )
228
-
229
221
# This does not generate a runtime error, but it should be
230
222
# flagged as an error by type checkers.
231
- exec (code , {}, {})
223
+ from typing import TypeVar
224
+ S = TypeVar ("S" )
225
+ def func [T ](a : T , b : S ) -> T | S :
226
+ return a
232
227
233
228
234
229
class TypeParamsTypeVarTest (unittest .TestCase ):
@@ -304,7 +299,7 @@ def func1[*A: str]():
304
299
)
305
300
306
301
with self .assertRaisesRegex (SyntaxError , r"expected '\('" ):
307
- exec (code , {}, {} )
302
+ exec (code , {})
308
303
309
304
def test_typevartuple_02 (self ):
310
305
def func1 [* A ]():
@@ -323,7 +318,7 @@ def func1[**A: str]():
323
318
)
324
319
325
320
with self .assertRaisesRegex (SyntaxError , r"expected '\('" ):
326
- exec (code , {}, {} )
321
+ exec (code , {})
327
322
328
323
def test_paramspec_02 (self ):
329
324
def func1 [** A ]():
@@ -367,7 +362,7 @@ class ClassA[A]():
367
362
)
368
363
369
364
with self .assertRaisesRegex (At
7452
tributeError , "attribute '__type_variables__' of 'type' objects is not writable" ):
370
- exec (code , {}, {} )
365
+ exec (code , {})
371
366
372
367
def test_typeparams_dunder_function_01 (self ):
373
368
def outer [A , B ]():
@@ -396,4 +391,4 @@ def func[A]():
396
391
)
397
392
398
393
with self .assertRaisesRegex (AttributeError , "attribute '__type_variables__' of 'function' objects is not writable" ):
399
- exec (code , {}, {} )
394
+ exec (code , {})
0 commit comments