Skip to content

Commit f106aef

Browse files
authoredMay 17, 2023
[3.11] typing: Add more tests for TypeVar (GH-104571) (#104577)
During the PEP 695 implementation at one point I made TypeVar.__name__ return garbage, and all of test_typing passed. So I decided to add a few more tests. (cherry picked from commit 2693194) Co-authored-by: Jelle Zijlstra <[email protected]>
1 parent 133bf09 commit f106aef

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
 

‎Lib/test/test_typing.py

+27
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,32 @@ def test_basic_plain(self):
364364
self.assertEqual(T, T)
365365
# T is an instance of TypeVar
366366
self.assertIsInstance(T, TypeVar)
367+
self.assertEqual(T.__name__, 'T')
368+
self.assertEqual(T.__constraints__, ())
369+
self.assertIs(T.__bound__, None)
370+
self.assertIs(T.__covariant__, False)
371+
self.assertIs(T.__contravariant__, False)
372+
373+
def test_attributes(self):
374+
T_bound = TypeVar('T_bound', bound=int)
375+
self.assertEqual(T_bound.__name__, 'T_bound')
376+
self.assertEqual(T_bound.__constraints__, ())
377+
self.assertIs(T_bound.__bound__, int)
378+
379+
T_constraints = TypeVar('T_constraints', int, str)
380+
self.assertEqual(T_constraints.__name__, 'T_constraints')
381+
self.assertEqual(T_constraints.__constraints__, (int, str))
382+
self.assertIs(T_constraints.__bound__, None)
383+
384+
T_co = TypeVar('T_co', covariant=True)
385+
self.assertEqual(T_co.__name__, 'T_co')
386+
self.assertIs(T_co.__covariant__, True)
387+
self.assertIs(T_co.__contravariant__, False)
388+
389+
T_contra = TypeVar('T_contra', contravariant=True)
390+
self.assertEqual(T_contra.__name__, 'T_contra')
391+
self.assertIs(T_contra.__covariant__, False)
392+
self.assertIs(T_contra.__contravariant__, True)
367393

368394
def test_typevar_instance_type_error(self):
369395
T = TypeVar('T')
@@ -7426,6 +7452,7 @@ def test_basic_plain(self):
74267452
P = ParamSpec('P')
74277453
self.assertEqual(P, P)
74287454
self.assertIsInstance(P, ParamSpec)
7455+
self.assertEqual(P.__name__, 'P')
74297456

74307457
def test_valid_uses(self):
74317458
P = ParamSpec('P')

0 commit comments

Comments
 (0)
Please sign in to comment.