Skip to content

Commit 4140f10

Browse files
bpo-42740: Fix get_args for PEP 585 collections.abc.Callable (GH-23963)
PR 1/2. Needs backport to 3.9.
1 parent a9621bb commit 4140f10

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

Lib/test/test_typing.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3048,6 +3048,11 @@ class C(Generic[T]): pass
30483048
self.assertEqual(get_args(Callable), ())
30493049
self.assertEqual(get_args(list[int]), (int,))
30503050
self.assertEqual(get_args(list), ())
3051+
self.assertEqual(get_args(collections.abc.Callable[[int], str]), ([int], str))
3052+
self.assertEqual(get_args(collections.abc.Callable[..., str]), (..., str))
3053+
self.assertEqual(get_args(collections.abc.Callable[[], str]), ([], str))
3054+
self.assertEqual(get_args(collections.abc.Callable[[int], str]),
3055+
get_args(Callable[[int], str]))
30513056

30523057

30533058
class CollectionsAbcTests(BaseTestCase):

Lib/typing.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,13 +1684,11 @@ def get_args(tp):
16841684
"""
16851685
if isinstance(tp, _AnnotatedAlias):
16861686
return (tp.__origin__,) + tp.__metadata__
1687-
if isinstance(tp, _GenericAlias):
1687+
if isinstance(tp, (_GenericAlias, GenericAlias)):
16881688
res = tp.__args__
16891689
if tp.__origin__ is collections.abc.Callable and res[0] is not Ellipsis:
16901690
res = (list(res[:-1]), res[-1])
16911691
return res
1692-
if isinstance(tp, GenericAlias):
1693-
return tp.__args__
16941692
return ()
16951693

16961694

0 commit comments

Comments
 (0)