for A in G, Tuple:
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, str], A[float, str])
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, str], List[A[float, str]])
self.assertEqual(get_args(Union[int, Callable[[Tuple[T, ...]], str]]),
(int, Callable[[Tuple[T, ...]], str]))
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(List), ())
self.assertEqual(get_args(Tuple), ())
if not isinstance(args, tuple):
args = (args,)
self.__args__ = tuple(... if a is _TypingEllipsis else
- () if a is _TypingEmpty else
a for a in args)
self.__parameters__ = _collect_parameters(args)
self._paramspec_tvars = _paramspec_tvars
class _TupleType(_SpecialGenericAlias, _root=True):
@_tp_cache
def __getitem__(self, params):
- if params == ():
- return self.copy_with((_TypingEmpty,))
if not isinstance(params, tuple):
params = (params,)
if len(params) >= 2 and params[-1] is ...:
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:
"""Internal placeholder for ... (ellipsis)."""