mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-06 04:04:25 +08:00
Try fixing mypy-protobuf backwards incompatibility (#4833)
Currently, the only way forward would be to update `mypy` and `mypy-protobuf` at the same time, which causes pain. The imprecise fallback overloads can be removed later, I leave comments about this. Co-authored-by: Ivan Levkivskyi <ilevkivskyi@dropbox.com>
This commit is contained in:
@@ -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: ...
|
||||
|
||||
10
third_party/2and3/google/protobuf/message.pyi
vendored
10
third_party/2and3/google/protobuf/message.pyi
vendored
@@ -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: ...
|
||||
|
||||
Reference in New Issue
Block a user