From 14a43b801572a0e74ebda9089f28f47091292284 Mon Sep 17 00:00:00 2001 From: Avasam Date: Sat, 12 Nov 2022 05:56:04 -0500 Subject: [PATCH] Fix usage of byte2int with bytes (#9152) --- stubs/six/six/__init__.pyi | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/stubs/six/six/__init__.pyi b/stubs/six/six/__init__.pyi index d2f6e4b15..bb87f71f2 100644 --- a/stubs/six/six/__init__.pyi +++ b/stubs/six/six/__init__.pyi @@ -2,18 +2,24 @@ import builtins import operator import types import unittest -from _typeshed import IdentityFunction, SupportsGetItem +from _typeshed import IdentityFunction, _KT_contra, _VT_co from builtins import next as next from collections.abc import Callable, ItemsView, Iterable, Iterator as _Iterator, KeysView, Mapping, ValuesView from functools import wraps as wraps from importlib.util import spec_from_loader as spec_from_loader from io import BytesIO as BytesIO, StringIO as StringIO from re import Pattern -from typing import Any, AnyStr, NoReturn, TypeVar, overload +from typing import Any, AnyStr, NoReturn, Protocol, TypeVar, overload from typing_extensions import Literal from six import moves as moves +# TODO: We should switch to the _typeshed version of SupportsGetItem +# once mypy updates its vendored copy of typeshed and makes a new release +class _SupportsGetItem(Protocol[_KT_contra, _VT_co]): + def __contains__(self, __x: Any) -> bool: ... + def __getitem__(self, __key: _KT_contra) -> _VT_co: ... + _T = TypeVar("_T") _K = TypeVar("_K") _V = TypeVar("_V") @@ -65,8 +71,8 @@ unichr = chr def int2byte(i: int) -> bytes: ... -# Should be `byte2int: operator.itemgetter[int]`. But a bug in mypy prevents using TypeVar in itemgetter__call__ -def byte2int(obj: SupportsGetItem[int, _T]) -> _T: ... +# Should be `byte2int: operator.itemgetter[int]`. But a bug in mypy prevents using TypeVar in itemgetter.__call__ +def byte2int(obj: _SupportsGetItem[int, _T]) -> _T: ... indexbytes = operator.getitem iterbytes = iter