@@ -1799,6 +1799,26 @@ def __parameters__(self):
17991799else :
18001800 _ConcatenateGenericAlias = typing ._ConcatenateGenericAlias
18011801
1802+ # 3.10
1803+ if sys .version_info < (3 , 11 ):
1804+ _typing_ConcatenateGenericAlias = _ConcatenateGenericAlias
1805+
1806+
1807+ class _ConcatenateGenericAlias (_typing_ConcatenateGenericAlias , _root = True ):
1808+ # needed for checks in collections.abc.Callable to accept this class
1809+ __module__ = "typing"
1810+
1811+ def copy_with (self , params ):
1812+ if isinstance (params [- 1 ], (list , tuple )):
1813+ return (* params [:- 1 ], * params [- 1 ])
1814+ if isinstance (params [- 1 ], _ConcatenateGenericAlias ):
1815+ params = (* params [:- 1 ], * params [- 1 ].__args__ )
1816+ elif not (params [- 1 ] is ... or isinstance (params [- 1 ], ParamSpec )):
1817+ raise TypeError ("The last parameter to Concatenate should be a "
1818+ "ParamSpec variable or ellipsis." )
1819+ return super (_typing_ConcatenateGenericAlias , self ).copy_with (params )
1820+
1821+
18021822# 3.8-3.9.2
18031823class _EllipsisDummy : ...
18041824
@@ -1842,7 +1862,7 @@ def _concatenate_getitem(self, parameters):
18421862 return _create_concatenate_alias (self , parameters )
18431863
18441864# 3.11+; Concatenate does not accept ellipsis in 3.10
1845- if hasattr ( typing , 'Concatenate' ) and sys .version_info >= (3 , 11 ):
1865+ if sys .version_info >= (3 , 11 ):
18461866 Concatenate = typing .Concatenate
18471867# 3.9-3.10
18481868elif sys .version_info [:2 ] >= (3 , 9 ):
0 commit comments