Skip to content

Commit f092778

Browse files
authored
Update type var typing on protobuf message.pyi (#3996)
Add support for message type var generics
1 parent 949378f commit f092778

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

third_party/2and3/google/protobuf/message.pyi

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import sys
22

33
from typing import Any, Sequence, Optional, Tuple, Type, TypeVar, Union
44

5-
from .descriptor import DescriptorBase, FieldDescriptor
5+
from .descriptor import Descriptor, DescriptorBase, FieldDescriptor
66

77
class Error(Exception): ...
88
class DecodeError(Error): ...
@@ -12,20 +12,20 @@ class _ExtensionDict:
1212
def __getitem__(self, extension_handle: DescriptorBase) -> Any: ...
1313
def __setitem__(self, extension_handle: DescriptorBase, value: Any) -> None: ...
1414

15-
_T = TypeVar("_T")
15+
_M = TypeVar("_M", bound=Message) # message type (of self)
1616

1717
if sys.version_info < (3,):
1818
_Serialized = Union[bytes, buffer, unicode]
1919
else:
2020
_Serialized = bytes
2121

2222
class Message:
23-
DESCRIPTOR: Any
23+
DESCRIPTOR: Descriptor
2424
def __deepcopy__(self, memo=...): ...
2525
def __eq__(self, other_msg): ...
2626
def __ne__(self, other_msg): ...
27-
def MergeFrom(self, other_msg: Message) -> None: ...
28-
def CopyFrom(self, other_msg: Message) -> None: ...
27+
def MergeFrom(self: _M, other_msg: _M) -> None: ...
28+
def CopyFrom(self: _M, other_msg: _M) -> None: ...
2929
def Clear(self) -> None: ...
3030
def SetInParent(self) -> None: ...
3131
def IsInitialized(self) -> bool: ...
@@ -38,9 +38,10 @@ class Message:
3838
def ClearExtension(self, extension_handle): ...
3939
def ByteSize(self) -> int: ...
4040
@classmethod
41-
def FromString(cls: Type[_T], s: _Serialized) -> _T: ...
41+
def FromString(cls: Type[_M], s: _Serialized) -> _M: ...
4242
@property
4343
def Extensions(self) -> _ExtensionDict: ...
44+
4445
# Intentionally left out typing on these three methods, because they are
4546
# stringly typed and it is not useful to call them on a Message directly.
4647
# We prefer more specific typing on individual subclasses of Message

0 commit comments

Comments
 (0)