8000 gh-96784: Cover more typing special forms in `get_args()` (#96791) · python/cpython@f2d749a · GitHub
[go: up one dir, main page]

Skip to content

Commit f2d749a

Browse files
authored
gh-96784: Cover more typing special forms in get_args() (#96791)
1 parent 9b3d2d0 commit f2d749a

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

Lib/test/test_typing.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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(g 8000 et_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

50035027
class 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

Comments
 (0)
0