diff options
author | shadchin <shadchin@yandex-team.com> | 2024-03-04 21:16:16 +0300 |
---|---|---|
committer | shadchin <shadchin@yandex-team.com> | 2024-03-04 21:43:39 +0300 |
commit | 74819c4157bd388a7d429c870ea4b343a282dafa (patch) | |
tree | 4bff355b03dfb24b14d33581357cc8e624d170fd /contrib/python/types-protobuf/google-stubs | |
parent | f64c28a5443395e3a8f27e6f1b15a3507812d2de (diff) | |
download | ydb-74819c4157bd388a7d429c870ea4b343a282dafa.tar.gz |
Extend support pyi files
Сейчас pyi файлы в макросе PY_SRCS используются исключительно в Arcadia плагине для продуктов JB, при сборке эти файлы просто игнорируются.
В этом PR добавил шаг, который будет содержимое этих файлов складывать в ресурсы, секция PY_SRCS удобна тем, что позволяет раскладывать pyi файлы с учетом TOP_LEVEL/NAMESPACE, а это необходимо для правильной работы mypy.
3924b0556bc99947e6893cd79e5ce62ec72a18a9
Diffstat (limited to 'contrib/python/types-protobuf/google-stubs')
25 files changed, 1195 insertions, 0 deletions
diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/__init__.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/__init__.pyi new file mode 100644 index 0000000000..bda5b5a7f4 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/__init__.pyi @@ -0,0 +1 @@ +__version__: str diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/compiler/__init__.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/compiler/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/compiler/__init__.pyi diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/descriptor.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/descriptor.pyi new file mode 100644 index 0000000000..d8a1ad676a --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/descriptor.pyi @@ -0,0 +1,352 @@ +from _typeshed import Incomplete +from typing import Any + +from .descriptor_pb2 import ( + EnumOptions, + EnumValueOptions, + FieldOptions, + FileOptions, + MessageOptions, + MethodOptions, + OneofOptions, + ServiceOptions, +) +from .message import Message + +class Error(Exception): ... +class TypeTransformationError(Error): ... + +class DescriptorMetaclass(type): + def __instancecheck__(self, obj: Any) -> bool: ... + +_internal_create_key: object +_USE_C_DESCRIPTORS: bool + +class DescriptorBase(metaclass=DescriptorMetaclass): + has_options: Any + def __init__(self, options, serialized_options, options_class_name) -> None: ... + def GetOptions(self): ... + +class _NestedDescriptorBase(DescriptorBase): + name: Any + full_name: Any + file: Any + containing_type: Any + def __init__( + self, + options, + options_class_name, + name, + full_name, + file, + containing_type, + serialized_start=..., + serialized_end=..., + serialized_options=..., + ) -> None: ... + def CopyToProto(self, proto): ... + +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 + syntax: Any + def __init__( + self, + name: str, + full_name: str, + filename: Any, + containing_type: Descriptor | None, + fields: list[FieldDescriptor], + nested_types: list[FieldDescriptor], + enum_types: list[EnumDescriptor], + extensions: list[FieldDescriptor], + options: Incomplete | None = ..., + serialized_options: Incomplete | None = ..., + is_extendable: bool | None = ..., + extension_ranges: Incomplete | None = ..., + oneofs: list[OneofDescriptor] | None = ..., + file: FileDescriptor | None = ..., + serialized_start: Incomplete | None = ..., + serialized_end: Incomplete | None = ..., + syntax: str | None = ..., + create_key: Incomplete | None = ..., + ): ... + def EnumValueName(self, enum, value): ... + def CopyToProto(self, proto): ... + 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 + def __new__( + cls, + name, + full_name, + index, + number, + type, + cpp_type, + label, + default_value, + message_type, + enum_type, + containing_type, + is_extension, + extension_scope, + options=..., + serialized_options=..., + has_default_value=..., + containing_oneof=..., + json_name=..., + file=..., + create_key=..., + ): ... + name: Any + full_name: Any + index: Any + number: Any + type: Any + cpp_type: Any + label: Any + 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 + def __init__( + self, + name, + full_name, + index, + number, + type, + cpp_type, + label, + default_value, + message_type, + enum_type, + containing_type, + is_extension, + extension_scope, + options=..., + serialized_options=..., + has_default_value=..., + containing_oneof=..., + json_name=..., + file=..., + create_key=..., + ) -> None: ... + @staticmethod + def ProtoTypeToCppProtoType(proto_type): ... + def GetOptions(self) -> FieldOptions: ... + +class EnumDescriptor(_NestedDescriptorBase): + def __new__( + cls, + name, + full_name, + filename, + values, + containing_type=..., + options=..., + serialized_options=..., + file=..., + serialized_start=..., + serialized_end=..., + create_key=..., + ): ... + values: Any + values_by_name: Any + values_by_number: Any + def __init__( + self, + name, + full_name, + filename, + values, + containing_type=..., + options=..., + serialized_options=..., + file=..., + serialized_start=..., + serialized_end=..., + create_key=..., + ) -> None: ... + def CopyToProto(self, proto): ... + def GetOptions(self) -> EnumOptions: ... + +class EnumValueDescriptor(DescriptorBase): + def __new__(cls, name, index, number, type=..., options=..., serialized_options=..., create_key=...): ... + name: Any + index: Any + number: Any + type: Any + def __init__(self, name, index, number, type=..., options=..., serialized_options=..., create_key=...) -> None: ... + def GetOptions(self) -> EnumValueOptions: ... + +class OneofDescriptor: + def __new__(cls, name, full_name, index, containing_type, fields, options=..., serialized_options=..., create_key=...): ... + name: Any + full_name: Any + index: Any + containing_type: Any + fields: Any + def __init__( + self, name, full_name, index, containing_type, fields, options=..., serialized_options=..., create_key=... + ) -> None: ... + def GetOptions(self) -> OneofOptions: ... + +class ServiceDescriptor(_NestedDescriptorBase): + index: Any + methods: Any + methods_by_name: Any + def __init__( + self, + name: str, + full_name: str, + index: int, + methods: list[MethodDescriptor], + options: ServiceOptions | None = ..., + serialized_options: Incomplete | None = ..., + file: FileDescriptor | None = ..., + serialized_start: Incomplete | None = ..., + serialized_end: Incomplete | None = ..., + create_key: Incomplete | None = ..., + ): ... + def FindMethodByName(self, name): ... + def CopyToProto(self, proto): ... + def GetOptions(self) -> ServiceOptions: ... + +class MethodDescriptor(DescriptorBase): + def __new__( + cls, + name, + full_name, + index, + containing_service, + input_type, + output_type, + client_streaming=..., + server_streaming=..., + options=..., + serialized_options=..., + create_key=..., + ): ... + name: Any + full_name: Any + index: Any + containing_service: Any + input_type: Any + output_type: Any + client_streaming: bool + server_streaming: bool + def __init__( + self, + name, + full_name, + index, + containing_service, + input_type, + output_type, + client_streaming=..., + server_streaming=..., + options=..., + serialized_options=..., + create_key=..., + ) -> None: ... + def GetOptions(self) -> MethodOptions: ... + +class FileDescriptor(DescriptorBase): + def __new__( + cls, + name, + package, + options=..., + serialized_options=..., + serialized_pb=..., + dependencies=..., + public_dependencies=..., + syntax=..., + pool=..., + create_key=..., + ): ... + _options: Any + pool: Any + message_types_by_name: Any + name: Any + package: Any + syntax: Any + serialized_pb: Any + enum_types_by_name: Any + extensions_by_name: Any + services_by_name: Any + dependencies: Any + public_dependencies: Any + def __init__( + self, + name, + package, + options=..., + serialized_options=..., + serialized_pb=..., + dependencies=..., + public_dependencies=..., + syntax=..., + pool=..., + create_key=..., + ) -> None: ... + def CopyToProto(self, proto): ... + def GetOptions(self) -> FileOptions: ... + +def MakeDescriptor(desc_proto, package=..., build_file_if_cpp=..., syntax=...): ... +def _ParseOptions(message: Message, string: bytes) -> Message: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/descriptor_pool.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/descriptor_pool.pyi new file mode 100644 index 0000000000..00be66656d --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/descriptor_pool.pyi @@ -0,0 +1,26 @@ +from _typeshed import Incomplete + +class DescriptorPool: + def __new__(cls, descriptor_db: Incomplete | None = ...): ... + def __init__( # pyright: ignore[reportInconsistentConstructor] + self, descriptor_db: Incomplete | None = ..., use_deprecated_legacy_json_field_conflicts: bool = ... + ) -> None: ... + def Add(self, file_desc_proto): ... + def AddSerializedFile(self, serialized_file_desc_proto): ... + def AddDescriptor(self, desc): ... + def AddServiceDescriptor(self, service_desc): ... + def AddExtensionDescriptor(self, extension): ... + def AddFileDescriptor(self, file_desc): ... + 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 Default(): ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/__init__.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/__init__.pyi diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/api_implementation.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/api_implementation.pyi new file mode 100644 index 0000000000..4940124ff9 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/api_implementation.pyi @@ -0,0 +1,3 @@ +def Type() -> str: ... +def Version() -> int: ... +def IsPythonDefaultSerializationDeterministic() -> bool: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/builder.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/builder.pyi new file mode 100644 index 0000000000..a0a72dec58 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/builder.pyi @@ -0,0 +1,5 @@ +from _typeshed import Incomplete +from typing import Any + +def BuildMessageAndEnumDescriptors(file_des: Incomplete, module: dict[str, Any]) -> None: ... +def BuildTopDescriptorsAndMessages(file_des: Incomplete, module_name: str, module: dict[str, Any]) -> None: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/containers.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/containers.pyi new file mode 100644 index 0000000000..235ab25d61 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/containers.pyi @@ -0,0 +1,100 @@ +from collections.abc import Callable, Iterable, Iterator, MutableMapping, Sequence +from typing import Any, Protocol, SupportsIndex, TypeVar, 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", bound=bool | int | str) +_ScalarV = TypeVar("_ScalarV", bound=bool | int | float | str | bytes) +_MessageV = TypeVar("_MessageV", bound=Message) +_M = TypeVar("_M") + +class _ValueChecker(Protocol[_T]): + def CheckValue(self, proposed_value: _T) -> _T: ... + def DefaultValue(self) -> _T: ... + +class BaseContainer(Sequence[_T]): + def __init__(self, message_listener: MessageListener) -> None: ... + def __len__(self) -> int: ... + def __ne__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def sort(self, *, key: Callable[[_T], Any] | None = ..., reverse: bool = ...) -> None: ... + @overload + def __getitem__(self, key: SupportsIndex) -> _T: ... + @overload + def __getitem__(self, key: slice) -> list[_T]: ... + +class RepeatedScalarFieldContainer(BaseContainer[_ScalarV]): + def __init__(self, message_listener: MessageListener, type_checker: _ValueChecker[_ScalarV]) -> 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: _M, other: _M) -> None: ... + def remove(self, elem: _ScalarV) -> None: ... + def pop(self, key: int = ...) -> _ScalarV: ... + @overload + def __setitem__(self, key: int, value: _ScalarV) -> None: ... + @overload + def __setitem__(self, key: slice, value: Iterable[_ScalarV]) -> None: ... + def __delitem__(self, key: int | slice) -> None: ... + def __eq__(self, other: object) -> bool: ... + +class RepeatedCompositeFieldContainer(BaseContainer[_MessageV]): + def __init__(self, message_listener: MessageListener, message_descriptor: Descriptor) -> None: ... + def add(self, **kwargs: Any) -> _MessageV: ... + 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: _M, other: _M) -> None: ... + def remove(self, elem: _MessageV) -> None: ... + def pop(self, key: int = ...) -> _MessageV: ... + def __delitem__(self, key: int | slice) -> None: ... + def __eq__(self, other: object) -> bool: ... + +class ScalarMap(MutableMapping[_K, _ScalarV]): + def __init__( + self, + message_listener: MessageListener, + key_checker: _ValueChecker[_K], + 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: ... + @overload + def get(self, key: _K, default: None = ...) -> _ScalarV | None: ... + @overload + def get(self, key: _K, default: _ScalarV | _T) -> _ScalarV | _T: ... + def MergeFrom(self: _M, other: _M): ... + def InvalidateIterators(self) -> None: ... + def GetEntryClass(self) -> GeneratedProtocolMessageType: ... + +class MessageMap(MutableMapping[_K, _MessageV]): + def __init__( + self, + message_listener: MessageListener, + message_descriptor: Descriptor, + 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: ... + @overload + def get(self, key: _K, default: None = ...) -> _MessageV | None: ... + @overload + def get(self, key: _K, default: _MessageV | _T) -> _MessageV | _T: ... + def get_or_create(self, key: _K) -> _MessageV: ... + def MergeFrom(self: _M, other: _M): ... + def InvalidateIterators(self) -> None: ... + def GetEntryClass(self) -> GeneratedProtocolMessageType: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/decoder.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/decoder.pyi new file mode 100644 index 0000000000..41a50035b5 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/decoder.pyi @@ -0,0 +1,63 @@ +from collections.abc import Callable +from typing import Any +from typing_extensions import TypeAlias + +from google.protobuf.descriptor import Descriptor, FieldDescriptor +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): ... + +Int32Decoder: _Decoder +Int64Decoder: _Decoder +UInt32Decoder: _Decoder +UInt64Decoder: _Decoder +SInt32Decoder: _Decoder +SInt64Decoder: _Decoder +Fixed32Decoder: _Decoder +Fixed64Decoder: _Decoder +SFixed32Decoder: _Decoder +SFixed64Decoder: _Decoder +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 = ..., +) -> _Decoder: ... +def StringDecoder( + field_number: int, + is_repeated: bool, + is_packed: bool, + key: FieldDescriptor, + new_default: _NewDefault, + clear_if_default: bool = ..., +) -> _Decoder: ... +def BytesDecoder( + field_number: int, + is_repeated: bool, + is_packed: bool, + key: FieldDescriptor, + new_default: _NewDefault, + clear_if_default: bool = ..., +) -> _Decoder: ... +def GroupDecoder( + field_number: int, is_repeated: bool, is_packed: bool, key: FieldDescriptor, new_default: _NewDefault +) -> _Decoder: ... +def MessageDecoder( + field_number: int, is_repeated: bool, is_packed: bool, key: FieldDescriptor, new_default: _NewDefault +) -> _Decoder: ... + +MESSAGE_SET_ITEM_TAG: bytes + +def MessageSetItemDecoder(descriptor: Descriptor) -> _Decoder: ... +def MapDecoder(field_descriptor, new_default, is_message_map) -> _Decoder: ... + +SkipField: Any diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/encoder.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/encoder.pyi new file mode 100644 index 0000000000..278478edb3 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/encoder.pyi @@ -0,0 +1,41 @@ +from collections.abc import Callable +from typing_extensions import TypeAlias + +from google.protobuf.descriptor import FieldDescriptor + +_Sizer: TypeAlias = Callable[[int, bool, bool], int] + +Int32Sizer: _Sizer +UInt32Sizer: _Sizer +SInt32Sizer: _Sizer +Fixed32Sizer: _Sizer +Fixed64Sizer: _Sizer +BoolSizer: _Sizer + +def StringSizer(field_number: int, is_repeated: bool, is_packed: bool) -> _Sizer: ... +def BytesSizer(field_number: int, is_repeated: bool, is_packed: bool) -> _Sizer: ... +def GroupSizer(field_number: int, is_repeated: bool, is_packed: bool) -> _Sizer: ... +def MessageSizer(field_number: int, is_repeated: bool, is_packed: bool) -> _Sizer: ... +def MessageSetItemSizer(field_number: int) -> _Sizer: ... +def MapSizer(field_descriptor: FieldDescriptor, is_message_map: bool) -> _Sizer: ... +def TagBytes(field_number: int, wire_type: int) -> bytes: ... + +_Encoder: TypeAlias = Callable[[Callable[[bytes], int], bytes, bool], int] + +Int32Encoder: _Encoder +UInt32Encoder: _Encoder +SInt32Encoder: _Encoder +Fixed32Encoder: _Encoder +Fixed64Encoder: _Encoder +SFixed32Encoder: _Encoder +SFixed64Encoder: _Encoder +FloatEncoder: _Encoder +DoubleEncoder: _Encoder + +def BoolEncoder(field_number: int, is_repeated: bool, is_packed: bool) -> _Encoder: ... +def StringEncoder(field_number: int, is_repeated: bool, is_packed: bool) -> _Encoder: ... +def BytesEncoder(field_number: int, is_repeated: bool, is_packed: bool) -> _Encoder: ... +def GroupEncoder(field_number: int, is_repeated: bool, is_packed: bool) -> _Encoder: ... +def MessageEncoder(field_number: int, is_repeated: bool, is_packed: bool) -> _Encoder: ... +def MessageSetItemEncoder(field_number: int) -> _Encoder: ... +def MapEncoder(field_descriptor: FieldDescriptor) -> _Encoder: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/enum_type_wrapper.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/enum_type_wrapper.pyi new file mode 100644 index 0000000000..95b5b4bb25 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/enum_type_wrapper.pyi @@ -0,0 +1,21 @@ +from typing import Generic, TypeVar + +from google.protobuf.descriptor import EnumDescriptor + +_V = TypeVar("_V", bound=int) + +# Expose a generic version so that those using mypy-protobuf +# can get autogenerated NewType wrapper around the int values +# NOTE: this doesn't actually inherit from type, +# but mypy doesn't support metaclasses that don't inherit from type, +# so we pretend it does in the stubs... +class _EnumTypeWrapper(type, Generic[_V]): + DESCRIPTOR: EnumDescriptor + def __init__(self, enum_type: EnumDescriptor) -> None: ... + def Name(self, number: _V) -> str: ... + def Value(self, name: str | bytes) -> _V: ... + def keys(self) -> list[str]: ... + def values(self) -> list[_V]: ... + def items(self) -> list[tuple[str, _V]]: ... + +class EnumTypeWrapper(_EnumTypeWrapper[int]): ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/extension_dict.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/extension_dict.pyi new file mode 100644 index 0000000000..ecf56a360d --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/extension_dict.pyi @@ -0,0 +1,27 @@ +from collections.abc import Iterator +from typing import Any, Generic, TypeVar + +from google.protobuf.descriptor import FieldDescriptor +from google.protobuf.internal.containers import RepeatedCompositeFieldContainer, RepeatedScalarFieldContainer +from google.protobuf.message import Message + +_ContainerMessageT = TypeVar("_ContainerMessageT", bound=Message) +_ExtenderMessageT = TypeVar( + "_ExtenderMessageT", + bound=Message | RepeatedScalarFieldContainer[Any] | RepeatedCompositeFieldContainer[Any] | bool | float | str | bytes, +) + +class _ExtensionFieldDescriptor(FieldDescriptor, Generic[_ContainerMessageT, _ExtenderMessageT]): ... + +class _ExtensionDict(Generic[_ContainerMessageT]): + def __init__(self, extended_message: _ContainerMessageT) -> None: ... + def __getitem__( + self, extension_handle: _ExtensionFieldDescriptor[_ContainerMessageT, _ExtenderMessageT] + ) -> _ExtenderMessageT: ... + 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: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/message_listener.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/message_listener.pyi new file mode 100644 index 0000000000..01c3be010c --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/message_listener.pyi @@ -0,0 +1,5 @@ +class MessageListener: + def Modified(self) -> None: ... + +class NullMessageListener(MessageListener): + def Modified(self) -> None: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/python_message.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/python_message.pyi new file mode 100644 index 0000000000..0395ff6470 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/python_message.pyi @@ -0,0 +1,3 @@ +class GeneratedProtocolMessageType(type): + def __new__(cls, name, bases, dictionary): ... + def __init__(cls, name, bases, dictionary): ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/type_checkers.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/type_checkers.pyi new file mode 100644 index 0000000000..e050e95587 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/type_checkers.pyi @@ -0,0 +1,11 @@ +from typing import Generic, TypeVar + +_T = TypeVar("_T") + +class TypeChecker(Generic[_T]): + def __init__(self, *acceptable_types: _T): ... + def CheckValue(self, proposed_value: _T) -> _T: ... + +class TypeCheckerWithDefault(TypeChecker[_T]): + def __init__(self, default_value: _T, *acceptable_types: _T): ... + def DefaultValue(self) -> _T: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/well_known_types.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/well_known_types.pyi new file mode 100644 index 0000000000..e257cf0529 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/well_known_types.pyi @@ -0,0 +1,103 @@ +from _typeshed import Incomplete, 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 + +class Any: + type_url: str + value: Incomplete + def Pack( + self, msg: Incomplete, type_url_prefix: str = "type.googleapis.com/", deterministic: Incomplete | None = None + ) -> None: ... + def Unpack(self, msg: Incomplete) -> bool: ... + def TypeName(self) -> str: ... + def Is(self, descriptor: Incomplete) -> bool: ... + +class Timestamp: + def ToJsonString(self) -> str: ... + seconds: int + nanos: int + def FromJsonString(self, value: str) -> None: ... + def GetCurrentTime(self) -> None: ... + def ToNanoseconds(self) -> int: ... + def ToMicroseconds(self) -> int: ... + def ToMilliseconds(self) -> int: ... + def ToSeconds(self) -> int: ... + def FromNanoseconds(self, nanos: int) -> None: ... + def FromMicroseconds(self, micros: int) -> None: ... + def FromMilliseconds(self, millis: int) -> None: ... + def FromSeconds(self, seconds: int) -> None: ... + def ToDatetime(self, tzinfo: tzinfo | None = ...) -> datetime: ... + def FromDatetime(self, dt: datetime) -> None: ... + +class Duration: + def ToJsonString(self) -> str: ... + seconds: int + nanos: int + def FromJsonString(self, value: tAny) -> None: ... + def ToNanoseconds(self) -> int: ... + def ToMicroseconds(self) -> int: ... + def ToMilliseconds(self) -> int: ... + def ToSeconds(self) -> int: ... + def FromNanoseconds(self, nanos: int) -> None: ... + def FromMicroseconds(self, micros: int) -> None: ... + def FromMilliseconds(self, millis: int) -> None: ... + def FromSeconds(self, seconds: int) -> None: ... + def ToTimedelta(self) -> timedelta: ... + def FromTimedelta(self, td: timedelta) -> None: ... + +class FieldMask: + 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 MergeMessage( + self, source: tAny, destination: tAny, replace_message_field: bool = ..., replace_repeated_field: bool = ... + ) -> None: ... + +class _FieldMaskTree: + def __init__(self, field_mask: Incomplete | None = ...) -> None: ... + def MergeFromFieldMask(self, field_mask: tAny) -> None: ... + def AddPath(self, path: tAny): ... + def ToFieldMask(self, field_mask: tAny) -> None: ... + def IntersectPath(self, path: tAny, intersection: tAny): ... + def AddLeafNodes(self, prefix: tAny, node: tAny) -> None: ... + def MergeMessage(self, source: tAny, destination: tAny, replace_message: tAny, replace_repeated: tAny) -> None: ... + +_StructValue: TypeAlias = struct_pb2.Struct | struct_pb2.ListValue | str | float | bool | None +_StructValueArg: TypeAlias = _StructValue | Mapping[str, _StructValueArg] | Sequence[_StructValueArg] + +class Struct: + def __getitem__(self, key: str) -> _StructValue: ... + def __contains__(self, item: object) -> bool: ... + def __setitem__(self, key: str, value: _StructValueArg) -> None: ... + def __delitem__(self, key: str) -> None: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[str]: ... + def keys(self) -> KeysView[str]: ... + def values(self) -> list[_StructValue]: ... + def items(self) -> list[tuple[str, _StructValue]]: ... + def get_or_create_list(self, key: str) -> struct_pb2.ListValue: ... + def get_or_create_struct(self, key: str) -> struct_pb2.Struct: ... + def update(self, dictionary: SupportsItems[str, _StructValueArg]) -> None: ... + +class ListValue: + def __len__(self) -> int: ... + def append(self, value: _StructValue) -> None: ... + def extend(self, elem_seq: Iterable[_StructValue]) -> None: ... + def __getitem__(self, index: int) -> _StructValue: ... + def __setitem__(self, index: int, value: _StructValueArg) -> None: ... + def __delitem__(self, key: int) -> None: ... + # Doesn't actually exist at runtime; needed so type checkers understand the class is iterable + def __iter__(self) -> Iterator[_StructValue]: ... + def items(self) -> Iterator[_StructValue]: ... + def add_struct(self) -> struct_pb2.Struct: ... + def add_list(self) -> struct_pb2.ListValue: ... + +WKTBASES: dict[str, type[tAny]] diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/internal/wire_format.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/internal/wire_format.pyi new file mode 100644 index 0000000000..3dcbd04324 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/internal/wire_format.pyi @@ -0,0 +1,50 @@ +from typing import Any + +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 + +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): ... + +NON_PACKABLE_TYPES: Any + +def IsTypePackable(field_type): ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/json_format.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/json_format.pyi new file mode 100644 index 0000000000..62ad1bad2e --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/json_format.pyi @@ -0,0 +1,44 @@ +from typing import Any, TypeVar + +from google.protobuf.descriptor_pool import DescriptorPool +from google.protobuf.message import Message + +_MessageT = TypeVar("_MessageT", bound=Message) + +class Error(Exception): ... +class ParseError(Error): ... +class SerializeToJsonError(Error): ... + +def MessageToJson( + message: Message, + including_default_value_fields: bool = ..., + preserving_proto_field_name: bool = ..., + indent: int | None = ..., + sort_keys: bool = ..., + use_integers_for_enums: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + float_precision: int | None = ..., + ensure_ascii: bool = ..., +) -> str: ... +def MessageToDict( + message: Message, + including_default_value_fields: bool = ..., + preserving_proto_field_name: bool = ..., + use_integers_for_enums: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + float_precision: int | None = ..., +) -> dict[str, Any]: ... +def Parse( + text: bytes | str, + message: _MessageT, + ignore_unknown_fields: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + max_recursion_depth: int = ..., +) -> _MessageT: ... +def ParseDict( + js_dict: Any, + message: _MessageT, + ignore_unknown_fields: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + max_recursion_depth: int = ..., +) -> _MessageT: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/message.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/message.pyi new file mode 100644 index 0000000000..64448454fc --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/message.pyi @@ -0,0 +1,46 @@ +from collections.abc import Sequence +from typing import Any, TypeVar +from typing_extensions import Self + +from .descriptor import Descriptor, FieldDescriptor +from .internal.extension_dict import _ExtensionDict, _ExtensionFieldDescriptor + +class Error(Exception): ... +class DecodeError(Error): ... +class EncodeError(Error): ... + +_M = TypeVar("_M", bound=Message) # message type (of self) + +class Message: + DESCRIPTOR: Descriptor + def __deepcopy__(self, memo: Any = ...) -> Self: ... + def __eq__(self, other_msg): ... + def __ne__(self, other_msg): ... + def MergeFrom(self, other_msg: Self) -> None: ... + def CopyFrom(self, other_msg: Self) -> None: ... + def Clear(self) -> None: ... + def SetInParent(self) -> None: ... + def IsInitialized(self) -> 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) -> Sequence[tuple[FieldDescriptor, Any]]: ... + # The TypeVar must be bound to `Message` or we get mypy errors, so we cannot use `Self` for `HasExtension` & `ClearExtension` + def HasExtension(self: _M, field_descriptor: _ExtensionFieldDescriptor[_M, Any]) -> bool: ... + def ClearExtension(self: _M, field_descriptor: _ExtensionFieldDescriptor[_M, 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: _M) -> _ExtensionDict[_M]: ... + def ByteSize(self) -> int: ... + @classmethod + def FromString(cls, s: bytes) -> Self: ... + # 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 + # See https://github.com/dropbox/mypy-protobuf/issues/62 for details + def HasField(self, field_name: Any) -> bool: ... + def ClearField(self, field_name: Any) -> None: ... + def WhichOneof(self, oneof_group: Any) -> Any: ... + # TODO: check kwargs + def __init__(self, *args, **kwargs) -> None: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/message_factory.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/message_factory.pyi new file mode 100644 index 0000000000..e9009393aa --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/message_factory.pyi @@ -0,0 +1,17 @@ +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: ... + def GetPrototype(self, descriptor: Descriptor) -> type[Message]: ... + def GetMessages(self, files: Iterable[str]) -> dict[str, type[Message]]: ... + +def GetMessageClass(descriptor: Descriptor) -> type[Message]: ... +def GetMessageClassesForFiles(files: Iterable[str], pool: DescriptorPool) -> dict[str, type[Message]]: ... +def GetMessages(file_protos: Iterable[FileDescriptorProto], pool: DescriptorPool | None = ...) -> dict[str, type[Message]]: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/reflection.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/reflection.pyi new file mode 100644 index 0000000000..4bfbd2f4ce --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/reflection.pyi @@ -0,0 +1,6 @@ +class GeneratedProtocolMessageType(type): + def __new__(cls, name, bases, dictionary): ... + def __init__(__self, name, bases, dictionary) -> None: ... + +def ParseMessage(descriptor, byte_str): ... +def MakeClass(descriptor): ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/service.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/service.pyi new file mode 100644 index 0000000000..1123b6134d --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/service.pyi @@ -0,0 +1,39 @@ +from collections.abc import Callable +from concurrent.futures import Future + +from google.protobuf.descriptor import MethodDescriptor, ServiceDescriptor +from google.protobuf.message import Message + +class RpcException(Exception): ... + +class Service: + @staticmethod + def GetDescriptor() -> ServiceDescriptor: ... + def CallMethod( + self, + method_descriptor: MethodDescriptor, + rpc_controller: RpcController, + request: Message, + done: Callable[[Message], None] | None, + ) -> Future[Message] | None: ... + def GetRequestClass(self, method_descriptor: MethodDescriptor) -> type[Message]: ... + def GetResponseClass(self, method_descriptor: MethodDescriptor) -> type[Message]: ... + +class RpcController: + def Reset(self) -> None: ... + def Failed(self) -> bool: ... + def ErrorText(self) -> str | None: ... + def StartCancel(self) -> None: ... + def SetFailed(self, reason: str) -> None: ... + def IsCanceled(self) -> bool: ... + def NotifyOnCancel(self, callback: Callable[[], None]) -> None: ... + +class RpcChannel: + def CallMethod( + self, + method_descriptor: MethodDescriptor, + rpc_controller: RpcController, + request: Message, + response_class: type[Message], + done: Callable[[Message], None] | None, + ) -> Future[Message] | None: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/symbol_database.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/symbol_database.pyi new file mode 100644 index 0000000000..c595d9c525 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/symbol_database.pyi @@ -0,0 +1,16 @@ +from collections.abc import Iterable + +from google.protobuf.descriptor import Descriptor, EnumDescriptor, FileDescriptor, ServiceDescriptor +from google.protobuf.message import Message +from google.protobuf.message_factory import MessageFactory + +class SymbolDatabase(MessageFactory): + def RegisterMessage(self, message: type[Message] | Message) -> type[Message] | Message: ... + def RegisterMessageDescriptor(self, message_descriptor: Descriptor) -> None: ... + def RegisterEnumDescriptor(self, enum_descriptor: EnumDescriptor) -> EnumDescriptor: ... + def RegisterServiceDescriptor(self, service_descriptor: ServiceDescriptor) -> None: ... + def RegisterFileDescriptor(self, file_descriptor: FileDescriptor) -> None: ... + def GetSymbol(self, symbol: str) -> type[Message]: ... + def GetMessages(self, files: Iterable[str]) -> dict[str, type[Message]]: ... + +def Default() -> SymbolDatabase: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/text_format.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/text_format.pyi new file mode 100644 index 0000000000..593739c94f --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/text_format.pyi @@ -0,0 +1,216 @@ +from _typeshed import SupportsWrite +from collections.abc import Callable, Iterable +from typing import Any, TypeVar +from typing_extensions import TypeAlias + +from .descriptor import FieldDescriptor +from .descriptor_pool import DescriptorPool +from .message import Message + +_M = TypeVar("_M", bound=Message) # message type (of self) + +class Error(Exception): ... + +class ParseError(Error): + def __init__(self, message: str | None = ..., line: int | None = ..., column: int | None = ...) -> None: ... + def GetLine(self) -> int | None: ... + def GetColumn(self) -> int | None: ... + +class TextWriter: + def __init__(self, as_utf8: bool) -> None: ... + def write(self, val: str) -> int: ... + def getvalue(self) -> str: ... + def close(self) -> None: ... + +_MessageFormatter: TypeAlias = Callable[[Message, int, bool], str | None] + +def MessageToString( + message: Message, + as_utf8: bool = ..., + as_one_line: bool = ..., + 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 = ..., + indent: int = ..., + message_formatter: _MessageFormatter | None = ..., + print_unknown_fields: bool = ..., + force_colon: bool = ..., +) -> str: ... +def MessageToBytes( + message: Message, + as_utf8: bool = ..., + as_one_line: bool = ..., + 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 = ..., + indent: int = ..., + message_formatter: _MessageFormatter = ..., + print_unknown_fields: bool = ..., + force_colon: bool = ..., +) -> bytes: ... +def PrintMessage( + message: Message, + out: SupportsWrite[str], + indent: int = ..., + as_utf8: bool = ..., + as_one_line: bool = ..., + 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 = ..., + print_unknown_fields: bool = ..., + force_colon: bool = ..., +) -> None: ... +def PrintField( + field: FieldDescriptor, + value: Any, + out: SupportsWrite[str], + indent: int = ..., + as_utf8: bool = ..., + as_one_line: bool = ..., + use_short_repeated_primitives: bool = ..., + pointy_brackets: bool = ..., + use_index_order: bool = ..., + float_format: str | None = ..., + double_format: str | None = ..., + message_formatter: _MessageFormatter | None = ..., + print_unknown_fields: bool = ..., + force_colon: bool = ..., +) -> None: ... +def PrintFieldValue( + field: FieldDescriptor, + value: Any, + out: SupportsWrite[str], + indent: int = ..., + as_utf8: bool = ..., + as_one_line: bool = ..., + use_short_repeated_primitives: bool = ..., + pointy_brackets: bool = ..., + use_index_order: bool = ..., + float_format: str | None = ..., + double_format: str | None = ..., + message_formatter: _MessageFormatter | None = ..., + print_unknown_fields: bool = ..., + force_colon: bool = ..., +) -> None: ... + +class _Printer: + out: SupportsWrite[str] + indent: int + as_utf8: bool + as_one_line: bool + 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 + print_unknown_fields: bool + force_colon: bool + def __init__( + self, + out: SupportsWrite[str], + indent: int = ..., + as_utf8: bool = ..., + as_one_line: bool = ..., + 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 = ..., + print_unknown_fields: bool = ..., + force_colon: bool = ..., + ) -> None: ... + def PrintMessage(self, message: Message) -> None: ... + def PrintField(self, field: FieldDescriptor, value: Any) -> None: ... + def PrintFieldValue(self, field: FieldDescriptor, value: Any) -> None: ... + +def Parse( + text: str | bytes, + message: _M, + allow_unknown_extension: bool = ..., + allow_field_number: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + allow_unknown_field: bool = ..., +) -> _M: ... +def Merge( + text: str | bytes, + message: _M, + allow_unknown_extension: bool = ..., + allow_field_number: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + allow_unknown_field: bool = ..., +) -> _M: ... +def MergeLines( + lines: Iterable[str | bytes], + message: _M, + allow_unknown_extension: bool = ..., + allow_field_number: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + allow_unknown_field: bool = ..., +) -> _M: ... + +class _Parser: + allow_unknown_extension: bool + allow_field_number: bool + descriptor_pool: DescriptorPool | None + allow_unknown_field: bool + def __init__( + self, + allow_unknown_extension: bool = ..., + allow_field_number: bool = ..., + descriptor_pool: DescriptorPool | None = ..., + allow_unknown_field: bool = ..., + ) -> None: ... + def ParseLines(self, lines: Iterable[str | bytes], message: _M) -> _M: ... + def MergeLines(self, lines: Iterable[str | bytes], message: _M) -> _M: ... + +_ParseError: TypeAlias = ParseError + +class Tokenizer: + token: str + def __init__(self, lines: Iterable[str], skip_comments: bool = True) -> None: ... + def LookingAt(self, token: str) -> bool: ... + def AtEnd(self) -> bool: ... + def TryConsume(self, token: str) -> bool: ... + def Consume(self, token: str) -> None: ... + def ConsumeComment(self) -> str: ... + def ConsumeCommentOrTrailingComment(self) -> tuple[bool, str]: ... + def TryConsumeIdentifier(self) -> bool: ... + def ConsumeIdentifier(self) -> str: ... + def TryConsumeIdentifierOrNumber(self) -> bool: ... + def ConsumeIdentifierOrNumber(self) -> str: ... + def TryConsumeInteger(self) -> bool: ... + def ConsumeInteger(self) -> int: ... + def TryConsumeFloat(self) -> bool: ... + def ConsumeFloat(self) -> float: ... + def ConsumeBool(self) -> bool: ... + def TryConsumeByteString(self) -> bool: ... + def ConsumeString(self) -> str: ... + def ConsumeByteString(self) -> bytes: ... + def ConsumeEnum(self, field: FieldDescriptor) -> int: ... + def ParseErrorPreviousToken(self, message: Message) -> _ParseError: ... + def ParseError(self, message: Message) -> _ParseError: ... + def NextToken(self) -> None: ... + +def ParseInteger(text: str, is_signed: bool = ..., is_long: bool = ...) -> int: ... +def ParseFloat(text: str) -> float: ... +def ParseBool(text: str) -> bool: ... +def ParseEnum(field: FieldDescriptor, value: str) -> int: ... diff --git a/contrib/python/types-protobuf/google-stubs/protobuf/util/__init__.pyi b/contrib/python/types-protobuf/google-stubs/protobuf/util/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/contrib/python/types-protobuf/google-stubs/protobuf/util/__init__.pyi |