diff --git a/third_party/2and3/google/protobuf/internal/containers.pyi b/third_party/2and3/google/protobuf/internal/containers.pyi index 90e67fb71..7da1b4f9f 100644 --- a/third_party/2and3/google/protobuf/internal/containers.pyi +++ b/third_party/2and3/google/protobuf/internal/containers.pyi @@ -1,10 +1,28 @@ -from typing import Any, Callable, Generic, Iterable, Iterator, List, Optional, Sequence, TypeVar, Union, overload +from typing import ( + Any, + Callable, + Generic, + Iterable, + Iterator, + List, + Mapping as Mapping, + MutableMapping as MutableMapping, + Optional, + Sequence, + TypeVar, + Union, + overload, +) from google.protobuf.descriptor import Descriptor from google.protobuf.internal.message_listener import MessageListener +from google.protobuf.internal.python_message import GeneratedProtocolMessageType from google.protobuf.message import Message _T = TypeVar("_T") +_K = TypeVar("_K") +_V = TypeVar("_V") +_M = TypeVar("_M") class BaseContainer(Sequence[_T]): def __init__(self, message_listener: MessageListener) -> None: ... @@ -23,7 +41,7 @@ class RepeatedScalarFieldContainer(BaseContainer[_T]): def append(self, value: _T) -> None: ... def insert(self, key: int, value: _T) -> None: ... def extend(self, elem_seq: Optional[Iterable[_T]]) -> None: ... - def MergeFrom(self, other: RepeatedScalarFieldContainer[_T]) -> None: ... + def MergeFrom(self: _M, other: _M) -> None: ... def remove(self, elem: _T) -> None: ... def pop(self, key: int = ...) -> _T: ... @overload @@ -42,7 +60,7 @@ class RepeatedCompositeFieldContainer(BaseContainer[_T]): def append(self, value: _T) -> None: ... def insert(self, key: int, value: _T) -> None: ... def extend(self, elem_seq: Iterable[_T]) -> None: ... - def MergeFrom(self, other: RepeatedCompositeFieldContainer[_T]) -> None: ... + def MergeFrom(self: _M, other: _M) -> None: ... def remove(self, elem: _T) -> None: ... def pop(self, key: int = ...) -> _T: ... def __getslice__(self, start: int, stop: int) -> List[_T]: ... @@ -50,10 +68,23 @@ class RepeatedCompositeFieldContainer(BaseContainer[_T]): def __delslice__(self, start: int, stop: int) -> None: ... def __eq__(self, other: object) -> bool: ... -# Classes not yet typed -class Mapping(object): - def __getattr__(self, name: str) -> Any: ... # incomplete +class ScalarMap(MutableMapping[_K, _V]): + def __setitem__(self, k: _K, v: _V) -> None: ... + def __delitem__(self, v: _K) -> None: ... + def __getitem__(self, k: _K) -> _V: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[_K]: ... + def MergeFrom(self: _M, other: _M): ... + def InvalidateIterators(self) -> None: ... + def GetEntryClass(self) -> GeneratedProtocolMessageType: ... -class MutableMapping(Mapping): ... -class ScalarMap(MutableMapping): ... -class MessageMap(MutableMapping): ... +class MessageMap(MutableMapping[_K, _V]): + def __setitem__(self, k: _K, v: _V) -> None: ... + def __delitem__(self, v: _K) -> None: ... + def __getitem__(self, k: _K) -> _V: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[_K]: ... + def get_or_create(self, key: _K) -> _V: ... + def MergeFrom(self: _M, other: _M): ... + def InvalidateIterators(self) -> None: ... + def GetEntryClass(self) -> GeneratedProtocolMessageType: ... diff --git a/third_party/2and3/google/protobuf/internal/python_message.pyi b/third_party/2and3/google/protobuf/internal/python_message.pyi new file mode 100644 index 000000000..538d70b44 --- /dev/null +++ b/third_party/2and3/google/protobuf/internal/python_message.pyi @@ -0,0 +1 @@ +class GeneratedProtocolMessageType(type): ...