◐ Shell
clean mode source ↗

bpo-42195: Override _CallableGenericAlias's __getitem__ by Fidget-Spinner · Pull Request #23915 · python/cpython

Expand Up @@ -434,7 +434,7 @@ def __create_ga(cls, origin, args): raise TypeError( "Callable must be used as Callable[[arg, ...], result].") t_args, t_result = args if isinstance(t_args, list): if isinstance(t_args, (list, tuple)): ga_args = tuple(t_args) + (t_result,) # This relaxes what t_args can be on purpose to allow things like # PEP 612 ParamSpec. Responsibility for whether a user is using Expand All @@ -456,6 +456,16 @@ def __reduce__(self): args = list(args[:-1]), args[-1] return _CallableGenericAlias, (Callable, args)
def __getitem__(self, item): # Called during TypeVar substitution, returns the custom subclass # rather than the default types.GenericAlias object. ga = super().__getitem__(item) args = ga.__args__ t_result = args[-1] t_args = args[:-1] args = (t_args, t_result) return _CallableGenericAlias(Callable, args)

def _type_repr(obj): """Return the repr() of an object, special-casing types (internal helper). Expand Down