diff --git a/third_party/2and3/google/protobuf/internal/extension_dict.pyi b/third_party/2and3/google/protobuf/internal/extension_dict.pyi index 765a28a33..ba939cffa 100644 --- a/third_party/2and3/google/protobuf/internal/extension_dict.pyi +++ b/third_party/2and3/google/protobuf/internal/extension_dict.pyi @@ -1,4 +1,4 @@ -from typing import Any, Generic, Iterator, TypeVar +from typing import Any, Generic, Iterator, TypeVar, overload from google.protobuf.descriptor import FieldDescriptor from google.protobuf.message import Message @@ -10,13 +10,27 @@ class _ExtensionFieldDescriptor(FieldDescriptor, Generic[_ContainerMessageT, _Ex class _ExtensionDict(Generic[_ContainerMessageT]): def __init__(self, extended_message: _ContainerMessageT) -> None: ... + # Dummy fallback overloads with FieldDescriptor are for backward compatibility with + # mypy-protobuf <= 1.23. We can drop them a few months after 1.24 releases. + @overload def __getitem__( self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT] ) -> _ExtenderMessageT: ... + @overload + def __getitem__(self, extension_handle: FieldDescriptor) -> Any: ... + @overload def __setitem__( self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT], value: _ExtenderMessageT ) -> None: ... + @overload + def __setitem__(self, extension_handle: FieldDescriptor, value: Any) -> None: ... + @overload def __delitem__(self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT]) -> None: ... + @overload + def __delitem__(self, extension_handle: FieldDescriptor) -> None: ... + @overload def __contains__(self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT]) -> bool: ... + @overload + def __contains__(self, extension_handle: FieldDescriptor) -> bool: ... def __iter__(self) -> Iterator[_ExtensionFieldDescriptor[_ContainerMessageT, Any]]: ... def __len__(self) -> int: ... diff --git a/third_party/2and3/google/protobuf/message.pyi b/third_party/2and3/google/protobuf/message.pyi index 62e9a329f..177602be1 100644 --- a/third_party/2and3/google/protobuf/message.pyi +++ b/third_party/2and3/google/protobuf/message.pyi @@ -1,5 +1,5 @@ import sys -from typing import Any, ByteString, Sequence, Tuple, Type, TypeVar, Union +from typing import Any, ByteString, Sequence, Tuple, Type, TypeVar, Union, overload from .descriptor import Descriptor, FieldDescriptor from .internal.extension_dict import _ExtensionDict, _ExtensionFieldDescriptor @@ -30,8 +30,16 @@ class Message: def SerializeToString(self, deterministic: bool = ...) -> bytes: ... def SerializePartialToString(self, deterministic: bool = ...) -> bytes: ... def ListFields(self) -> Sequence[Tuple[FieldDescriptor, Any]]: ... + # Dummy fallback overloads with FieldDescriptor are for backward compatibility with + # mypy-protobuf <= 1.23. We can drop them a few months after 1.24 releases. + @overload def HasExtension(self: _M, extension_handle: _ExtensionFieldDescriptor[_M, Any]) -> bool: ... + @overload + def HasExtension(self, extension_handle: FieldDescriptor) -> bool: ... + @overload def ClearExtension(self: _M, extension_handle: _ExtensionFieldDescriptor[_M, Any]) -> None: ... + @overload + def ClearExtension(self, extension_handle: FieldDescriptor) -> None: ... def ByteSize(self) -> int: ... @classmethod def FromString(cls: Type[_M], s: _Serialized) -> _M: ...