@@ -4965,17 +4965,28 @@ def test_get_args(self):
49654965 class C (Generic [T ]): pass
49664966 self .assertEqual (get_args (C [int ]), (int ,))
49674967 self .assertEqual (get_args (C [T ]), (T ,))
4968+ self .assertEqual (get_args (typing .SupportsAbs [int ]), (int ,)) # Protocol
4969+ self .assertEqual (get_args (typing .SupportsAbs [T ]), (T ,))
4970+ self .assertEqual (get_args (Point2DGeneric [int ]), (int ,)) # TypedDict
4971+ self .assertEqual (get_args (Point2DGeneric [T ]), (T ,))
4972+ self .assertEqual (get_args (T ), ())
49684973 self .assertEqual (get_args (int ), ())
4974+ self .assertEqual (get_args (Any ), ())
4975+ self .assertEqual (get_args (Self ), ())
4976+ self .assertEqual (get_args (LiteralString ), ())
49694977 self .assertEqual (get_args (ClassVar [int ]), (int ,))
49704978 self .assertEqual (get_args (Union [int , str ]), (int , str ))
49714979 self .assertEqual (get_args (Literal [42 , 43 ]), (42 , 43 ))
49724980 self .assertEqual (get_args (Final [List [int ]]), (List [int ],))
4981+ self .assertEqual (get_args (Optional [int ]), (int , type (None )))
4982+ self .assertEqual (get_args (Union [int , None ]), (int , type (None )))
49734983 self .assertEqual (get_args (Union [int , Tuple [T , int ]][str ]),
49744984 (int , Tuple [str , int ]))
49754985 self .assertEqual (get_args (typing .Dict [int , Tuple [T , T ]][Optional [int ]]),
49764986 (int , Tuple [Optional [int ], Optional [int ]]))
49774987 self .assertEqual (get_args (Callable [[], T ][int ]), ([], int ))
49784988 self .assertEqual (get_args (Callable [..., int ]), (..., int ))
4989+ self .assertEqual (get_args (Callable [[int ], str ]), ([int ], str ))
49794990 self .assertEqual (get_args (Union [int , Callable [[Tuple [T , ...]], str ]]),
49804991 (int , Callable [[Tuple [T , ...]], str ]))
49814992 self .assertEqual (get_args (Tuple [int , ...]), (int , ...))
@@ -4992,12 +5003,25 @@ class C(Generic[T]): pass
49925003 self .assertEqual (get_args (collections .abc .Callable [[int ], str ]),
49935004 get_args (Callable [[int ], str ]))
49945005 P = ParamSpec ('P' )
5006+ self .assertEqual (get_args (P ), ())
5007+ self .assertEqual (get_args (P .args ), ())
5008+ self .assertEqual (get_args (P .kwargs ), ())
49955009 self .assertEqual (get_args (Callable [P , int ]), (P , int ))
5010+ self .assertEqual (get_args (collections .abc .Callable [P , int ]), (P , int ))
49965011 self .assertEqual (get_args (Callable [Concatenate [int , P ], int ]),
49975012 (Concatenate [int , P ], int ))
5013+ self .assertEqual (get_args (collections .abc .Callable [Concatenate [int , P ], int ]),
5014+ (Concatenate [int , P ], int ))
5015+ self .assertEqual (get_args (Concatenate [int , str , P ]), (int , str , P ))
49985016 self .assertEqual (get_args (list | str ), (list , str ))
49995017 self .assertEqual (get_args (Required [int ]), (int ,))
50005018 self .assertEqual (get_args (NotRequired [int ]), (int ,))
5019+ self .assertEqual (get_args (TypeAlias ), ())
5020+ self .assertEqual (get_args (TypeGuard [int ]), (int ,))
5021+ Ts = TypeVarTuple ('Ts' )
5022+ self .assertEqual (get_args (Ts ), ())
5023+ self .assertEqual (get_args (Unpack [Ts ]), (Ts ,))
5024+ self .assertEqual (get_args (tuple [Unpack [Ts ]]), (Unpack [Ts ],))
50015025
50025026
50035027class CollectionsAbcTests (BaseTestCase ):
@@ -5762,9 +5786,12 @@ class Y(Generic[T], NamedTuple):
57625786 for G in X , Y :
57635787 with self .subTest (type = G ):
57645788 self .assertEqual (G .__parameters__ , (T ,))
5789+ self .assertEqual (G [T ].__args__ , (T ,))
5790+ self .assertEqual (get_args (G [T ]), (T ,))
57655791 A = G [int ]
57665792 self .assertIs (A .__origin__ , G )
57675793 self .assertEqual (A .__args__ , (int ,))
5794+ self .assertEqual (get_args (A ), (int ,))
57685795 self .assertEqual (A .__parameters__ , ())
57695796
57705797 a = A (3 )
0 commit comments