@@ -1799,53 +1799,47 @@ def __parameters__(self):
17991799else :
18001800 _ConcatenateGenericAlias = typing ._ConcatenateGenericAlias
18011801
1802- # 3.10.2+
1803- if sys .version_info >= (3 , 10 , 2 ):
1804- _ellipsis_dummy = ParamSpec ('_ellipsis_dummy' )
1805-
1806- @typing ._tp_cache
1807- def _concatenate_getitem (self , parameters ):
1808- if parameters == ():
1809- raise TypeError ("Cannot take a Concatenate of no types." )
1810- if not isinstance (parameters , tuple ):
1811- parameters = (parameters ,)
1812- if not (parameters [- 1 ] is ... or isinstance (parameters [- 1 ], ParamSpec )):
1813- raise TypeError ("The last parameter to Concatenate should be a "
1814- "ParamSpec variable or ellipsis." )
1815- msg = "Concatenate[arg, ...]: each arg must be a type."
1816- parameters = (* (typing ._type_check (p , msg ) for p in parameters [:- 1 ]),
1817- parameters [- 1 ])
1818- if parameters [- 1 ] is Ellipsis :
1819- # Hack: Need ParamSpec as last parameter when passing to typing class in 3.10
1820- parameters = parameters [:- 1 ] + (_ellipsis_dummy ,)
1821- concatenate = _ConcatenateGenericAlias (self , parameters ,
1822- _typevar_types = (TypeVar , ParamSpec ),
1823- _paramspec_tvars = True )
1824- # Remove dummy and replace with Ellipsis again
1825- concatenate .__args__ = tuple (p if p is not _ellipsis_dummy else ...
1826- for p in concatenate .__args__ )
1827- concatenate .__parameters__ = tuple (p for p in concatenate .__parameters__
1828- if p is not _ellipsis_dummy )
1829- return concatenate
1830- return _ConcatenateGenericAlias (self , parameters ,
1802+ # 3.8-3.9,2
1803+ class _EllipsisDummyType : ...
1804+
1805+ # 3.8-3.10
1806+ def _create_concatenate_alias (origin , parameters ):
1807+ if parameters [- 1 ] is ... and sys .version_info < (3 , 9 , 2 ):
1808+ # Arguments must be types
1809+ parameters = parameters [:- 1 ] + (_EllipsisDummyType ,)
1810+ if sys .version_info >= (3 , 10 , 2 ):
1811+ concatenate = _ConcatenateGenericAlias (origin , parameters ,
18311812 _typevar_types = (TypeVar , ParamSpec ),
18321813 _paramspec_tvars = True )
1833-
1834- # 3.8-3.10.0
1835- else :
1836- @typing ._tp_cache
1837- def _concatenate_getitem (self , parameters ):
1838- if parameters == ():
1839- raise TypeError ("Cannot take a Concatenate of no types." )
1840- if not isinstance (parameters , tuple ):
1841- parameters = (parameters ,)
1842- if not (parameters [- 1 ] is ... or isinstance (parameters [- 1 ], ParamSpec )):
1843- raise TypeError ("The last parameter to Concatenate should be a "
1844- "ParamSpec variable or ellipsis." )
1845- msg = "Concatenate[arg, ...]: each arg must be a type."
1846- parameters = (* (typing ._type_check (p , msg ) for p in parameters [:- 1 ]),
1847- parameters [- 1 ])
1848- return _ConcatenateGenericAlias (self , parameters )
1814+ else :
1815+ concatenate = _ConcatenateGenericAlias (origin , parameters )
1816+ if parameters [- 1 ] is not _EllipsisDummyType :
1817+ return concatenate
1818+ # Remove dummy again
1819+ concatenate .__args__ = tuple (p if p is not _EllipsisDummyType else ...
1820+ for p in concatenate .__args__ )
1821+ if sys .version_info < (3 , 10 ):
1822+ # backport needs __args__ adjustment only
1823+ return concatenate
1824+ concatenate .__parameters__ = tuple (p for p in concatenate .__parameters__
1825+ if p is not _EllipsisDummyType )
1826+ return concatenate
1827+
1828+
1829+ # 3.8-3.10
1830+ @typing ._tp_cache
1831+ def _concatenate_getitem (self , parameters ):
1832+ if parameters == ():
1833+ raise TypeError ("Cannot take a Concatenate of no types." )
1834+ if not isinstance (parameters , tuple ):
1835+ parameters = (parameters ,)
1836+ if not (parameters [- 1 ] is ... or isinstance (parameters [- 1 ], ParamSpec )):
1837+ raise TypeError ("The last parameter to Concatenate should be a "
1838+ "ParamSpec variable or ellipsis." )
1839+ msg = "Concatenate[arg, ...]: each arg must be a type."
1840+ parameters = (* (typing ._type_check (p , msg ) for p in parameters [:- 1 ]),
1841+ parameters [- 1 ])
1842+ return _create_concatenate_alias (self , parameters )
18491843
18501844# 3.11+; Concatenate does not accept ellipsis in 3.10
18511845if hasattr (typing , 'Concatenate' ) and sys .version_info >= (3 , 11 ):
0 commit comments