Skip to content

Commit ab01bf7

Browse files
committed
Fix nested use of Concatenate from both modules
1 parent 82d512a commit ab01bf7

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/test_typing_extensions.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5373,6 +5373,13 @@ class MyClass: ...
53735373
self.assertNotEqual(d, c)
53745374
self.assertNotEqual(d, Concatenate)
53755375

5376+
@skipUnless(TYPING_3_10_0, "Concatenate not available in <3.10")
5377+
def test_typing_compatibility(self):
5378+
P = ParamSpec('P')
5379+
C = Concatenate[int, P][typing.Concatenate[int, P]]
5380+
self.assertEqual(C, Concatenate[int, int, P])
5381+
self.assertEqual(get_args(C), (int, int, P))
5382+
53765383
def test_valid_uses(self):
53775384
P = ParamSpec('P')
53785385
T = TypeVar('T')

src/typing_extensions.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,21 +1801,20 @@ def __parameters__(self):
18011801

18021802
# 3.10
18031803
if sys.version_info < (3, 11):
1804-
_typing_ConcatenateGenericAlias = _ConcatenateGenericAlias
18051804

1806-
class _ConcatenateGenericAlias(_typing_ConcatenateGenericAlias, _root=True):
1805+
class _ConcatenateGenericAlias(typing._ConcatenateGenericAlias, _root=True):
18071806
# needed for checks in collections.abc.Callable to accept this class
18081807
__module__ = "typing"
18091808

18101809
def copy_with(self, params):
18111810
if isinstance(params[-1], (list, tuple)):
18121811
return (*params[:-1], *params[-1])
1813-
if isinstance(params[-1], _ConcatenateGenericAlias):
1812+
if isinstance(params[-1], typing._ConcatenateGenericAlias):
18141813
params = (*params[:-1], *params[-1].__args__)
18151814
elif not (params[-1] is ... or isinstance(params[-1], ParamSpec)):
18161815
raise TypeError("The last parameter to Concatenate should be a "
18171816
"ParamSpec variable or ellipsis.")
1818-
return super(_typing_ConcatenateGenericAlias, self).copy_with(params)
1817+
return super(typing._ConcatenateGenericAlias, self).copy_with(params)
18191818

18201819

18211820
# 3.8-3.9.2

0 commit comments

Comments
 (0)