[protobuf] Bump to 7.34.1 and improve type coverage (#15569)

This commit is contained in:
Emmanuel Ferdman
2026-04-01 20:44:44 +03:00
committed by GitHub
parent fc7a5448ff
commit 4ab04d2263
35 changed files with 806 additions and 490 deletions
@@ -26,9 +26,6 @@ google.protobuf.descriptor.ServiceDescriptor.__new__
# It's a hack - just allow it.
google.protobuf.internal.containers.BaseContainer.__hash__
# Metaclass differs:
google.protobuf.descriptor.OneofDescriptor
# Runtime does not have __iter__ (yet...): hack in spirit of https://github.com/python/typeshed/issues/7813
google.protobuf.internal.well_known_types.ListValue.__iter__
+2 -2
View File
@@ -1,8 +1,8 @@
# Using an exact number in the specifier for scripts/sync_protobuf/google_protobuf.py
# When updating, also re-run the script
version = "~=6.32.1"
version = "~=7.34.1"
upstream_repository = "https://github.com/protocolbuffers/protobuf"
extra_description = "Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 31.1 on [protobuf v32.1](https://github.com/protocolbuffers/protobuf/releases/tag/v32.1) (python `protobuf==6.32.1`)."
extra_description = "Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 34.1 on [protobuf v34.1](https://github.com/protocolbuffers/protobuf/releases/tag/v34.1) (python `protobuf==7.34.1`)."
partial_stub = true
[tool.stubtest]
+218 -195
View File
@@ -1,6 +1,23 @@
from _typeshed import Incomplete
from typing import ClassVar, final
from typing_extensions import Self
from collections.abc import Callable, Iterable, Mapping, Sequence
from typing import Any, ClassVar, final
from typing_extensions import Self, disjoint_base
from google.protobuf.descriptor_pb2 import (
DescriptorProto,
EnumDescriptorProto,
EnumOptions,
EnumValueOptions,
FeatureSetDefaults,
FieldOptions,
FileDescriptorProto,
FileOptions,
MessageOptions,
MethodDescriptorProto,
MethodOptions,
OneofOptions,
ServiceDescriptorProto,
ServiceOptions,
)
default_pool: DescriptorPool
@@ -9,93 +26,93 @@ class Arena: ...
@final
class Descriptor:
containing_type: Incomplete
enum_types: Incomplete
enum_types_by_name: Incomplete
enum_values_by_name: Incomplete
extension_ranges: Incomplete
extensions: Incomplete
extensions_by_name: Incomplete
fields: Incomplete
fields_by_camelcase_name: Incomplete
fields_by_name: Incomplete
fields_by_number: Incomplete
file: Incomplete
full_name: Incomplete
has_options: Incomplete
is_extendable: Incomplete
name: Incomplete
nested_types: Incomplete
nested_types_by_name: Incomplete
oneofs: Incomplete
oneofs_by_name: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def CopyToProto(self, object, /): ...
def EnumValueName(self, *args, **kwargs): ... # incomplete
def GetOptions(self): ...
containing_type: Descriptor | None
enum_types: Sequence[EnumDescriptor]
enum_types_by_name: Mapping[str, EnumDescriptor]
enum_values_by_name: dict[str, EnumValueDescriptor]
extension_ranges: list[tuple[int, int]]
extensions: Sequence[FieldDescriptor]
extensions_by_name: Mapping[str, FieldDescriptor]
fields: Sequence[FieldDescriptor]
fields_by_camelcase_name: Mapping[str, FieldDescriptor]
fields_by_name: Mapping[str, FieldDescriptor]
fields_by_number: Mapping[int, FieldDescriptor]
file: FileDescriptor
full_name: str
has_options: bool
is_extendable: bool
name: str
nested_types: Sequence[Descriptor]
nested_types_by_name: Mapping[str, Descriptor]
oneofs: Sequence[OneofDescriptor]
oneofs_by_name: Mapping[str, OneofDescriptor]
def __new__(cls, *args, **kwargs) -> Self: ...
def CopyToProto(self, proto: DescriptorProto, /) -> None: ...
def EnumValueName(self, enum: str, value: int) -> str: ...
def GetOptions(self) -> MessageOptions: ...
@final
class DescriptorPool:
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def Add(self, object, /): ...
def AddSerializedFile(self, object, /): ...
def FindAllExtensions(self, object, /): ...
def FindEnumTypeByName(self, object, /): ...
def FindExtensionByName(self, object, /): ...
def FindExtensionByNumber(self, *args, **kwargs): ... # incomplete
def FindFieldByName(self, object, /): ...
def FindFileByName(self, object, /): ...
def FindFileContainingSymbol(self, object, /): ...
def FindMessageTypeByName(self, object, /): ...
def FindMethodByName(self, object, /): ...
def FindOneofByName(self, object, /): ...
def FindServiceByName(self, object, /): ...
def SetFeatureSetDefaults(self, object, /): ...
def __new__(cls, *args, **kwargs) -> Self: ...
def Add(self, file_desc_proto: FileDescriptorProto, /) -> None: ...
def AddSerializedFile(self, serialized_file_desc_proto: bytes, /) -> FileDescriptor: ...
def FindAllExtensions(self, message_descriptor: Descriptor, /) -> list[FieldDescriptor]: ...
def FindEnumTypeByName(self, full_name: str, /) -> EnumDescriptor: ...
def FindExtensionByName(self, full_name: str, /) -> FieldDescriptor: ...
def FindExtensionByNumber(self, message_descriptor: Descriptor, number: int, /) -> FieldDescriptor: ...
def FindFieldByName(self, full_name: str, /) -> FieldDescriptor: ...
def FindFileByName(self, file_name: str, /) -> FileDescriptor: ...
def FindFileContainingSymbol(self, symbol: str, /) -> FileDescriptor: ...
def FindMessageTypeByName(self, full_name: str, /) -> Descriptor: ...
def FindMethodByName(self, full_name: str, /) -> MethodDescriptor: ...
def FindOneofByName(self, full_name: str, /) -> OneofDescriptor: ...
def FindServiceByName(self, full_name: str, /) -> ServiceDescriptor: ...
def SetFeatureSetDefaults(self, defaults: FeatureSetDefaults, /) -> None: ...
@final
class EnumDescriptor:
containing_type: Incomplete
file: Incomplete
full_name: Incomplete
has_options: Incomplete
is_closed: Incomplete
name: Incomplete
values: Incomplete
values_by_name: Incomplete
values_by_number: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def CopyToProto(self, object, /): ...
def GetOptions(self): ...
containing_type: Descriptor | None
file: FileDescriptor
full_name: str
has_options: bool
is_closed: bool
name: str
values: Sequence[EnumValueDescriptor]
values_by_name: Mapping[str, EnumValueDescriptor]
values_by_number: Mapping[int, EnumValueDescriptor]
def __new__(cls, *args, **kwargs) -> Self: ...
def CopyToProto(self, proto: EnumDescriptorProto, /) -> None: ...
def GetOptions(self) -> EnumOptions: ...
@final
class EnumValueDescriptor:
has_options: Incomplete
index: Incomplete
name: Incomplete
number: Incomplete
type: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def GetOptions(self): ...
has_options: bool
index: int
name: str
number: int
type: EnumDescriptor
def __new__(cls, *args, **kwargs) -> Self: ...
def GetOptions(self) -> EnumValueOptions: ...
@final
class ExtensionDict:
def __contains__(self, other, /) -> bool: ...
def __delitem__(self, other, /) -> None: ...
def __contains__(self, extension_handle: FieldDescriptor, /) -> bool: ...
def __delitem__(self, extension_handle: FieldDescriptor, /) -> None: ...
def __eq__(self, other: object, /) -> bool: ...
def __ge__(self, other: object, /) -> bool: ...
def __getitem__(self, index, /): ...
def __getitem__(self, extension_handle: FieldDescriptor, /) -> Any: ... # Any: Message, scalar, or container
def __gt__(self, other: object, /) -> bool: ...
def __iter__(self): ...
def __iter__(self) -> ExtensionIterator: ...
def __le__(self, other: object, /) -> bool: ...
def __len__(self) -> int: ...
def __lt__(self, other: object, /) -> bool: ...
def __ne__(self, other: object, /) -> bool: ...
def __setitem__(self, index, object, /) -> None: ...
def __setitem__(self, extension_handle: FieldDescriptor, value: Any, /) -> None: ... # Any: Message, scalar, or container
@final
class ExtensionIterator:
def __iter__(self): ...
def __next__(self): ...
def __iter__(self) -> Self: ...
def __next__(self) -> FieldDescriptor: ...
@final
class FieldDescriptor:
@@ -131,181 +148,187 @@ class FieldDescriptor:
TYPE_STRING: ClassVar[int] = ...
TYPE_UINT32: ClassVar[int] = ...
TYPE_UINT64: ClassVar[int] = ...
camelcase_name: Incomplete
containing_oneof: Incomplete
containing_type: Incomplete
cpp_type: Incomplete
default_value: Incomplete
enum_type: Incomplete
extension_scope: Incomplete
file: Incomplete
full_name: Incomplete
has_default_value: Incomplete
has_options: Incomplete
has_presence: Incomplete
index: Incomplete
is_extension: Incomplete
is_packed: Incomplete
json_name: Incomplete
label: Incomplete
message_type: Incomplete
name: Incomplete
number: Incomplete
type: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def GetOptions(self): ...
camelcase_name: str
containing_oneof: OneofDescriptor | None
containing_type: Descriptor | None
cpp_type: int
default_value: Any # Any: str, int, float, bytes, or bool
enum_type: EnumDescriptor | None
extension_scope: Descriptor | None
file: FileDescriptor
full_name: str
has_default_value: bool
has_options: bool
has_presence: bool
index: int
is_extension: bool
is_packed: bool
is_repeated: bool
is_required: bool
json_name: str
message_type: Descriptor | None
name: str
number: int
type: int
def __new__(cls, *args, **kwargs) -> Self: ...
def GetOptions(self) -> FieldOptions: ...
@final
class FileDescriptor:
dependencies: Incomplete
enum_types_by_name: Incomplete
extensions_by_name: Incomplete
has_options: Incomplete
message_types_by_name: Incomplete
name: Incomplete
package: Incomplete
pool: Incomplete
public_dependencies: Incomplete
serialized_pb: Incomplete
services_by_name: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def CopyToProto(self, object, /): ...
def GetOptions(self): ...
dependencies: Sequence[FileDescriptor]
enum_types_by_name: Mapping[str, EnumDescriptor]
extensions_by_name: Mapping[str, FieldDescriptor]
has_options: bool
message_types_by_name: Mapping[str, Descriptor]
name: str
package: str
pool: DescriptorPool
public_dependencies: Sequence[FileDescriptor]
serialized_pb: bytes
services_by_name: Mapping[str, ServiceDescriptor]
def __new__(cls, *args, **kwargs) -> Self: ...
def CopyToProto(self, proto: FileDescriptorProto, /) -> None: ...
def GetOptions(self) -> FileOptions: ...
@final
class MapIterator:
def __iter__(self): ...
def __next__(self): ...
def __iter__(self) -> Self: ...
def __next__(self) -> bool | int | str: ...
@final
class Message:
Extensions: Incomplete
def __init__(self, *args, **kwargs) -> None: ... # incomplete
def ByteSize(self): ...
def Clear(self): ...
def ClearExtension(self, object, /): ...
def ClearField(self, object, /): ...
def CopyFrom(self, object, /): ...
def DiscardUnknownFields(self): ...
def FindInitializationErrors(self): ...
@classmethod
def FromString(cls, object, /): ...
def HasExtension(self, object, /): ...
def HasField(self, object, /): ...
def IsInitialized(self, *args, **kwargs): ... # incomplete
def ListFields(self): ...
def MergeFrom(self, object, /): ...
def MergeFromString(self, object, /): ...
def ParseFromString(self, object, /): ...
def SerializePartialToString(self, *args, **kwargs): ... # incomplete
def SerializeToString(self, *args, **kwargs): ... # incomplete
def SetInParent(self): ...
def UnknownFields(self): ...
def WhichOneof(self, object, /): ...
def __contains__(self, other, /) -> bool: ...
def __deepcopy__(self, memo=None): ...
def __delattr__(self, name, /): ...
Extensions: ExtensionDict
def __init__(self, *args, **kwargs) -> None: ...
def __contains__(self, field_name_or_key: str, /) -> bool: ...
def __deepcopy__(self, memo: Any = None) -> Self: ...
def __delattr__(self, name: str, /) -> None: ...
def __eq__(self, other: object, /) -> bool: ...
def __ge__(self, other: object, /) -> bool: ...
def __gt__(self, other: object, /) -> bool: ...
def __le__(self, other: object, /) -> bool: ...
def __lt__(self, other: object, /) -> bool: ...
def __ne__(self, other: object, /) -> bool: ...
def __setattr__(self, name, value, /): ...
def __setattr__(self, name: str, value: Any, /) -> None: ... # Any: str, int, float, bytes, bool, or Message
def MergeFrom(self, other_msg: Message, /) -> None: ...
def CopyFrom(self, other_msg: Message, /) -> None: ...
def Clear(self) -> None: ...
def SetInParent(self) -> None: ...
def IsInitialized(self, errors: list[str] | None = None) -> bool: ...
def MergeFromString(self, serialized: bytes, /) -> int: ...
def ParseFromString(self, serialized: bytes, /) -> int: ...
def SerializeToString(self, *, deterministic: bool = ...) -> bytes: ...
def SerializePartialToString(self, *, deterministic: bool = ...) -> bytes: ...
def ListFields(self) -> list[tuple[FieldDescriptor, Any]]: ... # Any: str, int, float, bytes, bool, or Message
def HasField(self, field_name: str, /) -> bool: ...
def ClearField(self, field_name: str, /) -> None: ...
def WhichOneof(self, oneof_group: str, /) -> str | None: ...
def HasExtension(self, field_descriptor: FieldDescriptor, /) -> bool: ...
def ClearExtension(self, field_descriptor: FieldDescriptor, /) -> None: ...
def UnknownFields(self) -> UnknownFieldSet: ...
def DiscardUnknownFields(self) -> None: ...
def ByteSize(self) -> int: ...
@classmethod
def FromString(cls, s: bytes, /) -> Self: ...
def FindInitializationErrors(self) -> list[str]: ...
@final
@disjoint_base
class MessageMeta(type): ...
@final
class MethodDescriptor:
client_streaming: Incomplete
containing_service: Incomplete
full_name: Incomplete
index: Incomplete
input_type: Incomplete
name: Incomplete
output_type: Incomplete
server_streaming: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def CopyToProto(self, object, /): ...
def GetOptions(self): ...
client_streaming: bool
containing_service: ServiceDescriptor
full_name: str
has_options: bool
index: int
input_type: Descriptor
name: str
output_type: Descriptor
server_streaming: bool
def __new__(cls, *args, **kwargs) -> Self: ...
def CopyToProto(self, proto: MethodDescriptorProto, /) -> None: ...
def GetOptions(self) -> MethodOptions: ...
@final
class OneofDescriptor:
containing_type: Incomplete
fields: Incomplete
full_name: Incomplete
has_options: Incomplete
index: Incomplete
name: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def GetOptions(self): ...
containing_type: Descriptor
fields: Sequence[FieldDescriptor]
full_name: str
has_options: bool
index: int
name: str
def __new__(cls, *args, **kwargs) -> Self: ...
def GetOptions(self) -> OneofOptions: ...
@final
class RepeatedCompositeContainer:
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def MergeFrom(self, object, /): ...
def add(self, *args, **kwargs): ... # incomplete
def append(self, object, /): ...
def extend(self, object, /): ...
def insert(self, *args, **kwargs): ... # incomplete
def pop(self, *args, **kwargs): ... # incomplete
def remove(self, object, /): ...
def reverse(self): ...
def sort(self, *args, **kwargs): ... # incomplete
def __deepcopy__(self, memo=None): ...
def __delitem__(self, other, /) -> None: ...
def __new__(cls, *args, **kwargs) -> Self: ...
def MergeFrom(self, other: RepeatedCompositeContainer | Iterable[Message], /) -> None: ...
def add(self, **kwargs: Any) -> Message: ... # Any: field names and values
def append(self, value: Message, /) -> None: ...
def extend(self, values: Iterable[Message], /) -> None: ...
def insert(self, key: int, value: Message, /) -> None: ...
def pop(self, key: int = -1, /) -> Message: ...
def remove(self, value: Message, /) -> None: ...
def reverse(self) -> None: ...
def sort(self, *, key: Callable[[Any], Any] | None = None, reverse: bool = False) -> None: ...
def clear(self) -> None: ...
def __deepcopy__(self, memo: Any = None) -> RepeatedCompositeContainer: ...
def __delitem__(self, key: int | slice, /) -> None: ...
def __eq__(self, other: object, /) -> bool: ...
def __ge__(self, other: object, /) -> bool: ...
def __getitem__(self, index, /): ...
def __getitem__(self, index: int | slice, /) -> Message: ...
def __gt__(self, other: object, /) -> bool: ...
def __le__(self, other: object, /) -> bool: ...
def __len__(self) -> int: ...
def __lt__(self, other: object, /) -> bool: ...
def __ne__(self, other: object, /) -> bool: ...
def __setitem__(self, index, object, /) -> None: ...
def __setitem__(self, index: int | slice, value: Message, /) -> None: ...
@final
class RepeatedScalarContainer:
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def MergeFrom(self, object, /): ...
def append(self, object, /): ...
def extend(self, object, /): ...
def insert(self, *args, **kwargs): ... # incomplete
def pop(self, *args, **kwargs): ... # incomplete
def remove(self, object, /): ...
def reverse(self): ...
def sort(self, *args, **kwargs): ... # incomplete
def __deepcopy__(self, memo=None): ...
def __delitem__(self, other, /) -> None: ...
def __new__(cls, *args, **kwargs) -> Self: ...
def MergeFrom(self, other: Any, /) -> None: ... # Any: bool, int, float, str, or bytes
def append(self, value: Any, /) -> None: ...
def extend(self, values: Any, /) -> None: ...
def insert(self, key: int, value: Any, /) -> None: ...
def pop(self, key: int = -1, /) -> Any: ...
def remove(self, value: Any, /) -> None: ...
def reverse(self) -> None: ...
def sort(self, *, key: Callable[[Any], Any] | None = None, reverse: bool = False) -> None: ...
def clear(self) -> None: ...
def __array__(self, dtype: Any = None, copy: bool | None = None) -> Any: ... # Any: numpy types
def __deepcopy__(self, memo: Any = None) -> RepeatedScalarContainer: ...
def __delitem__(self, key: int | slice, /) -> None: ...
def __eq__(self, other: object, /) -> bool: ...
def __ge__(self, other: object, /) -> bool: ...
def __getitem__(self, index, /): ...
def __getitem__(self, index: int | slice, /) -> Any: ...
def __gt__(self, other: object, /) -> bool: ...
def __le__(self, other: object, /) -> bool: ...
def __len__(self) -> int: ...
def __lt__(self, other: object, /) -> bool: ...
def __ne__(self, other: object, /) -> bool: ...
def __reduce__(self): ...
def __setitem__(self, index, object, /) -> None: ...
def __reduce__(self) -> tuple[Any, ...]: ...
def __setitem__(self, index: int | slice, value: Any, /) -> None: ...
@final
class ServiceDescriptor:
file: Incomplete
full_name: Incomplete
index: Incomplete
methods: Incomplete
methods_by_name: Incomplete
name: Incomplete
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def CopyToProto(self, object, /): ...
def FindMethodByName(self, object, /): ...
def GetOptions(self): ...
file: FileDescriptor
full_name: str
has_options: bool
index: int
methods: Sequence[MethodDescriptor]
methods_by_name: Mapping[str, MethodDescriptor]
name: str
def __new__(cls, *args, **kwargs) -> Self: ...
def CopyToProto(self, proto: ServiceDescriptorProto, /) -> None: ...
def FindMethodByName(self, name: str, /) -> MethodDescriptor: ...
def GetOptions(self) -> ServiceOptions: ...
@final
class UnknownFieldSet:
def __new__(cls, *args, **kwargs) -> Self: ... # incomplete
def __getitem__(self, index, /): ...
def __new__(cls, *args, **kwargs) -> Self: ...
def __getitem__(self, index: int, /) -> Any: ... # Any: internal unknown field object
def __len__(self) -> int: ...
def SetAllowOversizeProtos(object, /): ... # incomplete
def SetAllowOversizeProtos(allow: bool, /) -> None: ...
+13
View File
@@ -0,0 +1,13 @@
from typing import TypeVar
from google.protobuf.any_pb2 import Any
from google.protobuf.descriptor import Descriptor
from google.protobuf.message import Message
_MessageT = TypeVar("_MessageT", bound=Message)
def pack(msg: Message, type_url_prefix: str | None = "type.googleapis.com/", deterministic: bool | None = None) -> Any: ...
def unpack(any_msg: Any, msg: Message) -> bool: ...
def unpack_as(any_msg: Any, message_type: type[_MessageT]) -> _MessageT: ...
def type_name(any_msg: Any) -> str: ...
def is_type(any_msg: Any, des: Descriptor) -> bool: ...
+145 -127
View File
@@ -1,36 +1,43 @@
from collections.abc import Mapping, Sequence
from typing import Any
from .descriptor_pb2 import (
DescriptorProto,
EnumDescriptorProto,
EnumOptions,
EnumValueOptions,
FieldOptions,
FileDescriptorProto,
FileOptions,
MessageOptions,
MethodDescriptorProto,
MethodOptions,
OneofOptions,
ServiceDescriptorProto,
ServiceOptions,
)
from .descriptor_pool import DescriptorPool
from .message import Message
class Error(Exception): ...
class TypeTransformationError(Error): ...
class DescriptorMetaclass(type):
def __instancecheck__(self, obj: Any) -> bool: ...
def __instancecheck__(cls, obj: object) -> bool: ...
_internal_create_key: object
_USE_C_DESCRIPTORS: bool
class DescriptorBase(metaclass=DescriptorMetaclass):
has_options: Any
has_options: bool
def __init__(self, file, options, serialized_options, options_class_name) -> None: ...
def GetOptions(self): ...
def GetOptions(self) -> Any: ... # Any: overridden with specific *Options in subclasses
class _NestedDescriptorBase(DescriptorBase):
name: Any
full_name: Any
file: Any
containing_type: Any
name: str
full_name: str
file: FileDescriptor
containing_type: Descriptor | None
def __init__(
self,
options,
@@ -43,87 +50,89 @@ class _NestedDescriptorBase(DescriptorBase):
serialized_end=None,
serialized_options=None,
) -> None: ...
def CopyToProto(self, proto): ...
def CopyToProto(self, proto: Any) -> None: ... # Any: overridden with specific *Proto in subclasses
class Descriptor(_NestedDescriptorBase):
fields: Any
fields_by_number: Any
fields_by_name: Any
nested_types: Any
nested_types_by_name: Any
enum_types: Any
enum_types_by_name: Any
enum_values_by_name: Any
extensions: Any
extensions_by_name: Any
is_extendable: Any
extension_ranges: Any
oneofs: Any
oneofs_by_name: Any
fields: Sequence[FieldDescriptor]
fields_by_number: Mapping[int, FieldDescriptor]
fields_by_name: Mapping[str, FieldDescriptor]
@property
def fields_by_camelcase_name(self) -> Mapping[str, FieldDescriptor]: ...
nested_types: Sequence[Descriptor]
nested_types_by_name: Mapping[str, Descriptor]
enum_types: Sequence[EnumDescriptor]
enum_types_by_name: Mapping[str, EnumDescriptor]
enum_values_by_name: dict[str, EnumValueDescriptor]
extensions: Sequence[FieldDescriptor]
extensions_by_name: Mapping[str, FieldDescriptor]
is_extendable: bool
extension_ranges: list[tuple[int, int]]
oneofs: Sequence[OneofDescriptor]
oneofs_by_name: Mapping[str, OneofDescriptor]
def __init__(
self,
name: str,
full_name: str,
filename: Any,
filename: str | None,
containing_type: Descriptor | None,
fields: list[FieldDescriptor],
nested_types: list[FieldDescriptor],
enum_types: list[EnumDescriptor],
extensions: list[FieldDescriptor],
options=None,
serialized_options=None,
options: MessageOptions | None = None,
serialized_options: bytes | None = None,
is_extendable: bool | None = True,
extension_ranges=None,
extension_ranges: list[tuple[int, int]] | None = None,
oneofs: list[OneofDescriptor] | None = None,
file: FileDescriptor | None = None,
serialized_start=None,
serialized_end=None,
serialized_start: int | None = None,
serialized_end: int | None = None,
syntax: str | None = None,
is_map_entry=False,
create_key=None,
is_map_entry: bool = False,
create_key: object | None = None,
): ...
def EnumValueName(self, enum, value): ...
def CopyToProto(self, proto): ...
def EnumValueName(self, enum: str, value: int) -> str: ...
def CopyToProto(self, proto: DescriptorProto) -> None: ...
def GetOptions(self) -> MessageOptions: ...
class FieldDescriptor(DescriptorBase):
TYPE_DOUBLE: Any
TYPE_FLOAT: Any
TYPE_INT64: Any
TYPE_UINT64: Any
TYPE_INT32: Any
TYPE_FIXED64: Any
TYPE_FIXED32: Any
TYPE_BOOL: Any
TYPE_STRING: Any
TYPE_GROUP: Any
TYPE_MESSAGE: Any
TYPE_BYTES: Any
TYPE_UINT32: Any
TYPE_ENUM: Any
TYPE_SFIXED32: Any
TYPE_SFIXED64: Any
TYPE_SINT32: Any
TYPE_SINT64: Any
MAX_TYPE: Any
CPPTYPE_INT32: Any
CPPTYPE_INT64: Any
CPPTYPE_UINT32: Any
CPPTYPE_UINT64: Any
CPPTYPE_DOUBLE: Any
CPPTYPE_FLOAT: Any
CPPTYPE_BOOL: Any
CPPTYPE_ENUM: Any
CPPTYPE_STRING: Any
CPPTYPE_MESSAGE: Any
MAX_CPPTYPE: Any
LABEL_OPTIONAL: Any
LABEL_REQUIRED: Any
LABEL_REPEATED: Any
MAX_LABEL: Any
MAX_FIELD_NUMBER: Any
FIRST_RESERVED_FIELD_NUMBER: Any
LAST_RESERVED_FIELD_NUMBER: Any
TYPE_DOUBLE: int
TYPE_FLOAT: int
TYPE_INT64: int
TYPE_UINT64: int
TYPE_INT32: int
TYPE_FIXED64: int
TYPE_FIXED32: int
TYPE_BOOL: int
TYPE_STRING: int
TYPE_GROUP: int
TYPE_MESSAGE: int
TYPE_BYTES: int
TYPE_UINT32: int
TYPE_ENUM: int
TYPE_SFIXED32: int
TYPE_SFIXED64: int
TYPE_SINT32: int
TYPE_SINT64: int
MAX_TYPE: int
CPPTYPE_INT32: int
CPPTYPE_INT64: int
CPPTYPE_UINT32: int
CPPTYPE_UINT64: int
CPPTYPE_DOUBLE: int
CPPTYPE_FLOAT: int
CPPTYPE_BOOL: int
CPPTYPE_ENUM: int
CPPTYPE_STRING: int
CPPTYPE_MESSAGE: int
MAX_CPPTYPE: int
LABEL_OPTIONAL: int
LABEL_REQUIRED: int
LABEL_REPEATED: int
MAX_LABEL: int
MAX_FIELD_NUMBER: int
FIRST_RESERVED_FIELD_NUMBER: int
LAST_RESERVED_FIELD_NUMBER: int
def __new__(
cls,
name,
@@ -147,14 +156,12 @@ class FieldDescriptor(DescriptorBase):
file=None,
create_key=None,
): ...
name: Any
full_name: Any
index: Any
number: Any
type: Any
cpp_type: Any
@property
def label(self): ...
name: str
full_name: str
index: int
number: int
type: int
cpp_type: int
@property
def is_required(self) -> bool: ...
@property
@@ -165,14 +172,15 @@ class FieldDescriptor(DescriptorBase):
def has_presence(self) -> bool: ...
@property
def is_packed(self) -> bool: ...
has_default_value: Any
default_value: Any
containing_type: Any
message_type: Any
enum_type: Any
is_extension: Any
extension_scope: Any
containing_oneof: Any
has_default_value: bool
default_value: Any # Any: str, int, float, bytes, or bool
containing_type: Descriptor | None
message_type: Descriptor | None
enum_type: EnumDescriptor | None
is_extension: bool
extension_scope: Descriptor | None
containing_oneof: OneofDescriptor | None
json_name: str
def __init__(
self,
name,
@@ -197,7 +205,7 @@ class FieldDescriptor(DescriptorBase):
create_key=None,
) -> None: ...
@staticmethod
def ProtoTypeToCppProtoType(proto_type): ...
def ProtoTypeToCppProtoType(proto_type: int) -> int: ...
def GetOptions(self) -> FieldOptions: ...
class EnumDescriptor(_NestedDescriptorBase):
@@ -215,9 +223,9 @@ class EnumDescriptor(_NestedDescriptorBase):
serialized_end=None,
create_key=None,
): ...
values: Any
values_by_name: Any
values_by_number: Any
values: Sequence[EnumValueDescriptor]
values_by_name: Mapping[str, EnumValueDescriptor]
values_by_number: Mapping[int, EnumValueDescriptor]
def __init__(
self,
name,
@@ -232,34 +240,36 @@ class EnumDescriptor(_NestedDescriptorBase):
serialized_end=None,
create_key=None,
) -> None: ...
def CopyToProto(self, proto): ...
@property
def is_closed(self) -> bool: ...
def CopyToProto(self, proto: EnumDescriptorProto) -> None: ...
def GetOptions(self) -> EnumOptions: ...
class EnumValueDescriptor(DescriptorBase):
def __new__(cls, name, index, number, type=None, options=None, serialized_options=None, create_key=None): ...
name: Any
index: Any
number: Any
type: Any
name: str
index: int
number: int
type: EnumDescriptor
def __init__(self, name, index, number, type=None, options=None, serialized_options=None, create_key=None) -> None: ...
def GetOptions(self) -> EnumValueOptions: ...
class OneofDescriptor:
class OneofDescriptor(DescriptorBase):
def __new__(cls, name, full_name, index, containing_type, fields, options=None, serialized_options=None, create_key=None): ...
name: Any
full_name: Any
index: Any
containing_type: Any
fields: Any
name: str
full_name: str
index: int
containing_type: Descriptor
fields: Sequence[FieldDescriptor]
def __init__(
self, name, full_name, index, containing_type, fields, options=None, serialized_options=None, create_key=None
) -> None: ...
def GetOptions(self) -> OneofOptions: ...
class ServiceDescriptor(_NestedDescriptorBase):
index: Any
methods: Any
methods_by_name: Any
index: int
methods: Sequence[MethodDescriptor]
methods_by_name: Mapping[str, MethodDescriptor]
def __init__(
self,
name: str,
@@ -267,14 +277,14 @@ class ServiceDescriptor(_NestedDescriptorBase):
index: int,
methods: list[MethodDescriptor],
options: ServiceOptions | None = None,
serialized_options=None,
serialized_options: bytes | None = None,
file: FileDescriptor | None = None,
serialized_start=None,
serialized_end=None,
create_key=None,
serialized_start: int | None = None,
serialized_end: int | None = None,
create_key: object | None = None,
): ...
def FindMethodByName(self, name): ...
def CopyToProto(self, proto): ...
def FindMethodByName(self, name: str) -> MethodDescriptor: ...
def CopyToProto(self, proto: ServiceDescriptorProto) -> None: ...
def GetOptions(self) -> ServiceOptions: ...
class MethodDescriptor(DescriptorBase):
@@ -292,12 +302,12 @@ class MethodDescriptor(DescriptorBase):
serialized_options=None,
create_key=None,
): ...
name: Any
full_name: Any
index: Any
containing_service: Any
input_type: Any
output_type: Any
name: str
full_name: str
index: int
containing_service: ServiceDescriptor
input_type: Descriptor
output_type: Descriptor
client_streaming: bool
server_streaming: bool
def __init__(
@@ -314,6 +324,7 @@ class MethodDescriptor(DescriptorBase):
serialized_options=None,
create_key=None,
) -> None: ...
def CopyToProto(self, proto: MethodDescriptorProto) -> None: ...
def GetOptions(self) -> MethodOptions: ...
class FileDescriptor(DescriptorBase):
@@ -332,16 +343,16 @@ class FileDescriptor(DescriptorBase):
create_key=None,
): ...
_options: Any
pool: Any
message_types_by_name: Any
name: Any
package: Any
serialized_pb: Any
enum_types_by_name: Any
extensions_by_name: Any
services_by_name: Any
dependencies: Any
public_dependencies: Any
pool: DescriptorPool
message_types_by_name: Mapping[str, Descriptor]
name: str
package: str
serialized_pb: bytes
enum_types_by_name: Mapping[str, EnumDescriptor]
extensions_by_name: Mapping[str, FieldDescriptor]
services_by_name: Mapping[str, ServiceDescriptor]
dependencies: Sequence[FileDescriptor]
public_dependencies: Sequence[FileDescriptor]
def __init__(
self,
name,
@@ -356,8 +367,15 @@ class FileDescriptor(DescriptorBase):
pool=None,
create_key=None,
) -> None: ...
def CopyToProto(self, proto): ...
def CopyToProto(self, proto: FileDescriptorProto) -> None: ...
def GetOptions(self) -> FileOptions: ...
def MakeDescriptor(desc_proto, package="", build_file_if_cpp=True, syntax=None, edition=None, file_desc=None): ...
def _ParseOptions(message: Message, string: bytes) -> Message: ...
def MakeDescriptor(
desc_proto: DescriptorProto,
package: str = "",
build_file_if_cpp: bool = True,
syntax: str | None = None,
edition: str | None = None,
file_desc: FileDescriptor | None = None,
) -> Descriptor: ...
@@ -9,8 +9,8 @@ class DescriptorDatabaseConflictingDefinitionError(Error): ...
class DescriptorDatabase:
def __init__(self) -> None: ...
def Add(self, file_desc_proto) -> None: ...
def FindFileByName(self, name): ...
def FindFileContainingSymbol(self, symbol): ...
def FindFileContainingExtension(self, extendee_name, extension_number) -> FileDescriptorProto | None: ...
def FindAllExtensionNumbers(self, extendee_name) -> list[int]: ...
def Add(self, file_desc_proto: FileDescriptorProto) -> None: ...
def FindFileByName(self, name: str) -> FileDescriptorProto: ...
def FindFileContainingSymbol(self, symbol: str) -> FileDescriptorProto: ...
def FindFileContainingExtension(self, extendee_name: str, extension_number: int) -> FileDescriptorProto | None: ...
def FindAllExtensionNumbers(self, extendee_name: str) -> list[int]: ...
@@ -1,22 +1,36 @@
from _typeshed import Unused
from typing import Any
from typing_extensions import Self
from .descriptor import (
Descriptor,
EnumDescriptor,
FieldDescriptor,
FileDescriptor,
MethodDescriptor,
OneofDescriptor,
ServiceDescriptor,
)
from .descriptor_pb2 import FeatureSetDefaults, FileDescriptorProto
class DescriptorPool:
def __new__(cls, descriptor_db=None): ...
def __new__(cls, descriptor_db: Any = None) -> Self: ...
def __init__( # pyright: ignore[reportInconsistentConstructor]
self, descriptor_db=None, use_deprecated_legacy_json_field_conflicts: Unused = False
self, descriptor_db: Any = None, use_deprecated_legacy_json_field_conflicts: Unused = False
) -> None: ...
def Add(self, file_desc_proto): ...
def AddSerializedFile(self, serialized_file_desc_proto): ...
def FindFileByName(self, file_name): ...
def FindFileContainingSymbol(self, symbol): ...
def FindMessageTypeByName(self, full_name): ...
def FindEnumTypeByName(self, full_name): ...
def FindFieldByName(self, full_name): ...
def FindOneofByName(self, full_name): ...
def FindExtensionByName(self, full_name): ...
def FindExtensionByNumber(self, message_descriptor, number): ...
def FindAllExtensions(self, message_descriptor): ...
def FindServiceByName(self, full_name): ...
def FindMethodByName(self, full_name): ...
def Add(self, file_desc_proto: FileDescriptorProto) -> None: ...
def AddSerializedFile(self, serialized_file_desc_proto: bytes) -> FileDescriptor: ...
def FindFileByName(self, file_name: str) -> FileDescriptor: ...
def FindFileContainingSymbol(self, symbol: str) -> FileDescriptor: ...
def FindMessageTypeByName(self, full_name: str) -> Descriptor: ...
def FindEnumTypeByName(self, full_name: str) -> EnumDescriptor: ...
def FindFieldByName(self, full_name: str) -> FieldDescriptor: ...
def FindOneofByName(self, full_name: str) -> OneofDescriptor: ...
def FindExtensionByName(self, full_name: str) -> FieldDescriptor: ...
def FindExtensionByNumber(self, message_descriptor: Descriptor, number: int) -> FieldDescriptor: ...
def FindAllExtensions(self, message_descriptor: Descriptor) -> list[FieldDescriptor]: ...
def FindServiceByName(self, full_name: str) -> ServiceDescriptor: ...
def FindMethodByName(self, full_name: str) -> MethodDescriptor: ...
def SetFeatureSetDefaults(self, defaults: FeatureSetDefaults) -> None: ...
def Default(): ...
def Default() -> DescriptorPool: ...
@@ -0,0 +1,16 @@
from datetime import timedelta
from google.protobuf.duration_pb2 import Duration
def from_json_string(value: str) -> Duration: ...
def from_microseconds(micros: float) -> Duration: ...
def from_milliseconds(millis: float) -> Duration: ...
def from_nanoseconds(nanos: float) -> Duration: ...
def from_seconds(seconds: float) -> Duration: ...
def from_timedelta(td: timedelta) -> Duration: ...
def to_json_string(duration: Duration) -> str: ...
def to_microseconds(duration: Duration) -> int: ...
def to_milliseconds(duration: Duration) -> int: ...
def to_nanoseconds(duration: Duration) -> int: ...
def to_seconds(duration: Duration) -> int: ...
def to_timedelta(duration: Duration) -> timedelta: ...
@@ -1,4 +1,9 @@
from types import ModuleType
from typing import Any
def BuildMessageAndEnumDescriptors(file_des, module: dict[str, Any]) -> None: ...
def BuildTopDescriptorsAndMessages(file_des, module_name: str, module: dict[str, Any]) -> None: ...
from google.protobuf.descriptor import FileDescriptor
def BuildMessageAndEnumDescriptors(file_des: FileDescriptor, module: dict[str, Any]) -> None: ...
def BuildTopDescriptorsAndMessages(file_des: FileDescriptor, module_name: str, module: dict[str, Any]) -> None: ...
def AddHelpersToExtensions(file_des: FileDescriptor) -> None: ...
def BuildServices(file_des: FileDescriptor, module_name: str, module: ModuleType) -> None: ...
@@ -1,8 +1,7 @@
from collections.abc import Callable, Iterable, Iterator, MutableMapping, MutableSequence, Sequence
from typing import Any, Protocol, SupportsIndex, TypeVar, overload, type_check_only
from typing_extensions import Self
from google.protobuf.descriptor import Descriptor
from google.protobuf.descriptor import Descriptor, FieldDescriptor
from google.protobuf.internal.message_listener import MessageListener
from google.protobuf.internal.python_message import GeneratedProtocolMessageType
from google.protobuf.message import Message
@@ -20,24 +19,26 @@ class _ValueChecker(Protocol[_T]):
class BaseContainer(Sequence[_T]):
__slots__ = ["_message_listener", "_values"]
def __init__(self, message_listener: MessageListener) -> None: ...
@overload
def __getitem__(self, key: SupportsIndex) -> _T: ...
@overload
def __getitem__(self, key: slice) -> list[_T]: ...
def __len__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __hash__(self) -> int: ...
# Same as list.sort, the extra sort_function kwarg errors in Python 3
def sort(self, *, key: Callable[[_T], Any] | None = None, reverse: bool = False) -> None: ...
def reverse(self) -> None: ...
@overload
def __getitem__(self, key: SupportsIndex) -> _T: ...
@overload
def __getitem__(self, key: slice) -> list[_T]: ...
class RepeatedScalarFieldContainer(BaseContainer[_ScalarV], MutableSequence[_ScalarV]):
__slots__ = ["_type_checker"]
def __init__(self, message_listener: MessageListener, type_checker: _ValueChecker[_ScalarV]) -> None: ...
def __init__(
self, message_listener: MessageListener, type_checker: _ValueChecker[_ScalarV], field: FieldDescriptor | None = None
) -> None: ...
def append(self, value: _ScalarV) -> None: ...
def insert(self, key: int, value: _ScalarV) -> None: ...
def extend(self, elem_seq: Iterable[_ScalarV] | None) -> None: ...
def MergeFrom(self, other: Self | Iterable[_ScalarV]) -> None: ...
def MergeFrom(self, other: RepeatedScalarFieldContainer[_ScalarV] | Iterable[_ScalarV]) -> None: ...
def remove(self, elem: _ScalarV) -> None: ...
def pop(self, key: int = -1) -> _ScalarV: ...
@overload
@@ -46,15 +47,17 @@ class RepeatedScalarFieldContainer(BaseContainer[_ScalarV], MutableSequence[_Sca
def __setitem__(self, key: slice, value: Iterable[_ScalarV]) -> None: ...
def __delitem__(self, key: int | slice) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __deepcopy__(self, unused_memo: Any = None) -> RepeatedScalarFieldContainer[_ScalarV]: ...
def __array__(self, dtype: Any = None, copy: bool | None = None) -> Any: ... # Any: numpy types
class RepeatedCompositeFieldContainer(BaseContainer[_MessageV], MutableSequence[_MessageV]):
__slots__ = ["_message_descriptor"]
def __init__(self, message_listener: MessageListener, message_descriptor: Descriptor) -> None: ...
def add(self, **kwargs: Any) -> _MessageV: ...
def add(self, **kwargs: Any) -> _MessageV: ... # Any: field names and values
def append(self, value: _MessageV) -> None: ...
def insert(self, key: int, value: _MessageV) -> None: ...
def extend(self, elem_seq: Iterable[_MessageV]) -> None: ...
def MergeFrom(self, other: Self | Iterable[_MessageV]) -> None: ...
def MergeFrom(self, other: RepeatedCompositeFieldContainer[_MessageV] | Iterable[_MessageV]) -> None: ...
def remove(self, elem: _MessageV) -> None: ...
def pop(self, key: int = -1) -> _MessageV: ...
@overload
@@ -73,21 +76,22 @@ class ScalarMap(MutableMapping[_K, _ScalarV]):
value_checker: _ValueChecker[_ScalarV],
entry_descriptor: Descriptor,
) -> None: ...
def __setitem__(self, k: _K, v: _ScalarV) -> None: ...
def __delitem__(self, v: _K) -> None: ...
def __getitem__(self, k: _K) -> _ScalarV: ...
def __len__(self) -> int: ...
def __iter__(self) -> Iterator[_K]: ...
def __eq__(self, other: object) -> bool: ...
def __getitem__(self, key: _K) -> _ScalarV: ...
@overload
def get(self, key: _K, default: None = None) -> _ScalarV | None: ...
@overload
def get(self, key: _K, default: _ScalarV) -> _ScalarV: ...
@overload
def get(self, key: _K, default: _T) -> _ScalarV | _T: ...
def __setitem__(self, key: _K, value: _ScalarV) -> None: ...
def __delitem__(self, key: _K) -> None: ...
def __len__(self) -> int: ...
def __iter__(self) -> Iterator[_K]: ...
def __eq__(self, other: object) -> bool: ...
def setdefault(self, key: _K, value: _ScalarV | None = None) -> _ScalarV: ...
def MergeFrom(self, other: Self): ...
def MergeFrom(self, other: ScalarMap[_K, _ScalarV]) -> None: ...
def InvalidateIterators(self) -> None: ...
def clear(self) -> None: ...
def GetEntryClass(self) -> GeneratedProtocolMessageType: ...
class MessageMap(MutableMapping[_K, _MessageV]):
@@ -99,20 +103,37 @@ class MessageMap(MutableMapping[_K, _MessageV]):
key_checker: _ValueChecker[_K],
entry_descriptor: Descriptor,
) -> None: ...
def __setitem__(self, k: _K, v: _MessageV) -> None: ...
def __delitem__(self, v: _K) -> None: ...
def __getitem__(self, k: _K) -> _MessageV: ...
def __len__(self) -> int: ...
def __iter__(self) -> Iterator[_K]: ...
def __eq__(self, other: object) -> bool: ...
def __getitem__(self, key: _K) -> _MessageV: ...
def get_or_create(self, key: _K) -> _MessageV: ...
@overload
def get(self, key: _K, default: None = None) -> _MessageV | None: ...
@overload
def get(self, key: _K, default: _MessageV) -> _MessageV: ...
@overload
def get(self, key: _K, default: _T) -> _MessageV | _T: ...
def get_or_create(self, key: _K) -> _MessageV: ...
def __setitem__(self, key: _K, value: _MessageV) -> None: ...
def __delitem__(self, key: _K) -> None: ...
def __len__(self) -> int: ...
def __iter__(self) -> Iterator[_K]: ...
def __eq__(self, other: object) -> bool: ...
def setdefault(self, key: _K, value: _MessageV | None = None) -> _MessageV: ...
def MergeFrom(self, other: Self): ...
def MergeFrom(self, other: MessageMap[_K, _MessageV]) -> None: ...
def InvalidateIterators(self) -> None: ...
def clear(self) -> None: ...
def GetEntryClass(self) -> GeneratedProtocolMessageType: ...
class UnknownFieldRef:
def __init__(self, parent: UnknownFieldSet, index: int) -> None: ...
@property
def field_number(self) -> int: ...
@property
def wire_type(self) -> int: ...
@property
def data(self) -> Any: ... # Any: int, bytes, or UnknownFieldSet
class UnknownFieldSet:
__slots__ = ["_values"]
def __init__(self) -> None: ...
def __getitem__(self, index: int) -> UnknownFieldRef: ...
def __len__(self) -> int: ...
def __iter__(self) -> Iterator[UnknownFieldRef]: ...
@@ -8,7 +8,17 @@ from google.protobuf.message import Message
_Decoder: TypeAlias = Callable[[str, int, int, Message, dict[FieldDescriptor, Any]], int]
_NewDefault: TypeAlias = Callable[[Message], Message]
def ReadTag(buffer, pos): ...
def IsDefaultScalarValue(value: Any) -> bool: ...
def ReadTag(buffer: bytes, pos: int) -> tuple[bytes, int]: ...
def DecodeTag(tag_bytes: bytes) -> tuple[int, int]: ...
def EnumDecoder(
field_number: int,
is_repeated: bool,
is_packed: bool,
key: FieldDescriptor,
new_default: _NewDefault,
clear_if_default: bool = False,
) -> _Decoder: ...
Int32Decoder: _Decoder
Int64Decoder: _Decoder
@@ -24,14 +34,6 @@ FloatDecoder: _Decoder
DoubleDecoder: _Decoder
BoolDecoder: _Decoder
def EnumDecoder(
field_number: int,
is_repeated: bool,
is_packed: bool,
key: FieldDescriptor,
new_default: _NewDefault,
clear_if_default: bool = False,
) -> _Decoder: ...
def StringDecoder(
field_number: int,
is_repeated: bool,
@@ -58,4 +60,9 @@ def MessageDecoder(
MESSAGE_SET_ITEM_TAG: bytes
def MessageSetItemDecoder(descriptor: Descriptor) -> _Decoder: ...
def MapDecoder(field_descriptor, new_default, is_message_map) -> _Decoder: ...
def UnknownMessageSetItemDecoder() -> _Decoder: ...
def MapDecoder(field_descriptor: FieldDescriptor, new_default: _NewDefault, is_message_map: bool) -> _Decoder: ...
DEFAULT_RECURSION_LIMIT: int
def SetRecursionLimit(new_limit: int) -> None: ...
@@ -19,4 +19,5 @@ class _EnumTypeWrapper(type, Generic[_V]):
def values(self) -> list[_V]: ...
def items(self) -> list[tuple[str, _V]]: ...
class EnumTypeWrapper(_EnumTypeWrapper[int]): ...
class EnumTypeWrapper(_EnumTypeWrapper[int]):
ValueType = int
@@ -19,10 +19,10 @@ class _ExtensionDict(Generic[_ContainerMessageT]):
def __getitem__(
self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT]
) -> _ExtenderMessageT: ...
def __len__(self) -> int: ...
def __setitem__(
self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT], value: _ExtenderMessageT
) -> None: ...
def __delitem__(self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT]) -> None: ...
def __contains__(self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT]) -> bool: ...
def __iter__(self) -> Iterator[_ExtensionFieldDescriptor[_ContainerMessageT, Any]]: ...
def __len__(self) -> int: ...
def __contains__(self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT]) -> bool: ...
@@ -0,0 +1,14 @@
from google.protobuf.descriptor import Descriptor, FieldDescriptor as FieldDescriptor
from google.protobuf.message import Message
class FieldMask:
def ToJsonString(self) -> str: ...
def FromJsonString(self, value: str) -> None: ...
def IsValidForDescriptor(self, message_descriptor: Descriptor) -> bool: ...
def AllFieldsFromDescriptor(self, message_descriptor: Descriptor) -> None: ...
def CanonicalFormFromMask(self, mask: FieldMask) -> None: ...
def Union(self, mask1: FieldMask, mask2: FieldMask) -> None: ...
def Intersect(self, mask1: FieldMask, mask2: FieldMask) -> None: ...
def MergeMessage(
self, source: Message, destination: Message, replace_message_field: bool = False, replace_repeated_field: bool = False
) -> None: ...
@@ -1,5 +1,5 @@
class MessageListener:
def Modified(self) -> None: ...
class NullMessageListener(MessageListener):
class NullMessageListener:
def Modified(self) -> None: ...
@@ -1,3 +1,5 @@
from typing import Any
class GeneratedProtocolMessageType(type):
def __new__(cls, name, bases, dictionary): ...
def __init__(cls, name, bases, dictionary): ...
def __new__(cls, name: str, bases: tuple[type, ...], dictionary: dict[str, Any]) -> GeneratedProtocolMessageType: ...
def __init__(cls, name: str, bases: tuple[type, ...], dictionary: dict[str, Any]) -> None: ...
@@ -0,0 +1,21 @@
from _typeshed import OptExcInfo
from collections.abc import Callable
from typing import TypeVar
from unittest import TestCase as _TestCase, TestResult
_T = TypeVar("_T")
class LocalTestResult(TestResult):
parent_result: TestResult
def __init__(self, parent_result: TestResult) -> None: ...
def addError(self, test: _TestCase, error: OptExcInfo) -> None: ...
def addFailure(self, test: _TestCase, error: OptExcInfo) -> None: ...
def addSkip(self, test: _TestCase, reason: str) -> None: ...
def addDuration(self, test: _TestCase, duration: float) -> None: ...
class ReferenceLeakCheckerMixin:
NB_RUNS: int
def run(self, result: TestResult | None = None) -> TestResult: ...
def SkipReferenceLeakChecker(reason: str) -> Callable[[_T], _T]: ...
def TestCase(test_class: _T) -> _T: ...
@@ -1,7 +1,16 @@
from typing import Generic, TypeVar
from collections.abc import Callable
from typing import Any, Generic, TypeVar
from google.protobuf.descriptor import EnumDescriptor, FieldDescriptor
_T = TypeVar("_T")
def TruncateToFourByteFloat(original: float) -> float: ...
def ToShortestFloat(original: float) -> float: ...
def GetTypeChecker(
field: FieldDescriptor,
) -> TypeChecker[Any] | IntValueChecker | EnumValueChecker | UnicodeValueChecker | DoubleValueChecker | BoolValueChecker: ...
class TypeChecker(Generic[_T]):
def __init__(self, *acceptable_types: _T): ...
def CheckValue(self, proposed_value: _T) -> _T: ...
@@ -9,3 +18,38 @@ class TypeChecker(Generic[_T]):
class TypeCheckerWithDefault(TypeChecker[_T]):
def __init__(self, default_value: _T, *acceptable_types: _T): ...
def DefaultValue(self) -> _T: ...
class BoolValueChecker:
def CheckValue(self, proposed_value: bool) -> bool: ...
def DefaultValue(self) -> bool: ...
class IntValueChecker:
def CheckValue(self, proposed_value: int) -> int: ...
def DefaultValue(self) -> int: ...
class EnumValueChecker:
def __init__(self, enum_type: EnumDescriptor) -> None: ...
def CheckValue(self, proposed_value: int) -> int: ...
def DefaultValue(self) -> int: ...
class UnicodeValueChecker:
def CheckValue(self, proposed_value: str) -> str: ...
def DefaultValue(self) -> str: ...
class Int32ValueChecker(IntValueChecker): ...
class Uint32ValueChecker(IntValueChecker): ...
class Int64ValueChecker(IntValueChecker): ...
class Uint64ValueChecker(IntValueChecker): ...
class DoubleValueChecker:
def CheckValue(self, proposed_value: float) -> float: ...
def DefaultValue(self) -> float: ...
class FloatValueChecker(DoubleValueChecker):
def CheckValue(self, proposed_value: float) -> float: ...
TYPE_TO_BYTE_SIZE_FN: dict[int, Callable[..., int]]
TYPE_TO_ENCODER: dict[int, Callable[..., Any]]
TYPE_TO_SIZER: dict[int, Callable[..., Any]]
TYPE_TO_DECODER: dict[int, Callable[..., Any]]
FIELD_TYPE_TO_WIRE_TYPE: dict[int, int]
@@ -1,19 +1,21 @@
from _typeshed import Incomplete, SupportsItems
from _typeshed import SupportsItems
from collections.abc import Iterable, Iterator, KeysView, Mapping, Sequence
from datetime import datetime, timedelta, tzinfo
from typing import Any as tAny
from typing_extensions import TypeAlias
from google.protobuf import struct_pb2
from google.protobuf.descriptor import Descriptor
from google.protobuf.message import Message as _Message
class Any:
__slots__ = ()
type_url: str
value: Incomplete
def Pack(self, msg, type_url_prefix: str = "type.googleapis.com/", deterministic=None) -> None: ...
def Unpack(self, msg) -> bool: ...
value: bytes
def Pack(self, msg: _Message, type_url_prefix: str = "type.googleapis.com/", deterministic: bool | None = None) -> None: ...
def Unpack(self, msg: _Message) -> bool: ...
def TypeName(self) -> str: ...
def Is(self, descriptor) -> bool: ...
def Is(self, descriptor: Descriptor) -> bool: ...
class Timestamp:
__slots__ = ()
@@ -32,13 +34,17 @@ class Timestamp:
def FromSeconds(self, seconds: int) -> None: ...
def ToDatetime(self, tzinfo: tzinfo | None = None) -> datetime: ...
def FromDatetime(self, dt: datetime) -> None: ...
def __add__(self, value: Duration | timedelta) -> datetime: ...
def __radd__(self, value: tAny) -> datetime: ...
def __sub__(self, value: Timestamp | Duration | timedelta) -> datetime | timedelta: ...
def __rsub__(self, dt: datetime) -> timedelta: ...
class Duration:
__slots__ = ()
def ToJsonString(self) -> str: ...
seconds: int
nanos: int
def FromJsonString(self, value: tAny) -> None: ...
def FromJsonString(self, value: str) -> None: ...
def ToNanoseconds(self) -> int: ...
def ToMicroseconds(self) -> int: ...
def ToMilliseconds(self) -> int: ...
@@ -49,18 +55,22 @@ class Duration:
def FromSeconds(self, seconds: int) -> None: ...
def ToTimedelta(self) -> timedelta: ...
def FromTimedelta(self, td: timedelta) -> None: ...
def __add__(self, value: Timestamp | timedelta) -> datetime | timedelta: ...
def __radd__(self, value: tAny) -> datetime | timedelta: ...
def __sub__(self, value: Duration | timedelta) -> timedelta: ...
def __rsub__(self, value: datetime | timedelta) -> datetime | timedelta: ...
class FieldMask:
__slots__ = ()
def ToJsonString(self) -> str: ...
def FromJsonString(self, value: tAny) -> None: ...
def IsValidForDescriptor(self, message_descriptor: tAny): ...
def AllFieldsFromDescriptor(self, message_descriptor: tAny) -> None: ...
def CanonicalFormFromMask(self, mask: tAny) -> None: ...
def Union(self, mask1: tAny, mask2: tAny) -> None: ...
def Intersect(self, mask1: tAny, mask2: tAny) -> None: ...
def FromJsonString(self, value: str) -> None: ...
def IsValidForDescriptor(self, message_descriptor: Descriptor) -> bool: ...
def AllFieldsFromDescriptor(self, message_descriptor: Descriptor) -> None: ...
def CanonicalFormFromMask(self, mask: FieldMask) -> None: ...
def Union(self, mask1: FieldMask, mask2: FieldMask) -> None: ...
def Intersect(self, mask1: FieldMask, mask2: FieldMask) -> None: ...
def MergeMessage(
self, source: tAny, destination: tAny, replace_message_field: bool = False, replace_repeated_field: bool = False
self, source: _Message, destination: _Message, replace_message_field: bool = False, replace_repeated_field: bool = False
) -> None: ...
_StructValue: TypeAlias = struct_pb2.Struct | struct_pb2.ListValue | str | float | bool | None
@@ -1,50 +1,50 @@
from typing import Any
from google.protobuf.message import Message
TAG_TYPE_BITS: Any
TAG_TYPE_MASK: Any
WIRETYPE_VARINT: Any
WIRETYPE_FIXED64: Any
WIRETYPE_LENGTH_DELIMITED: Any
WIRETYPE_START_GROUP: Any
WIRETYPE_END_GROUP: Any
WIRETYPE_FIXED32: Any
INT32_MAX: Any
INT32_MIN: Any
UINT32_MAX: Any
INT64_MAX: Any
INT64_MIN: Any
UINT64_MAX: Any
FORMAT_UINT32_LITTLE_ENDIAN: Any
FORMAT_UINT64_LITTLE_ENDIAN: Any
FORMAT_FLOAT_LITTLE_ENDIAN: Any
FORMAT_DOUBLE_LITTLE_ENDIAN: Any
TAG_TYPE_BITS: int
TAG_TYPE_MASK: int
WIRETYPE_VARINT: int
WIRETYPE_FIXED64: int
WIRETYPE_LENGTH_DELIMITED: int
WIRETYPE_START_GROUP: int
WIRETYPE_END_GROUP: int
WIRETYPE_FIXED32: int
INT32_MAX: int
INT32_MIN: int
UINT32_MAX: int
INT64_MAX: int
INT64_MIN: int
UINT64_MAX: int
FORMAT_UINT32_LITTLE_ENDIAN: str
FORMAT_UINT64_LITTLE_ENDIAN: str
FORMAT_FLOAT_LITTLE_ENDIAN: str
FORMAT_DOUBLE_LITTLE_ENDIAN: str
def PackTag(field_number, wire_type): ...
def UnpackTag(tag): ...
def ZigZagEncode(value): ...
def ZigZagDecode(value): ...
def Int32ByteSize(field_number, int32): ...
def Int32ByteSizeNoTag(int32): ...
def Int64ByteSize(field_number, int64): ...
def UInt32ByteSize(field_number, uint32): ...
def UInt64ByteSize(field_number, uint64): ...
def SInt32ByteSize(field_number, int32): ...
def SInt64ByteSize(field_number, int64): ...
def Fixed32ByteSize(field_number, fixed32): ...
def Fixed64ByteSize(field_number, fixed64): ...
def SFixed32ByteSize(field_number, sfixed32): ...
def SFixed64ByteSize(field_number, sfixed64): ...
def FloatByteSize(field_number, flt): ...
def DoubleByteSize(field_number, double): ...
def BoolByteSize(field_number, b): ...
def EnumByteSize(field_number, enum): ...
def StringByteSize(field_number, string): ...
def BytesByteSize(field_number, b): ...
def GroupByteSize(field_number, message): ...
def MessageByteSize(field_number, message): ...
def MessageSetItemByteSize(field_number, msg): ...
def TagByteSize(field_number): ...
def PackTag(field_number: int, wire_type: int) -> int: ...
def UnpackTag(tag: int) -> tuple[int, int]: ...
def ZigZagEncode(value: int) -> int: ...
def ZigZagDecode(value: int) -> int: ...
def Int32ByteSize(field_number: int, int32: int) -> int: ...
def Int32ByteSizeNoTag(int32: int) -> int: ...
def Int64ByteSize(field_number: int, int64: int) -> int: ...
def UInt32ByteSize(field_number: int, uint32: int) -> int: ...
def UInt64ByteSize(field_number: int, uint64: int) -> int: ...
def SInt32ByteSize(field_number: int, int32: int) -> int: ...
def SInt64ByteSize(field_number: int, int64: int) -> int: ...
def Fixed32ByteSize(field_number: int, fixed32: int) -> int: ...
def Fixed64ByteSize(field_number: int, fixed64: int) -> int: ...
def SFixed32ByteSize(field_number: int, sfixed32: int) -> int: ...
def SFixed64ByteSize(field_number: int, sfixed64: int) -> int: ...
def FloatByteSize(field_number: int, flt: float) -> int: ...
def DoubleByteSize(field_number: int, double: float) -> int: ...
def BoolByteSize(field_number: int, b: bool) -> int: ...
def EnumByteSize(field_number: int, enum: int) -> int: ...
def StringByteSize(field_number: int, string: str) -> int: ...
def BytesByteSize(field_number: int, b: bytes) -> int: ...
def GroupByteSize(field_number: int, message: Message) -> int: ...
def MessageByteSize(field_number: int, message: Message) -> int: ...
def MessageSetItemByteSize(field_number: int, msg: Message) -> int: ...
def TagByteSize(field_number: int) -> int: ...
NON_PACKABLE_TYPES: Any
NON_PACKABLE_TYPES: tuple[int, ...]
def IsTypePackable(field_type): ...
def IsTypePackable(field_type: int) -> bool: ...
@@ -6,8 +6,9 @@ from google.protobuf.message import Message
_MessageT = TypeVar("_MessageT", bound=Message)
class Error(Exception): ...
class ParseError(Error): ...
class SerializeToJsonError(Error): ...
class ParseError(Error): ...
class EnumStringValueParseError(ParseError): ...
def MessageToJson(
message: Message,
@@ -16,7 +17,6 @@ def MessageToJson(
sort_keys: bool = False,
use_integers_for_enums: bool = False,
descriptor_pool: DescriptorPool | None = None,
float_precision: int | None = None,
ensure_ascii: bool = True,
always_print_fields_with_no_presence: bool = False,
) -> str: ...
@@ -26,7 +26,6 @@ def MessageToDict(
preserving_proto_field_name: bool = False,
use_integers_for_enums: bool = False,
descriptor_pool: DescriptorPool | None = None,
float_precision: int | None = None,
) -> dict[str, Any]: ...
def Parse(
text: bytes | str,
@@ -36,7 +35,7 @@ def Parse(
max_recursion_depth: int = 100,
) -> _MessageT: ...
def ParseDict(
js_dict: Any,
js_dict: dict[str, Any],
message: _MessageT,
ignore_unknown_fields: bool = False,
descriptor_pool: DescriptorPool | None = None,
+14 -11
View File
@@ -15,8 +15,9 @@ class Message:
__slots__: tuple[str, ...] = ()
DESCRIPTOR: Descriptor | _upb_Descriptor
def __deepcopy__(self, memo: Any = None) -> Self: ...
def __eq__(self, other_msg): ...
def __ne__(self, other_msg): ...
def __eq__(self, other_msg: object) -> bool: ...
def __ne__(self, other_msg: object) -> bool: ...
def __contains__(self, field_name_or_key: str) -> bool: ...
def MergeFrom(self, other_msg: Self) -> None: ...
def CopyFrom(self, other_msg: Self) -> None: ...
def Clear(self) -> None: ...
@@ -26,15 +27,7 @@ class Message:
def ParseFromString(self, serialized: bytes) -> int: ...
def SerializeToString(self, *, deterministic: bool = ...) -> bytes: ...
def SerializePartialToString(self, *, deterministic: bool = ...) -> bytes: ...
def ListFields(self) -> Sequence[tuple[FieldDescriptor, Any]]: ...
def HasExtension(self, field_descriptor: _ExtensionFieldDescriptor[Self, Any]) -> bool: ...
def ClearExtension(self, field_descriptor: _ExtensionFieldDescriptor[Self, Any]) -> None: ...
# The TypeVar must be bound to `Message` or we get mypy errors, so we cannot use `Self` for `Extensions`
@property
def Extensions(self) -> _ExtensionDict[Self]: ...
def ByteSize(self) -> int: ...
@classmethod
def FromString(cls, s: bytes) -> Self: ...
def ListFields(self) -> Sequence[tuple[FieldDescriptor, Any]]: ... # Any: str, int, float, bytes, bool, or Message
# Intentionally left out typing on these three methods, because they are
# stringly typed and it is not useful to call them on a Message directly.
# We prefer more specific typing on individual subclasses of Message
@@ -42,5 +35,15 @@ class Message:
def HasField(self, field_name: Any) -> bool: ...
def ClearField(self, field_name: Any) -> None: ...
def WhichOneof(self, oneof_group: Any) -> Any: ...
def HasExtension(self, field_descriptor: _ExtensionFieldDescriptor[Self, Any]) -> bool: ...
def ClearExtension(self, field_descriptor: _ExtensionFieldDescriptor[Self, Any]) -> None: ...
# The TypeVar must be bound to `Message` or we get mypy errors, so we cannot use `Self` for `Extensions`
@property
def Extensions(self) -> _ExtensionDict[Self]: ...
def UnknownFields(self) -> Any: ... # Any: subclasses return UnknownFieldSet
def DiscardUnknownFields(self) -> None: ...
def ByteSize(self) -> int: ...
@classmethod
def FromString(cls, s: bytes) -> Self: ...
# TODO: check kwargs
def __new__(cls, *args, **kwargs) -> Self: ...
@@ -1,15 +1,15 @@
from collections.abc import Iterable
from typing import Any
from google.protobuf.descriptor import Descriptor
from google.protobuf.descriptor_pb2 import FileDescriptorProto
from google.protobuf.descriptor_pool import DescriptorPool
from google.protobuf.message import Message
class MessageFactory:
pool: Any
def __init__(self, pool: DescriptorPool | None = None) -> None: ...
def GetMessageClass(descriptor: Descriptor) -> type[Message]: ...
def GetMessageClassesForFiles(files: Iterable[str], pool: DescriptorPool) -> dict[str, type[Message]]: ...
class MessageFactory:
pool: DescriptorPool
def __init__(self, pool: DescriptorPool | None = None) -> None: ...
def GetMessages(file_protos: Iterable[FileDescriptorProto], pool: DescriptorPool | None = None) -> dict[str, type[Message]]: ...
+14
View File
@@ -0,0 +1,14 @@
from io import BytesIO
from typing import TypeVar
from google.protobuf.message import Message
_MessageT = TypeVar("_MessageT", bound=Message)
def serialize(message: Message, deterministic: bool | None = None) -> bytes: ...
def parse(message_class: type[_MessageT], payload: bytes) -> _MessageT: ...
def serialize_length_prefixed(message: Message, output: BytesIO) -> None: ...
def parse_length_prefixed(message_class: type[_MessageT], input_bytes: BytesIO) -> _MessageT: ...
def byte_size(message: Message) -> int: ...
def clear_message(message: Message) -> None: ...
def clear_field(message: Message, field_name: str) -> None: ...
@@ -0,0 +1,8 @@
from collections import OrderedDict
from google.protobuf.descriptor_pool import DescriptorPool
from google.protobuf.message import Message
def MakeSimpleProtoClass(
fields: dict[str, int] | OrderedDict[str, int], full_name: str | None = None, pool: DescriptorPool | None = None
) -> type[Message]: ...
@@ -0,0 +1,21 @@
from typing import Any, TypeVar
from google.protobuf.descriptor_pool import DescriptorPool
from google.protobuf.message import Message
_MessageT = TypeVar("_MessageT", bound=Message)
def serialize(
message: Message,
always_print_fields_with_no_presence: bool = False,
preserving_proto_field_name: bool = False,
use_integers_for_enums: bool = False,
descriptor_pool: DescriptorPool | None = None,
) -> dict[str, Any]: ...
def parse(
message_class: type[_MessageT],
js_dict: dict[str, Any],
ignore_unknown_fields: bool = False,
descriptor_pool: DescriptorPool | None = None,
max_recursion_depth: int = 100,
) -> _MessageT: ...
@@ -0,0 +1,32 @@
from collections.abc import Callable
from typing import TypeVar
from typing_extensions import TypeAlias
from google.protobuf.descriptor_pool import DescriptorPool
from google.protobuf.message import Message
_MessageT = TypeVar("_MessageT", bound=Message)
_MsgFormatter: TypeAlias = Callable[[Message, int, bool], str | None]
def serialize(
message: Message,
as_utf8: bool = True,
as_one_line: bool = False,
use_short_repeated_primitives: bool = False,
pointy_brackets: bool = False,
use_index_order: bool = False,
use_field_number: bool = False,
descriptor_pool: DescriptorPool | None = None,
indent: int = 0,
message_formatter: _MsgFormatter | None = None,
print_unknown_fields: bool = False,
force_colon: bool = False,
) -> str: ...
def parse(
message_class: type[_MessageT],
text: str | bytes,
allow_unknown_extension: bool = False,
allow_field_number: bool = False,
descriptor_pool: DescriptorPool | None = None,
allow_unknown_field: bool = False,
) -> _MessageT: ...
+10 -2
View File
@@ -1,2 +1,10 @@
class GeneratedProtocolMessageType(type):
def __new__(cls, name, bases, dictionary): ...
from typing import Any
from google._upb._message import MessageMeta
MESSAGE_CLASS_CACHE: dict[str, Any]
class GeneratedProtocolMessageType(MessageMeta):
def __new__( # noqa: Y034
cls, name: str, bases: tuple[type, ...], dictionary: dict[str, Any]
) -> GeneratedProtocolMessageType: ...
@@ -0,0 +1,7 @@
from typing import Any
class GeneratedServiceType(type):
def __init__(cls, name: str, bases: tuple[type, ...], dictionary: dict[str, Any]) -> None: ...
class GeneratedServiceStubType(GeneratedServiceType):
def __init__(cls, name: str, bases: tuple[type, ...], dictionary: dict[str, Any]) -> None: ...
@@ -1,10 +1,11 @@
from collections.abc import Iterable
from google.protobuf.descriptor import Descriptor, EnumDescriptor, FileDescriptor, ServiceDescriptor
from google.protobuf.descriptor_pool import DescriptorPool
from google.protobuf.message import Message
from google.protobuf.message_factory import MessageFactory
class SymbolDatabase(MessageFactory):
class SymbolDatabase:
def __init__(self, pool: DescriptorPool | None = None) -> None: ...
def RegisterMessage(self, message: type[Message] | Message) -> type[Message] | Message: ...
def RegisterMessageDescriptor(self, message_descriptor: Descriptor) -> None: ...
def RegisterEnumDescriptor(self, enum_descriptor: EnumDescriptor) -> EnumDescriptor: ...
@@ -0,0 +1,2 @@
def CEscape(text: bytes, as_utf8: bool) -> str: ...
def CUnescape(text: str) -> bytes: ...
+5 -15
View File
@@ -9,6 +9,8 @@ from .message import Message
_M = TypeVar("_M", bound=Message) # message type (of self)
__all__ = ["MessageToString", "Parse", "PrintMessage", "PrintField", "PrintFieldValue", "Merge", "MessageToBytes"]
class Error(Exception): ...
class ParseError(Error):
@@ -19,8 +21,8 @@ class ParseError(Error):
class TextWriter:
def __init__(self, as_utf8: bool) -> None: ...
def write(self, val: str) -> int: ...
def getvalue(self) -> str: ...
def close(self) -> None: ...
def getvalue(self) -> str: ...
_MessageFormatter: TypeAlias = Callable[[Message, int, bool], str | None]
@@ -31,8 +33,6 @@ def MessageToString(
use_short_repeated_primitives: bool = False,
pointy_brackets: bool = False,
use_index_order: bool = False,
float_format: str | None = None,
double_format: str | None = None,
use_field_number: bool = False,
descriptor_pool: DescriptorPool | None = None,
indent: int = 0,
@@ -49,8 +49,6 @@ def MessageToBytes(
use_short_repeated_primitives: bool = False,
pointy_brackets: bool = False,
use_index_order: bool = False,
float_format: str | None = None,
double_format: str | None = None,
use_field_number: bool = False,
descriptor_pool: DescriptorPool | None = None,
indent: int = 0,
@@ -67,8 +65,6 @@ def PrintMessage(
use_short_repeated_primitives: bool = False,
pointy_brackets: bool = False,
use_index_order: bool = False,
float_format: str | None = None,
double_format: str | None = None,
use_field_number: bool = False,
descriptor_pool: DescriptorPool | None = None,
message_formatter: _MessageFormatter | None = None,
@@ -85,8 +81,6 @@ def PrintField(
use_short_repeated_primitives: bool = False,
pointy_brackets: bool = False,
use_index_order: bool = False,
float_format: str | None = None,
double_format: str | None = None,
message_formatter: _MessageFormatter | None = None,
print_unknown_fields: bool = False,
force_colon: bool = False,
@@ -101,8 +95,6 @@ def PrintFieldValue(
use_short_repeated_primitives: bool = False,
pointy_brackets: bool = False,
use_index_order: bool = False,
float_format: str | None = None,
double_format: str | None = None,
message_formatter: _MessageFormatter | None = None,
print_unknown_fields: bool = False,
force_colon: bool = False,
@@ -116,8 +108,6 @@ class _Printer:
use_short_repeated_primitives: bool
pointy_brackets: bool
use_index_order: bool
float_format: str | None
double_format: str | None
use_field_number: bool
descriptor_pool: DescriptorPool | None
message_formatter: _MessageFormatter | None
@@ -132,8 +122,6 @@ class _Printer:
use_short_repeated_primitives: bool = False,
pointy_brackets: bool = False,
use_index_order: bool = False,
float_format: str | None = None,
double_format: str | None = None,
use_field_number: bool = False,
descriptor_pool: DescriptorPool | None = None,
message_formatter: _MessageFormatter | None = None,
@@ -208,6 +196,8 @@ class Tokenizer:
def ConsumeString(self) -> str: ...
def ConsumeByteString(self) -> bytes: ...
def ConsumeEnum(self, field: FieldDescriptor) -> int: ...
def ConsumeUrlChars(self) -> str: ...
def TryConsumeUrlChars(self) -> bool: ...
def ParseErrorPreviousToken(self, message: Message) -> _ParseError: ...
def ParseError(self, message: Message) -> _ParseError: ...
def NextToken(self) -> None: ...
@@ -0,0 +1,16 @@
from datetime import datetime, tzinfo
from google.protobuf.timestamp_pb2 import Timestamp
def from_json_string(value: str) -> Timestamp: ...
def from_microseconds(micros: float) -> Timestamp: ...
def from_milliseconds(millis: float) -> Timestamp: ...
def from_nanoseconds(nanos: float) -> Timestamp: ...
def from_seconds(seconds: float) -> Timestamp: ...
def from_current_time() -> Timestamp: ...
def to_json_string(ts: Timestamp) -> str: ...
def to_microseconds(ts: Timestamp) -> int: ...
def to_milliseconds(ts: Timestamp) -> int: ...
def to_nanoseconds(ts: Timestamp) -> int: ...
def to_seconds(ts: Timestamp) -> int: ...
def to_datetime(ts: Timestamp, tz: tzinfo | None = None) -> datetime: ...
@@ -0,0 +1,9 @@
from typing import Any, final
from google.protobuf.message import Message
@final
class UnknownFieldSet:
def __new__(cls, msg: Message) -> UnknownFieldSet: ... # noqa: Y034
def __getitem__(self, index: int) -> Any: ... # Any: internal unknown field object
def __len__(self) -> int: ...