mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
bpo-46981: Remove typing._TypingEmpty (GH-31836)
* get_args(Tuple[()]) now returns () instead of ((),). * Tuple[Unpack[Ts]][()] now returns the result equal to Tuple[()].
This commit is contained in:
parent
4674fd4e93
commit
15df8f8d89
3 changed files with 5 additions and 15 deletions
|
@ -469,14 +469,12 @@ class TypeVarTupleTests(BaseTestCase):
|
||||||
|
|
||||||
for A in G, Tuple:
|
for A in G, Tuple:
|
||||||
B = A[Unpack[Ts]]
|
B = A[Unpack[Ts]]
|
||||||
if A != Tuple:
|
self.assertEqual(B[()], A[()])
|
||||||
self.assertEqual(B[()], A[()])
|
|
||||||
self.assertEqual(B[float], A[float])
|
self.assertEqual(B[float], A[float])
|
||||||
self.assertEqual(B[float, str], A[float, str])
|
self.assertEqual(B[float, str], A[float, str])
|
||||||
|
|
||||||
C = List[A[Unpack[Ts]]]
|
C = List[A[Unpack[Ts]]]
|
||||||
if A != Tuple:
|
self.assertEqual(C[()], List[A[()]])
|
||||||
self.assertEqual(C[()], List[A[()]])
|
|
||||||
self.assertEqual(C[float], List[A[float]])
|
self.assertEqual(C[float], List[A[float]])
|
||||||
self.assertEqual(C[float, str], List[A[float, str]])
|
self.assertEqual(C[float, str], List[A[float, str]])
|
||||||
|
|
||||||
|
@ -4248,7 +4246,7 @@ class GetUtilitiesTestCase(TestCase):
|
||||||
self.assertEqual(get_args(Union[int, Callable[[Tuple[T, ...]], str]]),
|
self.assertEqual(get_args(Union[int, Callable[[Tuple[T, ...]], str]]),
|
||||||
(int, Callable[[Tuple[T, ...]], str]))
|
(int, Callable[[Tuple[T, ...]], str]))
|
||||||
self.assertEqual(get_args(Tuple[int, ...]), (int, ...))
|
self.assertEqual(get_args(Tuple[int, ...]), (int, ...))
|
||||||
self.assertEqual(get_args(Tuple[()]), ((),))
|
self.assertEqual(get_args(Tuple[()]), ())
|
||||||
self.assertEqual(get_args(Annotated[T, 'one', 2, ['three']]), (T, 'one', 2, ['three']))
|
self.assertEqual(get_args(Annotated[T, 'one', 2, ['three']]), (T, 'one', 2, ['three']))
|
||||||
self.assertEqual(get_args(List), ())
|
self.assertEqual(get_args(List), ())
|
||||||
self.assertEqual(get_args(Tuple), ())
|
self.assertEqual(get_args(Tuple), ())
|
||||||
|
|
|
@ -1220,7 +1220,6 @@ class _GenericAlias(_BaseGenericAlias, _root=True):
|
||||||
if not isinstance(args, tuple):
|
if not isinstance(args, tuple):
|
||||||
args = (args,)
|
args = (args,)
|
||||||
self.__args__ = tuple(... if a is _TypingEllipsis else
|
self.__args__ = tuple(... if a is _TypingEllipsis else
|
||||||
() if a is _TypingEmpty else
|
|
||||||
a for a in args)
|
a for a in args)
|
||||||
self.__parameters__ = _collect_parameters(args)
|
self.__parameters__ = _collect_parameters(args)
|
||||||
self._paramspec_tvars = _paramspec_tvars
|
self._paramspec_tvars = _paramspec_tvars
|
||||||
|
@ -1503,8 +1502,6 @@ class _CallableType(_SpecialGenericAlias, _root=True):
|
||||||
class _TupleType(_SpecialGenericAlias, _root=True):
|
class _TupleType(_SpecialGenericAlias, _root=True):
|
||||||
@_tp_cache
|
@_tp_cache
|
||||||
def __getitem__(self, params):
|
def __getitem__(self, params):
|
||||||
if params == ():
|
|
||||||
return self.copy_with((_TypingEmpty,))
|
|
||||||
if not isinstance(params, tuple):
|
if not isinstance(params, tuple):
|
||||||
params = (params,)
|
params = (params,)
|
||||||
if len(params) >= 2 and params[-1] is ...:
|
if len(params) >= 2 and params[-1] is ...:
|
||||||
|
@ -1735,13 +1732,6 @@ class Generic:
|
||||||
cls.__parameters__ = tuple(tvars)
|
cls.__parameters__ = tuple(tvars)
|
||||||
|
|
||||||
|
|
||||||
class _TypingEmpty:
|
|
||||||
"""Internal placeholder for () or []. Used by TupleMeta and CallableMeta
|
|
||||||
to allow empty list/tuple in specific places, without allowing them
|
|
||||||
to sneak in where prohibited.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class _TypingEllipsis:
|
class _TypingEllipsis:
|
||||||
"""Internal placeholder for ... (ellipsis)."""
|
"""Internal placeholder for ... (ellipsis)."""
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
``typing.get_args(typing.Tuple[()])`` now returns ``()`` instead of
|
||||||
|
``((),)``.
|
Loading…
Add table
Add a link
Reference in a new issue