return (self.__origin__,)
-class Annotated:
+@_SpecialForm
+def Annotated(self, params):
"""Add context-specific metadata to a type.
Example: Annotated[int, runtime_check.Unsigned] indicates to the
where T1, T2 etc. are TypeVars, which would be invalid, because
only one type should be passed to Annotated.
"""
-
- __slots__ = ()
-
- def __new__(cls, *args, **kwargs):
- raise TypeError("Type Annotated cannot be instantiated.")
-
- @_tp_cache
- def __class_getitem__(cls, params):
- if not isinstance(params, tuple) or len(params) < 2:
- raise TypeError("Annotated[...] should be used "
- "with at least two arguments (a type and an "
- "annotation).")
- if _is_unpacked_typevartuple(params[0]):
- raise TypeError("Annotated[...] should not be used with an "
- "unpacked TypeVarTuple")
- msg = "Annotated[t, ...]: t must be a type."
- origin = _type_check(params[0], msg, allow_special_forms=True)
- metadata = tuple(params[1:])
- return _AnnotatedAlias(origin, metadata)
-
- def __init_subclass__(cls, *args, **kwargs):
- raise TypeError(
- "Cannot subclass {}.Annotated".format(cls.__module__)
- )
+ if not isinstance(params, tuple) or len(params) < 2:
+ raise TypeError("Annotated[...] should be used "
+ "with at least two arguments (a type and an "
+ "annotation).")
+ if _is_unpacked_typevartuple(params[0]):
+ raise TypeError("Annotated[...] should not be used with an "
+ "unpacked TypeVarTuple")
+ msg = "Annotated[t, ...]: t must be a type."
+ origin = _type_check(params[0], msg, allow_special_forms=True)
+ metadata = tuple(params[1:])
+ return _AnnotatedAlias(origin, metadata)
def runtime_checkable(cls):