@@ -855,6 +855,14 @@ def test_accepts_single_type(self):
855855 (* tuple [int ],)
856856 Unpack [Tuple [int ]]
857857
858+ def test_dir (self ):
859+ dir_items = set (dir (Unpack [Tuple [int ]]))
860+ for required_item in [
861+ '__args__' , '__parameters__' , '__origin__' ,
862+ ]:
863+ with self .subTest (required_item = required_item ):
864+ self .assertIn (required_item , dir_items )
865+
858866 def test_rejects_multiple_types (self ):
859867 with self .assertRaises (TypeError ):
860868 Unpack [Tuple [int ], Tuple [str ]]
@@ -1699,6 +1707,14 @@ def test_repr(self):
16991707 u = Optional [str ]
17001708 self .assertEqual (repr (u ), 'typing.Optional[str]' )
17011709
1710+ def test_dir (self ):
1711+ dir_items = set (dir (Union [str , int ]))
1712+ for required_item in [
1713+ '__args__' , '__parameters__' , '__origin__' ,
1714+ ]:
1715+ with self .subTest (required_item = required_item ):
1716+ self .assertIn (required_item , dir_items )
1717+
17021718 def test_cannot_subclass (self ):
17031719 with self .assertRaisesRegex (TypeError ,
17041720 r'Cannot subclass typing\.Union' ):
@@ -1839,6 +1855,15 @@ def test_eq_hash(self):
18391855 self .assertNotEqual (C , Callable [..., int ])
18401856 self .assertNotEqual (C , Callable )
18411857
1858+ def test_dir (self ):
1859+ Callable = self .Callable
1860+ dir_items = set (dir (Callable [..., int ]))
1861+ for required_item in [
1862+ '__args__' , '__parameters__' , '__origin__' ,
1863+ ]:
1864+ with self .subTest (required_item = required_item ):
1865+ self .assertIn (required_item , dir_items )
1866+
18421867 def test_cannot_instantiate (self ):
18431868 Callable = self .Callable
18441869 with self .assertRaises (TypeError ):
@@ -2151,6 +2176,14 @@ def test_repr(self):
21512176 self .assertEqual (repr (Literal [None ]), "typing.Literal[None]" )
21522177 self .assertEqual (repr (Literal [1 , 2 , 3 , 3 ]), "typing.Literal[1, 2, 3]" )
21532178
2179+ def test_dir (self ):
2180+ dir_items = set (dir (Literal [1 , 2 , 3 ]))
2181+ for required_item in [
2182+ '__args__' , '__parameters__' , '__origin__' ,
2183+ ]:
2184+ with self .subTest (required_item = required_item ):
2185+ self .assertIn (required_item , dir_items )
2186+
21542187 def test_cannot_init (self ):
21552188 with self .assertRaises (TypeError ):
21562189 Literal ()
@@ -7315,6 +7348,15 @@ def test_repr(self):
73157348 "typing.Annotated[typing.List[int], 4, 5]"
73167349 )
73177350
7351+ def test_dir (self ):
7352+ dir_items = set (dir (Annotated [int , 4 ]))
7353+ for required_item in [
7354+ '__args__' , '__parameters__' , '__origin__' ,
7355+ '__metadata__' ,
7356+ ]:
7357+ with self .subTest (required_item = required_item ):
7358+ self .assertIn (required_item , dir_items )
7359+
73187360 def test_flatten (self ):
73197361 A = Annotated [Annotated [int , 4 ], 5 ]
73207362 self .assertEqual (A , Annotated [int , 4 , 5 ])
@@ -8033,6 +8075,15 @@ class MyClass: ...
80338075 c = Concatenate [MyClass , P ]
80348076 self .assertNotEqual (c , Concatenate )
80358077
8078+ def test_dir (self ):
8079+ P = ParamSpec ('P' )
8080+ dir_items = set (dir (Concatenate [int , P ]))
8081+ for required_item in [
8082+ '__args__' , '__parameters__' , '__origin__' ,
8083+ ]:
8084+ with self .subTest (required_item = required_item ):
8085+ self .assertIn (required_item , dir_items )
8086+
80368087 def test_valid_uses (self ):
80378088 P = ParamSpec ('P' )
80388089 T = TypeVar ('T' )
@@ -8310,10 +8361,18 @@ class Foo(Generic[T]):
83108361 def bar (self ):
83118362 pass
83128363 baz = 3
8364+ __magic__ = 4
8365+
83138366 # The class attributes of the original class should be visible even
83148367 # in dir() of the GenericAlias. See bpo-45755.
8315- self .assertIn ('bar' , dir (Foo [int ]))
8316- self .assertIn ('baz' , dir (Foo [int ]))
8368+ dir_items = set (dir (Foo [int ]))
8369+ for required_item in [
8370+ 'bar' , 'baz' ,
8371+ '__args__' , '__parameters__' , '__origin__' ,
8372+ ]:
8373+ with self .subTest (required_item = required_item ):
8374+ self .assertIn (required_item , dir_items )
8375+ self .assertNotIn ('__magic__' , dir_items )
83178376
83188377
83198378class RevealTypeTests (BaseTestCase ):
0 commit comments