From d946d684aa4ac9a30f7d350812a44c08088d4fe0 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 26 Nov 2025 14:55:52 +0000 Subject: [PATCH 1/9] Add flags to generate only sync or only async stubs --- mypy_protobuf/main.py | 266 +++++++---- run_test.sh | 15 +- test/generated-async-only/__init__.py | 0 .../testproto/Capitalized/Capitalized_pb2.py | 40 ++ .../testproto/Capitalized/Capitalized_pb2.pyi | 66 +++ .../testproto/Capitalized/__init__.py | 0 .../testproto/__init__.py | 0 .../testproto/comment_special_chars_pb2.py | 36 ++ .../testproto/comment_special_chars_pb2.pyi | 82 ++++ .../testproto/dot/__init__.py | 0 .../testproto/dot/com/__init__.py | 0 .../testproto/dot/com/test_pb2.py | 36 ++ .../testproto/dot/com/test_pb2.pyi | 32 ++ .../testproto/edition2024_pb2.py | 47 ++ .../testproto/edition2024_pb2.pyi | 68 +++ .../testproto/grpc/__init__.py | 0 .../testproto/grpc/dummy_pb2.py | 54 +++ .../testproto/grpc/dummy_pb2.pyi | 68 +++ .../testproto/grpc/dummy_pb2_grpc.py | 353 ++++++++++++++ .../testproto/grpc/dummy_pb2_grpc.pyi | 133 ++++++ .../testproto/grpc/import_pb2.py | 38 ++ .../testproto/grpc/import_pb2.pyi | 8 + .../testproto/grpc/import_pb2_grpc.py | 189 ++++++++ .../testproto/grpc/import_pb2_grpc.pyi | 71 +++ .../testproto/inner/__init__.py | 0 .../testproto/inner/inner_pb2.py | 37 ++ .../testproto/inner/inner_pb2.pyi | 33 ++ .../testproto/nested/__init__.py | 0 .../testproto/nested/nested_pb2.py | 45 ++ .../testproto/nested/nested_pb2.pyi | 96 ++++ .../testproto/nopackage_pb2.py | 38 ++ .../testproto/nopackage_pb2.pyi | 52 +++ .../testproto/readme_enum_pb2.py | 36 ++ .../testproto/readme_enum_pb2.pyi | 32 ++ .../testproto/reexport_pb2.py | 39 ++ .../testproto/reexport_pb2.pyi | 19 + .../testproto/test3_pb2.py | 61 +++ .../testproto/test3_pb2.pyi | 209 +++++++++ .../testproto/test_extensions2_pb2.py | 37 ++ .../testproto/test_extensions2_pb2.pyi | 37 ++ .../testproto/test_extensions3_pb2.py | 40 ++ .../testproto/test_extensions3_pb2.pyi | 46 ++ .../testproto/test_no_generic_services_pb2.py | 38 ++ .../test_no_generic_services_pb2.pyi | 33 ++ .../testproto/test_pb2.py | 91 ++++ .../testproto/test_pb2.pyi | 439 ++++++++++++++++++ test/generated-sync-only/__init__.py | 0 .../testproto/Capitalized/Capitalized_pb2.py | 40 ++ .../testproto/Capitalized/Capitalized_pb2.pyi | 66 +++ .../testproto/Capitalized/__init__.py | 0 .../generated-sync-only/testproto/__init__.py | 0 .../testproto/comment_special_chars_pb2.py | 36 ++ .../testproto/comment_special_chars_pb2.pyi | 82 ++++ .../testproto/dot/__init__.py | 0 .../testproto/dot/com/__init__.py | 0 .../testproto/dot/com/test_pb2.py | 36 ++ .../testproto/dot/com/test_pb2.pyi | 32 ++ .../testproto/edition2024_pb2.py | 47 ++ .../testproto/edition2024_pb2.pyi | 68 +++ .../testproto/grpc/__init__.py | 0 .../testproto/grpc/dummy_pb2.py | 54 +++ .../testproto/grpc/dummy_pb2.pyi | 68 +++ .../testproto/grpc/dummy_pb2_grpc.py | 353 ++++++++++++++ .../testproto/grpc/dummy_pb2_grpc.pyi | 133 ++++++ .../testproto/grpc/import_pb2.py | 38 ++ .../testproto/grpc/import_pb2.pyi | 8 + .../testproto/grpc/import_pb2_grpc.py | 189 ++++++++ .../testproto/grpc/import_pb2_grpc.pyi | 71 +++ .../testproto/inner/__init__.py | 0 .../testproto/inner/inner_pb2.py | 37 ++ .../testproto/inner/inner_pb2.pyi | 33 ++ .../testproto/nested/__init__.py | 0 .../testproto/nested/nested_pb2.py | 45 ++ .../testproto/nested/nested_pb2.pyi | 96 ++++ .../testproto/nopackage_pb2.py | 38 ++ .../testproto/nopackage_pb2.pyi | 52 +++ .../testproto/readme_enum_pb2.py | 36 ++ .../testproto/readme_enum_pb2.pyi | 32 ++ .../testproto/reexport_pb2.py | 39 ++ .../testproto/reexport_pb2.pyi | 19 + .../testproto/test3_pb2.py | 61 +++ .../testproto/test3_pb2.pyi | 209 +++++++++ .../testproto/test_extensions2_pb2.py | 37 ++ .../testproto/test_extensions2_pb2.pyi | 37 ++ .../testproto/test_extensions3_pb2.py | 40 ++ .../testproto/test_extensions3_pb2.pyi | 46 ++ .../testproto/test_no_generic_services_pb2.py | 38 ++ .../test_no_generic_services_pb2.pyi | 33 ++ .../generated-sync-only/testproto/test_pb2.py | 91 ++++ .../testproto/test_pb2.pyi | 439 ++++++++++++++++++ test/test_async_only.py | 18 + test/test_sync_only.py | 17 + 92 files changed, 5791 insertions(+), 83 deletions(-) create mode 100644 test/generated-async-only/__init__.py create mode 100644 test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py create mode 100644 test/generated-async-only/testproto/Capitalized/Capitalized_pb2.pyi create mode 100644 test/generated-async-only/testproto/Capitalized/__init__.py create mode 100644 test/generated-async-only/testproto/__init__.py create mode 100644 test/generated-async-only/testproto/comment_special_chars_pb2.py create mode 100644 test/generated-async-only/testproto/comment_special_chars_pb2.pyi create mode 100644 test/generated-async-only/testproto/dot/__init__.py create mode 100644 test/generated-async-only/testproto/dot/com/__init__.py create mode 100644 test/generated-async-only/testproto/dot/com/test_pb2.py create mode 100644 test/generated-async-only/testproto/dot/com/test_pb2.pyi create mode 100644 test/generated-async-only/testproto/edition2024_pb2.py create mode 100644 test/generated-async-only/testproto/edition2024_pb2.pyi create mode 100644 test/generated-async-only/testproto/grpc/__init__.py create mode 100644 test/generated-async-only/testproto/grpc/dummy_pb2.py create mode 100644 test/generated-async-only/testproto/grpc/dummy_pb2.pyi create mode 100644 test/generated-async-only/testproto/grpc/dummy_pb2_grpc.py create mode 100644 test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi create mode 100644 test/generated-async-only/testproto/grpc/import_pb2.py create mode 100644 test/generated-async-only/testproto/grpc/import_pb2.pyi create mode 100644 test/generated-async-only/testproto/grpc/import_pb2_grpc.py create mode 100644 test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi create mode 100644 test/generated-async-only/testproto/inner/__init__.py create mode 100644 test/generated-async-only/testproto/inner/inner_pb2.py create mode 100644 test/generated-async-only/testproto/inner/inner_pb2.pyi create mode 100644 test/generated-async-only/testproto/nested/__init__.py create mode 100644 test/generated-async-only/testproto/nested/nested_pb2.py create mode 100644 test/generated-async-only/testproto/nested/nested_pb2.pyi create mode 100644 test/generated-async-only/testproto/nopackage_pb2.py create mode 100644 test/generated-async-only/testproto/nopackage_pb2.pyi create mode 100644 test/generated-async-only/testproto/readme_enum_pb2.py create mode 100644 test/generated-async-only/testproto/readme_enum_pb2.pyi create mode 100644 test/generated-async-only/testproto/reexport_pb2.py create mode 100644 test/generated-async-only/testproto/reexport_pb2.pyi create mode 100644 test/generated-async-only/testproto/test3_pb2.py create mode 100644 test/generated-async-only/testproto/test3_pb2.pyi create mode 100644 test/generated-async-only/testproto/test_extensions2_pb2.py create mode 100644 test/generated-async-only/testproto/test_extensions2_pb2.pyi create mode 100644 test/generated-async-only/testproto/test_extensions3_pb2.py create mode 100644 test/generated-async-only/testproto/test_extensions3_pb2.pyi create mode 100644 test/generated-async-only/testproto/test_no_generic_services_pb2.py create mode 100644 test/generated-async-only/testproto/test_no_generic_services_pb2.pyi create mode 100644 test/generated-async-only/testproto/test_pb2.py create mode 100644 test/generated-async-only/testproto/test_pb2.pyi create mode 100644 test/generated-sync-only/__init__.py create mode 100644 test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py create mode 100644 test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi create mode 100644 test/generated-sync-only/testproto/Capitalized/__init__.py create mode 100644 test/generated-sync-only/testproto/__init__.py create mode 100644 test/generated-sync-only/testproto/comment_special_chars_pb2.py create mode 100644 test/generated-sync-only/testproto/comment_special_chars_pb2.pyi create mode 100644 test/generated-sync-only/testproto/dot/__init__.py create mode 100644 test/generated-sync-only/testproto/dot/com/__init__.py create mode 100644 test/generated-sync-only/testproto/dot/com/test_pb2.py create mode 100644 test/generated-sync-only/testproto/dot/com/test_pb2.pyi create mode 100644 test/generated-sync-only/testproto/edition2024_pb2.py create mode 100644 test/generated-sync-only/testproto/edition2024_pb2.pyi create mode 100644 test/generated-sync-only/testproto/grpc/__init__.py create mode 100644 test/generated-sync-only/testproto/grpc/dummy_pb2.py create mode 100644 test/generated-sync-only/testproto/grpc/dummy_pb2.pyi create mode 100644 test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.py create mode 100644 test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.pyi create mode 100644 test/generated-sync-only/testproto/grpc/import_pb2.py create mode 100644 test/generated-sync-only/testproto/grpc/import_pb2.pyi create mode 100644 test/generated-sync-only/testproto/grpc/import_pb2_grpc.py create mode 100644 test/generated-sync-only/testproto/grpc/import_pb2_grpc.pyi create mode 100644 test/generated-sync-only/testproto/inner/__init__.py create mode 100644 test/generated-sync-only/testproto/inner/inner_pb2.py create mode 100644 test/generated-sync-only/testproto/inner/inner_pb2.pyi create mode 100644 test/generated-sync-only/testproto/nested/__init__.py create mode 100644 test/generated-sync-only/testproto/nested/nested_pb2.py create mode 100644 test/generated-sync-only/testproto/nested/nested_pb2.pyi create mode 100644 test/generated-sync-only/testproto/nopackage_pb2.py create mode 100644 test/generated-sync-only/testproto/nopackage_pb2.pyi create mode 100644 test/generated-sync-only/testproto/readme_enum_pb2.py create mode 100644 test/generated-sync-only/testproto/readme_enum_pb2.pyi create mode 100644 test/generated-sync-only/testproto/reexport_pb2.py create mode 100644 test/generated-sync-only/testproto/reexport_pb2.pyi create mode 100644 test/generated-sync-only/testproto/test3_pb2.py create mode 100644 test/generated-sync-only/testproto/test3_pb2.pyi create mode 100644 test/generated-sync-only/testproto/test_extensions2_pb2.py create mode 100644 test/generated-sync-only/testproto/test_extensions2_pb2.pyi create mode 100644 test/generated-sync-only/testproto/test_extensions3_pb2.py create mode 100644 test/generated-sync-only/testproto/test_extensions3_pb2.pyi create mode 100644 test/generated-sync-only/testproto/test_no_generic_services_pb2.py create mode 100644 test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi create mode 100644 test/generated-sync-only/testproto/test_pb2.py create mode 100644 test/generated-sync-only/testproto/test_pb2.pyi create mode 100644 test/test_async_only.py create mode 100644 test/test_sync_only.py diff --git a/mypy_protobuf/main.py b/mypy_protobuf/main.py index 487f30f5..68f5e39b 100644 --- a/mypy_protobuf/main.py +++ b/mypy_protobuf/main.py @@ -3,6 +3,7 @@ from __future__ import annotations import ast +import enum import sys from collections import defaultdict from contextlib import contextmanager @@ -119,9 +120,9 @@ def _add_enums( prefix: str, _fd: d.FileDescriptorProto, ) -> None: - for enum in enums: - self.message_to_fd[prefix + enum.name] = _fd - self.message_to_fd[prefix + enum.name + ".ValueType"] = _fd + for enum_proto in enums: + self.message_to_fd[prefix + enum_proto.name] = _fd + self.message_to_fd[prefix + enum_proto.name + ".ValueType"] = _fd def _add_messages( messages: "RepeatedCompositeFieldContainer[d.DescriptorProto]", @@ -141,6 +142,29 @@ def _add_messages( _add_enums(fd.enum_type, start_prefix, fd) +class GRPCType(enum.Enum): + SYNC = "SYNC" + ASYNC = "ASYNC" + BOTH = "BOTH" + + @classmethod + def from_parameter(cls, parameter: str) -> GRPCType: + if "only_sync" in parameter: + return GRPCType.SYNC + elif "only_async" in parameter: + return GRPCType.ASYNC + else: + return GRPCType.BOTH + + @property + def supports_sync(self) -> bool: + return self in (GRPCType.SYNC, GRPCType.BOTH) + + @property + def supports_async(self) -> bool: + return self in (GRPCType.ASYNC, GRPCType.BOTH) + + class PkgWriter(object): """Writes a single pyi file""" @@ -153,6 +177,7 @@ def __init__( use_default_deprecation_warnings: bool, generate_concrete_servicer_stubs: bool, grpc: bool, + grpc_type: GRPCType = GRPCType.BOTH, ) -> None: self.fd = fd self.descriptors = descriptors @@ -161,6 +186,7 @@ def __init__( self.use_default_depreaction_warnings = use_default_deprecation_warnings self.generate_concrete_servicer_stubs = generate_concrete_servicer_stubs self.grpc = grpc + self.grpc_type = grpc_type self.lines: List[str] = [] self.indent = "" @@ -263,7 +289,7 @@ def _has_comments(self, scl: SourceCodeLocation) -> bool: return sci_loc is not None and bool(sci_loc.leading_detached_comments or sci_loc.leading_comments or sci_loc.trailing_comments) def _get_comments(self, scl: SourceCodeLocation) -> List[str]: - """Return list of comment lines""" + """Return a list of comment lines""" if not self._has_comments(scl): return [] @@ -385,12 +411,12 @@ def write_enums( scl_prefix: SourceCodeLocation, ) -> None: wl = self._write_line - for i, enum in enumerate(enums): - class_name = enum.name if enum.name not in PYTHON_RESERVED else "_r_" + enum.name + for i, enum_proto in enumerate(enums): + class_name = enum_proto.name if enum_proto.name not in PYTHON_RESERVED else "_r_" + enum_proto.name value_type_fq = prefix + class_name + ".ValueType" - enum_helper_class = "_" + enum.name + enum_helper_class = "_" + enum_proto.name value_type_helper_fq = prefix + enum_helper_class + ".ValueType" - etw_helper_class = "_" + enum.name + "EnumTypeWrapper" + etw_helper_class = "_" + enum_proto.name + "EnumTypeWrapper" scl = scl_prefix + [i] wl(f"class {enum_helper_class}:") @@ -414,13 +440,13 @@ def write_enums( ed = self._import("google.protobuf.descriptor", "EnumDescriptor") wl(f"DESCRIPTOR: {ed}") self.write_enum_values( - [(i, v) for i, v in enumerate(enum.value) if v.name not in PROTO_ENUM_RESERVED], + [(i, v) for i, v in enumerate(enum_proto.value) if v.name not in PROTO_ENUM_RESERVED], value_type_helper_fq, scl + [d.EnumDescriptorProto.VALUE_FIELD_NUMBER], ) wl("") - if enum.options.deprecated: + if enum_proto.options.deprecated: self._write_deprecation_warning( scl + [d.EnumDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.EnumOptions.DEPRECATED_FIELD_NUMBER], "This enum has been marked as deprecated using proto enum options.", @@ -436,7 +462,7 @@ def write_enums( wl("") self.write_enum_values( - enumerate(enum.value), + enumerate(enum_proto.value), value_type_fq, scl + [d.EnumDescriptorProto.VALUE_FIELD_NUMBER], ) @@ -755,8 +781,13 @@ def _input_type(self, method: d.MethodDescriptorProto) -> str: def _servicer_input_type(self, method: d.MethodDescriptorProto) -> str: result = self._import_message(method.input_type) if method.client_streaming: - # See write_grpc_async_hacks(). - result = f"_MaybeAsyncIterator[{result}]" + # See write_grpc_iterator_type(). + if self.grpc_type == GRPCType.SYNC: + result = f'{self._import("collections.abc", "Iterator")}[{result}]' + elif self.grpc_type == GRPCType.ASYNC: + result = f'{self._import("collections.abc", "AsyncIterator")}[{result}]' + else: + result = f"_MaybeAsyncIterator[{result}]" return result def _output_type(self, method: d.MethodDescriptorProto) -> str: @@ -768,33 +799,64 @@ def _servicer_output_type(self, method: d.MethodDescriptorProto) -> str: if method.server_streaming: # Union[Iterator[Resp], AsyncIterator[Resp]] is subtyped by Iterator[Resp] and AsyncIterator[Resp]. # So both can be used in the covariant function return position. - iterator = f"{self._import('collections.abc', 'Iterator')}[{result}]" - aiterator = f"{self._import('collections.abc', 'AsyncIterator')}[{result}]" - result = f"{self._import('typing', 'Union')}[{iterator}, {aiterator}]" + sync = f"{self._import('collections.abc', 'Iterator')}[{result}]" + a_sync = f"{self._import('collections.abc', 'AsyncIterator')}[{result}]" + result = f"{self._import('typing', 'Union')}[{sync}, {a_sync}]" else: # Union[Resp, Awaitable[Resp]] is subtyped by Resp and Awaitable[Resp]. # So both can be used in the covariant function return position. # Awaitable[Resp] is equivalent to async def. - awaitable = f"{self._import('collections.abc', 'Awaitable')}[{result}]" - result = f"{self._import('typing', 'Union')}[{result}, {awaitable}]" - return result + sync = result + a_sync = f"{self._import('collections.abc', 'Awaitable')}[{result}]" + result = f"{self._import('typing', 'Union')}[{sync}, {a_sync}]" + + if self.grpc_type == GRPCType.SYNC: + return sync + elif self.grpc_type == GRPCType.ASYNC: + return a_sync + else: + return result - def write_grpc_async_hacks(self) -> None: + def write_grpc_iterator_type(self) -> None: wl = self._write_line - # _MaybeAsyncIterator[Req] is supertyped by Iterator[Req] and AsyncIterator[Req]. - # So both can be used in the contravariant function parameter position. - wl('_T = {}("_T")', self._import("typing", "TypeVar")) - wl("") - wl( - "class _MaybeAsyncIterator({}[_T], {}[_T], metaclass={}): ...", - self._import("collections.abc", "AsyncIterator"), - self._import("collections.abc", "Iterator"), - self._import("abc", "ABCMeta"), - ) + + if self.grpc_type == GRPCType.SYNC: + self._import("collections.abc", "Iterator") + elif self.grpc_type == GRPCType.ASYNC: + self._import("collections.abc", "AsyncIterator") + else: + # _MaybeAsyncIterator[Req] is supertyped by Iterator[Req] and AsyncIterator[Req]. + # So both can be used in the contravariant function parameter position. + wl('_T = {}("_T")', self._import("typing", "TypeVar")) + wl("") + wl( + "class _MaybeAsyncIterator({}[_T], {}[_T], metaclass={}): ...", + self._import("collections.abc", "AsyncIterator"), + self._import("collections.abc", "Iterator"), + self._import("abc", "ABCMeta"), + ) wl("") - # _ServicerContext is supertyped by grpc.ServicerContext and grpc.aio.ServicerContext - # So both can be used in the contravariant function parameter position. + def get_servicer_context_type(self) -> str: + """Get the type to use for the context parameter in servicer methods.""" + if self.grpc_type == GRPCType.ASYNC: + return self._import("grpc.aio", "ServicerContext") + elif self.grpc_type == GRPCType.SYNC: + return self._import("grpc", "ServicerContext") + else: + # BOTH mode uses _ServicerContext union class + return "_ServicerContext" + + def write_grpc_servicer_context(self) -> None: + """Write _ServicerContext class only for BOTH mode (union type needed).""" + wl = self._write_line + + if self.grpc_type != GRPCType.BOTH: + return + + # BOTH mode: _ServicerContext is a union class that's supertyped by both + # grpc.ServicerContext and grpc.aio.ServicerContext, so both can be used + # in the contravariant function parameter position. wl( "class _ServicerContext({}, {}): # type: ignore[misc, type-arg]", self._import("grpc", "ServicerContext"), @@ -810,26 +872,40 @@ def write_grpc_type_vars(self, service: d.ServiceDescriptorProto) -> None: if not methods: return for _, method in methods: - wl("{} = {}(", _build_typevar_name(service.name, method.name), self._import("typing_extensions", "TypeVar")) - with self._indent(): - wl("'{}',", _build_typevar_name(service.name, method.name)) - wl("{}[", self._callable_type(method, is_async=False)) + # Write only a sync of an async version + if self.grpc_type != GRPCType.BOTH: + type_var = _build_typevar_name(service.name, method.name) + callable_type = self._callable_type(method, is_async=self.grpc_type == GRPCType.ASYNC) + wl("{}: {} = {}[", type_var, self._import("typing_extensions", "TypeAlias"), callable_type) with self._indent(): wl("{},", self._input_type(method)) wl("{},", self._output_type(method)) - wl("],") - wl("{}[", self._callable_type(method, is_async=True)) - with self._indent(): - wl("{},", self._input_type(method)) - wl("{},", self._output_type(method)) - wl("],") - wl("default={}[", self._callable_type(method, is_async=False)) + wl("]") + + # Write both sync and async as a TypeVar + else: + wl("{} = {}(", _build_typevar_name(service.name, method.name), self._import("typing_extensions", "TypeVar")) with self._indent(): - wl("{},", self._input_type(method)) - wl("{},", self._output_type(method)) - wl("],") - wl(")") - wl("") + wl("'{}',", _build_typevar_name(service.name, method.name)) + wl("{}[", self._callable_type(method, is_async=False)) + with self._indent(): + wl("{},", self._input_type(method)) + wl("{},", self._output_type(method)) + wl("],") + + wl("{}[", self._callable_type(method, is_async=True)) + with self._indent(): + wl("{},", self._input_type(method)) + wl("{},", self._output_type(method)) + wl("],") + + wl("default={}[", self._callable_type(method, is_async=False)) + with self._indent(): + wl("{},", self._input_type(method)) + wl("{},", self._output_type(method)) + wl("],") + wl(")") + wl("") def write_self_types(self, service: d.ServiceDescriptorProto, is_async: bool) -> None: wl = self._write_line @@ -861,7 +937,7 @@ def write_grpc_methods(self, service: d.ServiceDescriptorProto, scl_prefix: Sour input_name = "request_iterator" if method.client_streaming else "request" input_type = self._servicer_input_type(method) wl(f"{input_name}: {input_type},") - wl("context: _ServicerContext,") + wl("context: {},", self.get_servicer_context_type()) wl( ") -> {}:{}", self._servicer_output_type(method), @@ -910,43 +986,50 @@ def write_grpc_services( "This stub has been marked as deprecated using proto service options.", ) class_name = f"{service.name}Stub" - wl( - "class {}({}[{}]):", - class_name, - self._import("typing", "Generic"), - ", ".join(f"{_build_typevar_name(service.name, method.name)}" for method in service.method), - ) + + if self.grpc_type == GRPCType.BOTH: + wl( + "class {}({}[{}]):", + class_name, + self._import("typing", "Generic"), + ", ".join(f"{_build_typevar_name(service.name, method.name)}" for method in service.method), + ) + else: + wl(f"class {class_name}:") + with self._indent(): if self._write_comments(scl): wl("") - # Write sync overload - wl("@{}", self._import("typing", "overload")) - wl("def __init__(self: {}[", class_name) - self.write_self_types(service, False) - wl( - "], channel: {}) -> None: ...", - self._import("grpc", "Channel"), - ) - wl("") + if self.grpc_type == GRPCType.BOTH: + # Write sync overload + wl("@{}", self._import("typing", "overload")) + wl("def __init__(self: {}[", class_name) + self.write_self_types(service, is_async=False) + wl( + "], channel: {}) -> None: ...", + self._import("grpc", "Channel"), + ) + wl("") - # Write async overload - wl("@{}", self._import("typing", "overload")) - wl("def __init__(self: {}[", class_name) - self.write_self_types(service, True) - wl( - "], channel: {}) -> None: ...", - self._import("grpc.aio", "Channel"), - ) - wl("") + # Write async overload + wl("@{}", self._import("typing", "overload")) + wl("def __init__(self: {}[", class_name) + self.write_self_types(service, is_async=True) + wl( + "], channel: {}) -> None: ...", + self._import("grpc.aio", "Channel"), + ) + wl("") self.write_grpc_stub_methods(service, scl) - # Write AsyncStub alias - wl("{}AsyncStub: {} = {}[", service.name, self._import("typing_extensions", "TypeAlias"), class_name) - self.write_self_types(service, True) - wl("]") - wl("") + if self.grpc_type == GRPCType.BOTH and self.grpc_type.supports_async: + # Write AsyncStub alias (only when Stub is generic) + wl("{}AsyncStub: {} = {}[", service.name, self._import("typing_extensions", "TypeAlias"), class_name) + self.write_self_types(service, is_async=True) + wl("]") + wl("") # The service definition interface if service.options.deprecated: @@ -969,21 +1052,36 @@ def write_grpc_services( if self._write_comments(scl): wl("") self.write_grpc_methods(service, scl) - server = self._import("grpc", "Server") - aserver = self._import("grpc.aio", "Server") + if service.options.deprecated: self._write_deprecation_warning( scl + [d.ServiceDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.ServiceOptions.DEPRECATED_FIELD_NUMBER], "This servicer has been marked as deprecated using proto service options.", ) + wl( "def add_{}Servicer_to_server(servicer: {}Servicer, server: {}) -> None: ...", service.name, service.name, - f"{self._import('typing', 'Union')}[{server}, {aserver}]", + self.make_server_type(), ) wl("") + def make_server_type(self) -> str: + server = aserver = None + if self.grpc_type.supports_sync: + server = self._import("grpc", "Server") + if self.grpc_type.supports_async: + aserver = self._import("grpc.aio", "Server") + + if server and aserver: + return f"{self._import('typing', 'Union')}[{server}, {aserver}]" + elif server: + return server + elif aserver: + return aserver + raise RuntimeError(f"Impossible, {self.grpc_type=}") # pragma: no cover + def python_type(self, field: d.FieldDescriptorProto, generic_container: bool = False) -> str: """ generic_container @@ -1171,6 +1269,7 @@ def generate_mypy_grpc_stubs( relax_strict_optional_primitives: bool, use_default_deprecation_warnings: bool, generate_concrete_servicer_stubs: bool, + grpc_type: GRPCType, ) -> None: for name, fd in descriptors.to_generate.items(): pkg_writer = PkgWriter( @@ -1181,8 +1280,10 @@ def generate_mypy_grpc_stubs( use_default_deprecation_warnings, generate_concrete_servicer_stubs, grpc=True, + grpc_type=grpc_type, ) - pkg_writer.write_grpc_async_hacks() + pkg_writer.write_grpc_iterator_type() + pkg_writer.write_grpc_servicer_context() pkg_writer.write_grpc_services(fd.service, [d.FileDescriptorProto.SERVICE_FIELD_NUMBER]) assert name == fd.name @@ -1251,6 +1352,7 @@ def grpc() -> None: "relax_strict_optional_primitives" in request.parameter, "use_default_deprecation_warnings" in request.parameter, "generate_concrete_servicer_stubs" in request.parameter, + GRPCType.from_parameter(request.parameter), ) diff --git a/run_test.sh b/run_test.sh index f6426ac6..71828c0b 100755 --- a/run_test.sh +++ b/run_test.sh @@ -135,6 +135,11 @@ MYPY_PROTOBUF_VENV=venv_$PY_VER_MYPY_PROTOBUF find proto -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_out=generate_concrete_servicer_stubs:test/generated-concrete find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=generate_concrete_servicer_stubs:test/generated-concrete + # Generate with sync_only stubs for testing + find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=only_sync:test/generated-sync-only + + # Generate with async_only stubs for testing + find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=only_async:test/generated-async-only if [[ -n $VALIDATE ]] && ! diff <(echo "$SHA_BEFORE") <(find test/generated -name "*.pyi" -print0 | xargs -0 sha1sum); then echo -e "${RED}Some .pyi files did not match. Please commit those files${NC}" @@ -161,6 +166,14 @@ for PY_VER in $PY_VER_UNIT_TESTS; do CONCRETE_MODULES=( -m test.test_concrete ) MYPYPATH=$MYPYPATH:test/generated-concrete mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${CONCRETE_MODULES[@]}" + # Run sync_only mypy + SYNC_ONLY_MODULES=( -m test.test_sync_only ) + MYPYPATH=$MYPYPATH:test/generated-sync-only mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${SYNC_ONLY_MODULES[@]}" + + # Run async_only mypy + ASYNC_ONLY_MODULES=( -m test.test_async_only ) + MYPYPATH=$MYPYPATH:test/generated-async-only mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${ASYNC_ONLY_MODULES[@]}" + export MYPYPATH=$MYPYPATH:test/generated # Run mypy @@ -209,7 +222,7 @@ for PY_VER in $PY_VER_UNIT_TESTS; do ( # Run unit tests. source "$UNIT_TESTS_VENV"/bin/activate - PYTHONPATH=test/generated py.test --ignore=test/generated -v + PYTHONPATH=test/generated py.test --ignore=test/generated --ignore=test/generated-sync-only --ignore=test/generated-async-only -v ) done diff --git a/test/generated-async-only/__init__.py b/test/generated-async-only/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py b/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py new file mode 100644 index 00000000..6fddb96c --- /dev/null +++ b/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/Capitalized/Capitalized.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/Capitalized/Capitalized.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'testproto/Capitalized/Capitalized.proto\x12\x0b\x43\x61pitalized\"\x12\n\x05lower\x12\t\n\x01\x61\x18\x01 \x01(\x03\"*\n\x05Upper\x12!\n\x05Lower\x18\x01 \x01(\x0b\x32\x12.Capitalized.lower\"+\n\x06lower2\x12!\n\x05upper\x18\x01 \x01(\x0b\x32\x12.Capitalized.Upperb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.Capitalized.Capitalized_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_LOWER']._serialized_start=56 + _globals['_LOWER']._serialized_end=74 + _globals['_UPPER']._serialized_start=76 + _globals['_UPPER']._serialized_end=118 + _globals['_LOWER2']._serialized_start=120 + _globals['_LOWER2']._serialized_end=163 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.pyi b/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.pyi new file mode 100644 index 00000000..828d26f2 --- /dev/null +++ b/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.pyi @@ -0,0 +1,66 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class lower(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + a: builtins.int + def __init__( + self, + *, + a: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... + +Global___lower: typing_extensions.TypeAlias = lower + +@typing.final +class Upper(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOWER_FIELD_NUMBER: builtins.int + @property + def Lower(self) -> Global___lower: ... + def __init__( + self, + *, + Lower: Global___lower | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["Lower", b"Lower"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["Lower", b"Lower"]) -> None: ... + +Global___Upper: typing_extensions.TypeAlias = Upper + +@typing.final +class lower2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UPPER_FIELD_NUMBER: builtins.int + @property + def upper(self) -> Global___Upper: ... + def __init__( + self, + *, + upper: Global___Upper | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["upper", b"upper"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["upper", b"upper"]) -> None: ... + +Global___lower2: typing_extensions.TypeAlias = lower2 diff --git a/test/generated-async-only/testproto/Capitalized/__init__.py b/test/generated-async-only/testproto/Capitalized/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/__init__.py b/test/generated-async-only/testproto/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/comment_special_chars_pb2.py b/test/generated-async-only/testproto/comment_special_chars_pb2.py new file mode 100644 index 00000000..74655702 --- /dev/null +++ b/test/generated-async-only/testproto/comment_special_chars_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/comment_special_chars.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/comment_special_chars.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%testproto/comment_special_chars.proto\x12\x15\x63omment_special_chars\"\x7f\n\x04Test\x12\t\n\x01\x61\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\t\x12\t\n\x01\x63\x18\x03 \x01(\t\x12\t\n\x01\x64\x18\x04 \x01(\t\x12\t\n\x01\x65\x18\x05 \x01(\t\x12\t\n\x01\x66\x18\x06 \x01(\t\x12\t\n\x01g\x18\x07 \x01(\t\x12\t\n\x01h\x18\x08 \x01(\t\x12\t\n\x01i\x18\t \x01(\t\x12\t\n\x01j\x18\n \x01(\t\x12\t\n\x01k\x18\x0b \x01(\tb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.comment_special_chars_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_TEST']._serialized_start=64 + _globals['_TEST']._serialized_end=191 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/comment_special_chars_pb2.pyi b/test/generated-async-only/testproto/comment_special_chars_pb2.pyi new file mode 100644 index 00000000..21823424 --- /dev/null +++ b/test/generated-async-only/testproto/comment_special_chars_pb2.pyi @@ -0,0 +1,82 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Test(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + B_FIELD_NUMBER: builtins.int + C_FIELD_NUMBER: builtins.int + D_FIELD_NUMBER: builtins.int + E_FIELD_NUMBER: builtins.int + F_FIELD_NUMBER: builtins.int + G_FIELD_NUMBER: builtins.int + H_FIELD_NUMBER: builtins.int + I_FIELD_NUMBER: builtins.int + J_FIELD_NUMBER: builtins.int + K_FIELD_NUMBER: builtins.int + a: builtins.str + """Ending with " """ + b: builtins.str + """Ending with "" """ + c: builtins.str + """Ending with \"\"\" """ + d: builtins.str + """Ending with \\ """ + e: builtins.str + """Containing bad escape: \\x""" + f: builtins.str + """Containing \"\"\"" quadruple""" + g: builtins.str + """Containing \"\"\""" quintuple""" + h: builtins.str + """Containing \"\"\"\"\"\" sextuple""" + i: builtins.str + """\"\"\" Multiple \"\"\" triples \"\"\" """ + j: builtins.str + """"quotes" can be a problem in comments. + \"\"\"Triple quotes\"\"\" just as well + """ + k: builtins.str + """\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" + " " + " Super Duper comments with surrounding edges! " + " " + " Pay attention to me!!!! " + " " + \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" + """ + def __init__( + self, + *, + a: builtins.str = ..., + b: builtins.str = ..., + c: builtins.str = ..., + d: builtins.str = ..., + e: builtins.str = ..., + f: builtins.str = ..., + g: builtins.str = ..., + h: builtins.str = ..., + i: builtins.str = ..., + j: builtins.str = ..., + k: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a", "b", b"b", "c", b"c", "d", b"d", "e", b"e", "f", b"f", "g", b"g", "h", b"h", "i", b"i", "j", b"j", "k", b"k"]) -> None: ... + +Global___Test: typing_extensions.TypeAlias = Test diff --git a/test/generated-async-only/testproto/dot/__init__.py b/test/generated-async-only/testproto/dot/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/dot/com/__init__.py b/test/generated-async-only/testproto/dot/com/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/dot/com/test_pb2.py b/test/generated-async-only/testproto/dot/com/test_pb2.py new file mode 100644 index 00000000..de4a85eb --- /dev/null +++ b/test/generated-async-only/testproto/dot/com/test_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/dot.com/test.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/dot.com/test.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ctestproto/dot.com/test.proto\x12\x04test\"\x1a\n\x0bTestMessage\x12\x0b\n\x03\x66oo\x18\x01 \x01(\tb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.dot.com.test_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_TESTMESSAGE']._serialized_start=38 + _globals['_TESTMESSAGE']._serialized_end=64 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/dot/com/test_pb2.pyi b/test/generated-async-only/testproto/dot/com/test_pb2.pyi new file mode 100644 index 00000000..bb7e86c1 --- /dev/null +++ b/test/generated-async-only/testproto/dot/com/test_pb2.pyi @@ -0,0 +1,32 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class TestMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FOO_FIELD_NUMBER: builtins.int + foo: builtins.str + def __init__( + self, + *, + foo: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["foo", b"foo"]) -> None: ... + +Global___TestMessage: typing_extensions.TypeAlias = TestMessage diff --git a/test/generated-async-only/testproto/edition2024_pb2.py b/test/generated-async-only/testproto/edition2024_pb2.py new file mode 100644 index 00000000..40e73646 --- /dev/null +++ b/test/generated-async-only/testproto/edition2024_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/edition2024.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/edition2024.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/edition2024.proto\x12\x04test\"\'\n\x16\x45\x64itions2024SubMessage\x12\r\n\x05thing\x18\x01 \x01(\t\"\xc3\x01\n\x10\x45\x64itions2024Test\x12\x15\n\x06legacy\x18\x01 \x01(\tB\x05\xaa\x01\x02\x08\x03\x12 \n\x11\x65xplicit_singular\x18\x02 \x01(\tB\x05\xaa\x01\x02\x08\x01\x12:\n\rmessage_field\x18\x03 \x01(\x0b\x32\x1c.test.Editions2024SubMessageB\x05\xaa\x01\x02\x08\x01\x12 \n\x11implicit_singular\x18\x04 \x01(\tB\x05\xaa\x01\x02\x08\x02\x12\x18\n\x10\x64\x65\x66\x61ult_singular\x18\x05 \x01(\tB\x05\x92\x03\x02 \x03\x62\x08\x65\x64itionsp\xe9\x07') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.edition2024_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\222\003\002 \003' + _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._serialized_options = b'\252\001\002\010\003' + _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._serialized_options = b'\252\001\002\010\001' + _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._serialized_options = b'\252\001\002\010\001' + _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._serialized_options = b'\252\001\002\010\002' + _globals['_EDITIONS2024SUBMESSAGE']._serialized_start=37 + _globals['_EDITIONS2024SUBMESSAGE']._serialized_end=76 + _globals['_EDITIONS2024TEST']._serialized_start=79 + _globals['_EDITIONS2024TEST']._serialized_end=274 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/edition2024_pb2.pyi b/test/generated-async-only/testproto/edition2024_pb2.pyi new file mode 100644 index 00000000..6de2ba64 --- /dev/null +++ b/test/generated-async-only/testproto/edition2024_pb2.pyi @@ -0,0 +1,68 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Edition version of proto2 file""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Editions2024SubMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + THING_FIELD_NUMBER: builtins.int + thing: builtins.str + def __init__( + self, + *, + thing: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["thing", b"thing"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["thing", b"thing"]) -> None: ... + +Global___Editions2024SubMessage: typing_extensions.TypeAlias = Editions2024SubMessage + +@typing.final +class Editions2024Test(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LEGACY_FIELD_NUMBER: builtins.int + EXPLICIT_SINGULAR_FIELD_NUMBER: builtins.int + MESSAGE_FIELD_FIELD_NUMBER: builtins.int + IMPLICIT_SINGULAR_FIELD_NUMBER: builtins.int + DEFAULT_SINGULAR_FIELD_NUMBER: builtins.int + legacy: builtins.str + """Expect to be always set""" + explicit_singular: builtins.str + """Expect HasField generated""" + implicit_singular: builtins.str + """Expect implicit field presence, no HasField generated""" + default_singular: builtins.str + """Not set, should default to EXPLICIT""" + @property + def message_field(self) -> Global___Editions2024SubMessage: + """Expect HasField generated?""" + + def __init__( + self, + *, + legacy: builtins.str | None = ..., + explicit_singular: builtins.str | None = ..., + message_field: Global___Editions2024SubMessage | None = ..., + implicit_singular: builtins.str = ..., + default_singular: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["default_singular", b"default_singular", "explicit_singular", b"explicit_singular", "legacy", b"legacy", "message_field", b"message_field"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["default_singular", b"default_singular", "explicit_singular", b"explicit_singular", "implicit_singular", b"implicit_singular", "legacy", b"legacy", "message_field", b"message_field"]) -> None: ... + +Global___Editions2024Test: typing_extensions.TypeAlias = Editions2024Test diff --git a/test/generated-async-only/testproto/grpc/__init__.py b/test/generated-async-only/testproto/grpc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2.py b/test/generated-async-only/testproto/grpc/dummy_pb2.py new file mode 100644 index 00000000..995862f4 --- /dev/null +++ b/test/generated-async-only/testproto/grpc/dummy_pb2.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/grpc/dummy.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/grpc/dummy.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1atestproto/grpc/dummy.proto\x12\x05\x64ummy\"\x1d\n\x0c\x44ummyRequest\x12\r\n\x05value\x18\x01 \x01(\t\"\x1b\n\nDummyReply\x12\r\n\x05value\x18\x01 \x01(\t\".\n\x11\x44\x65precatedRequest\x12\x15\n\told_field\x18\x01 \x01(\tB\x02\x18\x01:\x02\x18\x01\x32\xfa\x01\n\x0c\x44ummyService\x12\x36\n\nUnaryUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x12\x39\n\x0bUnaryStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x30\x01\x12\x39\n\x0bStreamUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x12<\n\x0cStreamStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x30\x01\x32\xb3\x01\n\x11\x44\x65precatedService\x12\x44\n\x10\x44\x65precatedMethod\x12\x18.dummy.DeprecatedRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x12S\n$DeprecatedMethodNotDeprecatedRequest\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x1a\x03\x88\x02\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.dummy_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._loaded_options = None + _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._serialized_options = b'\030\001' + _globals['_DEPRECATEDREQUEST']._loaded_options = None + _globals['_DEPRECATEDREQUEST']._serialized_options = b'\030\001' + _globals['_DEPRECATEDSERVICE']._loaded_options = None + _globals['_DEPRECATEDSERVICE']._serialized_options = b'\210\002\001' + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._loaded_options = None + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._serialized_options = b'\210\002\001' + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._loaded_options = None + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._serialized_options = b'\210\002\001' + _globals['_DUMMYREQUEST']._serialized_start=37 + _globals['_DUMMYREQUEST']._serialized_end=66 + _globals['_DUMMYREPLY']._serialized_start=68 + _globals['_DUMMYREPLY']._serialized_end=95 + _globals['_DEPRECATEDREQUEST']._serialized_start=97 + _globals['_DEPRECATEDREQUEST']._serialized_end=143 + _globals['_DUMMYSERVICE']._serialized_start=146 + _globals['_DUMMYSERVICE']._serialized_end=396 + _globals['_DEPRECATEDSERVICE']._serialized_start=399 + _globals['_DEPRECATEDSERVICE']._serialized_end=578 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2.pyi b/test/generated-async-only/testproto/grpc/dummy_pb2.pyi new file mode 100644 index 00000000..ce03f2a5 --- /dev/null +++ b/test/generated-async-only/testproto/grpc/dummy_pb2.pyi @@ -0,0 +1,68 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +https://github.com/vmagamedov/grpclib/blob/master/tests/dummy.proto""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +if sys.version_info >= (3, 13): + from warnings import deprecated +else: + from typing_extensions import deprecated + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class DummyRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALUE_FIELD_NUMBER: builtins.int + value: builtins.str + def __init__( + self, + *, + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["value", b"value"]) -> None: ... + +Global___DummyRequest: typing_extensions.TypeAlias = DummyRequest + +@typing.final +class DummyReply(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALUE_FIELD_NUMBER: builtins.int + value: builtins.str + def __init__( + self, + *, + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["value", b"value"]) -> None: ... + +Global___DummyReply: typing_extensions.TypeAlias = DummyReply + +@deprecated("""This message has been marked as deprecated using proto message options.""") +@typing.final +class DeprecatedRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + OLD_FIELD_FIELD_NUMBER: builtins.int + old_field: builtins.str + def __init__( + self, + *, + old_field: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["old_field", b"old_field"]) -> None: ... + +Global___DeprecatedRequest: typing_extensions.TypeAlias = DeprecatedRequest diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.py b/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.py new file mode 100644 index 00000000..eef0f7f6 --- /dev/null +++ b/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.py @@ -0,0 +1,353 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import warnings + +import grpc +from testproto.grpc import dummy_pb2 as testproto_dot_grpc_dot_dummy__pb2 + +GRPC_GENERATED_VERSION = '1.76.0' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + ' but the generated code in testproto/grpc/dummy_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + + +class DummyServiceStub(object): + """DummyService + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.UnaryUnary = channel.unary_unary( + '/dummy.DummyService/UnaryUnary', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.UnaryStream = channel.unary_stream( + '/dummy.DummyService/UnaryStream', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.StreamUnary = channel.stream_unary( + '/dummy.DummyService/StreamUnary', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.StreamStream = channel.stream_stream( + '/dummy.DummyService/StreamStream', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + + +class DummyServiceServicer(object): + """DummyService + """ + + def UnaryUnary(self, request, context): + """UnaryUnary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UnaryStream(self, request, context): + """UnaryStream + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def StreamUnary(self, request_iterator, context): + """StreamUnary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def StreamStream(self, request_iterator, context): + """StreamStream + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DummyServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'UnaryUnary': grpc.unary_unary_rpc_method_handler( + servicer.UnaryUnary, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'UnaryStream': grpc.unary_stream_rpc_method_handler( + servicer.UnaryStream, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'StreamUnary': grpc.stream_unary_rpc_method_handler( + servicer.StreamUnary, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'StreamStream': grpc.stream_stream_rpc_method_handler( + servicer.StreamStream, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'dummy.DummyService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('dummy.DummyService', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class DummyService(object): + """DummyService + """ + + @staticmethod + def UnaryUnary(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dummy.DummyService/UnaryUnary', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def UnaryStream(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/dummy.DummyService/UnaryStream', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def StreamUnary(request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.stream_unary( + request_iterator, + target, + '/dummy.DummyService/StreamUnary', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def StreamStream(request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.stream_stream( + request_iterator, + target, + '/dummy.DummyService/StreamStream', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + +class DeprecatedServiceStub(object): + """Marking the service as deprecated + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.DeprecatedMethod = channel.unary_unary( + '/dummy.DeprecatedService/DeprecatedMethod', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.DeprecatedMethodNotDeprecatedRequest = channel.unary_unary( + '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + + +class DeprecatedServiceServicer(object): + """Marking the service as deprecated + """ + + def DeprecatedMethod(self, request, context): + """DeprecatedMethod + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeprecatedMethodNotDeprecatedRequest(self, request, context): + """DeprecatedMethodNotDeprecatedRequest + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DeprecatedServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'DeprecatedMethod': grpc.unary_unary_rpc_method_handler( + servicer.DeprecatedMethod, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'DeprecatedMethodNotDeprecatedRequest': grpc.unary_unary_rpc_method_handler( + servicer.DeprecatedMethodNotDeprecatedRequest, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'dummy.DeprecatedService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('dummy.DeprecatedService', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class DeprecatedService(object): + """Marking the service as deprecated + """ + + @staticmethod + def DeprecatedMethod(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dummy.DeprecatedService/DeprecatedMethod', + testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DeprecatedMethodNotDeprecatedRequest(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi new file mode 100644 index 00000000..7bd059df --- /dev/null +++ b/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi @@ -0,0 +1,133 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +https://github.com/vmagamedov/grpclib/blob/master/tests/dummy.proto""" + +import abc +import collections.abc +import grpc.aio +import sys +import testproto.grpc.dummy_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +if sys.version_info >= (3, 13): + from warnings import deprecated +else: + from typing_extensions import deprecated + + +GRPC_GENERATED_VERSION: str +GRPC_VERSION: str +_DummyServiceUnaryUnaryType: typing_extensions.TypeAlias = grpc.aio.UnaryUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DummyServiceUnaryStreamType: typing_extensions.TypeAlias = grpc.aio.UnaryStreamMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DummyServiceStreamUnaryType: typing_extensions.TypeAlias = grpc.aio.StreamUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DummyServiceStreamStreamType: typing_extensions.TypeAlias = grpc.aio.StreamStreamMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +class DummyServiceStub: + """DummyService""" + + UnaryUnary: _DummyServiceUnaryUnaryType + """UnaryUnary""" + + UnaryStream: _DummyServiceUnaryStreamType + """UnaryStream""" + + StreamUnary: _DummyServiceStreamUnaryType + """StreamUnary""" + + StreamStream: _DummyServiceStreamStreamType + """StreamStream""" + +class DummyServiceServicer(metaclass=abc.ABCMeta): + """DummyService""" + + @abc.abstractmethod + def UnaryUnary( + self, + request: testproto.grpc.dummy_pb2.DummyRequest, + context: grpc.aio.ServicerContext, + ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: + """UnaryUnary""" + + @abc.abstractmethod + def UnaryStream( + self, + request: testproto.grpc.dummy_pb2.DummyRequest, + context: grpc.aio.ServicerContext, + ) -> collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyReply]: + """UnaryStream""" + + @abc.abstractmethod + def StreamUnary( + self, + request_iterator: collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyRequest], + context: grpc.aio.ServicerContext, + ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: + """StreamUnary""" + + @abc.abstractmethod + def StreamStream( + self, + request_iterator: collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyRequest], + context: grpc.aio.ServicerContext, + ) -> collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyReply]: + """StreamStream""" + +def add_DummyServiceServicer_to_server(servicer: DummyServiceServicer, server: grpc.aio.Server) -> None: ... + +_DeprecatedServiceDeprecatedMethodType: typing_extensions.TypeAlias = grpc.aio.UnaryUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DeprecatedRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DeprecatedServiceDeprecatedMethodNotDeprecatedRequestType: typing_extensions.TypeAlias = grpc.aio.UnaryUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +@deprecated("""This service is deprecated""") +class DeprecatedServiceStub: + """Marking the service as deprecated""" + + DeprecatedMethod: _DeprecatedServiceDeprecatedMethodType + """DeprecatedMethod""" + + DeprecatedMethodNotDeprecatedRequest: _DeprecatedServiceDeprecatedMethodNotDeprecatedRequestType + """DeprecatedMethodNotDeprecatedRequest""" + +@deprecated("""This service is deprecated""") +class DeprecatedServiceServicer(metaclass=abc.ABCMeta): + """Marking the service as deprecated""" + + @abc.abstractmethod + def DeprecatedMethod( + self, + request: testproto.grpc.dummy_pb2.DeprecatedRequest, + context: grpc.aio.ServicerContext, + ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethod""" + + @abc.abstractmethod + def DeprecatedMethodNotDeprecatedRequest( + self, + request: testproto.grpc.dummy_pb2.DummyRequest, + context: grpc.aio.ServicerContext, + ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethodNotDeprecatedRequest""" + +@deprecated("""This service is deprecated""") +def add_DeprecatedServiceServicer_to_server(servicer: DeprecatedServiceServicer, server: grpc.aio.Server) -> None: ... diff --git a/test/generated-async-only/testproto/grpc/import_pb2.py b/test/generated-async-only/testproto/grpc/import_pb2.py new file mode 100644 index 00000000..61cc5689 --- /dev/null +++ b/test/generated-async-only/testproto/grpc/import_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/grpc/import.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/grpc/import.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test_pb2 as testproto_dot_test__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/grpc/import.proto\x12\ttest.grpc\x1a\x14testproto/test.proto\x1a\x1bgoogle/protobuf/empty.proto2\xb4\x01\n\rSimpleService\x12\x35\n\nUnaryUnary\x12\x16.google.protobuf.Empty\x1a\r.test.Simple1\"\x00\x12\x36\n\x0bUnaryStream\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00\x12\x34\n\tNoComment\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.import_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SIMPLESERVICE']._serialized_start=94 + _globals['_SIMPLESERVICE']._serialized_end=274 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/grpc/import_pb2.pyi b/test/generated-async-only/testproto/grpc/import_pb2.pyi new file mode 100644 index 00000000..dd854e28 --- /dev/null +++ b/test/generated-async-only/testproto/grpc/import_pb2.pyi @@ -0,0 +1,8 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import google.protobuf.descriptor + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor diff --git a/test/generated-async-only/testproto/grpc/import_pb2_grpc.py b/test/generated-async-only/testproto/grpc/import_pb2_grpc.py new file mode 100644 index 00000000..0a09fd20 --- /dev/null +++ b/test/generated-async-only/testproto/grpc/import_pb2_grpc.py @@ -0,0 +1,189 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import warnings + +import grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from testproto import test_pb2 as testproto_dot_test__pb2 + +GRPC_GENERATED_VERSION = '1.76.0' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + ' but the generated code in testproto/grpc/import_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + + +class SimpleServiceStub(object): + """SimpleService + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.UnaryUnary = channel.unary_unary( + '/test.grpc.SimpleService/UnaryUnary', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=testproto_dot_test__pb2.Simple1.FromString, + _registered_method=True) + self.UnaryStream = channel.unary_unary( + '/test.grpc.SimpleService/UnaryStream', + request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + _registered_method=True) + self.NoComment = channel.unary_unary( + '/test.grpc.SimpleService/NoComment', + request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + _registered_method=True) + + +class SimpleServiceServicer(object): + """SimpleService + """ + + def UnaryUnary(self, request, context): + """UnaryUnary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UnaryStream(self, request, context): + """UnaryStream + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def NoComment(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_SimpleServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'UnaryUnary': grpc.unary_unary_rpc_method_handler( + servicer.UnaryUnary, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, + ), + 'UnaryStream': grpc.unary_unary_rpc_method_handler( + servicer.UnaryStream, + request_deserializer=testproto_dot_test__pb2.Simple1.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'NoComment': grpc.unary_unary_rpc_method_handler( + servicer.NoComment, + request_deserializer=testproto_dot_test__pb2.Simple1.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'test.grpc.SimpleService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('test.grpc.SimpleService', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class SimpleService(object): + """SimpleService + """ + + @staticmethod + def UnaryUnary(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/test.grpc.SimpleService/UnaryUnary', + google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + testproto_dot_test__pb2.Simple1.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def UnaryStream(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/test.grpc.SimpleService/UnaryStream', + testproto_dot_test__pb2.Simple1.SerializeToString, + google_dot_protobuf_dot_empty__pb2.Empty.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def NoComment(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/test.grpc.SimpleService/NoComment', + testproto_dot_test__pb2.Simple1.SerializeToString, + google_dot_protobuf_dot_empty__pb2.Empty.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi b/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi new file mode 100644 index 00000000..205a883d --- /dev/null +++ b/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi @@ -0,0 +1,71 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import abc +import collections.abc +import google.protobuf.empty_pb2 +import grpc.aio +import sys +import testproto.test_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + + +GRPC_GENERATED_VERSION: str +GRPC_VERSION: str +_SimpleServiceUnaryUnaryType: typing_extensions.TypeAlias = grpc.aio.UnaryUnaryMultiCallable[ + google.protobuf.empty_pb2.Empty, + testproto.test_pb2.Simple1, +] +_SimpleServiceUnaryStreamType: typing_extensions.TypeAlias = grpc.aio.UnaryUnaryMultiCallable[ + testproto.test_pb2.Simple1, + google.protobuf.empty_pb2.Empty, +] +_SimpleServiceNoCommentType: typing_extensions.TypeAlias = grpc.aio.UnaryUnaryMultiCallable[ + testproto.test_pb2.Simple1, + google.protobuf.empty_pb2.Empty, +] +class SimpleServiceStub: + """SimpleService""" + + UnaryUnary: _SimpleServiceUnaryUnaryType + """UnaryUnary""" + + UnaryStream: _SimpleServiceUnaryStreamType + """UnaryStream""" + + NoComment: _SimpleServiceNoCommentType + +class SimpleServiceServicer(metaclass=abc.ABCMeta): + """SimpleService""" + + @abc.abstractmethod + def UnaryUnary( + self, + request: google.protobuf.empty_pb2.Empty, + context: grpc.aio.ServicerContext, + ) -> collections.abc.Awaitable[testproto.test_pb2.Simple1]: + """UnaryUnary""" + + @abc.abstractmethod + def UnaryStream( + self, + request: testproto.test_pb2.Simple1, + context: grpc.aio.ServicerContext, + ) -> collections.abc.Awaitable[google.protobuf.empty_pb2.Empty]: + """UnaryStream""" + + @abc.abstractmethod + def NoComment( + self, + request: testproto.test_pb2.Simple1, + context: grpc.aio.ServicerContext, + ) -> collections.abc.Awaitable[google.protobuf.empty_pb2.Empty]: ... + +def add_SimpleServiceServicer_to_server(servicer: SimpleServiceServicer, server: grpc.aio.Server) -> None: ... diff --git a/test/generated-async-only/testproto/inner/__init__.py b/test/generated-async-only/testproto/inner/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/inner/inner_pb2.py b/test/generated-async-only/testproto/inner/inner_pb2.py new file mode 100644 index 00000000..fa5eac66 --- /dev/null +++ b/test/generated-async-only/testproto/inner/inner_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/inner/inner.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/inner/inner.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/inner/inner.proto\x12\x05inner\x1a\x15testproto/test3.proto\"$\n\x05Inner\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnumb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.inner.inner_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_INNER']._serialized_start=61 + _globals['_INNER']._serialized_end=97 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/inner/inner_pb2.pyi b/test/generated-async-only/testproto/inner/inner_pb2.pyi new file mode 100644 index 00000000..dc705d20 --- /dev/null +++ b/test/generated-async-only/testproto/inner/inner_pb2.pyi @@ -0,0 +1,33 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Inner(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + a: testproto.test3_pb2.OuterEnum.ValueType + def __init__( + self, + *, + a: testproto.test3_pb2.OuterEnum.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... + +Global___Inner: typing_extensions.TypeAlias = Inner diff --git a/test/generated-async-only/testproto/nested/__init__.py b/test/generated-async-only/testproto/nested/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-async-only/testproto/nested/nested_pb2.py b/test/generated-async-only/testproto/nested/nested_pb2.py new file mode 100644 index 00000000..4e269210 --- /dev/null +++ b/test/generated-async-only/testproto/nested/nested_pb2.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/nested/nested.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/nested/nested.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dtestproto/nested/nested.proto\x12\x13test.nested_package\x1a\x15testproto/test3.proto\"%\n\x06Nested\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnum\"\xac\x02\n\rAnotherNested\x1a\xed\x01\n\rNestedMessage\x12\t\n\x01s\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\x08\x12\x39\n\x02ne\x18\x03 \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12I\n\x03ne2\x18\x04 \x01(\x0e\x32<.test.nested_package.AnotherNested.NestedMessage.NestedEnum2\"@\n\x0bNestedEnum2\x12\r\n\tUNDEFINED\x10\x00\x12\x10\n\x0cNESTED_ENUM1\x10\x01\x12\x10\n\x0cNESTED_ENUM2\x10\x02\"+\n\nNestedEnum\x12\x0b\n\x07INVALID\x10\x00\x12\x07\n\x03ONE\x10\x01\x12\x07\n\x03TWO\x10\x02\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nested.nested_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_NESTED']._serialized_start=77 + _globals['_NESTED']._serialized_end=114 + _globals['_ANOTHERNESTED']._serialized_start=117 + _globals['_ANOTHERNESTED']._serialized_end=417 + _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_start=135 + _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_end=372 + _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_start=308 + _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_end=372 + _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_start=374 + _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_end=417 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/nested/nested_pb2.pyi b/test/generated-async-only/testproto/nested/nested_pb2.pyi new file mode 100644 index 00000000..e382df0a --- /dev/null +++ b/test/generated-async-only/testproto/nested/nested_pb2.pyi @@ -0,0 +1,96 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Nested(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + a: testproto.test3_pb2.OuterEnum.ValueType + def __init__( + self, + *, + a: testproto.test3_pb2.OuterEnum.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... + +Global___Nested: typing_extensions.TypeAlias = Nested + +@typing.final +class AnotherNested(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _NestedEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _NestedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested._NestedEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INVALID: AnotherNested._NestedEnum.ValueType # 0 + ONE: AnotherNested._NestedEnum.ValueType # 1 + TWO: AnotherNested._NestedEnum.ValueType # 2 + + class NestedEnum(_NestedEnum, metaclass=_NestedEnumEnumTypeWrapper): ... + INVALID: AnotherNested.NestedEnum.ValueType # 0 + ONE: AnotherNested.NestedEnum.ValueType # 1 + TWO: AnotherNested.NestedEnum.ValueType # 2 + + @typing.final + class NestedMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _NestedEnum2: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _NestedEnum2EnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested.NestedMessage._NestedEnum2.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNDEFINED: AnotherNested.NestedMessage._NestedEnum2.ValueType # 0 + NESTED_ENUM1: AnotherNested.NestedMessage._NestedEnum2.ValueType # 1 + NESTED_ENUM2: AnotherNested.NestedMessage._NestedEnum2.ValueType # 2 + + class NestedEnum2(_NestedEnum2, metaclass=_NestedEnum2EnumTypeWrapper): ... + UNDEFINED: AnotherNested.NestedMessage.NestedEnum2.ValueType # 0 + NESTED_ENUM1: AnotherNested.NestedMessage.NestedEnum2.ValueType # 1 + NESTED_ENUM2: AnotherNested.NestedMessage.NestedEnum2.ValueType # 2 + + S_FIELD_NUMBER: builtins.int + B_FIELD_NUMBER: builtins.int + NE_FIELD_NUMBER: builtins.int + NE2_FIELD_NUMBER: builtins.int + s: builtins.str + b: builtins.bool + ne: Global___AnotherNested.NestedEnum.ValueType + ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType + def __init__( + self, + *, + s: builtins.str = ..., + b: builtins.bool = ..., + ne: Global___AnotherNested.NestedEnum.ValueType = ..., + ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["b", b"b", "ne", b"ne", "ne2", b"ne2", "s", b"s"]) -> None: ... + + def __init__( + self, + ) -> None: ... + +Global___AnotherNested: typing_extensions.TypeAlias = AnotherNested diff --git a/test/generated-async-only/testproto/nopackage_pb2.py b/test/generated-async-only/testproto/nopackage_pb2.py new file mode 100644 index 00000000..25e501fb --- /dev/null +++ b/test/generated-async-only/testproto/nopackage_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/nopackage.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/nopackage.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19testproto/nopackage.proto\"\x0b\n\tNoPackage\"@\n\nNoPackage2\x12\x16\n\x02np\x18\x01 \x01(\x0b\x32\n.NoPackage\x12\x1a\n\x06np_rep\x18\x02 \x03(\x0b\x32\n.NoPackageb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nopackage_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_NOPACKAGE']._serialized_start=29 + _globals['_NOPACKAGE']._serialized_end=40 + _globals['_NOPACKAGE2']._serialized_start=42 + _globals['_NOPACKAGE2']._serialized_end=106 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/nopackage_pb2.pyi b/test/generated-async-only/testproto/nopackage_pb2.pyi new file mode 100644 index 00000000..7925439c --- /dev/null +++ b/test/generated-async-only/testproto/nopackage_pb2.pyi @@ -0,0 +1,52 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class NoPackage(google.protobuf.message.Message): + """Intentionally don't set a package - just to make sure we can handle it.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___NoPackage: typing_extensions.TypeAlias = NoPackage + +@typing.final +class NoPackage2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NP_FIELD_NUMBER: builtins.int + NP_REP_FIELD_NUMBER: builtins.int + @property + def np(self) -> Global___NoPackage: ... + @property + def np_rep(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___NoPackage]: ... + def __init__( + self, + *, + np: Global___NoPackage | None = ..., + np_rep: collections.abc.Iterable[Global___NoPackage] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["np", b"np"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["np", b"np", "np_rep", b"np_rep"]) -> None: ... + +Global___NoPackage2: typing_extensions.TypeAlias = NoPackage2 diff --git a/test/generated-async-only/testproto/readme_enum_pb2.py b/test/generated-async-only/testproto/readme_enum_pb2.py new file mode 100644 index 00000000..bfce5038 --- /dev/null +++ b/test/generated-async-only/testproto/readme_enum_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/readme_enum.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/readme_enum.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/readme_enum.proto\x12\x04test*\x1e\n\x06MyEnum\x12\t\n\x05HELLO\x10\x00\x12\t\n\x05WORLD\x10\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.readme_enum_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_MYENUM']._serialized_start=37 + _globals['_MYENUM']._serialized_end=67 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/readme_enum_pb2.pyi b/test/generated-async-only/testproto/readme_enum_pb2.pyi new file mode 100644 index 00000000..be8369c4 --- /dev/null +++ b/test/generated-async-only/testproto/readme_enum_pb2.pyi @@ -0,0 +1,32 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _MyEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + HELLO: _MyEnum.ValueType # 0 + WORLD: _MyEnum.ValueType # 1 + +class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... + +HELLO: MyEnum.ValueType # 0 +WORLD: MyEnum.ValueType # 1 +Global___MyEnum: typing_extensions.TypeAlias = MyEnum diff --git a/test/generated-async-only/testproto/reexport_pb2.py b/test/generated-async-only/testproto/reexport_pb2.py new file mode 100644 index 00000000..bebe651b --- /dev/null +++ b/test/generated-async-only/testproto/reexport_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/reexport.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/reexport.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test3_pb2 as testproto_dot_test3__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 + +from testproto.test3_pb2 import * +from google.protobuf.empty_pb2 import * + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18testproto/reexport.proto\x12\x05test3\x1a\x15testproto/test3.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1btestproto/inner/inner.protoP\x00P\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.reexport_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/reexport_pb2.pyi b/test/generated-async-only/testproto/reexport_pb2.pyi new file mode 100644 index 00000000..9702c2bd --- /dev/null +++ b/test/generated-async-only/testproto/reexport_pb2.pyi @@ -0,0 +1,19 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import google.protobuf.descriptor +from google.protobuf.empty_pb2 import ( + Empty as Empty, +) +from testproto.test3_pb2 import ( + BAR3 as BAR3, + FOO3 as FOO3, + OuterEnum as OuterEnum, + OuterMessage3 as OuterMessage3, + SimpleProto3 as SimpleProto3, + UNKNOWN as UNKNOWN, +) + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor diff --git a/test/generated-async-only/testproto/test3_pb2.py b/test/generated-async-only/testproto/test3_pb2.py new file mode 100644 index 00000000..3b164270 --- /dev/null +++ b/test/generated-async-only/testproto/test3_pb2.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test3.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test3.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15testproto/test3.proto\x12\x05test3\x1a\x1emypy_protobuf/extensions.proto\"!\n\rOuterMessage3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\"\xb3\t\n\x0cSimpleProto3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12&\n\x0c\x61_outer_enum\x18\x03 \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\router_message\x18\x04 \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x31\n\ninner_enum\x18\x0f \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnum\x12\x13\n\ta_oneof_1\x18\x05 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x06 \x01(\tH\x00\x12\x36\n\x16outer_message_in_oneof\x18\x0c \x01(\x0b\x32\x14.test3.OuterMessage3H\x00\x12/\n\x13outer_enum_in_oneof\x18\r \x01(\x0e\x32\x10.test3.OuterEnumH\x00\x12<\n\x13inner_enum_in_oneof\x18\x0e \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnumH\x00\x12\x13\n\tb_oneof_1\x18\x07 \x01(\tH\x01\x12\x13\n\tb_oneof_2\x18\x08 \x01(\tH\x01\x12\"\n\x04\x62ool\x18\t \x01(\x0b\x32\x14.test3.OuterMessage3\x12#\n\tOuterEnum\x18\n \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\rOuterMessage3\x18\x0b \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x36\n\nmap_scalar\x18\x10 \x03(\x0b\x32\".test3.SimpleProto3.MapScalarEntry\x12\x38\n\x0bmap_message\x18\x11 \x03(\x0b\x32#.test3.SimpleProto3.MapMessageEntry\x12\x1f\n\x12\x61n_optional_string\x18\x12 \x01(\tH\x02\x88\x01\x01\x12\x35\n\x07user_id\x18\x13 \x01(\rB$\x92H!\n\x1ftest/test_generated_mypy.UserId\x12\x32\n\x05\x65mail\x18\x14 \x01(\tB#\x92H \n\x1etest/test_generated_mypy.Email\x12\x7f\n\x0c\x65mail_by_uid\x18\x15 \x03(\x0b\x32#.test3.SimpleProto3.EmailByUidEntryBD\x92HA\x12\x1ftest/test_generated_mypy.UserId\x1a\x1etest/test_generated_mypy.Email\x1a\x30\n\x0eMapScalarEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aG\n\x0fMapMessageEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.test3.OuterMessage3:\x02\x38\x01\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x00\x12\n\n\x06INNER2\x10\x01\x42\t\n\x07\x61_oneofB\t\n\x07\x62_oneofB\x15\n\x13_an_optional_string*,\n\tOuterEnum\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04\x46OO3\x10\x01\x12\x08\n\x04\x42\x41R3\x10\x02\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test3_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._loaded_options = None + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_options = b'8\001' + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._loaded_options = None + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_options = b'8\001' + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._loaded_options = None + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_options = b'8\001' + _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._loaded_options = None + _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._serialized_options = b'\222H!\n\037test/test_generated_mypy.UserId' + _globals['_SIMPLEPROTO3'].fields_by_name['email']._loaded_options = None + _globals['_SIMPLEPROTO3'].fields_by_name['email']._serialized_options = b'\222H \n\036test/test_generated_mypy.Email' + _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._loaded_options = None + _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._serialized_options = b'\222HA\022\037test/test_generated_mypy.UserId\032\036test/test_generated_mypy.Email' + _globals['_OUTERENUM']._serialized_start=1305 + _globals['_OUTERENUM']._serialized_end=1349 + _globals['_OUTERMESSAGE3']._serialized_start=64 + _globals['_OUTERMESSAGE3']._serialized_end=97 + _globals['_SIMPLEPROTO3']._serialized_start=100 + _globals['_SIMPLEPROTO3']._serialized_end=1303 + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_start=1049 + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_end=1097 + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_start=1099 + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_end=1170 + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_start=1172 + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_end=1221 + _globals['_SIMPLEPROTO3_INNERENUM']._serialized_start=1223 + _globals['_SIMPLEPROTO3_INNERENUM']._serialized_end=1258 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test3_pb2.pyi b/test/generated-async-only/testproto/test3_pb2.pyi new file mode 100644 index 00000000..f239d860 --- /dev/null +++ b/test/generated-async-only/testproto/test3_pb2.pyi @@ -0,0 +1,209 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +package test3""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import test.test_generated_mypy +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _OuterEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNKNOWN: _OuterEnum.ValueType # 0 + FOO3: _OuterEnum.ValueType # 1 + BAR3: _OuterEnum.ValueType # 2 + +class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... + +UNKNOWN: OuterEnum.ValueType # 0 +FOO3: OuterEnum.ValueType # 1 +BAR3: OuterEnum.ValueType # 2 +Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum + +@typing.final +class OuterMessage3(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___OuterMessage3: typing_extensions.TypeAlias = OuterMessage3 + +@typing.final +class SimpleProto3(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _InnerEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SimpleProto3._InnerEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INNER1: SimpleProto3._InnerEnum.ValueType # 0 + INNER2: SimpleProto3._InnerEnum.ValueType # 1 + + class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... + INNER1: SimpleProto3.InnerEnum.ValueType # 0 + INNER2: SimpleProto3.InnerEnum.ValueType # 1 + + @typing.final + class MapScalarEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + value: builtins.str + def __init__( + self, + *, + key: builtins.int = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + @typing.final + class MapMessageEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + @property + def value(self) -> Global___OuterMessage3: ... + def __init__( + self, + *, + key: builtins.int = ..., + value: Global___OuterMessage3 | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + @typing.final + class EmailByUidEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + value: builtins.str + def __init__( + self, + *, + key: builtins.int = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + A_STRING_FIELD_NUMBER: builtins.int + A_REPEATED_STRING_FIELD_NUMBER: builtins.int + A_OUTER_ENUM_FIELD_NUMBER: builtins.int + OUTER_MESSAGE_FIELD_NUMBER: builtins.int + INNER_ENUM_FIELD_NUMBER: builtins.int + A_ONEOF_1_FIELD_NUMBER: builtins.int + A_ONEOF_2_FIELD_NUMBER: builtins.int + OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int + OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + B_ONEOF_1_FIELD_NUMBER: builtins.int + B_ONEOF_2_FIELD_NUMBER: builtins.int + BOOL_FIELD_NUMBER: builtins.int + OUTERENUM_FIELD_NUMBER: builtins.int + OUTERMESSAGE3_FIELD_NUMBER: builtins.int + MAP_SCALAR_FIELD_NUMBER: builtins.int + MAP_MESSAGE_FIELD_NUMBER: builtins.int + AN_OPTIONAL_STRING_FIELD_NUMBER: builtins.int + USER_ID_FIELD_NUMBER: builtins.int + EMAIL_FIELD_NUMBER: builtins.int + EMAIL_BY_UID_FIELD_NUMBER: builtins.int + a_string: builtins.str + a_outer_enum: Global___OuterEnum.ValueType + inner_enum: Global___SimpleProto3.InnerEnum.ValueType + a_oneof_1: builtins.str + a_oneof_2: builtins.str + outer_enum_in_oneof: Global___OuterEnum.ValueType + inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType + b_oneof_1: builtins.str + b_oneof_2: builtins.str + OuterEnum: Global___OuterEnum.ValueType + """Test having fieldname match messagename""" + an_optional_string: builtins.str + user_id: test.test_generated_mypy.UserId + email: test.test_generated_mypy.Email + @property + def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def outer_message(self) -> Global___OuterMessage3: ... + @property + def outer_message_in_oneof(self) -> Global___OuterMessage3: ... + @property + def bool(self) -> Global___OuterMessage3: ... + @property + def OuterMessage3(self) -> Global___OuterMessage3: ... + @property + def map_scalar(self) -> google.protobuf.internal.containers.ScalarMap[builtins.int, builtins.str]: + """Test generation of map""" + + @property + def map_message(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, Global___OuterMessage3]: ... + @property + def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... + def __init__( + self, + *, + a_string: builtins.str = ..., + a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., + a_outer_enum: Global___OuterEnum.ValueType = ..., + outer_message: Global___OuterMessage3 | None = ..., + inner_enum: Global___SimpleProto3.InnerEnum.ValueType = ..., + a_oneof_1: builtins.str = ..., + a_oneof_2: builtins.str = ..., + outer_message_in_oneof: Global___OuterMessage3 | None = ..., + outer_enum_in_oneof: Global___OuterEnum.ValueType = ..., + inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType = ..., + b_oneof_1: builtins.str = ..., + b_oneof_2: builtins.str = ..., + bool: Global___OuterMessage3 | None = ..., + OuterEnum: Global___OuterEnum.ValueType = ..., + OuterMessage3: Global___OuterMessage3 | None = ..., + map_scalar: collections.abc.Mapping[builtins.int, builtins.str] | None = ..., + map_message: collections.abc.Mapping[builtins.int, Global___OuterMessage3] | None = ..., + an_optional_string: builtins.str | None = ..., + user_id: test.test_generated_mypy.UserId = ..., + email: test.test_generated_mypy.Email = ..., + email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "inner_enum_in_oneof", b"inner_enum_in_oneof", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["OuterEnum", b"OuterEnum", "OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_outer_enum", b"a_outer_enum", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "map_message", b"map_message", "map_scalar", b"map_scalar", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_an_optional_string", b"_an_optional_string"]) -> typing.Literal["an_optional_string"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["b_oneof", b"b_oneof"]) -> typing.Literal["b_oneof_1", "b_oneof_2"] | None: ... + +Global___SimpleProto3: typing_extensions.TypeAlias = SimpleProto3 diff --git a/test/generated-async-only/testproto/test_extensions2_pb2.py b/test/generated-async-only/testproto/test_extensions2_pb2.py new file mode 100644 index 00000000..58c277cb --- /dev/null +++ b/test/generated-async-only/testproto/test_extensions2_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test_extensions2.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test_extensions2.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test_pb2 as testproto_dot_test__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions2.proto\x12\x04test\x1a\x14testproto/test.proto\"_\n\x15SeparateFileExtension\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32\x38\n\x03\x65xt\x12\r.test.Simple2\x18\xe9\x07 \x01(\x0b\x32\x1b.test.SeparateFileExtension') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions2_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SEPARATEFILEEXTENSION']._serialized_start=64 + _globals['_SEPARATEFILEEXTENSION']._serialized_end=159 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_extensions2_pb2.pyi b/test/generated-async-only/testproto/test_extensions2_pb2.pyi new file mode 100644 index 00000000..b8e9f652 --- /dev/null +++ b/test/generated-async-only/testproto/test_extensions2_pb2.pyi @@ -0,0 +1,37 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.extension_dict +import google.protobuf.message +import sys +import testproto.test_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class SeparateFileExtension(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FLAG_FIELD_NUMBER: builtins.int + flag: builtins.bool + EXT_FIELD_NUMBER: builtins.int + ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[testproto.test_pb2.Simple2, Global___SeparateFileExtension] + def __init__( + self, + *, + flag: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... + +Global___SeparateFileExtension: typing_extensions.TypeAlias = SeparateFileExtension diff --git a/test/generated-async-only/testproto/test_extensions3_pb2.py b/test/generated-async-only/testproto/test_extensions3_pb2.py new file mode 100644 index 00000000..4bc39093 --- /dev/null +++ b/test/generated-async-only/testproto/test_extensions3_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test_extensions3.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test_extensions3.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions3.proto\x12\x05test3\x1a google/protobuf/descriptor.proto\x1a\x15testproto/test3.proto\"\x91\x01\n\x15MessageOptionsTestMsg:x\x92\x82\x19\x0cHello world!\x9a\x82\x19\x01\x41\x9a\x82\x19\x01\x42\x9a\x82\x19\x01\x43\xa0\x82\x19\x01\xaa\x82\x19\x02\x01\x02\xb2\x82\x19\x15\n\x13Hello OuterMessage3\xba\x82\x19\x17\n\x15Hello OuterMessage3 A\xba\x82\x19\x17\n\x15Hello OuterMessage3 B:=\n\x14test_field_extension\x12\x1d.google.protobuf.FieldOptions\x18\xd0\x86\x03 \x01(\t:8\n\rscalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa2\x90\x03 \x01(\t:A\n\x16repeated_scalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa3\x90\x03 \x03(\t:H\n\x0b\x65num_option\x12\x1f.google.protobuf.MessageOptions\x18\xa4\x90\x03 \x01(\x0e\x32\x10.test3.OuterEnum:Q\n\x14repeated_enum_option\x12\x1f.google.protobuf.MessageOptions\x18\xa5\x90\x03 \x03(\x0e\x32\x10.test3.OuterEnum:K\n\nmsg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa6\x90\x03 \x01(\x0b\x32\x14.test3.OuterMessage3:T\n\x13repeated_msg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa7\x90\x03 \x03(\x0b\x32\x14.test3.OuterMessage3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions3_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_MESSAGEOPTIONSTESTMSG']._loaded_options = None + _globals['_MESSAGEOPTIONSTESTMSG']._serialized_options = b'\222\202\031\014Hello world!\232\202\031\001A\232\202\031\001B\232\202\031\001C\240\202\031\001\252\202\031\002\001\002\262\202\031\025\n\023Hello OuterMessage3\272\202\031\027\n\025Hello OuterMessage3 A\272\202\031\027\n\025Hello OuterMessage3 B' + _globals['_MESSAGEOPTIONSTESTMSG']._serialized_start=101 + _globals['_MESSAGEOPTIONSTESTMSG']._serialized_end=246 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_extensions3_pb2.pyi b/test/generated-async-only/testproto/test_extensions3_pb2.pyi new file mode 100644 index 00000000..f2292855 --- /dev/null +++ b/test/generated-async-only/testproto/test_extensions3_pb2.pyi @@ -0,0 +1,46 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.descriptor_pb2 +import google.protobuf.internal.containers +import google.protobuf.internal.extension_dict +import google.protobuf.message +import sys +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class MessageOptionsTestMsg(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___MessageOptionsTestMsg: typing_extensions.TypeAlias = MessageOptionsTestMsg + +TEST_FIELD_EXTENSION_FIELD_NUMBER: builtins.int +SCALAR_OPTION_FIELD_NUMBER: builtins.int +REPEATED_SCALAR_OPTION_FIELD_NUMBER: builtins.int +ENUM_OPTION_FIELD_NUMBER: builtins.int +REPEATED_ENUM_OPTION_FIELD_NUMBER: builtins.int +MSG_OPTION_FIELD_NUMBER: builtins.int +REPEATED_MSG_OPTION_FIELD_NUMBER: builtins.int +test_field_extension: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.str] +scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, builtins.str] +repeated_scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]] +enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterEnum.ValueType] +repeated_enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[testproto.test3_pb2.OuterEnum.ValueType]] +msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterMessage3] +repeated_msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedCompositeFieldContainer[testproto.test3_pb2.OuterMessage3]] diff --git a/test/generated-async-only/testproto/test_no_generic_services_pb2.py b/test/generated-async-only/testproto/test_no_generic_services_pb2.py new file mode 100644 index 00000000..532c253b --- /dev/null +++ b/test/generated-async-only/testproto/test_no_generic_services_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test_no_generic_services.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test_no_generic_services.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(testproto/test_no_generic_services.proto\x12\x04test\"\x1b\n\x07Simple3\x12\x10\n\x08\x61_string\x18\x01 \x02(\t27\n\rATestService2\x12&\n\x04\x45\x63ho\x12\r.test.Simple3\x1a\r.test.Simple3\"\x00') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_no_generic_services_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SIMPLE3']._serialized_start=50 + _globals['_SIMPLE3']._serialized_end=77 + _globals['_ATESTSERVICE2']._serialized_start=79 + _globals['_ATESTSERVICE2']._serialized_end=134 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_no_generic_services_pb2.pyi b/test/generated-async-only/testproto/test_no_generic_services_pb2.pyi new file mode 100644 index 00000000..3a350109 --- /dev/null +++ b/test/generated-async-only/testproto/test_no_generic_services_pb2.pyi @@ -0,0 +1,33 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Simple3(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___Simple3: typing_extensions.TypeAlias = Simple3 diff --git a/test/generated-async-only/testproto/test_pb2.py b/test/generated-async-only/testproto/test_pb2.py new file mode 100644 index 00000000..cfeef244 --- /dev/null +++ b/test/generated-async-only/testproto/test_pb2.py @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 +from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 +from testproto.nested import nested_pb2 as testproto_dot_nested_dot_nested__pb2 +from testproto import nopackage_pb2 as testproto_dot_nopackage__pb2 +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14testproto/test.proto\x12\x04test\x1a\x1emypy_protobuf/extensions.proto\x1a\x1btestproto/inner/inner.proto\x1a\x1dtestproto/nested/nested.proto\x1a\x19testproto/nopackage.proto\x1a\x15testproto/test3.proto\"\x8d\t\n\x07Simple1\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12\x11\n\ta_boolean\x18\x03 \x01(\x08\x12\x10\n\x08\x61_uint32\x18\x04 \x01(\r\x12\x1f\n\x06\x61_enum\x18\x05 \x01(\x0e\x32\x0f.test.OuterEnum\x12)\n\x0f\x61_external_enum\x18\x06 \x01(\x0e\x32\x10.test3.OuterEnum\x12\x1d\n\x07\x61_inner\x18\x07 \x01(\x0b\x32\x0c.inner.Inner\x12-\n\x08\x61_nested\x18\x0c \x01(\x0b\x32\x1b.test.nested_package.Nested\x12+\n\ninner_enum\x18\x08 \x01(\x0e\x32\x17.test.Simple1.InnerEnum\x12/\n\x0erep_inner_enum\x18\t \x03(\x0e\x32\x17.test.Simple1.InnerEnum\x12\x31\n\rinner_message\x18\n \x01(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x35\n\x11rep_inner_message\x18\x0b \x03(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x1e\n\nno_package\x18\r \x01(\x0b\x32\n.NoPackage\x12\x42\n\x0bnested_enum\x18\x0e \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12H\n\x0enested_message\x18\x0f \x01(\x0b\x32\x30.test.nested_package.AnotherNested.NestedMessage\x12\x13\n\ta_oneof_1\x18\x10 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x11 \x01(\tH\x00\x12/\n\x16outer_message_in_oneof\x18\x12 \x01(\x0b\x32\r.test.Simple2H\x00\x12.\n\x13outer_enum_in_oneof\x18\x13 \x01(\x0e\x32\x0f.test.OuterEnumH\x00\x12\x36\n\x13inner_enum_in_oneof\x18\x14 \x01(\x0e\x32\x17.test.Simple1.InnerEnumH\x00\x12\x33\n\x07user_id\x18\x15 \x01(\rB\"\xfaG\x1ftest/test_generated_mypy.UserId\x12\x30\n\x05\x65mail\x18\x16 \x01(\tB!\xfaG\x1etest/test_generated_mypy.Email\x12x\n\x0c\x65mail_by_uid\x18\x17 \x03(\x0b\x32\x1d.test.Simple1.EmailByUidEntryBC\x82H\x1ftest/test_generated_mypy.UserId\x8aH\x1etest/test_generated_mypy.Email\x1a\x0e\n\x0cInnerMessage\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x01\x12\n\n\x06INNER2\x10\x02*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\t\n\x07\x61_oneof\"&\n\x07Simple2\x12\x10\n\x08\x61_string\x18\x01 \x02(\t*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"R\n\x0b\x45xtensions1\x12\x13\n\x0b\x65xt1_string\x18\x01 \x01(\t2.\n\x03\x65xt\x12\r.test.Simple1\x18\xe8\x07 \x01(\x0b\x32\x11.test.Extensions1\"K\n\x0b\x45xtensions2\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32.\n\x03\x66oo\x12\r.test.Simple1\x18\xe4\x0f \x01(\x0b\x32\x11.test.Extensions2\"\x15\n\x04None\x12\r\n\x05valid\x18\x01 \x01(\x03\"\x80\x05\n\x16PythonReservedKeywords\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\x12\x19\n\x02in\x18\x02 \x01(\x0b\x32\r.test.Simple2\x12\x30\n\x02is\x18\x03 \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x12\x0b\n\x03\x66or\x18\x05 \x01(\x03\x12\x0b\n\x03try\x18\x06 \x01(\x03\x12\x0b\n\x03\x64\x65\x66\x18\x07 \x01(\x03\x12\x10\n\x08nonlocal\x18\x08 \x01(\x03\x12\r\n\x05while\x18\t \x01(\x03\x12\x0b\n\x03\x61nd\x18\n \x01(\x03\x12\x0b\n\x03\x64\x65l\x18\x0b \x01(\x03\x12\x0e\n\x06global\x18\x0c \x01(\x03\x12\x0b\n\x03not\x18\r \x01(\x03\x12\x0c\n\x04with\x18\x0e \x01(\x03\x12\n\n\x02\x61s\x18\x0f \x01(\x03\x12\x0c\n\x04\x65lif\x18\x10 \x01(\x03\x12\n\n\x02if\x18\x11 \x01(\x03\x12\n\n\x02or\x18\x12 \x01(\x03\x12\r\n\x05yield\x18\x13 \x01(\x03\x12\x0e\n\x06\x61ssert\x18\x14 \x01(\x03\x12\x0c\n\x04\x65lse\x18\x15 \x01(\x03\x12\x0e\n\x06import\x18\x16 \x01(\x03\x12\x0c\n\x04pass\x18\x17 \x01(\x03\x12\r\n\x05\x62reak\x18\x18 \x01(\x03\x12\x0e\n\x06\x65xcept\x18\x19 \x01(\x03\x12\r\n\x05raise\x18\x1a \x01(\x03\x12\r\n\x05\x46\x61lse\x18\x1b \x01(\x03\x12\x0c\n\x04True\x18\x1d \x01(\x03\x12\r\n\x05\x63lass\x18\x1e \x01(\x03\x12\x18\n\x04none\x18\x1c \x01(\x0b\x32\n.test.None\x12\x33\n\x05valid\x18\x1f \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x1a)\n\x06lambda\x12\x10\n\x08\x63ontinue\x18\x01 \x01(\x03\x12\r\n\x05valid\x18\x02 \x01(\x03\"-\n\x07\x66inally\x12\x0c\n\x08\x63ontinue\x10\x01\x12\x14\n\x10valid_in_finally\x10\x02\"+\n\x1bPythonReservedKeywordsSmall\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\"\x19\n\tSelfField\x12\x0c\n\x04self\x18\x01 \x01(\x03\")\n\x11\x44\x65precatedMessage\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01\"3\n\x1b\x44\x65precatedMessageBadComment\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01*\x1d\n\tOuterEnum\x12\x07\n\x03\x46OO\x10\x01\x12\x07\n\x03\x42\x41R\x10\x02*G\n\x0fNamingConflicts\x12\x08\n\x04Name\x10\x01\x12\t\n\x05Value\x10\x02\x12\x08\n\x04keys\x10\x03\x12\n\n\x06values\x10\x04\x12\t\n\x05items\x10\x05*<\n\x0e\x44\x65precatedEnum\x12\x12\n\x0e\x44\x45PRECATED_ONE\x10\x01\x12\x12\n\x0e\x44\x45PRECATED_TWO\x10\x02\x1a\x02\x18\x01\x32\xde\x01\n\x1dPythonReservedKeywordsService\x12>\n\x06lambda\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00\x12\x31\n\x12valid_method_name1\x12\r.test.Simple1\x1a\n.test.None\"\x00\x12J\n\x12valid_method_name2\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_DEPRECATEDENUM']._loaded_options = None + _globals['_DEPRECATEDENUM']._serialized_options = b'\030\001' + _globals['_SIMPLE1_EMAILBYUIDENTRY']._loaded_options = None + _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_options = b'8\001' + _globals['_SIMPLE1'].fields_by_name['user_id']._loaded_options = None + _globals['_SIMPLE1'].fields_by_name['user_id']._serialized_options = b'\372G\037test/test_generated_mypy.UserId' + _globals['_SIMPLE1'].fields_by_name['email']._loaded_options = None + _globals['_SIMPLE1'].fields_by_name['email']._serialized_options = b'\372G\036test/test_generated_mypy.Email' + _globals['_SIMPLE1'].fields_by_name['email_by_uid']._loaded_options = None + _globals['_SIMPLE1'].fields_by_name['email_by_uid']._serialized_options = b'\202H\037test/test_generated_mypy.UserId\212H\036test/test_generated_mypy.Email' + _globals['_DEPRECATEDMESSAGE']._loaded_options = None + _globals['_DEPRECATEDMESSAGE']._serialized_options = b'\030\001' + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._loaded_options = None + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_options = b'\030\001' + _globals['_OUTERENUM']._serialized_start=2375 + _globals['_OUTERENUM']._serialized_end=2404 + _globals['_NAMINGCONFLICTS']._serialized_start=2406 + _globals['_NAMINGCONFLICTS']._serialized_end=2477 + _globals['_DEPRECATEDENUM']._serialized_start=2479 + _globals['_DEPRECATEDENUM']._serialized_end=2539 + _globals['_SIMPLE1']._serialized_start=173 + _globals['_SIMPLE1']._serialized_end=1338 + _globals['_SIMPLE1_INNERMESSAGE']._serialized_start=1214 + _globals['_SIMPLE1_INNERMESSAGE']._serialized_end=1228 + _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_start=1230 + _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_end=1279 + _globals['_SIMPLE1_INNERENUM']._serialized_start=1281 + _globals['_SIMPLE1_INNERENUM']._serialized_end=1316 + _globals['_SIMPLE2']._serialized_start=1340 + _globals['_SIMPLE2']._serialized_end=1378 + _globals['_EXTENSIONS1']._serialized_start=1380 + _globals['_EXTENSIONS1']._serialized_end=1462 + _globals['_EXTENSIONS2']._serialized_start=1464 + _globals['_EXTENSIONS2']._serialized_end=1539 + _globals['_NONE']._serialized_start=1541 + _globals['_NONE']._serialized_end=1562 + _globals['_PYTHONRESERVEDKEYWORDS']._serialized_start=1565 + _globals['_PYTHONRESERVEDKEYWORDS']._serialized_end=2205 + _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_start=2117 + _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_end=2158 + _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_start=2160 + _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_end=2205 + _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_start=2207 + _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_end=2250 + _globals['_SELFFIELD']._serialized_start=2252 + _globals['_SELFFIELD']._serialized_end=2277 + _globals['_DEPRECATEDMESSAGE']._serialized_start=2279 + _globals['_DEPRECATEDMESSAGE']._serialized_end=2320 + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_start=2322 + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_end=2373 + _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_start=2542 + _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_end=2764 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_pb2.pyi b/test/generated-async-only/testproto/test_pb2.pyi new file mode 100644 index 00000000..3058335b --- /dev/null +++ b/test/generated-async-only/testproto/test_pb2.pyi @@ -0,0 +1,439 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Proto 2 test file.""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.internal.extension_dict +import google.protobuf.message +import sys +import test.test_generated_mypy +import testproto.inner.inner_pb2 +import testproto.nested.nested_pb2 +import testproto.nopackage_pb2 +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +if sys.version_info >= (3, 13): + from warnings import deprecated +else: + from typing_extensions import deprecated + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _OuterEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + FOO: _OuterEnum.ValueType # 1 + """FOO""" + BAR: _OuterEnum.ValueType # 2 + """BAR""" + +class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): + """Outer Enum""" + +FOO: OuterEnum.ValueType # 1 +"""FOO""" +BAR: OuterEnum.ValueType # 2 +"""BAR""" +Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum + +class _NamingConflicts: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _NamingConflictsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NamingConflicts.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + +class NamingConflicts(_NamingConflicts, metaclass=_NamingConflictsEnumTypeWrapper): + """Naming conflicts!""" + +Name: NamingConflicts.ValueType # 1 +Value: NamingConflicts.ValueType # 2 +keys: NamingConflicts.ValueType # 3 +values: NamingConflicts.ValueType # 4 +items: NamingConflicts.ValueType # 5 +"""See https://github.com/protocolbuffers/protobuf/issues/8803 +proto itself generates broken code when DESCRIPTOR is there +DESCRIPTOR = 8; +""" +Global___NamingConflicts: typing_extensions.TypeAlias = NamingConflicts + +class _DeprecatedEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DeprecatedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DeprecatedEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DEPRECATED_ONE: _DeprecatedEnum.ValueType # 1 + DEPRECATED_TWO: _DeprecatedEnum.ValueType # 2 + +@deprecated("""This enum is deprecated\n2 lines of comments\n"Quotes in comments"\nand 'single quotes'\nTrailing comment""") +class DeprecatedEnum(_DeprecatedEnum, metaclass=_DeprecatedEnumEnumTypeWrapper): ... + +DEPRECATED_ONE: DeprecatedEnum.ValueType # 1 +DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 +Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum + +@typing.final +class Simple1(google.protobuf.message.Message): + """Message with one of everything""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _InnerEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Simple1._InnerEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INNER1: Simple1._InnerEnum.ValueType # 1 + """INNER1""" + INNER2: Simple1._InnerEnum.ValueType # 2 + """INNER2""" + + class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): + """Inner Enum""" + + INNER1: Simple1.InnerEnum.ValueType # 1 + """INNER1""" + INNER2: Simple1.InnerEnum.ValueType # 2 + """INNER2""" + + @typing.final + class InnerMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + + @typing.final + class EmailByUidEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + value: builtins.str + def __init__( + self, + *, + key: builtins.int | None = ..., + value: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + A_STRING_FIELD_NUMBER: builtins.int + A_REPEATED_STRING_FIELD_NUMBER: builtins.int + A_BOOLEAN_FIELD_NUMBER: builtins.int + A_UINT32_FIELD_NUMBER: builtins.int + A_ENUM_FIELD_NUMBER: builtins.int + A_EXTERNAL_ENUM_FIELD_NUMBER: builtins.int + A_INNER_FIELD_NUMBER: builtins.int + A_NESTED_FIELD_NUMBER: builtins.int + INNER_ENUM_FIELD_NUMBER: builtins.int + REP_INNER_ENUM_FIELD_NUMBER: builtins.int + INNER_MESSAGE_FIELD_NUMBER: builtins.int + REP_INNER_MESSAGE_FIELD_NUMBER: builtins.int + NO_PACKAGE_FIELD_NUMBER: builtins.int + NESTED_ENUM_FIELD_NUMBER: builtins.int + NESTED_MESSAGE_FIELD_NUMBER: builtins.int + A_ONEOF_1_FIELD_NUMBER: builtins.int + A_ONEOF_2_FIELD_NUMBER: builtins.int + OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int + OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + USER_ID_FIELD_NUMBER: builtins.int + EMAIL_FIELD_NUMBER: builtins.int + EMAIL_BY_UID_FIELD_NUMBER: builtins.int + a_string: builtins.str + a_boolean: builtins.bool + a_uint32: builtins.int + a_enum: Global___OuterEnum.ValueType + a_external_enum: testproto.test3_pb2.OuterEnum.ValueType + inner_enum: Global___Simple1.InnerEnum.ValueType + nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType + a_oneof_1: builtins.str + a_oneof_2: builtins.str + outer_enum_in_oneof: Global___OuterEnum.ValueType + inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType + user_id: test.test_generated_mypy.UserId + email: test.test_generated_mypy.Email + @property + def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def a_inner(self) -> testproto.inner.inner_pb2.Inner: ... + @property + def a_nested(self) -> testproto.nested.nested_pb2.Nested: ... + @property + def rep_inner_enum(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[Global___Simple1.InnerEnum.ValueType]: ... + @property + def inner_message(self) -> Global___Simple1.InnerMessage: ... + @property + def rep_inner_message(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Simple1.InnerMessage]: ... + @property + def no_package(self) -> testproto.nopackage_pb2.NoPackage: ... + @property + def nested_message(self) -> testproto.nested.nested_pb2.AnotherNested.NestedMessage: ... + @property + def outer_message_in_oneof(self) -> Global___Simple2: ... + @property + def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... + def __init__( + self, + *, + a_string: builtins.str | None = ..., + a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., + a_boolean: builtins.bool | None = ..., + a_uint32: builtins.int | None = ..., + a_enum: Global___OuterEnum.ValueType | None = ..., + a_external_enum: testproto.test3_pb2.OuterEnum.ValueType | None = ..., + a_inner: testproto.inner.inner_pb2.Inner | None = ..., + a_nested: testproto.nested.nested_pb2.Nested | None = ..., + inner_enum: Global___Simple1.InnerEnum.ValueType | None = ..., + rep_inner_enum: collections.abc.Iterable[Global___Simple1.InnerEnum.ValueType] | None = ..., + inner_message: Global___Simple1.InnerMessage | None = ..., + rep_inner_message: collections.abc.Iterable[Global___Simple1.InnerMessage] | None = ..., + no_package: testproto.nopackage_pb2.NoPackage | None = ..., + nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType | None = ..., + nested_message: testproto.nested.nested_pb2.AnotherNested.NestedMessage | None = ..., + a_oneof_1: builtins.str | None = ..., + a_oneof_2: builtins.str | None = ..., + outer_message_in_oneof: Global___Simple2 | None = ..., + outer_enum_in_oneof: Global___OuterEnum.ValueType | None = ..., + inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType | None = ..., + user_id: test.test_generated_mypy.UserId | None = ..., + email: test.test_generated_mypy.Email | None = ..., + email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "rep_inner_enum", b"rep_inner_enum", "rep_inner_message", b"rep_inner_message", "user_id", b"user_id"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... + +Global___Simple1: typing_extensions.TypeAlias = Simple1 + +@typing.final +class Simple2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___Simple2: typing_extensions.TypeAlias = Simple2 + +@typing.final +class Extensions1(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EXT1_STRING_FIELD_NUMBER: builtins.int + ext1_string: builtins.str + EXT_FIELD_NUMBER: builtins.int + ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions1] + """ext""" + def __init__( + self, + *, + ext1_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> None: ... + +Global___Extensions1: typing_extensions.TypeAlias = Extensions1 + +@typing.final +class Extensions2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FLAG_FIELD_NUMBER: builtins.int + flag: builtins.bool + FOO_FIELD_NUMBER: builtins.int + foo: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions2] + """foo""" + def __init__( + self, + *, + flag: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... + +Global___Extensions2: typing_extensions.TypeAlias = Extensions2 + +@typing.final +class _r_None(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALID_FIELD_NUMBER: builtins.int + valid: builtins.int + def __init__( + self, + *, + valid: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["valid", b"valid"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["valid", b"valid"]) -> None: ... + +Global____r_None: typing_extensions.TypeAlias = _r_None + +@typing.final +class PythonReservedKeywords(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _finally: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _finallyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PythonReservedKeywords._finally.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + valid_in_finally: PythonReservedKeywords._finally.ValueType # 2 + + class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... + valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 + + @typing.final + class _r_lambda(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CONTINUE_FIELD_NUMBER: builtins.int + VALID_FIELD_NUMBER: builtins.int + valid: builtins.int + def __init__( + self, + *, + valid: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> None: ... + + FROM_FIELD_NUMBER: builtins.int + IN_FIELD_NUMBER: builtins.int + IS_FIELD_NUMBER: builtins.int + FOR_FIELD_NUMBER: builtins.int + TRY_FIELD_NUMBER: builtins.int + DEF_FIELD_NUMBER: builtins.int + NONLOCAL_FIELD_NUMBER: builtins.int + WHILE_FIELD_NUMBER: builtins.int + AND_FIELD_NUMBER: builtins.int + DEL_FIELD_NUMBER: builtins.int + GLOBAL_FIELD_NUMBER: builtins.int + NOT_FIELD_NUMBER: builtins.int + WITH_FIELD_NUMBER: builtins.int + AS_FIELD_NUMBER: builtins.int + ELIF_FIELD_NUMBER: builtins.int + IF_FIELD_NUMBER: builtins.int + OR_FIELD_NUMBER: builtins.int + YIELD_FIELD_NUMBER: builtins.int + ASSERT_FIELD_NUMBER: builtins.int + ELSE_FIELD_NUMBER: builtins.int + IMPORT_FIELD_NUMBER: builtins.int + PASS_FIELD_NUMBER: builtins.int + BREAK_FIELD_NUMBER: builtins.int + EXCEPT_FIELD_NUMBER: builtins.int + RAISE_FIELD_NUMBER: builtins.int + FALSE_FIELD_NUMBER: builtins.int + TRUE_FIELD_NUMBER: builtins.int + CLASS_FIELD_NUMBER: builtins.int + NONE_FIELD_NUMBER: builtins.int + VALID_FIELD_NUMBER: builtins.int + valid: Global___PythonReservedKeywords._r_finally.ValueType + @property + def none(self) -> Global____r_None: + """Test unreserved identifiers w/ reserved message names""" + + def __init__( + self, + *, + none: Global____r_None | None = ..., + valid: Global___PythonReservedKeywords._r_finally.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> None: ... + +Global___PythonReservedKeywords: typing_extensions.TypeAlias = PythonReservedKeywords + +@typing.final +class PythonReservedKeywordsSmall(google.protobuf.message.Message): + """Do one with just one arg - to make sure it's syntactically correct""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FROM_FIELD_NUMBER: builtins.int + def __init__( + self, + ) -> None: ... + def HasField(self, field_name: typing.Literal["from", b"from"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["from", b"from"]) -> None: ... + +Global___PythonReservedKeywordsSmall: typing_extensions.TypeAlias = PythonReservedKeywordsSmall + +@typing.final +class SelfField(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SELF_FIELD_NUMBER: builtins.int + self: builtins.int + """Field self -> must generate an __init__ method w/ different name""" + def __init__( + self_, # pyright: ignore[reportSelfClsParameterName] + *, + self: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["self", b"self"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["self", b"self"]) -> None: ... + +Global___SelfField: typing_extensions.TypeAlias = SelfField + +@deprecated("""This message is deprecated""") +@typing.final +class DeprecatedMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage + +@deprecated("""This message has been marked as deprecated using proto message options.""") +@typing.final +class DeprecatedMessageBadComment(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___DeprecatedMessageBadComment: typing_extensions.TypeAlias = DeprecatedMessageBadComment diff --git a/test/generated-sync-only/__init__.py b/test/generated-sync-only/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py b/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py new file mode 100644 index 00000000..6fddb96c --- /dev/null +++ b/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/Capitalized/Capitalized.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/Capitalized/Capitalized.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'testproto/Capitalized/Capitalized.proto\x12\x0b\x43\x61pitalized\"\x12\n\x05lower\x12\t\n\x01\x61\x18\x01 \x01(\x03\"*\n\x05Upper\x12!\n\x05Lower\x18\x01 \x01(\x0b\x32\x12.Capitalized.lower\"+\n\x06lower2\x12!\n\x05upper\x18\x01 \x01(\x0b\x32\x12.Capitalized.Upperb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.Capitalized.Capitalized_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_LOWER']._serialized_start=56 + _globals['_LOWER']._serialized_end=74 + _globals['_UPPER']._serialized_start=76 + _globals['_UPPER']._serialized_end=118 + _globals['_LOWER2']._serialized_start=120 + _globals['_LOWER2']._serialized_end=163 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi b/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi new file mode 100644 index 00000000..828d26f2 --- /dev/null +++ b/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi @@ -0,0 +1,66 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class lower(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + a: builtins.int + def __init__( + self, + *, + a: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... + +Global___lower: typing_extensions.TypeAlias = lower + +@typing.final +class Upper(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOWER_FIELD_NUMBER: builtins.int + @property + def Lower(self) -> Global___lower: ... + def __init__( + self, + *, + Lower: Global___lower | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["Lower", b"Lower"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["Lower", b"Lower"]) -> None: ... + +Global___Upper: typing_extensions.TypeAlias = Upper + +@typing.final +class lower2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UPPER_FIELD_NUMBER: builtins.int + @property + def upper(self) -> Global___Upper: ... + def __init__( + self, + *, + upper: Global___Upper | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["upper", b"upper"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["upper", b"upper"]) -> None: ... + +Global___lower2: typing_extensions.TypeAlias = lower2 diff --git a/test/generated-sync-only/testproto/Capitalized/__init__.py b/test/generated-sync-only/testproto/Capitalized/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/__init__.py b/test/generated-sync-only/testproto/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/comment_special_chars_pb2.py b/test/generated-sync-only/testproto/comment_special_chars_pb2.py new file mode 100644 index 00000000..74655702 --- /dev/null +++ b/test/generated-sync-only/testproto/comment_special_chars_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/comment_special_chars.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/comment_special_chars.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%testproto/comment_special_chars.proto\x12\x15\x63omment_special_chars\"\x7f\n\x04Test\x12\t\n\x01\x61\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\t\x12\t\n\x01\x63\x18\x03 \x01(\t\x12\t\n\x01\x64\x18\x04 \x01(\t\x12\t\n\x01\x65\x18\x05 \x01(\t\x12\t\n\x01\x66\x18\x06 \x01(\t\x12\t\n\x01g\x18\x07 \x01(\t\x12\t\n\x01h\x18\x08 \x01(\t\x12\t\n\x01i\x18\t \x01(\t\x12\t\n\x01j\x18\n \x01(\t\x12\t\n\x01k\x18\x0b \x01(\tb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.comment_special_chars_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_TEST']._serialized_start=64 + _globals['_TEST']._serialized_end=191 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/comment_special_chars_pb2.pyi b/test/generated-sync-only/testproto/comment_special_chars_pb2.pyi new file mode 100644 index 00000000..21823424 --- /dev/null +++ b/test/generated-sync-only/testproto/comment_special_chars_pb2.pyi @@ -0,0 +1,82 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Test(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + B_FIELD_NUMBER: builtins.int + C_FIELD_NUMBER: builtins.int + D_FIELD_NUMBER: builtins.int + E_FIELD_NUMBER: builtins.int + F_FIELD_NUMBER: builtins.int + G_FIELD_NUMBER: builtins.int + H_FIELD_NUMBER: builtins.int + I_FIELD_NUMBER: builtins.int + J_FIELD_NUMBER: builtins.int + K_FIELD_NUMBER: builtins.int + a: builtins.str + """Ending with " """ + b: builtins.str + """Ending with "" """ + c: builtins.str + """Ending with \"\"\" """ + d: builtins.str + """Ending with \\ """ + e: builtins.str + """Containing bad escape: \\x""" + f: builtins.str + """Containing \"\"\"" quadruple""" + g: builtins.str + """Containing \"\"\""" quintuple""" + h: builtins.str + """Containing \"\"\"\"\"\" sextuple""" + i: builtins.str + """\"\"\" Multiple \"\"\" triples \"\"\" """ + j: builtins.str + """"quotes" can be a problem in comments. + \"\"\"Triple quotes\"\"\" just as well + """ + k: builtins.str + """\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" + " " + " Super Duper comments with surrounding edges! " + " " + " Pay attention to me!!!! " + " " + \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" + """ + def __init__( + self, + *, + a: builtins.str = ..., + b: builtins.str = ..., + c: builtins.str = ..., + d: builtins.str = ..., + e: builtins.str = ..., + f: builtins.str = ..., + g: builtins.str = ..., + h: builtins.str = ..., + i: builtins.str = ..., + j: builtins.str = ..., + k: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a", "b", b"b", "c", b"c", "d", b"d", "e", b"e", "f", b"f", "g", b"g", "h", b"h", "i", b"i", "j", b"j", "k", b"k"]) -> None: ... + +Global___Test: typing_extensions.TypeAlias = Test diff --git a/test/generated-sync-only/testproto/dot/__init__.py b/test/generated-sync-only/testproto/dot/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/dot/com/__init__.py b/test/generated-sync-only/testproto/dot/com/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/dot/com/test_pb2.py b/test/generated-sync-only/testproto/dot/com/test_pb2.py new file mode 100644 index 00000000..de4a85eb --- /dev/null +++ b/test/generated-sync-only/testproto/dot/com/test_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/dot.com/test.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/dot.com/test.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ctestproto/dot.com/test.proto\x12\x04test\"\x1a\n\x0bTestMessage\x12\x0b\n\x03\x66oo\x18\x01 \x01(\tb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.dot.com.test_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_TESTMESSAGE']._serialized_start=38 + _globals['_TESTMESSAGE']._serialized_end=64 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/dot/com/test_pb2.pyi b/test/generated-sync-only/testproto/dot/com/test_pb2.pyi new file mode 100644 index 00000000..bb7e86c1 --- /dev/null +++ b/test/generated-sync-only/testproto/dot/com/test_pb2.pyi @@ -0,0 +1,32 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class TestMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FOO_FIELD_NUMBER: builtins.int + foo: builtins.str + def __init__( + self, + *, + foo: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["foo", b"foo"]) -> None: ... + +Global___TestMessage: typing_extensions.TypeAlias = TestMessage diff --git a/test/generated-sync-only/testproto/edition2024_pb2.py b/test/generated-sync-only/testproto/edition2024_pb2.py new file mode 100644 index 00000000..40e73646 --- /dev/null +++ b/test/generated-sync-only/testproto/edition2024_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/edition2024.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/edition2024.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/edition2024.proto\x12\x04test\"\'\n\x16\x45\x64itions2024SubMessage\x12\r\n\x05thing\x18\x01 \x01(\t\"\xc3\x01\n\x10\x45\x64itions2024Test\x12\x15\n\x06legacy\x18\x01 \x01(\tB\x05\xaa\x01\x02\x08\x03\x12 \n\x11\x65xplicit_singular\x18\x02 \x01(\tB\x05\xaa\x01\x02\x08\x01\x12:\n\rmessage_field\x18\x03 \x01(\x0b\x32\x1c.test.Editions2024SubMessageB\x05\xaa\x01\x02\x08\x01\x12 \n\x11implicit_singular\x18\x04 \x01(\tB\x05\xaa\x01\x02\x08\x02\x12\x18\n\x10\x64\x65\x66\x61ult_singular\x18\x05 \x01(\tB\x05\x92\x03\x02 \x03\x62\x08\x65\x64itionsp\xe9\x07') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.edition2024_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\222\003\002 \003' + _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._serialized_options = b'\252\001\002\010\003' + _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._serialized_options = b'\252\001\002\010\001' + _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._serialized_options = b'\252\001\002\010\001' + _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._loaded_options = None + _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._serialized_options = b'\252\001\002\010\002' + _globals['_EDITIONS2024SUBMESSAGE']._serialized_start=37 + _globals['_EDITIONS2024SUBMESSAGE']._serialized_end=76 + _globals['_EDITIONS2024TEST']._serialized_start=79 + _globals['_EDITIONS2024TEST']._serialized_end=274 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/edition2024_pb2.pyi b/test/generated-sync-only/testproto/edition2024_pb2.pyi new file mode 100644 index 00000000..6de2ba64 --- /dev/null +++ b/test/generated-sync-only/testproto/edition2024_pb2.pyi @@ -0,0 +1,68 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Edition version of proto2 file""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Editions2024SubMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + THING_FIELD_NUMBER: builtins.int + thing: builtins.str + def __init__( + self, + *, + thing: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["thing", b"thing"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["thing", b"thing"]) -> None: ... + +Global___Editions2024SubMessage: typing_extensions.TypeAlias = Editions2024SubMessage + +@typing.final +class Editions2024Test(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LEGACY_FIELD_NUMBER: builtins.int + EXPLICIT_SINGULAR_FIELD_NUMBER: builtins.int + MESSAGE_FIELD_FIELD_NUMBER: builtins.int + IMPLICIT_SINGULAR_FIELD_NUMBER: builtins.int + DEFAULT_SINGULAR_FIELD_NUMBER: builtins.int + legacy: builtins.str + """Expect to be always set""" + explicit_singular: builtins.str + """Expect HasField generated""" + implicit_singular: builtins.str + """Expect implicit field presence, no HasField generated""" + default_singular: builtins.str + """Not set, should default to EXPLICIT""" + @property + def message_field(self) -> Global___Editions2024SubMessage: + """Expect HasField generated?""" + + def __init__( + self, + *, + legacy: builtins.str | None = ..., + explicit_singular: builtins.str | None = ..., + message_field: Global___Editions2024SubMessage | None = ..., + implicit_singular: builtins.str = ..., + default_singular: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["default_singular", b"default_singular", "explicit_singular", b"explicit_singular", "legacy", b"legacy", "message_field", b"message_field"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["default_singular", b"default_singular", "explicit_singular", b"explicit_singular", "implicit_singular", b"implicit_singular", "legacy", b"legacy", "message_field", b"message_field"]) -> None: ... + +Global___Editions2024Test: typing_extensions.TypeAlias = Editions2024Test diff --git a/test/generated-sync-only/testproto/grpc/__init__.py b/test/generated-sync-only/testproto/grpc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2.py b/test/generated-sync-only/testproto/grpc/dummy_pb2.py new file mode 100644 index 00000000..995862f4 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/dummy_pb2.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/grpc/dummy.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/grpc/dummy.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1atestproto/grpc/dummy.proto\x12\x05\x64ummy\"\x1d\n\x0c\x44ummyRequest\x12\r\n\x05value\x18\x01 \x01(\t\"\x1b\n\nDummyReply\x12\r\n\x05value\x18\x01 \x01(\t\".\n\x11\x44\x65precatedRequest\x12\x15\n\told_field\x18\x01 \x01(\tB\x02\x18\x01:\x02\x18\x01\x32\xfa\x01\n\x0c\x44ummyService\x12\x36\n\nUnaryUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x12\x39\n\x0bUnaryStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x30\x01\x12\x39\n\x0bStreamUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x12<\n\x0cStreamStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x30\x01\x32\xb3\x01\n\x11\x44\x65precatedService\x12\x44\n\x10\x44\x65precatedMethod\x12\x18.dummy.DeprecatedRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x12S\n$DeprecatedMethodNotDeprecatedRequest\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x1a\x03\x88\x02\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.dummy_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._loaded_options = None + _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._serialized_options = b'\030\001' + _globals['_DEPRECATEDREQUEST']._loaded_options = None + _globals['_DEPRECATEDREQUEST']._serialized_options = b'\030\001' + _globals['_DEPRECATEDSERVICE']._loaded_options = None + _globals['_DEPRECATEDSERVICE']._serialized_options = b'\210\002\001' + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._loaded_options = None + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._serialized_options = b'\210\002\001' + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._loaded_options = None + _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._serialized_options = b'\210\002\001' + _globals['_DUMMYREQUEST']._serialized_start=37 + _globals['_DUMMYREQUEST']._serialized_end=66 + _globals['_DUMMYREPLY']._serialized_start=68 + _globals['_DUMMYREPLY']._serialized_end=95 + _globals['_DEPRECATEDREQUEST']._serialized_start=97 + _globals['_DEPRECATEDREQUEST']._serialized_end=143 + _globals['_DUMMYSERVICE']._serialized_start=146 + _globals['_DUMMYSERVICE']._serialized_end=396 + _globals['_DEPRECATEDSERVICE']._serialized_start=399 + _globals['_DEPRECATEDSERVICE']._serialized_end=578 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2.pyi b/test/generated-sync-only/testproto/grpc/dummy_pb2.pyi new file mode 100644 index 00000000..ce03f2a5 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/dummy_pb2.pyi @@ -0,0 +1,68 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +https://github.com/vmagamedov/grpclib/blob/master/tests/dummy.proto""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +if sys.version_info >= (3, 13): + from warnings import deprecated +else: + from typing_extensions import deprecated + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class DummyRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALUE_FIELD_NUMBER: builtins.int + value: builtins.str + def __init__( + self, + *, + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["value", b"value"]) -> None: ... + +Global___DummyRequest: typing_extensions.TypeAlias = DummyRequest + +@typing.final +class DummyReply(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALUE_FIELD_NUMBER: builtins.int + value: builtins.str + def __init__( + self, + *, + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["value", b"value"]) -> None: ... + +Global___DummyReply: typing_extensions.TypeAlias = DummyReply + +@deprecated("""This message has been marked as deprecated using proto message options.""") +@typing.final +class DeprecatedRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + OLD_FIELD_FIELD_NUMBER: builtins.int + old_field: builtins.str + def __init__( + self, + *, + old_field: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["old_field", b"old_field"]) -> None: ... + +Global___DeprecatedRequest: typing_extensions.TypeAlias = DeprecatedRequest diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.py b/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.py new file mode 100644 index 00000000..eef0f7f6 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.py @@ -0,0 +1,353 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import warnings + +import grpc +from testproto.grpc import dummy_pb2 as testproto_dot_grpc_dot_dummy__pb2 + +GRPC_GENERATED_VERSION = '1.76.0' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + ' but the generated code in testproto/grpc/dummy_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + + +class DummyServiceStub(object): + """DummyService + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.UnaryUnary = channel.unary_unary( + '/dummy.DummyService/UnaryUnary', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.UnaryStream = channel.unary_stream( + '/dummy.DummyService/UnaryStream', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.StreamUnary = channel.stream_unary( + '/dummy.DummyService/StreamUnary', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.StreamStream = channel.stream_stream( + '/dummy.DummyService/StreamStream', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + + +class DummyServiceServicer(object): + """DummyService + """ + + def UnaryUnary(self, request, context): + """UnaryUnary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UnaryStream(self, request, context): + """UnaryStream + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def StreamUnary(self, request_iterator, context): + """StreamUnary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def StreamStream(self, request_iterator, context): + """StreamStream + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DummyServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'UnaryUnary': grpc.unary_unary_rpc_method_handler( + servicer.UnaryUnary, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'UnaryStream': grpc.unary_stream_rpc_method_handler( + servicer.UnaryStream, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'StreamUnary': grpc.stream_unary_rpc_method_handler( + servicer.StreamUnary, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'StreamStream': grpc.stream_stream_rpc_method_handler( + servicer.StreamStream, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'dummy.DummyService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('dummy.DummyService', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class DummyService(object): + """DummyService + """ + + @staticmethod + def UnaryUnary(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dummy.DummyService/UnaryUnary', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def UnaryStream(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/dummy.DummyService/UnaryStream', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def StreamUnary(request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.stream_unary( + request_iterator, + target, + '/dummy.DummyService/StreamUnary', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def StreamStream(request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.stream_stream( + request_iterator, + target, + '/dummy.DummyService/StreamStream', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + +class DeprecatedServiceStub(object): + """Marking the service as deprecated + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.DeprecatedMethod = channel.unary_unary( + '/dummy.DeprecatedService/DeprecatedMethod', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + self.DeprecatedMethodNotDeprecatedRequest = channel.unary_unary( + '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', + request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + _registered_method=True) + + +class DeprecatedServiceServicer(object): + """Marking the service as deprecated + """ + + def DeprecatedMethod(self, request, context): + """DeprecatedMethod + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeprecatedMethodNotDeprecatedRequest(self, request, context): + """DeprecatedMethodNotDeprecatedRequest + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DeprecatedServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'DeprecatedMethod': grpc.unary_unary_rpc_method_handler( + servicer.DeprecatedMethod, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + 'DeprecatedMethodNotDeprecatedRequest': grpc.unary_unary_rpc_method_handler( + servicer.DeprecatedMethodNotDeprecatedRequest, + request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, + response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'dummy.DeprecatedService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('dummy.DeprecatedService', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class DeprecatedService(object): + """Marking the service as deprecated + """ + + @staticmethod + def DeprecatedMethod(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dummy.DeprecatedService/DeprecatedMethod', + testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DeprecatedMethodNotDeprecatedRequest(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', + testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, + testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.pyi new file mode 100644 index 00000000..bb0a6430 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.pyi @@ -0,0 +1,133 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +https://github.com/vmagamedov/grpclib/blob/master/tests/dummy.proto""" + +import abc +import collections.abc +import grpc +import sys +import testproto.grpc.dummy_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +if sys.version_info >= (3, 13): + from warnings import deprecated +else: + from typing_extensions import deprecated + + +GRPC_GENERATED_VERSION: str +GRPC_VERSION: str +_DummyServiceUnaryUnaryType: typing_extensions.TypeAlias = grpc.UnaryUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DummyServiceUnaryStreamType: typing_extensions.TypeAlias = grpc.UnaryStreamMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DummyServiceStreamUnaryType: typing_extensions.TypeAlias = grpc.StreamUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DummyServiceStreamStreamType: typing_extensions.TypeAlias = grpc.StreamStreamMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +class DummyServiceStub: + """DummyService""" + + UnaryUnary: _DummyServiceUnaryUnaryType + """UnaryUnary""" + + UnaryStream: _DummyServiceUnaryStreamType + """UnaryStream""" + + StreamUnary: _DummyServiceStreamUnaryType + """StreamUnary""" + + StreamStream: _DummyServiceStreamStreamType + """StreamStream""" + +class DummyServiceServicer(metaclass=abc.ABCMeta): + """DummyService""" + + @abc.abstractmethod + def UnaryUnary( + self, + request: testproto.grpc.dummy_pb2.DummyRequest, + context: grpc.ServicerContext, + ) -> testproto.grpc.dummy_pb2.DummyReply: + """UnaryUnary""" + + @abc.abstractmethod + def UnaryStream( + self, + request: testproto.grpc.dummy_pb2.DummyRequest, + context: grpc.ServicerContext, + ) -> collections.abc.Iterator[testproto.grpc.dummy_pb2.DummyReply]: + """UnaryStream""" + + @abc.abstractmethod + def StreamUnary( + self, + request_iterator: collections.abc.Iterator[testproto.grpc.dummy_pb2.DummyRequest], + context: grpc.ServicerContext, + ) -> testproto.grpc.dummy_pb2.DummyReply: + """StreamUnary""" + + @abc.abstractmethod + def StreamStream( + self, + request_iterator: collections.abc.Iterator[testproto.grpc.dummy_pb2.DummyRequest], + context: grpc.ServicerContext, + ) -> collections.abc.Iterator[testproto.grpc.dummy_pb2.DummyReply]: + """StreamStream""" + +def add_DummyServiceServicer_to_server(servicer: DummyServiceServicer, server: grpc.Server) -> None: ... + +_DeprecatedServiceDeprecatedMethodType: typing_extensions.TypeAlias = grpc.UnaryUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DeprecatedRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +_DeprecatedServiceDeprecatedMethodNotDeprecatedRequestType: typing_extensions.TypeAlias = grpc.UnaryUnaryMultiCallable[ + testproto.grpc.dummy_pb2.DummyRequest, + testproto.grpc.dummy_pb2.DummyReply, +] +@deprecated("""This service is deprecated""") +class DeprecatedServiceStub: + """Marking the service as deprecated""" + + DeprecatedMethod: _DeprecatedServiceDeprecatedMethodType + """DeprecatedMethod""" + + DeprecatedMethodNotDeprecatedRequest: _DeprecatedServiceDeprecatedMethodNotDeprecatedRequestType + """DeprecatedMethodNotDeprecatedRequest""" + +@deprecated("""This service is deprecated""") +class DeprecatedServiceServicer(metaclass=abc.ABCMeta): + """Marking the service as deprecated""" + + @abc.abstractmethod + def DeprecatedMethod( + self, + request: testproto.grpc.dummy_pb2.DeprecatedRequest, + context: grpc.ServicerContext, + ) -> testproto.grpc.dummy_pb2.DummyReply: + """DeprecatedMethod""" + + @abc.abstractmethod + def DeprecatedMethodNotDeprecatedRequest( + self, + request: testproto.grpc.dummy_pb2.DummyRequest, + context: grpc.ServicerContext, + ) -> testproto.grpc.dummy_pb2.DummyReply: + """DeprecatedMethodNotDeprecatedRequest""" + +@deprecated("""This service is deprecated""") +def add_DeprecatedServiceServicer_to_server(servicer: DeprecatedServiceServicer, server: grpc.Server) -> None: ... diff --git a/test/generated-sync-only/testproto/grpc/import_pb2.py b/test/generated-sync-only/testproto/grpc/import_pb2.py new file mode 100644 index 00000000..61cc5689 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/import_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/grpc/import.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/grpc/import.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test_pb2 as testproto_dot_test__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/grpc/import.proto\x12\ttest.grpc\x1a\x14testproto/test.proto\x1a\x1bgoogle/protobuf/empty.proto2\xb4\x01\n\rSimpleService\x12\x35\n\nUnaryUnary\x12\x16.google.protobuf.Empty\x1a\r.test.Simple1\"\x00\x12\x36\n\x0bUnaryStream\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00\x12\x34\n\tNoComment\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.import_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SIMPLESERVICE']._serialized_start=94 + _globals['_SIMPLESERVICE']._serialized_end=274 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/grpc/import_pb2.pyi b/test/generated-sync-only/testproto/grpc/import_pb2.pyi new file mode 100644 index 00000000..dd854e28 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/import_pb2.pyi @@ -0,0 +1,8 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import google.protobuf.descriptor + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor diff --git a/test/generated-sync-only/testproto/grpc/import_pb2_grpc.py b/test/generated-sync-only/testproto/grpc/import_pb2_grpc.py new file mode 100644 index 00000000..0a09fd20 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/import_pb2_grpc.py @@ -0,0 +1,189 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import warnings + +import grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from testproto import test_pb2 as testproto_dot_test__pb2 + +GRPC_GENERATED_VERSION = '1.76.0' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + ' but the generated code in testproto/grpc/import_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + + +class SimpleServiceStub(object): + """SimpleService + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.UnaryUnary = channel.unary_unary( + '/test.grpc.SimpleService/UnaryUnary', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=testproto_dot_test__pb2.Simple1.FromString, + _registered_method=True) + self.UnaryStream = channel.unary_unary( + '/test.grpc.SimpleService/UnaryStream', + request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + _registered_method=True) + self.NoComment = channel.unary_unary( + '/test.grpc.SimpleService/NoComment', + request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + _registered_method=True) + + +class SimpleServiceServicer(object): + """SimpleService + """ + + def UnaryUnary(self, request, context): + """UnaryUnary + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UnaryStream(self, request, context): + """UnaryStream + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def NoComment(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_SimpleServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'UnaryUnary': grpc.unary_unary_rpc_method_handler( + servicer.UnaryUnary, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, + ), + 'UnaryStream': grpc.unary_unary_rpc_method_handler( + servicer.UnaryStream, + request_deserializer=testproto_dot_test__pb2.Simple1.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'NoComment': grpc.unary_unary_rpc_method_handler( + servicer.NoComment, + request_deserializer=testproto_dot_test__pb2.Simple1.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'test.grpc.SimpleService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('test.grpc.SimpleService', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class SimpleService(object): + """SimpleService + """ + + @staticmethod + def UnaryUnary(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/test.grpc.SimpleService/UnaryUnary', + google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + testproto_dot_test__pb2.Simple1.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def UnaryStream(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/test.grpc.SimpleService/UnaryStream', + testproto_dot_test__pb2.Simple1.SerializeToString, + google_dot_protobuf_dot_empty__pb2.Empty.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def NoComment(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/test.grpc.SimpleService/NoComment', + testproto_dot_test__pb2.Simple1.SerializeToString, + google_dot_protobuf_dot_empty__pb2.Empty.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/test/generated-sync-only/testproto/grpc/import_pb2_grpc.pyi b/test/generated-sync-only/testproto/grpc/import_pb2_grpc.pyi new file mode 100644 index 00000000..4c123e06 --- /dev/null +++ b/test/generated-sync-only/testproto/grpc/import_pb2_grpc.pyi @@ -0,0 +1,71 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import abc +import collections.abc +import google.protobuf.empty_pb2 +import grpc +import sys +import testproto.test_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + + +GRPC_GENERATED_VERSION: str +GRPC_VERSION: str +_SimpleServiceUnaryUnaryType: typing_extensions.TypeAlias = grpc.UnaryUnaryMultiCallable[ + google.protobuf.empty_pb2.Empty, + testproto.test_pb2.Simple1, +] +_SimpleServiceUnaryStreamType: typing_extensions.TypeAlias = grpc.UnaryUnaryMultiCallable[ + testproto.test_pb2.Simple1, + google.protobuf.empty_pb2.Empty, +] +_SimpleServiceNoCommentType: typing_extensions.TypeAlias = grpc.UnaryUnaryMultiCallable[ + testproto.test_pb2.Simple1, + google.protobuf.empty_pb2.Empty, +] +class SimpleServiceStub: + """SimpleService""" + + UnaryUnary: _SimpleServiceUnaryUnaryType + """UnaryUnary""" + + UnaryStream: _SimpleServiceUnaryStreamType + """UnaryStream""" + + NoComment: _SimpleServiceNoCommentType + +class SimpleServiceServicer(metaclass=abc.ABCMeta): + """SimpleService""" + + @abc.abstractmethod + def UnaryUnary( + self, + request: google.protobuf.empty_pb2.Empty, + context: grpc.ServicerContext, + ) -> testproto.test_pb2.Simple1: + """UnaryUnary""" + + @abc.abstractmethod + def UnaryStream( + self, + request: testproto.test_pb2.Simple1, + context: grpc.ServicerContext, + ) -> google.protobuf.empty_pb2.Empty: + """UnaryStream""" + + @abc.abstractmethod + def NoComment( + self, + request: testproto.test_pb2.Simple1, + context: grpc.ServicerContext, + ) -> google.protobuf.empty_pb2.Empty: ... + +def add_SimpleServiceServicer_to_server(servicer: SimpleServiceServicer, server: grpc.Server) -> None: ... diff --git a/test/generated-sync-only/testproto/inner/__init__.py b/test/generated-sync-only/testproto/inner/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/inner/inner_pb2.py b/test/generated-sync-only/testproto/inner/inner_pb2.py new file mode 100644 index 00000000..fa5eac66 --- /dev/null +++ b/test/generated-sync-only/testproto/inner/inner_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/inner/inner.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/inner/inner.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/inner/inner.proto\x12\x05inner\x1a\x15testproto/test3.proto\"$\n\x05Inner\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnumb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.inner.inner_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_INNER']._serialized_start=61 + _globals['_INNER']._serialized_end=97 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/inner/inner_pb2.pyi b/test/generated-sync-only/testproto/inner/inner_pb2.pyi new file mode 100644 index 00000000..dc705d20 --- /dev/null +++ b/test/generated-sync-only/testproto/inner/inner_pb2.pyi @@ -0,0 +1,33 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Inner(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + a: testproto.test3_pb2.OuterEnum.ValueType + def __init__( + self, + *, + a: testproto.test3_pb2.OuterEnum.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... + +Global___Inner: typing_extensions.TypeAlias = Inner diff --git a/test/generated-sync-only/testproto/nested/__init__.py b/test/generated-sync-only/testproto/nested/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated-sync-only/testproto/nested/nested_pb2.py b/test/generated-sync-only/testproto/nested/nested_pb2.py new file mode 100644 index 00000000..4e269210 --- /dev/null +++ b/test/generated-sync-only/testproto/nested/nested_pb2.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/nested/nested.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/nested/nested.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dtestproto/nested/nested.proto\x12\x13test.nested_package\x1a\x15testproto/test3.proto\"%\n\x06Nested\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnum\"\xac\x02\n\rAnotherNested\x1a\xed\x01\n\rNestedMessage\x12\t\n\x01s\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\x08\x12\x39\n\x02ne\x18\x03 \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12I\n\x03ne2\x18\x04 \x01(\x0e\x32<.test.nested_package.AnotherNested.NestedMessage.NestedEnum2\"@\n\x0bNestedEnum2\x12\r\n\tUNDEFINED\x10\x00\x12\x10\n\x0cNESTED_ENUM1\x10\x01\x12\x10\n\x0cNESTED_ENUM2\x10\x02\"+\n\nNestedEnum\x12\x0b\n\x07INVALID\x10\x00\x12\x07\n\x03ONE\x10\x01\x12\x07\n\x03TWO\x10\x02\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nested.nested_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_NESTED']._serialized_start=77 + _globals['_NESTED']._serialized_end=114 + _globals['_ANOTHERNESTED']._serialized_start=117 + _globals['_ANOTHERNESTED']._serialized_end=417 + _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_start=135 + _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_end=372 + _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_start=308 + _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_end=372 + _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_start=374 + _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_end=417 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/nested/nested_pb2.pyi b/test/generated-sync-only/testproto/nested/nested_pb2.pyi new file mode 100644 index 00000000..e382df0a --- /dev/null +++ b/test/generated-sync-only/testproto/nested/nested_pb2.pyi @@ -0,0 +1,96 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Nested(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_FIELD_NUMBER: builtins.int + a: testproto.test3_pb2.OuterEnum.ValueType + def __init__( + self, + *, + a: testproto.test3_pb2.OuterEnum.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... + +Global___Nested: typing_extensions.TypeAlias = Nested + +@typing.final +class AnotherNested(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _NestedEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _NestedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested._NestedEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INVALID: AnotherNested._NestedEnum.ValueType # 0 + ONE: AnotherNested._NestedEnum.ValueType # 1 + TWO: AnotherNested._NestedEnum.ValueType # 2 + + class NestedEnum(_NestedEnum, metaclass=_NestedEnumEnumTypeWrapper): ... + INVALID: AnotherNested.NestedEnum.ValueType # 0 + ONE: AnotherNested.NestedEnum.ValueType # 1 + TWO: AnotherNested.NestedEnum.ValueType # 2 + + @typing.final + class NestedMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _NestedEnum2: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _NestedEnum2EnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested.NestedMessage._NestedEnum2.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNDEFINED: AnotherNested.NestedMessage._NestedEnum2.ValueType # 0 + NESTED_ENUM1: AnotherNested.NestedMessage._NestedEnum2.ValueType # 1 + NESTED_ENUM2: AnotherNested.NestedMessage._NestedEnum2.ValueType # 2 + + class NestedEnum2(_NestedEnum2, metaclass=_NestedEnum2EnumTypeWrapper): ... + UNDEFINED: AnotherNested.NestedMessage.NestedEnum2.ValueType # 0 + NESTED_ENUM1: AnotherNested.NestedMessage.NestedEnum2.ValueType # 1 + NESTED_ENUM2: AnotherNested.NestedMessage.NestedEnum2.ValueType # 2 + + S_FIELD_NUMBER: builtins.int + B_FIELD_NUMBER: builtins.int + NE_FIELD_NUMBER: builtins.int + NE2_FIELD_NUMBER: builtins.int + s: builtins.str + b: builtins.bool + ne: Global___AnotherNested.NestedEnum.ValueType + ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType + def __init__( + self, + *, + s: builtins.str = ..., + b: builtins.bool = ..., + ne: Global___AnotherNested.NestedEnum.ValueType = ..., + ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["b", b"b", "ne", b"ne", "ne2", b"ne2", "s", b"s"]) -> None: ... + + def __init__( + self, + ) -> None: ... + +Global___AnotherNested: typing_extensions.TypeAlias = AnotherNested diff --git a/test/generated-sync-only/testproto/nopackage_pb2.py b/test/generated-sync-only/testproto/nopackage_pb2.py new file mode 100644 index 00000000..25e501fb --- /dev/null +++ b/test/generated-sync-only/testproto/nopackage_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/nopackage.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/nopackage.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19testproto/nopackage.proto\"\x0b\n\tNoPackage\"@\n\nNoPackage2\x12\x16\n\x02np\x18\x01 \x01(\x0b\x32\n.NoPackage\x12\x1a\n\x06np_rep\x18\x02 \x03(\x0b\x32\n.NoPackageb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nopackage_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_NOPACKAGE']._serialized_start=29 + _globals['_NOPACKAGE']._serialized_end=40 + _globals['_NOPACKAGE2']._serialized_start=42 + _globals['_NOPACKAGE2']._serialized_end=106 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/nopackage_pb2.pyi b/test/generated-sync-only/testproto/nopackage_pb2.pyi new file mode 100644 index 00000000..7925439c --- /dev/null +++ b/test/generated-sync-only/testproto/nopackage_pb2.pyi @@ -0,0 +1,52 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class NoPackage(google.protobuf.message.Message): + """Intentionally don't set a package - just to make sure we can handle it.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___NoPackage: typing_extensions.TypeAlias = NoPackage + +@typing.final +class NoPackage2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NP_FIELD_NUMBER: builtins.int + NP_REP_FIELD_NUMBER: builtins.int + @property + def np(self) -> Global___NoPackage: ... + @property + def np_rep(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___NoPackage]: ... + def __init__( + self, + *, + np: Global___NoPackage | None = ..., + np_rep: collections.abc.Iterable[Global___NoPackage] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["np", b"np"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["np", b"np", "np_rep", b"np_rep"]) -> None: ... + +Global___NoPackage2: typing_extensions.TypeAlias = NoPackage2 diff --git a/test/generated-sync-only/testproto/readme_enum_pb2.py b/test/generated-sync-only/testproto/readme_enum_pb2.py new file mode 100644 index 00000000..bfce5038 --- /dev/null +++ b/test/generated-sync-only/testproto/readme_enum_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/readme_enum.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/readme_enum.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/readme_enum.proto\x12\x04test*\x1e\n\x06MyEnum\x12\t\n\x05HELLO\x10\x00\x12\t\n\x05WORLD\x10\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.readme_enum_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_MYENUM']._serialized_start=37 + _globals['_MYENUM']._serialized_end=67 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/readme_enum_pb2.pyi b/test/generated-sync-only/testproto/readme_enum_pb2.pyi new file mode 100644 index 00000000..be8369c4 --- /dev/null +++ b/test/generated-sync-only/testproto/readme_enum_pb2.pyi @@ -0,0 +1,32 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _MyEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + HELLO: _MyEnum.ValueType # 0 + WORLD: _MyEnum.ValueType # 1 + +class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... + +HELLO: MyEnum.ValueType # 0 +WORLD: MyEnum.ValueType # 1 +Global___MyEnum: typing_extensions.TypeAlias = MyEnum diff --git a/test/generated-sync-only/testproto/reexport_pb2.py b/test/generated-sync-only/testproto/reexport_pb2.py new file mode 100644 index 00000000..bebe651b --- /dev/null +++ b/test/generated-sync-only/testproto/reexport_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/reexport.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/reexport.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test3_pb2 as testproto_dot_test3__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 + +from testproto.test3_pb2 import * +from google.protobuf.empty_pb2 import * + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18testproto/reexport.proto\x12\x05test3\x1a\x15testproto/test3.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1btestproto/inner/inner.protoP\x00P\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.reexport_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/reexport_pb2.pyi b/test/generated-sync-only/testproto/reexport_pb2.pyi new file mode 100644 index 00000000..9702c2bd --- /dev/null +++ b/test/generated-sync-only/testproto/reexport_pb2.pyi @@ -0,0 +1,19 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import google.protobuf.descriptor +from google.protobuf.empty_pb2 import ( + Empty as Empty, +) +from testproto.test3_pb2 import ( + BAR3 as BAR3, + FOO3 as FOO3, + OuterEnum as OuterEnum, + OuterMessage3 as OuterMessage3, + SimpleProto3 as SimpleProto3, + UNKNOWN as UNKNOWN, +) + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor diff --git a/test/generated-sync-only/testproto/test3_pb2.py b/test/generated-sync-only/testproto/test3_pb2.py new file mode 100644 index 00000000..3b164270 --- /dev/null +++ b/test/generated-sync-only/testproto/test3_pb2.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test3.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test3.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15testproto/test3.proto\x12\x05test3\x1a\x1emypy_protobuf/extensions.proto\"!\n\rOuterMessage3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\"\xb3\t\n\x0cSimpleProto3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12&\n\x0c\x61_outer_enum\x18\x03 \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\router_message\x18\x04 \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x31\n\ninner_enum\x18\x0f \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnum\x12\x13\n\ta_oneof_1\x18\x05 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x06 \x01(\tH\x00\x12\x36\n\x16outer_message_in_oneof\x18\x0c \x01(\x0b\x32\x14.test3.OuterMessage3H\x00\x12/\n\x13outer_enum_in_oneof\x18\r \x01(\x0e\x32\x10.test3.OuterEnumH\x00\x12<\n\x13inner_enum_in_oneof\x18\x0e \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnumH\x00\x12\x13\n\tb_oneof_1\x18\x07 \x01(\tH\x01\x12\x13\n\tb_oneof_2\x18\x08 \x01(\tH\x01\x12\"\n\x04\x62ool\x18\t \x01(\x0b\x32\x14.test3.OuterMessage3\x12#\n\tOuterEnum\x18\n \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\rOuterMessage3\x18\x0b \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x36\n\nmap_scalar\x18\x10 \x03(\x0b\x32\".test3.SimpleProto3.MapScalarEntry\x12\x38\n\x0bmap_message\x18\x11 \x03(\x0b\x32#.test3.SimpleProto3.MapMessageEntry\x12\x1f\n\x12\x61n_optional_string\x18\x12 \x01(\tH\x02\x88\x01\x01\x12\x35\n\x07user_id\x18\x13 \x01(\rB$\x92H!\n\x1ftest/test_generated_mypy.UserId\x12\x32\n\x05\x65mail\x18\x14 \x01(\tB#\x92H \n\x1etest/test_generated_mypy.Email\x12\x7f\n\x0c\x65mail_by_uid\x18\x15 \x03(\x0b\x32#.test3.SimpleProto3.EmailByUidEntryBD\x92HA\x12\x1ftest/test_generated_mypy.UserId\x1a\x1etest/test_generated_mypy.Email\x1a\x30\n\x0eMapScalarEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aG\n\x0fMapMessageEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.test3.OuterMessage3:\x02\x38\x01\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x00\x12\n\n\x06INNER2\x10\x01\x42\t\n\x07\x61_oneofB\t\n\x07\x62_oneofB\x15\n\x13_an_optional_string*,\n\tOuterEnum\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04\x46OO3\x10\x01\x12\x08\n\x04\x42\x41R3\x10\x02\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test3_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._loaded_options = None + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_options = b'8\001' + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._loaded_options = None + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_options = b'8\001' + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._loaded_options = None + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_options = b'8\001' + _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._loaded_options = None + _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._serialized_options = b'\222H!\n\037test/test_generated_mypy.UserId' + _globals['_SIMPLEPROTO3'].fields_by_name['email']._loaded_options = None + _globals['_SIMPLEPROTO3'].fields_by_name['email']._serialized_options = b'\222H \n\036test/test_generated_mypy.Email' + _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._loaded_options = None + _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._serialized_options = b'\222HA\022\037test/test_generated_mypy.UserId\032\036test/test_generated_mypy.Email' + _globals['_OUTERENUM']._serialized_start=1305 + _globals['_OUTERENUM']._serialized_end=1349 + _globals['_OUTERMESSAGE3']._serialized_start=64 + _globals['_OUTERMESSAGE3']._serialized_end=97 + _globals['_SIMPLEPROTO3']._serialized_start=100 + _globals['_SIMPLEPROTO3']._serialized_end=1303 + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_start=1049 + _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_end=1097 + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_start=1099 + _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_end=1170 + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_start=1172 + _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_end=1221 + _globals['_SIMPLEPROTO3_INNERENUM']._serialized_start=1223 + _globals['_SIMPLEPROTO3_INNERENUM']._serialized_end=1258 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test3_pb2.pyi b/test/generated-sync-only/testproto/test3_pb2.pyi new file mode 100644 index 00000000..f239d860 --- /dev/null +++ b/test/generated-sync-only/testproto/test3_pb2.pyi @@ -0,0 +1,209 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +package test3""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import test.test_generated_mypy +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _OuterEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNKNOWN: _OuterEnum.ValueType # 0 + FOO3: _OuterEnum.ValueType # 1 + BAR3: _OuterEnum.ValueType # 2 + +class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... + +UNKNOWN: OuterEnum.ValueType # 0 +FOO3: OuterEnum.ValueType # 1 +BAR3: OuterEnum.ValueType # 2 +Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum + +@typing.final +class OuterMessage3(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___OuterMessage3: typing_extensions.TypeAlias = OuterMessage3 + +@typing.final +class SimpleProto3(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _InnerEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SimpleProto3._InnerEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INNER1: SimpleProto3._InnerEnum.ValueType # 0 + INNER2: SimpleProto3._InnerEnum.ValueType # 1 + + class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... + INNER1: SimpleProto3.InnerEnum.ValueType # 0 + INNER2: SimpleProto3.InnerEnum.ValueType # 1 + + @typing.final + class MapScalarEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + value: builtins.str + def __init__( + self, + *, + key: builtins.int = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + @typing.final + class MapMessageEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + @property + def value(self) -> Global___OuterMessage3: ... + def __init__( + self, + *, + key: builtins.int = ..., + value: Global___OuterMessage3 | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + @typing.final + class EmailByUidEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + value: builtins.str + def __init__( + self, + *, + key: builtins.int = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + A_STRING_FIELD_NUMBER: builtins.int + A_REPEATED_STRING_FIELD_NUMBER: builtins.int + A_OUTER_ENUM_FIELD_NUMBER: builtins.int + OUTER_MESSAGE_FIELD_NUMBER: builtins.int + INNER_ENUM_FIELD_NUMBER: builtins.int + A_ONEOF_1_FIELD_NUMBER: builtins.int + A_ONEOF_2_FIELD_NUMBER: builtins.int + OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int + OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + B_ONEOF_1_FIELD_NUMBER: builtins.int + B_ONEOF_2_FIELD_NUMBER: builtins.int + BOOL_FIELD_NUMBER: builtins.int + OUTERENUM_FIELD_NUMBER: builtins.int + OUTERMESSAGE3_FIELD_NUMBER: builtins.int + MAP_SCALAR_FIELD_NUMBER: builtins.int + MAP_MESSAGE_FIELD_NUMBER: builtins.int + AN_OPTIONAL_STRING_FIELD_NUMBER: builtins.int + USER_ID_FIELD_NUMBER: builtins.int + EMAIL_FIELD_NUMBER: builtins.int + EMAIL_BY_UID_FIELD_NUMBER: builtins.int + a_string: builtins.str + a_outer_enum: Global___OuterEnum.ValueType + inner_enum: Global___SimpleProto3.InnerEnum.ValueType + a_oneof_1: builtins.str + a_oneof_2: builtins.str + outer_enum_in_oneof: Global___OuterEnum.ValueType + inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType + b_oneof_1: builtins.str + b_oneof_2: builtins.str + OuterEnum: Global___OuterEnum.ValueType + """Test having fieldname match messagename""" + an_optional_string: builtins.str + user_id: test.test_generated_mypy.UserId + email: test.test_generated_mypy.Email + @property + def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def outer_message(self) -> Global___OuterMessage3: ... + @property + def outer_message_in_oneof(self) -> Global___OuterMessage3: ... + @property + def bool(self) -> Global___OuterMessage3: ... + @property + def OuterMessage3(self) -> Global___OuterMessage3: ... + @property + def map_scalar(self) -> google.protobuf.internal.containers.ScalarMap[builtins.int, builtins.str]: + """Test generation of map""" + + @property + def map_message(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, Global___OuterMessage3]: ... + @property + def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... + def __init__( + self, + *, + a_string: builtins.str = ..., + a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., + a_outer_enum: Global___OuterEnum.ValueType = ..., + outer_message: Global___OuterMessage3 | None = ..., + inner_enum: Global___SimpleProto3.InnerEnum.ValueType = ..., + a_oneof_1: builtins.str = ..., + a_oneof_2: builtins.str = ..., + outer_message_in_oneof: Global___OuterMessage3 | None = ..., + outer_enum_in_oneof: Global___OuterEnum.ValueType = ..., + inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType = ..., + b_oneof_1: builtins.str = ..., + b_oneof_2: builtins.str = ..., + bool: Global___OuterMessage3 | None = ..., + OuterEnum: Global___OuterEnum.ValueType = ..., + OuterMessage3: Global___OuterMessage3 | None = ..., + map_scalar: collections.abc.Mapping[builtins.int, builtins.str] | None = ..., + map_message: collections.abc.Mapping[builtins.int, Global___OuterMessage3] | None = ..., + an_optional_string: builtins.str | None = ..., + user_id: test.test_generated_mypy.UserId = ..., + email: test.test_generated_mypy.Email = ..., + email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "inner_enum_in_oneof", b"inner_enum_in_oneof", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["OuterEnum", b"OuterEnum", "OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_outer_enum", b"a_outer_enum", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "map_message", b"map_message", "map_scalar", b"map_scalar", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_an_optional_string", b"_an_optional_string"]) -> typing.Literal["an_optional_string"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["b_oneof", b"b_oneof"]) -> typing.Literal["b_oneof_1", "b_oneof_2"] | None: ... + +Global___SimpleProto3: typing_extensions.TypeAlias = SimpleProto3 diff --git a/test/generated-sync-only/testproto/test_extensions2_pb2.py b/test/generated-sync-only/testproto/test_extensions2_pb2.py new file mode 100644 index 00000000..58c277cb --- /dev/null +++ b/test/generated-sync-only/testproto/test_extensions2_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test_extensions2.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test_extensions2.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from testproto import test_pb2 as testproto_dot_test__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions2.proto\x12\x04test\x1a\x14testproto/test.proto\"_\n\x15SeparateFileExtension\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32\x38\n\x03\x65xt\x12\r.test.Simple2\x18\xe9\x07 \x01(\x0b\x32\x1b.test.SeparateFileExtension') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions2_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SEPARATEFILEEXTENSION']._serialized_start=64 + _globals['_SEPARATEFILEEXTENSION']._serialized_end=159 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_extensions2_pb2.pyi b/test/generated-sync-only/testproto/test_extensions2_pb2.pyi new file mode 100644 index 00000000..b8e9f652 --- /dev/null +++ b/test/generated-sync-only/testproto/test_extensions2_pb2.pyi @@ -0,0 +1,37 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.extension_dict +import google.protobuf.message +import sys +import testproto.test_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class SeparateFileExtension(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FLAG_FIELD_NUMBER: builtins.int + flag: builtins.bool + EXT_FIELD_NUMBER: builtins.int + ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[testproto.test_pb2.Simple2, Global___SeparateFileExtension] + def __init__( + self, + *, + flag: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... + +Global___SeparateFileExtension: typing_extensions.TypeAlias = SeparateFileExtension diff --git a/test/generated-sync-only/testproto/test_extensions3_pb2.py b/test/generated-sync-only/testproto/test_extensions3_pb2.py new file mode 100644 index 00000000..4bc39093 --- /dev/null +++ b/test/generated-sync-only/testproto/test_extensions3_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test_extensions3.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test_extensions3.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions3.proto\x12\x05test3\x1a google/protobuf/descriptor.proto\x1a\x15testproto/test3.proto\"\x91\x01\n\x15MessageOptionsTestMsg:x\x92\x82\x19\x0cHello world!\x9a\x82\x19\x01\x41\x9a\x82\x19\x01\x42\x9a\x82\x19\x01\x43\xa0\x82\x19\x01\xaa\x82\x19\x02\x01\x02\xb2\x82\x19\x15\n\x13Hello OuterMessage3\xba\x82\x19\x17\n\x15Hello OuterMessage3 A\xba\x82\x19\x17\n\x15Hello OuterMessage3 B:=\n\x14test_field_extension\x12\x1d.google.protobuf.FieldOptions\x18\xd0\x86\x03 \x01(\t:8\n\rscalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa2\x90\x03 \x01(\t:A\n\x16repeated_scalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa3\x90\x03 \x03(\t:H\n\x0b\x65num_option\x12\x1f.google.protobuf.MessageOptions\x18\xa4\x90\x03 \x01(\x0e\x32\x10.test3.OuterEnum:Q\n\x14repeated_enum_option\x12\x1f.google.protobuf.MessageOptions\x18\xa5\x90\x03 \x03(\x0e\x32\x10.test3.OuterEnum:K\n\nmsg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa6\x90\x03 \x01(\x0b\x32\x14.test3.OuterMessage3:T\n\x13repeated_msg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa7\x90\x03 \x03(\x0b\x32\x14.test3.OuterMessage3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions3_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_MESSAGEOPTIONSTESTMSG']._loaded_options = None + _globals['_MESSAGEOPTIONSTESTMSG']._serialized_options = b'\222\202\031\014Hello world!\232\202\031\001A\232\202\031\001B\232\202\031\001C\240\202\031\001\252\202\031\002\001\002\262\202\031\025\n\023Hello OuterMessage3\272\202\031\027\n\025Hello OuterMessage3 A\272\202\031\027\n\025Hello OuterMessage3 B' + _globals['_MESSAGEOPTIONSTESTMSG']._serialized_start=101 + _globals['_MESSAGEOPTIONSTESTMSG']._serialized_end=246 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_extensions3_pb2.pyi b/test/generated-sync-only/testproto/test_extensions3_pb2.pyi new file mode 100644 index 00000000..f2292855 --- /dev/null +++ b/test/generated-sync-only/testproto/test_extensions3_pb2.pyi @@ -0,0 +1,46 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.descriptor_pb2 +import google.protobuf.internal.containers +import google.protobuf.internal.extension_dict +import google.protobuf.message +import sys +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class MessageOptionsTestMsg(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___MessageOptionsTestMsg: typing_extensions.TypeAlias = MessageOptionsTestMsg + +TEST_FIELD_EXTENSION_FIELD_NUMBER: builtins.int +SCALAR_OPTION_FIELD_NUMBER: builtins.int +REPEATED_SCALAR_OPTION_FIELD_NUMBER: builtins.int +ENUM_OPTION_FIELD_NUMBER: builtins.int +REPEATED_ENUM_OPTION_FIELD_NUMBER: builtins.int +MSG_OPTION_FIELD_NUMBER: builtins.int +REPEATED_MSG_OPTION_FIELD_NUMBER: builtins.int +test_field_extension: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.str] +scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, builtins.str] +repeated_scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]] +enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterEnum.ValueType] +repeated_enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[testproto.test3_pb2.OuterEnum.ValueType]] +msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterMessage3] +repeated_msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedCompositeFieldContainer[testproto.test3_pb2.OuterMessage3]] diff --git a/test/generated-sync-only/testproto/test_no_generic_services_pb2.py b/test/generated-sync-only/testproto/test_no_generic_services_pb2.py new file mode 100644 index 00000000..532c253b --- /dev/null +++ b/test/generated-sync-only/testproto/test_no_generic_services_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test_no_generic_services.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test_no_generic_services.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(testproto/test_no_generic_services.proto\x12\x04test\"\x1b\n\x07Simple3\x12\x10\n\x08\x61_string\x18\x01 \x02(\t27\n\rATestService2\x12&\n\x04\x45\x63ho\x12\r.test.Simple3\x1a\r.test.Simple3\"\x00') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_no_generic_services_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SIMPLE3']._serialized_start=50 + _globals['_SIMPLE3']._serialized_end=77 + _globals['_ATESTSERVICE2']._serialized_start=79 + _globals['_ATESTSERVICE2']._serialized_end=134 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi b/test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi new file mode 100644 index 00000000..3a350109 --- /dev/null +++ b/test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi @@ -0,0 +1,33 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Simple3(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___Simple3: typing_extensions.TypeAlias = Simple3 diff --git a/test/generated-sync-only/testproto/test_pb2.py b/test/generated-sync-only/testproto/test_pb2.py new file mode 100644 index 00000000..cfeef244 --- /dev/null +++ b/test/generated-sync-only/testproto/test_pb2.py @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: testproto/test.proto +# Protobuf Python Version: 6.32.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 1, + '', + 'testproto/test.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 +from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 +from testproto.nested import nested_pb2 as testproto_dot_nested_dot_nested__pb2 +from testproto import nopackage_pb2 as testproto_dot_nopackage__pb2 +from testproto import test3_pb2 as testproto_dot_test3__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14testproto/test.proto\x12\x04test\x1a\x1emypy_protobuf/extensions.proto\x1a\x1btestproto/inner/inner.proto\x1a\x1dtestproto/nested/nested.proto\x1a\x19testproto/nopackage.proto\x1a\x15testproto/test3.proto\"\x8d\t\n\x07Simple1\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12\x11\n\ta_boolean\x18\x03 \x01(\x08\x12\x10\n\x08\x61_uint32\x18\x04 \x01(\r\x12\x1f\n\x06\x61_enum\x18\x05 \x01(\x0e\x32\x0f.test.OuterEnum\x12)\n\x0f\x61_external_enum\x18\x06 \x01(\x0e\x32\x10.test3.OuterEnum\x12\x1d\n\x07\x61_inner\x18\x07 \x01(\x0b\x32\x0c.inner.Inner\x12-\n\x08\x61_nested\x18\x0c \x01(\x0b\x32\x1b.test.nested_package.Nested\x12+\n\ninner_enum\x18\x08 \x01(\x0e\x32\x17.test.Simple1.InnerEnum\x12/\n\x0erep_inner_enum\x18\t \x03(\x0e\x32\x17.test.Simple1.InnerEnum\x12\x31\n\rinner_message\x18\n \x01(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x35\n\x11rep_inner_message\x18\x0b \x03(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x1e\n\nno_package\x18\r \x01(\x0b\x32\n.NoPackage\x12\x42\n\x0bnested_enum\x18\x0e \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12H\n\x0enested_message\x18\x0f \x01(\x0b\x32\x30.test.nested_package.AnotherNested.NestedMessage\x12\x13\n\ta_oneof_1\x18\x10 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x11 \x01(\tH\x00\x12/\n\x16outer_message_in_oneof\x18\x12 \x01(\x0b\x32\r.test.Simple2H\x00\x12.\n\x13outer_enum_in_oneof\x18\x13 \x01(\x0e\x32\x0f.test.OuterEnumH\x00\x12\x36\n\x13inner_enum_in_oneof\x18\x14 \x01(\x0e\x32\x17.test.Simple1.InnerEnumH\x00\x12\x33\n\x07user_id\x18\x15 \x01(\rB\"\xfaG\x1ftest/test_generated_mypy.UserId\x12\x30\n\x05\x65mail\x18\x16 \x01(\tB!\xfaG\x1etest/test_generated_mypy.Email\x12x\n\x0c\x65mail_by_uid\x18\x17 \x03(\x0b\x32\x1d.test.Simple1.EmailByUidEntryBC\x82H\x1ftest/test_generated_mypy.UserId\x8aH\x1etest/test_generated_mypy.Email\x1a\x0e\n\x0cInnerMessage\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x01\x12\n\n\x06INNER2\x10\x02*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\t\n\x07\x61_oneof\"&\n\x07Simple2\x12\x10\n\x08\x61_string\x18\x01 \x02(\t*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"R\n\x0b\x45xtensions1\x12\x13\n\x0b\x65xt1_string\x18\x01 \x01(\t2.\n\x03\x65xt\x12\r.test.Simple1\x18\xe8\x07 \x01(\x0b\x32\x11.test.Extensions1\"K\n\x0b\x45xtensions2\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32.\n\x03\x66oo\x12\r.test.Simple1\x18\xe4\x0f \x01(\x0b\x32\x11.test.Extensions2\"\x15\n\x04None\x12\r\n\x05valid\x18\x01 \x01(\x03\"\x80\x05\n\x16PythonReservedKeywords\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\x12\x19\n\x02in\x18\x02 \x01(\x0b\x32\r.test.Simple2\x12\x30\n\x02is\x18\x03 \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x12\x0b\n\x03\x66or\x18\x05 \x01(\x03\x12\x0b\n\x03try\x18\x06 \x01(\x03\x12\x0b\n\x03\x64\x65\x66\x18\x07 \x01(\x03\x12\x10\n\x08nonlocal\x18\x08 \x01(\x03\x12\r\n\x05while\x18\t \x01(\x03\x12\x0b\n\x03\x61nd\x18\n \x01(\x03\x12\x0b\n\x03\x64\x65l\x18\x0b \x01(\x03\x12\x0e\n\x06global\x18\x0c \x01(\x03\x12\x0b\n\x03not\x18\r \x01(\x03\x12\x0c\n\x04with\x18\x0e \x01(\x03\x12\n\n\x02\x61s\x18\x0f \x01(\x03\x12\x0c\n\x04\x65lif\x18\x10 \x01(\x03\x12\n\n\x02if\x18\x11 \x01(\x03\x12\n\n\x02or\x18\x12 \x01(\x03\x12\r\n\x05yield\x18\x13 \x01(\x03\x12\x0e\n\x06\x61ssert\x18\x14 \x01(\x03\x12\x0c\n\x04\x65lse\x18\x15 \x01(\x03\x12\x0e\n\x06import\x18\x16 \x01(\x03\x12\x0c\n\x04pass\x18\x17 \x01(\x03\x12\r\n\x05\x62reak\x18\x18 \x01(\x03\x12\x0e\n\x06\x65xcept\x18\x19 \x01(\x03\x12\r\n\x05raise\x18\x1a \x01(\x03\x12\r\n\x05\x46\x61lse\x18\x1b \x01(\x03\x12\x0c\n\x04True\x18\x1d \x01(\x03\x12\r\n\x05\x63lass\x18\x1e \x01(\x03\x12\x18\n\x04none\x18\x1c \x01(\x0b\x32\n.test.None\x12\x33\n\x05valid\x18\x1f \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x1a)\n\x06lambda\x12\x10\n\x08\x63ontinue\x18\x01 \x01(\x03\x12\r\n\x05valid\x18\x02 \x01(\x03\"-\n\x07\x66inally\x12\x0c\n\x08\x63ontinue\x10\x01\x12\x14\n\x10valid_in_finally\x10\x02\"+\n\x1bPythonReservedKeywordsSmall\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\"\x19\n\tSelfField\x12\x0c\n\x04self\x18\x01 \x01(\x03\")\n\x11\x44\x65precatedMessage\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01\"3\n\x1b\x44\x65precatedMessageBadComment\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01*\x1d\n\tOuterEnum\x12\x07\n\x03\x46OO\x10\x01\x12\x07\n\x03\x42\x41R\x10\x02*G\n\x0fNamingConflicts\x12\x08\n\x04Name\x10\x01\x12\t\n\x05Value\x10\x02\x12\x08\n\x04keys\x10\x03\x12\n\n\x06values\x10\x04\x12\t\n\x05items\x10\x05*<\n\x0e\x44\x65precatedEnum\x12\x12\n\x0e\x44\x45PRECATED_ONE\x10\x01\x12\x12\n\x0e\x44\x45PRECATED_TWO\x10\x02\x1a\x02\x18\x01\x32\xde\x01\n\x1dPythonReservedKeywordsService\x12>\n\x06lambda\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00\x12\x31\n\x12valid_method_name1\x12\r.test.Simple1\x1a\n.test.None\"\x00\x12J\n\x12valid_method_name2\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_DEPRECATEDENUM']._loaded_options = None + _globals['_DEPRECATEDENUM']._serialized_options = b'\030\001' + _globals['_SIMPLE1_EMAILBYUIDENTRY']._loaded_options = None + _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_options = b'8\001' + _globals['_SIMPLE1'].fields_by_name['user_id']._loaded_options = None + _globals['_SIMPLE1'].fields_by_name['user_id']._serialized_options = b'\372G\037test/test_generated_mypy.UserId' + _globals['_SIMPLE1'].fields_by_name['email']._loaded_options = None + _globals['_SIMPLE1'].fields_by_name['email']._serialized_options = b'\372G\036test/test_generated_mypy.Email' + _globals['_SIMPLE1'].fields_by_name['email_by_uid']._loaded_options = None + _globals['_SIMPLE1'].fields_by_name['email_by_uid']._serialized_options = b'\202H\037test/test_generated_mypy.UserId\212H\036test/test_generated_mypy.Email' + _globals['_DEPRECATEDMESSAGE']._loaded_options = None + _globals['_DEPRECATEDMESSAGE']._serialized_options = b'\030\001' + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._loaded_options = None + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_options = b'\030\001' + _globals['_OUTERENUM']._serialized_start=2375 + _globals['_OUTERENUM']._serialized_end=2404 + _globals['_NAMINGCONFLICTS']._serialized_start=2406 + _globals['_NAMINGCONFLICTS']._serialized_end=2477 + _globals['_DEPRECATEDENUM']._serialized_start=2479 + _globals['_DEPRECATEDENUM']._serialized_end=2539 + _globals['_SIMPLE1']._serialized_start=173 + _globals['_SIMPLE1']._serialized_end=1338 + _globals['_SIMPLE1_INNERMESSAGE']._serialized_start=1214 + _globals['_SIMPLE1_INNERMESSAGE']._serialized_end=1228 + _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_start=1230 + _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_end=1279 + _globals['_SIMPLE1_INNERENUM']._serialized_start=1281 + _globals['_SIMPLE1_INNERENUM']._serialized_end=1316 + _globals['_SIMPLE2']._serialized_start=1340 + _globals['_SIMPLE2']._serialized_end=1378 + _globals['_EXTENSIONS1']._serialized_start=1380 + _globals['_EXTENSIONS1']._serialized_end=1462 + _globals['_EXTENSIONS2']._serialized_start=1464 + _globals['_EXTENSIONS2']._serialized_end=1539 + _globals['_NONE']._serialized_start=1541 + _globals['_NONE']._serialized_end=1562 + _globals['_PYTHONRESERVEDKEYWORDS']._serialized_start=1565 + _globals['_PYTHONRESERVEDKEYWORDS']._serialized_end=2205 + _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_start=2117 + _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_end=2158 + _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_start=2160 + _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_end=2205 + _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_start=2207 + _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_end=2250 + _globals['_SELFFIELD']._serialized_start=2252 + _globals['_SELFFIELD']._serialized_end=2277 + _globals['_DEPRECATEDMESSAGE']._serialized_start=2279 + _globals['_DEPRECATEDMESSAGE']._serialized_end=2320 + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_start=2322 + _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_end=2373 + _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_start=2542 + _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_end=2764 +# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_pb2.pyi b/test/generated-sync-only/testproto/test_pb2.pyi new file mode 100644 index 00000000..3058335b --- /dev/null +++ b/test/generated-sync-only/testproto/test_pb2.pyi @@ -0,0 +1,439 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Proto 2 test file.""" + +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.internal.extension_dict +import google.protobuf.message +import sys +import test.test_generated_mypy +import testproto.inner.inner_pb2 +import testproto.nested.nested_pb2 +import testproto.nopackage_pb2 +import testproto.test3_pb2 +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +if sys.version_info >= (3, 13): + from warnings import deprecated +else: + from typing_extensions import deprecated + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _OuterEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + FOO: _OuterEnum.ValueType # 1 + """FOO""" + BAR: _OuterEnum.ValueType # 2 + """BAR""" + +class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): + """Outer Enum""" + +FOO: OuterEnum.ValueType # 1 +"""FOO""" +BAR: OuterEnum.ValueType # 2 +"""BAR""" +Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum + +class _NamingConflicts: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _NamingConflictsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NamingConflicts.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + +class NamingConflicts(_NamingConflicts, metaclass=_NamingConflictsEnumTypeWrapper): + """Naming conflicts!""" + +Name: NamingConflicts.ValueType # 1 +Value: NamingConflicts.ValueType # 2 +keys: NamingConflicts.ValueType # 3 +values: NamingConflicts.ValueType # 4 +items: NamingConflicts.ValueType # 5 +"""See https://github.com/protocolbuffers/protobuf/issues/8803 +proto itself generates broken code when DESCRIPTOR is there +DESCRIPTOR = 8; +""" +Global___NamingConflicts: typing_extensions.TypeAlias = NamingConflicts + +class _DeprecatedEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DeprecatedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DeprecatedEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DEPRECATED_ONE: _DeprecatedEnum.ValueType # 1 + DEPRECATED_TWO: _DeprecatedEnum.ValueType # 2 + +@deprecated("""This enum is deprecated\n2 lines of comments\n"Quotes in comments"\nand 'single quotes'\nTrailing comment""") +class DeprecatedEnum(_DeprecatedEnum, metaclass=_DeprecatedEnumEnumTypeWrapper): ... + +DEPRECATED_ONE: DeprecatedEnum.ValueType # 1 +DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 +Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum + +@typing.final +class Simple1(google.protobuf.message.Message): + """Message with one of everything""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _InnerEnum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Simple1._InnerEnum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INNER1: Simple1._InnerEnum.ValueType # 1 + """INNER1""" + INNER2: Simple1._InnerEnum.ValueType # 2 + """INNER2""" + + class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): + """Inner Enum""" + + INNER1: Simple1.InnerEnum.ValueType # 1 + """INNER1""" + INNER2: Simple1.InnerEnum.ValueType # 2 + """INNER2""" + + @typing.final + class InnerMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + + @typing.final + class EmailByUidEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.int + value: builtins.str + def __init__( + self, + *, + key: builtins.int | None = ..., + value: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + A_STRING_FIELD_NUMBER: builtins.int + A_REPEATED_STRING_FIELD_NUMBER: builtins.int + A_BOOLEAN_FIELD_NUMBER: builtins.int + A_UINT32_FIELD_NUMBER: builtins.int + A_ENUM_FIELD_NUMBER: builtins.int + A_EXTERNAL_ENUM_FIELD_NUMBER: builtins.int + A_INNER_FIELD_NUMBER: builtins.int + A_NESTED_FIELD_NUMBER: builtins.int + INNER_ENUM_FIELD_NUMBER: builtins.int + REP_INNER_ENUM_FIELD_NUMBER: builtins.int + INNER_MESSAGE_FIELD_NUMBER: builtins.int + REP_INNER_MESSAGE_FIELD_NUMBER: builtins.int + NO_PACKAGE_FIELD_NUMBER: builtins.int + NESTED_ENUM_FIELD_NUMBER: builtins.int + NESTED_MESSAGE_FIELD_NUMBER: builtins.int + A_ONEOF_1_FIELD_NUMBER: builtins.int + A_ONEOF_2_FIELD_NUMBER: builtins.int + OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int + OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int + USER_ID_FIELD_NUMBER: builtins.int + EMAIL_FIELD_NUMBER: builtins.int + EMAIL_BY_UID_FIELD_NUMBER: builtins.int + a_string: builtins.str + a_boolean: builtins.bool + a_uint32: builtins.int + a_enum: Global___OuterEnum.ValueType + a_external_enum: testproto.test3_pb2.OuterEnum.ValueType + inner_enum: Global___Simple1.InnerEnum.ValueType + nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType + a_oneof_1: builtins.str + a_oneof_2: builtins.str + outer_enum_in_oneof: Global___OuterEnum.ValueType + inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType + user_id: test.test_generated_mypy.UserId + email: test.test_generated_mypy.Email + @property + def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def a_inner(self) -> testproto.inner.inner_pb2.Inner: ... + @property + def a_nested(self) -> testproto.nested.nested_pb2.Nested: ... + @property + def rep_inner_enum(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[Global___Simple1.InnerEnum.ValueType]: ... + @property + def inner_message(self) -> Global___Simple1.InnerMessage: ... + @property + def rep_inner_message(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Simple1.InnerMessage]: ... + @property + def no_package(self) -> testproto.nopackage_pb2.NoPackage: ... + @property + def nested_message(self) -> testproto.nested.nested_pb2.AnotherNested.NestedMessage: ... + @property + def outer_message_in_oneof(self) -> Global___Simple2: ... + @property + def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... + def __init__( + self, + *, + a_string: builtins.str | None = ..., + a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., + a_boolean: builtins.bool | None = ..., + a_uint32: builtins.int | None = ..., + a_enum: Global___OuterEnum.ValueType | None = ..., + a_external_enum: testproto.test3_pb2.OuterEnum.ValueType | None = ..., + a_inner: testproto.inner.inner_pb2.Inner | None = ..., + a_nested: testproto.nested.nested_pb2.Nested | None = ..., + inner_enum: Global___Simple1.InnerEnum.ValueType | None = ..., + rep_inner_enum: collections.abc.Iterable[Global___Simple1.InnerEnum.ValueType] | None = ..., + inner_message: Global___Simple1.InnerMessage | None = ..., + rep_inner_message: collections.abc.Iterable[Global___Simple1.InnerMessage] | None = ..., + no_package: testproto.nopackage_pb2.NoPackage | None = ..., + nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType | None = ..., + nested_message: testproto.nested.nested_pb2.AnotherNested.NestedMessage | None = ..., + a_oneof_1: builtins.str | None = ..., + a_oneof_2: builtins.str | None = ..., + outer_message_in_oneof: Global___Simple2 | None = ..., + outer_enum_in_oneof: Global___OuterEnum.ValueType | None = ..., + inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType | None = ..., + user_id: test.test_generated_mypy.UserId | None = ..., + email: test.test_generated_mypy.Email | None = ..., + email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "rep_inner_enum", b"rep_inner_enum", "rep_inner_message", b"rep_inner_message", "user_id", b"user_id"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... + +Global___Simple1: typing_extensions.TypeAlias = Simple1 + +@typing.final +class Simple2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___Simple2: typing_extensions.TypeAlias = Simple2 + +@typing.final +class Extensions1(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EXT1_STRING_FIELD_NUMBER: builtins.int + ext1_string: builtins.str + EXT_FIELD_NUMBER: builtins.int + ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions1] + """ext""" + def __init__( + self, + *, + ext1_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> None: ... + +Global___Extensions1: typing_extensions.TypeAlias = Extensions1 + +@typing.final +class Extensions2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FLAG_FIELD_NUMBER: builtins.int + flag: builtins.bool + FOO_FIELD_NUMBER: builtins.int + foo: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions2] + """foo""" + def __init__( + self, + *, + flag: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... + +Global___Extensions2: typing_extensions.TypeAlias = Extensions2 + +@typing.final +class _r_None(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALID_FIELD_NUMBER: builtins.int + valid: builtins.int + def __init__( + self, + *, + valid: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["valid", b"valid"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["valid", b"valid"]) -> None: ... + +Global____r_None: typing_extensions.TypeAlias = _r_None + +@typing.final +class PythonReservedKeywords(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _finally: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _finallyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PythonReservedKeywords._finally.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + valid_in_finally: PythonReservedKeywords._finally.ValueType # 2 + + class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... + valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 + + @typing.final + class _r_lambda(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CONTINUE_FIELD_NUMBER: builtins.int + VALID_FIELD_NUMBER: builtins.int + valid: builtins.int + def __init__( + self, + *, + valid: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> None: ... + + FROM_FIELD_NUMBER: builtins.int + IN_FIELD_NUMBER: builtins.int + IS_FIELD_NUMBER: builtins.int + FOR_FIELD_NUMBER: builtins.int + TRY_FIELD_NUMBER: builtins.int + DEF_FIELD_NUMBER: builtins.int + NONLOCAL_FIELD_NUMBER: builtins.int + WHILE_FIELD_NUMBER: builtins.int + AND_FIELD_NUMBER: builtins.int + DEL_FIELD_NUMBER: builtins.int + GLOBAL_FIELD_NUMBER: builtins.int + NOT_FIELD_NUMBER: builtins.int + WITH_FIELD_NUMBER: builtins.int + AS_FIELD_NUMBER: builtins.int + ELIF_FIELD_NUMBER: builtins.int + IF_FIELD_NUMBER: builtins.int + OR_FIELD_NUMBER: builtins.int + YIELD_FIELD_NUMBER: builtins.int + ASSERT_FIELD_NUMBER: builtins.int + ELSE_FIELD_NUMBER: builtins.int + IMPORT_FIELD_NUMBER: builtins.int + PASS_FIELD_NUMBER: builtins.int + BREAK_FIELD_NUMBER: builtins.int + EXCEPT_FIELD_NUMBER: builtins.int + RAISE_FIELD_NUMBER: builtins.int + FALSE_FIELD_NUMBER: builtins.int + TRUE_FIELD_NUMBER: builtins.int + CLASS_FIELD_NUMBER: builtins.int + NONE_FIELD_NUMBER: builtins.int + VALID_FIELD_NUMBER: builtins.int + valid: Global___PythonReservedKeywords._r_finally.ValueType + @property + def none(self) -> Global____r_None: + """Test unreserved identifiers w/ reserved message names""" + + def __init__( + self, + *, + none: Global____r_None | None = ..., + valid: Global___PythonReservedKeywords._r_finally.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> None: ... + +Global___PythonReservedKeywords: typing_extensions.TypeAlias = PythonReservedKeywords + +@typing.final +class PythonReservedKeywordsSmall(google.protobuf.message.Message): + """Do one with just one arg - to make sure it's syntactically correct""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FROM_FIELD_NUMBER: builtins.int + def __init__( + self, + ) -> None: ... + def HasField(self, field_name: typing.Literal["from", b"from"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["from", b"from"]) -> None: ... + +Global___PythonReservedKeywordsSmall: typing_extensions.TypeAlias = PythonReservedKeywordsSmall + +@typing.final +class SelfField(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SELF_FIELD_NUMBER: builtins.int + self: builtins.int + """Field self -> must generate an __init__ method w/ different name""" + def __init__( + self_, # pyright: ignore[reportSelfClsParameterName] + *, + self: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["self", b"self"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["self", b"self"]) -> None: ... + +Global___SelfField: typing_extensions.TypeAlias = SelfField + +@deprecated("""This message is deprecated""") +@typing.final +class DeprecatedMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage + +@deprecated("""This message has been marked as deprecated using proto message options.""") +@typing.final +class DeprecatedMessageBadComment(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + A_STRING_FIELD_NUMBER: builtins.int + a_string: builtins.str + def __init__( + self, + *, + a_string: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... + +Global___DeprecatedMessageBadComment: typing_extensions.TypeAlias = DeprecatedMessageBadComment diff --git a/test/test_async_only.py b/test/test_async_only.py new file mode 100644 index 00000000..3d0ffdf6 --- /dev/null +++ b/test/test_async_only.py @@ -0,0 +1,18 @@ +""" +Type-checking test for async_only GRPC stubs. + +This module is run through mypy to validate that stubs generated with the +only_async flag have the correct types: +- Regular (non-generic) Stub class that only accepts grpc.aio.Channel +- No AsyncStub type alias (the stub itself is async-only) +- Servicer methods use AsyncIterator for client streaming (not _MaybeAsyncIterator) +- add_XXXServicer_to_server accepts grpc.aio.Server +""" + +from testproto.grpc.dummy_pb2_grpc import DummyServiceServicer + + +class AsyncOnlyServicer(DummyServiceServicer): + """Test servicer for async_only stubs - intentionally incomplete.""" + + pass diff --git a/test/test_sync_only.py b/test/test_sync_only.py new file mode 100644 index 00000000..5fc10839 --- /dev/null +++ b/test/test_sync_only.py @@ -0,0 +1,17 @@ +""" +Type-checking test for sync_only GRPC stubs. + +This module is run through mypy to validate that stubs generated with the +only_sync flag have the correct types: +- Regular (non-generic) Stub class that only accepts grpc.Channel +- Servicer methods use Iterator for client streaming (not _MaybeAsyncIterator) +- add_XXXServicer_to_server accepts grpc.Server +""" + +from testproto.grpc.dummy_pb2_grpc import DummyServiceServicer + + +class SyncOnlyServicer(DummyServiceServicer): + """Test servicer for sync_only stubs - intentionally incomplete.""" + + pass From 9727cbfff033a1378444b68becb199a3dab8857b Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 26 Nov 2025 17:09:00 +0000 Subject: [PATCH 2/9] Specify type parameters for context in async grpc methods --- mypy_protobuf/main.py | 11 ++++++----- .../testproto/grpc/dummy_pb2_grpc.pyi | 12 ++++++------ .../testproto/grpc/import_pb2_grpc.pyi | 6 +++--- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/mypy_protobuf/main.py b/mypy_protobuf/main.py index 68f5e39b..e3de4b0a 100644 --- a/mypy_protobuf/main.py +++ b/mypy_protobuf/main.py @@ -837,10 +837,10 @@ def write_grpc_iterator_type(self) -> None: ) wl("") - def get_servicer_context_type(self) -> str: + def get_servicer_context_type(self, input_: str, output: str) -> str: """Get the type to use for the context parameter in servicer methods.""" if self.grpc_type == GRPCType.ASYNC: - return self._import("grpc.aio", "ServicerContext") + return self._import("grpc.aio", f"ServicerContext[{input_}, {output}]") elif self.grpc_type == GRPCType.SYNC: return self._import("grpc", "ServicerContext") else: @@ -928,6 +928,8 @@ def write_grpc_methods(self, service: d.ServiceDescriptorProto, scl_prefix: Sour wl("") for i, method in methods: scl = scl_prefix + [d.ServiceDescriptorProto.METHOD_FIELD_NUMBER, i] + input_type = self._servicer_input_type(method) + output_type = self._servicer_output_type(method) if self.generate_concrete_servicer_stubs is False: wl("@{}", self._import("abc", "abstractmethod")) @@ -935,12 +937,11 @@ def write_grpc_methods(self, service: d.ServiceDescriptorProto, scl_prefix: Sour with self._indent(): wl("self,") input_name = "request_iterator" if method.client_streaming else "request" - input_type = self._servicer_input_type(method) wl(f"{input_name}: {input_type},") - wl("context: {},", self.get_servicer_context_type()) + wl("context: {},", self.get_servicer_context_type(input_type, output_type)) wl( ") -> {}:{}", - self._servicer_output_type(method), + output_type, " ..." if not self._has_comments(scl) else "", ) if self._has_comments(scl): diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi index 7bd059df..218366a7 100644 --- a/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi @@ -61,7 +61,7 @@ class DummyServiceServicer(metaclass=abc.ABCMeta): def UnaryUnary( self, request: testproto.grpc.dummy_pb2.DummyRequest, - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[testproto.grpc.dummy_pb2.DummyRequest, collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]], ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: """UnaryUnary""" @@ -69,7 +69,7 @@ class DummyServiceServicer(metaclass=abc.ABCMeta): def UnaryStream( self, request: testproto.grpc.dummy_pb2.DummyRequest, - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[testproto.grpc.dummy_pb2.DummyRequest, collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyReply]], ) -> collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyReply]: """UnaryStream""" @@ -77,7 +77,7 @@ class DummyServiceServicer(metaclass=abc.ABCMeta): def StreamUnary( self, request_iterator: collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyRequest], - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyRequest], collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]], ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: """StreamUnary""" @@ -85,7 +85,7 @@ class DummyServiceServicer(metaclass=abc.ABCMeta): def StreamStream( self, request_iterator: collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyRequest], - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyRequest], collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyReply]], ) -> collections.abc.AsyncIterator[testproto.grpc.dummy_pb2.DummyReply]: """StreamStream""" @@ -117,7 +117,7 @@ class DeprecatedServiceServicer(metaclass=abc.ABCMeta): def DeprecatedMethod( self, request: testproto.grpc.dummy_pb2.DeprecatedRequest, - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[testproto.grpc.dummy_pb2.DeprecatedRequest, collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]], ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: """DeprecatedMethod""" @@ -125,7 +125,7 @@ class DeprecatedServiceServicer(metaclass=abc.ABCMeta): def DeprecatedMethodNotDeprecatedRequest( self, request: testproto.grpc.dummy_pb2.DummyRequest, - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[testproto.grpc.dummy_pb2.DummyRequest, collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]], ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: """DeprecatedMethodNotDeprecatedRequest""" diff --git a/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi b/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi index 205a883d..5bccf22d 100644 --- a/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi @@ -49,7 +49,7 @@ class SimpleServiceServicer(metaclass=abc.ABCMeta): def UnaryUnary( self, request: google.protobuf.empty_pb2.Empty, - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[google.protobuf.empty_pb2.Empty, collections.abc.Awaitable[testproto.test_pb2.Simple1]], ) -> collections.abc.Awaitable[testproto.test_pb2.Simple1]: """UnaryUnary""" @@ -57,7 +57,7 @@ class SimpleServiceServicer(metaclass=abc.ABCMeta): def UnaryStream( self, request: testproto.test_pb2.Simple1, - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[testproto.test_pb2.Simple1, collections.abc.Awaitable[google.protobuf.empty_pb2.Empty]], ) -> collections.abc.Awaitable[google.protobuf.empty_pb2.Empty]: """UnaryStream""" @@ -65,7 +65,7 @@ class SimpleServiceServicer(metaclass=abc.ABCMeta): def NoComment( self, request: testproto.test_pb2.Simple1, - context: grpc.aio.ServicerContext, + context: grpc.aio.ServicerContext[testproto.test_pb2.Simple1, collections.abc.Awaitable[google.protobuf.empty_pb2.Empty]], ) -> collections.abc.Awaitable[google.protobuf.empty_pb2.Empty]: ... def add_SimpleServiceServicer_to_server(servicer: SimpleServiceServicer, server: grpc.aio.Server) -> None: ... From 52e18ddf864900979c463d6c068e5cf232523a37 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 26 Nov 2025 17:15:57 +0000 Subject: [PATCH 3/9] Ignore pyright errors in sync/async only stubs --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ff1a16d9..5753911f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,12 +33,14 @@ include = [ exclude = [ "**/*_pb2.py", "**/*_pb2_grpc.py", - "test/test_concrete.py" + "test/test_concrete.py", ] executionEnvironments = [ # Due to how upb is typed, we need to disable incompatible variable override checks { root = "test/generated", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, { root = "test/generated-concrete", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, + { root = "test/generated-sync-only", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, + { root = "test/generated-async-only", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, { root = "mypy_protobuf/extensions_pb2.pyi", reportIncompatibleVariableOverride = "none" }, ] From ddd9a2f31cef0a7b14fc6feaabfaaffcb2730715 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 26 Nov 2025 18:38:53 +0000 Subject: [PATCH 4/9] Update readme with sync_only/async_only option --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 446f303a..4b7866d6 100644 --- a/README.md +++ b/README.md @@ -347,6 +347,21 @@ By default mypy-protobuf will output servicer stubs with abstract methods. To ou protoc --python_out=output/location --mypy_grpc_out=generate_concrete_servicer_stubs:output/location ``` +### `sync_only/async_only` + +By default, generated GRPC stubs are compatible with both sync and async variants. If you only +want sync or async GRPC stubs, use this option: + +``` +protoc --python_out=output/location --mypy_grpc_out=sync_only:output/location +``` + +or + +``` +protoc --python_out=output/location --mypy_grpc_out=async_only:output/location +``` + ### Output suppression To suppress output, you can run From 28d24015436eb0defed1de3d2feb608de69ef799 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Wed, 26 Nov 2025 13:35:11 -0800 Subject: [PATCH 5/9] Start adding tests Rename folders Update pyproject.toml so pyright works on test code for sync/async only Signed-off-by: Aidan Jensen --- pyproject.toml | 8 +- run_test.sh | 22 +- test/async_only/test_async_only.py | 29 ++ test/generated-async-only/__init__.py | 0 .../testproto/Capitalized/Capitalized_pb2.py | 40 -- .../testproto/Capitalized/__init__.py | 0 .../testproto/__init__.py | 0 .../testproto/comment_special_chars_pb2.py | 36 -- .../testproto/dot/__init__.py | 0 .../testproto/dot/com/__init__.py | 0 .../testproto/dot/com/test_pb2.py | 36 -- .../testproto/edition2024_pb2.py | 47 -- .../testproto/grpc/__init__.py | 0 .../testproto/inner/__init__.py | 0 .../testproto/inner/inner_pb2.py | 37 -- .../testproto/nested/__init__.py | 0 .../testproto/nested/nested_pb2.py | 45 -- .../testproto/nopackage_pb2.py | 38 -- .../testproto/readme_enum_pb2.py | 36 -- .../testproto/reexport_pb2.py | 39 -- .../testproto/test3_pb2.py | 61 --- .../testproto/test_extensions2_pb2.py | 37 -- .../testproto/test_extensions3_pb2.py | 40 -- .../testproto/test_no_generic_services_pb2.py | 38 -- .../testproto/test_pb2.py | 91 ---- .../testproto/Capitalized/Capitalized_pb2.pyi | 66 --- .../testproto/comment_special_chars_pb2.pyi | 82 ---- .../testproto/dot/com/test_pb2.pyi | 32 -- .../testproto/inner/inner_pb2.pyi | 33 -- .../testproto/nested/nested_pb2.pyi | 96 ---- .../testproto/nopackage_pb2.pyi | 52 --- .../testproto/readme_enum_pb2.pyi | 32 -- .../testproto/reexport_pb2.pyi | 19 - .../testproto/test3_pb2.pyi | 209 --------- .../testproto/test_extensions2_pb2.pyi | 37 -- .../testproto/test_extensions3_pb2.pyi | 46 -- .../test_no_generic_services_pb2.pyi | 33 -- .../generated-concrete/testproto/test_pb2.pyi | 439 ------------------ test/generated-sync-only/__init__.py | 0 .../testproto/Capitalized/Capitalized_pb2.py | 40 -- .../testproto/Capitalized/Capitalized_pb2.pyi | 66 --- .../testproto/Capitalized/__init__.py | 0 .../generated-sync-only/testproto/__init__.py | 0 .../testproto/comment_special_chars_pb2.py | 36 -- .../testproto/comment_special_chars_pb2.pyi | 82 ---- .../testproto/dot/__init__.py | 0 .../testproto/dot/com/__init__.py | 0 .../testproto/dot/com/test_pb2.py | 36 -- .../testproto/dot/com/test_pb2.pyi | 32 -- .../testproto/edition2024_pb2.py | 47 -- .../testproto/edition2024_pb2.pyi | 68 --- .../testproto/grpc/__init__.py | 0 .../testproto/inner/__init__.py | 0 .../testproto/inner/inner_pb2.py | 37 -- .../testproto/inner/inner_pb2.pyi | 33 -- .../testproto/nested/__init__.py | 0 .../testproto/nested/nested_pb2.py | 45 -- .../testproto/nested/nested_pb2.pyi | 96 ---- .../testproto/nopackage_pb2.py | 38 -- .../testproto/nopackage_pb2.pyi | 52 --- .../testproto/readme_enum_pb2.py | 36 -- .../testproto/readme_enum_pb2.pyi | 32 -- .../testproto/reexport_pb2.py | 39 -- .../testproto/reexport_pb2.pyi | 19 - .../testproto/test3_pb2.py | 61 --- .../testproto/test3_pb2.pyi | 209 --------- .../testproto/test_extensions2_pb2.py | 37 -- .../testproto/test_extensions2_pb2.pyi | 37 -- .../testproto/test_extensions3_pb2.py | 40 -- .../testproto/test_extensions3_pb2.pyi | 46 -- .../testproto/test_no_generic_services_pb2.py | 38 -- .../test_no_generic_services_pb2.pyi | 33 -- .../generated-sync-only/testproto/test_pb2.py | 91 ---- .../testproto/test_pb2.pyi | 439 ------------------ .../testproto/grpc/dummy_pb2.py | 0 .../testproto/grpc/dummy_pb2.pyi | 0 .../testproto/grpc/dummy_pb2_grpc.py | 2 +- .../testproto/grpc/dummy_pb2_grpc.pyi | 0 .../testproto/grpc/import_pb2.py | 0 .../testproto/grpc/import_pb2.pyi | 0 .../testproto/grpc/import_pb2_grpc.py | 2 +- .../testproto/grpc/import_pb2_grpc.pyi | 0 .../google/protobuf/duration_pb2.pyi | 0 .../mypy_protobuf/extensions_pb2.pyi | 0 .../testproto/Capitalized/Capitalized_pb2.pyi | 0 .../testproto/comment_special_chars_pb2.pyi | 0 .../testproto/dot/com/test_pb2.pyi | 0 .../testproto/edition2024_pb2.pyi | 0 .../testproto/grpc/dummy_pb2.pyi | 0 .../testproto/grpc/dummy_pb2_grpc.pyi | 0 .../testproto/grpc/import_pb2.pyi | 0 .../testproto/grpc/import_pb2_grpc.pyi | 0 .../testproto/inner/inner_pb2.pyi | 0 .../testproto/nested/nested_pb2.pyi | 0 .../testproto/nopackage_pb2.pyi | 0 .../testproto/readme_enum_pb2.pyi | 0 .../testproto/reexport_pb2.pyi | 0 .../testproto/test3_pb2.pyi | 0 .../testproto/test_extensions2_pb2.pyi | 0 .../testproto/test_extensions3_pb2.pyi | 0 .../test_no_generic_services_pb2.pyi | 0 .../testproto/test_pb2.pyi | 0 .../testproto/grpc/dummy_pb2.py | 0 .../testproto/grpc/dummy_pb2.pyi | 0 .../testproto/grpc/dummy_pb2_grpc.py | 2 +- .../testproto/grpc/dummy_pb2_grpc.pyi | 0 .../testproto/grpc/import_pb2.py | 0 .../testproto/grpc/import_pb2.pyi | 0 .../testproto/grpc/import_pb2_grpc.py | 2 +- .../testproto/grpc/import_pb2_grpc.pyi | 0 test/sync_only/test_sync_only.py | 25 + test/test_async_only.py | 18 - test/test_sync_only.py | 17 - 113 files changed, 75 insertions(+), 3714 deletions(-) create mode 100644 test/async_only/test_async_only.py delete mode 100644 test/generated-async-only/__init__.py delete mode 100644 test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py delete mode 100644 test/generated-async-only/testproto/Capitalized/__init__.py delete mode 100644 test/generated-async-only/testproto/__init__.py delete mode 100644 test/generated-async-only/testproto/comment_special_chars_pb2.py delete mode 100644 test/generated-async-only/testproto/dot/__init__.py delete mode 100644 test/generated-async-only/testproto/dot/com/__init__.py delete mode 100644 test/generated-async-only/testproto/dot/com/test_pb2.py delete mode 100644 test/generated-async-only/testproto/edition2024_pb2.py delete mode 100644 test/generated-async-only/testproto/grpc/__init__.py delete mode 100644 test/generated-async-only/testproto/inner/__init__.py delete mode 100644 test/generated-async-only/testproto/inner/inner_pb2.py delete mode 100644 test/generated-async-only/testproto/nested/__init__.py delete mode 100644 test/generated-async-only/testproto/nested/nested_pb2.py delete mode 100644 test/generated-async-only/testproto/nopackage_pb2.py delete mode 100644 test/generated-async-only/testproto/readme_enum_pb2.py delete mode 100644 test/generated-async-only/testproto/reexport_pb2.py delete mode 100644 test/generated-async-only/testproto/test3_pb2.py delete mode 100644 test/generated-async-only/testproto/test_extensions2_pb2.py delete mode 100644 test/generated-async-only/testproto/test_extensions3_pb2.py delete mode 100644 test/generated-async-only/testproto/test_no_generic_services_pb2.py delete mode 100644 test/generated-async-only/testproto/test_pb2.py delete mode 100644 test/generated-concrete/testproto/Capitalized/Capitalized_pb2.pyi delete mode 100644 test/generated-concrete/testproto/comment_special_chars_pb2.pyi delete mode 100644 test/generated-concrete/testproto/dot/com/test_pb2.pyi delete mode 100644 test/generated-concrete/testproto/inner/inner_pb2.pyi delete mode 100644 test/generated-concrete/testproto/nested/nested_pb2.pyi delete mode 100644 test/generated-concrete/testproto/nopackage_pb2.pyi delete mode 100644 test/generated-concrete/testproto/readme_enum_pb2.pyi delete mode 100644 test/generated-concrete/testproto/reexport_pb2.pyi delete mode 100644 test/generated-concrete/testproto/test3_pb2.pyi delete mode 100644 test/generated-concrete/testproto/test_extensions2_pb2.pyi delete mode 100644 test/generated-concrete/testproto/test_extensions3_pb2.pyi delete mode 100644 test/generated-concrete/testproto/test_no_generic_services_pb2.pyi delete mode 100644 test/generated-concrete/testproto/test_pb2.pyi delete mode 100644 test/generated-sync-only/__init__.py delete mode 100644 test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py delete mode 100644 test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/Capitalized/__init__.py delete mode 100644 test/generated-sync-only/testproto/__init__.py delete mode 100644 test/generated-sync-only/testproto/comment_special_chars_pb2.py delete mode 100644 test/generated-sync-only/testproto/comment_special_chars_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/dot/__init__.py delete mode 100644 test/generated-sync-only/testproto/dot/com/__init__.py delete mode 100644 test/generated-sync-only/testproto/dot/com/test_pb2.py delete mode 100644 test/generated-sync-only/testproto/dot/com/test_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/edition2024_pb2.py delete mode 100644 test/generated-sync-only/testproto/edition2024_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/grpc/__init__.py delete mode 100644 test/generated-sync-only/testproto/inner/__init__.py delete mode 100644 test/generated-sync-only/testproto/inner/inner_pb2.py delete mode 100644 test/generated-sync-only/testproto/inner/inner_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/nested/__init__.py delete mode 100644 test/generated-sync-only/testproto/nested/nested_pb2.py delete mode 100644 test/generated-sync-only/testproto/nested/nested_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/nopackage_pb2.py delete mode 100644 test/generated-sync-only/testproto/nopackage_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/readme_enum_pb2.py delete mode 100644 test/generated-sync-only/testproto/readme_enum_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/reexport_pb2.py delete mode 100644 test/generated-sync-only/testproto/reexport_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/test3_pb2.py delete mode 100644 test/generated-sync-only/testproto/test3_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/test_extensions2_pb2.py delete mode 100644 test/generated-sync-only/testproto/test_extensions2_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/test_extensions3_pb2.py delete mode 100644 test/generated-sync-only/testproto/test_extensions3_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/test_no_generic_services_pb2.py delete mode 100644 test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi delete mode 100644 test/generated-sync-only/testproto/test_pb2.py delete mode 100644 test/generated-sync-only/testproto/test_pb2.pyi rename test/{generated-async-only => generated_async_only}/testproto/grpc/dummy_pb2.py (100%) rename test/{generated-async-only => generated_async_only}/testproto/grpc/dummy_pb2.pyi (100%) rename test/{generated-async-only => generated_async_only}/testproto/grpc/dummy_pb2_grpc.py (100%) rename test/{generated-async-only => generated_async_only}/testproto/grpc/dummy_pb2_grpc.pyi (100%) rename test/{generated-async-only => generated_async_only}/testproto/grpc/import_pb2.py (100%) rename test/{generated-async-only => generated_async_only}/testproto/grpc/import_pb2.pyi (100%) rename test/{generated-async-only => generated_async_only}/testproto/grpc/import_pb2_grpc.py (100%) rename test/{generated-async-only => generated_async_only}/testproto/grpc/import_pb2_grpc.pyi (100%) rename test/{generated-concrete => generated_concrete}/google/protobuf/duration_pb2.pyi (100%) rename test/{generated-concrete => generated_concrete}/mypy_protobuf/extensions_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/Capitalized/Capitalized_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/comment_special_chars_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/dot/com/test_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/edition2024_pb2.pyi (100%) rename test/{generated-concrete => generated_concrete}/testproto/grpc/dummy_pb2.pyi (100%) rename test/{generated-concrete => generated_concrete}/testproto/grpc/dummy_pb2_grpc.pyi (100%) rename test/{generated-concrete => generated_concrete}/testproto/grpc/import_pb2.pyi (100%) rename test/{generated-concrete => generated_concrete}/testproto/grpc/import_pb2_grpc.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/inner/inner_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/nested/nested_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/nopackage_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/readme_enum_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/reexport_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/test3_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/test_extensions2_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/test_extensions3_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/test_no_generic_services_pb2.pyi (100%) rename test/{generated-async-only => generated_concrete}/testproto/test_pb2.pyi (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/dummy_pb2.py (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/dummy_pb2.pyi (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/dummy_pb2_grpc.py (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/dummy_pb2_grpc.pyi (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/import_pb2.py (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/import_pb2.pyi (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/import_pb2_grpc.py (100%) rename test/{generated-sync-only => generated_sync_only}/testproto/grpc/import_pb2_grpc.pyi (100%) create mode 100644 test/sync_only/test_sync_only.py delete mode 100644 test/test_async_only.py delete mode 100644 test/test_sync_only.py diff --git a/pyproject.toml b/pyproject.toml index 5753911f..77a7f9fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,8 +39,10 @@ exclude = [ executionEnvironments = [ # Due to how upb is typed, we need to disable incompatible variable override checks { root = "test/generated", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, - { root = "test/generated-concrete", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, - { root = "test/generated-sync-only", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, - { root = "test/generated-async-only", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, + { root = "test/generated_concrete", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, + { root = "test/generated_sync_only", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, + { root = "test/generated_async_only", extraPaths = ["./"], reportIncompatibleVariableOverride = "none" }, { root = "mypy_protobuf/extensions_pb2.pyi", reportIncompatibleVariableOverride = "none" }, + { root = "test/async_only", extraPaths = ["test/generated_async_only"] }, + { root = "test/sync_only", extraPaths = ["test/generated_sync_only"] }, ] diff --git a/run_test.sh b/run_test.sh index 71828c0b..c2f6e0c8 100755 --- a/run_test.sh +++ b/run_test.sh @@ -132,14 +132,14 @@ MYPY_PROTOBUF_VENV=venv_$PY_VER_MYPY_PROTOBUF find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=test/generated # Generate with concrete service stubs for testing - find proto -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_out=generate_concrete_servicer_stubs:test/generated-concrete - find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=generate_concrete_servicer_stubs:test/generated-concrete + find proto -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_out=generate_concrete_servicer_stubs:test/generated_concrete + find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=generate_concrete_servicer_stubs:test/generated_concrete # Generate with sync_only stubs for testing - find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=only_sync:test/generated-sync-only + find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=only_sync:test/generated_sync_only --mypy_out=test/generated_sync_only --python_out=test/generated_sync_only # Generate with async_only stubs for testing - find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=only_async:test/generated-async-only + find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 "$PROTOC" "${PROTOC_ARGS[@]}" --mypy_grpc_out=only_async:test/generated_async_only --mypy_out=test/generated_async_only --python_out=test/generated_async_only if [[ -n $VALIDATE ]] && ! diff <(echo "$SHA_BEFORE") <(find test/generated -name "*.pyi" -print0 | xargs -0 sha1sum); then echo -e "${RED}Some .pyi files did not match. Please commit those files${NC}" @@ -157,6 +157,8 @@ for PY_VER in $PY_VER_UNIT_TESTS; do ( source "$UNIT_TESTS_VENV"/bin/activate find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 python -m grpc_tools.protoc "${PROTOC_ARGS[@]}" --grpc_python_out=test/generated + find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 python -m grpc_tools.protoc "${PROTOC_ARGS[@]}" --grpc_python_out=test/generated_sync_only + find proto/testproto/grpc -name "*.proto" -print0 | xargs -0 python -m grpc_tools.protoc "${PROTOC_ARGS[@]}" --grpc_python_out=test/generated_async_only ) # Run mypy on unit tests / generated output @@ -164,15 +166,15 @@ for PY_VER in $PY_VER_UNIT_TESTS; do source "$MYPY_VENV"/bin/activate # Run concrete mypy CONCRETE_MODULES=( -m test.test_concrete ) - MYPYPATH=$MYPYPATH:test/generated-concrete mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${CONCRETE_MODULES[@]}" + MYPYPATH=$MYPYPATH:test/generated_concrete mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${CONCRETE_MODULES[@]}" # Run sync_only mypy - SYNC_ONLY_MODULES=( -m test.test_sync_only ) - MYPYPATH=$MYPYPATH:test/generated-sync-only mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${SYNC_ONLY_MODULES[@]}" + SYNC_ONLY_MODULES=( -m test.sync_only.test_sync_only ) + MYPYPATH=$MYPYPATH:test/generated_sync_only mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${SYNC_ONLY_MODULES[@]}" # Run async_only mypy - ASYNC_ONLY_MODULES=( -m test.test_async_only ) - MYPYPATH=$MYPYPATH:test/generated-async-only mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${ASYNC_ONLY_MODULES[@]}" + ASYNC_ONLY_MODULES=( -m test.async_only.test_async_only ) + MYPYPATH=$MYPYPATH:test/generated_async_only mypy ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --python-executable="$UNIT_TESTS_VENV"/bin/python --python-version="$PY_VER_MYPY_TARGET" "${ASYNC_ONLY_MODULES[@]}" export MYPYPATH=$MYPYPATH:test/generated @@ -222,7 +224,7 @@ for PY_VER in $PY_VER_UNIT_TESTS; do ( # Run unit tests. source "$UNIT_TESTS_VENV"/bin/activate - PYTHONPATH=test/generated py.test --ignore=test/generated --ignore=test/generated-sync-only --ignore=test/generated-async-only -v + PYTHONPATH=test/generated py.test --ignore=test/generated --ignore=test/generated_sync_only --ignore=test/generated_async_only -v ) done diff --git a/test/async_only/test_async_only.py b/test/async_only/test_async_only.py new file mode 100644 index 00000000..57e45674 --- /dev/null +++ b/test/async_only/test_async_only.py @@ -0,0 +1,29 @@ +""" +Type-checking test for async_only GRPC stubs. + +This module is run through mypy to validate that stubs generated with the +only_async flag have the correct types: +- Regular (non-generic) Stub class that only accepts grpc.aio.Channel +- No AsyncStub type alias (the stub itself is async-only) +- Servicer methods use AsyncIterator for client streaming (not _MaybeAsyncIterator) +- add_XXXServicer_to_server accepts grpc.aio.Server +""" + +from typing import Awaitable +import grpc.aio +from testproto.grpc import dummy_pb2_grpc, dummy_pb2 + + +class AsyncOnlyServicer(dummy_pb2_grpc.DummyServiceServicer): + async def UnaryUnary( + self, + request: dummy_pb2.DummyRequest, + context: grpc.aio.ServicerContext[dummy_pb2.DummyRequest, Awaitable[dummy_pb2.DummyReply]], + ) -> dummy_pb2.DummyReply: + await context.abort(grpc.StatusCode.UNIMPLEMENTED, "Not implemented") + return dummy_pb2.DummyReply(value=request.value[::-1]) + + +async def main(): + stub = dummy_pb2_grpc.DummyServiceStub(channel=grpc.aio.insecure_channel("localhost:50051")) + await stub.UnaryUnary(dummy_pb2.DummyRequest(value="test")) diff --git a/test/generated-async-only/__init__.py b/test/generated-async-only/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py b/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py deleted file mode 100644 index 6fddb96c..00000000 --- a/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/Capitalized/Capitalized.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/Capitalized/Capitalized.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'testproto/Capitalized/Capitalized.proto\x12\x0b\x43\x61pitalized\"\x12\n\x05lower\x12\t\n\x01\x61\x18\x01 \x01(\x03\"*\n\x05Upper\x12!\n\x05Lower\x18\x01 \x01(\x0b\x32\x12.Capitalized.lower\"+\n\x06lower2\x12!\n\x05upper\x18\x01 \x01(\x0b\x32\x12.Capitalized.Upperb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.Capitalized.Capitalized_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_LOWER']._serialized_start=56 - _globals['_LOWER']._serialized_end=74 - _globals['_UPPER']._serialized_start=76 - _globals['_UPPER']._serialized_end=118 - _globals['_LOWER2']._serialized_start=120 - _globals['_LOWER2']._serialized_end=163 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/Capitalized/__init__.py b/test/generated-async-only/testproto/Capitalized/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/__init__.py b/test/generated-async-only/testproto/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/comment_special_chars_pb2.py b/test/generated-async-only/testproto/comment_special_chars_pb2.py deleted file mode 100644 index 74655702..00000000 --- a/test/generated-async-only/testproto/comment_special_chars_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/comment_special_chars.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/comment_special_chars.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%testproto/comment_special_chars.proto\x12\x15\x63omment_special_chars\"\x7f\n\x04Test\x12\t\n\x01\x61\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\t\x12\t\n\x01\x63\x18\x03 \x01(\t\x12\t\n\x01\x64\x18\x04 \x01(\t\x12\t\n\x01\x65\x18\x05 \x01(\t\x12\t\n\x01\x66\x18\x06 \x01(\t\x12\t\n\x01g\x18\x07 \x01(\t\x12\t\n\x01h\x18\x08 \x01(\t\x12\t\n\x01i\x18\t \x01(\t\x12\t\n\x01j\x18\n \x01(\t\x12\t\n\x01k\x18\x0b \x01(\tb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.comment_special_chars_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_TEST']._serialized_start=64 - _globals['_TEST']._serialized_end=191 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/dot/__init__.py b/test/generated-async-only/testproto/dot/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/dot/com/__init__.py b/test/generated-async-only/testproto/dot/com/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/dot/com/test_pb2.py b/test/generated-async-only/testproto/dot/com/test_pb2.py deleted file mode 100644 index de4a85eb..00000000 --- a/test/generated-async-only/testproto/dot/com/test_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/dot.com/test.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/dot.com/test.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ctestproto/dot.com/test.proto\x12\x04test\"\x1a\n\x0bTestMessage\x12\x0b\n\x03\x66oo\x18\x01 \x01(\tb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.dot.com.test_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_TESTMESSAGE']._serialized_start=38 - _globals['_TESTMESSAGE']._serialized_end=64 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/edition2024_pb2.py b/test/generated-async-only/testproto/edition2024_pb2.py deleted file mode 100644 index 40e73646..00000000 --- a/test/generated-async-only/testproto/edition2024_pb2.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/edition2024.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/edition2024.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/edition2024.proto\x12\x04test\"\'\n\x16\x45\x64itions2024SubMessage\x12\r\n\x05thing\x18\x01 \x01(\t\"\xc3\x01\n\x10\x45\x64itions2024Test\x12\x15\n\x06legacy\x18\x01 \x01(\tB\x05\xaa\x01\x02\x08\x03\x12 \n\x11\x65xplicit_singular\x18\x02 \x01(\tB\x05\xaa\x01\x02\x08\x01\x12:\n\rmessage_field\x18\x03 \x01(\x0b\x32\x1c.test.Editions2024SubMessageB\x05\xaa\x01\x02\x08\x01\x12 \n\x11implicit_singular\x18\x04 \x01(\tB\x05\xaa\x01\x02\x08\x02\x12\x18\n\x10\x64\x65\x66\x61ult_singular\x18\x05 \x01(\tB\x05\x92\x03\x02 \x03\x62\x08\x65\x64itionsp\xe9\x07') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.edition2024_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\222\003\002 \003' - _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._serialized_options = b'\252\001\002\010\003' - _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._serialized_options = b'\252\001\002\010\001' - _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._serialized_options = b'\252\001\002\010\001' - _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._serialized_options = b'\252\001\002\010\002' - _globals['_EDITIONS2024SUBMESSAGE']._serialized_start=37 - _globals['_EDITIONS2024SUBMESSAGE']._serialized_end=76 - _globals['_EDITIONS2024TEST']._serialized_start=79 - _globals['_EDITIONS2024TEST']._serialized_end=274 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/grpc/__init__.py b/test/generated-async-only/testproto/grpc/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/inner/__init__.py b/test/generated-async-only/testproto/inner/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/inner/inner_pb2.py b/test/generated-async-only/testproto/inner/inner_pb2.py deleted file mode 100644 index fa5eac66..00000000 --- a/test/generated-async-only/testproto/inner/inner_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/inner/inner.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/inner/inner.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/inner/inner.proto\x12\x05inner\x1a\x15testproto/test3.proto\"$\n\x05Inner\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnumb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.inner.inner_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_INNER']._serialized_start=61 - _globals['_INNER']._serialized_end=97 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/nested/__init__.py b/test/generated-async-only/testproto/nested/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-async-only/testproto/nested/nested_pb2.py b/test/generated-async-only/testproto/nested/nested_pb2.py deleted file mode 100644 index 4e269210..00000000 --- a/test/generated-async-only/testproto/nested/nested_pb2.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/nested/nested.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/nested/nested.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dtestproto/nested/nested.proto\x12\x13test.nested_package\x1a\x15testproto/test3.proto\"%\n\x06Nested\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnum\"\xac\x02\n\rAnotherNested\x1a\xed\x01\n\rNestedMessage\x12\t\n\x01s\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\x08\x12\x39\n\x02ne\x18\x03 \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12I\n\x03ne2\x18\x04 \x01(\x0e\x32<.test.nested_package.AnotherNested.NestedMessage.NestedEnum2\"@\n\x0bNestedEnum2\x12\r\n\tUNDEFINED\x10\x00\x12\x10\n\x0cNESTED_ENUM1\x10\x01\x12\x10\n\x0cNESTED_ENUM2\x10\x02\"+\n\nNestedEnum\x12\x0b\n\x07INVALID\x10\x00\x12\x07\n\x03ONE\x10\x01\x12\x07\n\x03TWO\x10\x02\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nested.nested_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_NESTED']._serialized_start=77 - _globals['_NESTED']._serialized_end=114 - _globals['_ANOTHERNESTED']._serialized_start=117 - _globals['_ANOTHERNESTED']._serialized_end=417 - _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_start=135 - _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_end=372 - _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_start=308 - _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_end=372 - _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_start=374 - _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_end=417 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/nopackage_pb2.py b/test/generated-async-only/testproto/nopackage_pb2.py deleted file mode 100644 index 25e501fb..00000000 --- a/test/generated-async-only/testproto/nopackage_pb2.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/nopackage.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/nopackage.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19testproto/nopackage.proto\"\x0b\n\tNoPackage\"@\n\nNoPackage2\x12\x16\n\x02np\x18\x01 \x01(\x0b\x32\n.NoPackage\x12\x1a\n\x06np_rep\x18\x02 \x03(\x0b\x32\n.NoPackageb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nopackage_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_NOPACKAGE']._serialized_start=29 - _globals['_NOPACKAGE']._serialized_end=40 - _globals['_NOPACKAGE2']._serialized_start=42 - _globals['_NOPACKAGE2']._serialized_end=106 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/readme_enum_pb2.py b/test/generated-async-only/testproto/readme_enum_pb2.py deleted file mode 100644 index bfce5038..00000000 --- a/test/generated-async-only/testproto/readme_enum_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/readme_enum.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/readme_enum.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/readme_enum.proto\x12\x04test*\x1e\n\x06MyEnum\x12\t\n\x05HELLO\x10\x00\x12\t\n\x05WORLD\x10\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.readme_enum_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_MYENUM']._serialized_start=37 - _globals['_MYENUM']._serialized_end=67 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/reexport_pb2.py b/test/generated-async-only/testproto/reexport_pb2.py deleted file mode 100644 index bebe651b..00000000 --- a/test/generated-async-only/testproto/reexport_pb2.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/reexport.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/reexport.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test3_pb2 as testproto_dot_test3__pb2 -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 - -from testproto.test3_pb2 import * -from google.protobuf.empty_pb2 import * - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18testproto/reexport.proto\x12\x05test3\x1a\x15testproto/test3.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1btestproto/inner/inner.protoP\x00P\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.reexport_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test3_pb2.py b/test/generated-async-only/testproto/test3_pb2.py deleted file mode 100644 index 3b164270..00000000 --- a/test/generated-async-only/testproto/test3_pb2.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test3.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test3.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15testproto/test3.proto\x12\x05test3\x1a\x1emypy_protobuf/extensions.proto\"!\n\rOuterMessage3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\"\xb3\t\n\x0cSimpleProto3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12&\n\x0c\x61_outer_enum\x18\x03 \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\router_message\x18\x04 \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x31\n\ninner_enum\x18\x0f \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnum\x12\x13\n\ta_oneof_1\x18\x05 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x06 \x01(\tH\x00\x12\x36\n\x16outer_message_in_oneof\x18\x0c \x01(\x0b\x32\x14.test3.OuterMessage3H\x00\x12/\n\x13outer_enum_in_oneof\x18\r \x01(\x0e\x32\x10.test3.OuterEnumH\x00\x12<\n\x13inner_enum_in_oneof\x18\x0e \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnumH\x00\x12\x13\n\tb_oneof_1\x18\x07 \x01(\tH\x01\x12\x13\n\tb_oneof_2\x18\x08 \x01(\tH\x01\x12\"\n\x04\x62ool\x18\t \x01(\x0b\x32\x14.test3.OuterMessage3\x12#\n\tOuterEnum\x18\n \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\rOuterMessage3\x18\x0b \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x36\n\nmap_scalar\x18\x10 \x03(\x0b\x32\".test3.SimpleProto3.MapScalarEntry\x12\x38\n\x0bmap_message\x18\x11 \x03(\x0b\x32#.test3.SimpleProto3.MapMessageEntry\x12\x1f\n\x12\x61n_optional_string\x18\x12 \x01(\tH\x02\x88\x01\x01\x12\x35\n\x07user_id\x18\x13 \x01(\rB$\x92H!\n\x1ftest/test_generated_mypy.UserId\x12\x32\n\x05\x65mail\x18\x14 \x01(\tB#\x92H \n\x1etest/test_generated_mypy.Email\x12\x7f\n\x0c\x65mail_by_uid\x18\x15 \x03(\x0b\x32#.test3.SimpleProto3.EmailByUidEntryBD\x92HA\x12\x1ftest/test_generated_mypy.UserId\x1a\x1etest/test_generated_mypy.Email\x1a\x30\n\x0eMapScalarEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aG\n\x0fMapMessageEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.test3.OuterMessage3:\x02\x38\x01\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x00\x12\n\n\x06INNER2\x10\x01\x42\t\n\x07\x61_oneofB\t\n\x07\x62_oneofB\x15\n\x13_an_optional_string*,\n\tOuterEnum\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04\x46OO3\x10\x01\x12\x08\n\x04\x42\x41R3\x10\x02\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test3_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._loaded_options = None - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_options = b'8\001' - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._loaded_options = None - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_options = b'8\001' - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._loaded_options = None - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_options = b'8\001' - _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._loaded_options = None - _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._serialized_options = b'\222H!\n\037test/test_generated_mypy.UserId' - _globals['_SIMPLEPROTO3'].fields_by_name['email']._loaded_options = None - _globals['_SIMPLEPROTO3'].fields_by_name['email']._serialized_options = b'\222H \n\036test/test_generated_mypy.Email' - _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._loaded_options = None - _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._serialized_options = b'\222HA\022\037test/test_generated_mypy.UserId\032\036test/test_generated_mypy.Email' - _globals['_OUTERENUM']._serialized_start=1305 - _globals['_OUTERENUM']._serialized_end=1349 - _globals['_OUTERMESSAGE3']._serialized_start=64 - _globals['_OUTERMESSAGE3']._serialized_end=97 - _globals['_SIMPLEPROTO3']._serialized_start=100 - _globals['_SIMPLEPROTO3']._serialized_end=1303 - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_start=1049 - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_end=1097 - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_start=1099 - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_end=1170 - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_start=1172 - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_end=1221 - _globals['_SIMPLEPROTO3_INNERENUM']._serialized_start=1223 - _globals['_SIMPLEPROTO3_INNERENUM']._serialized_end=1258 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_extensions2_pb2.py b/test/generated-async-only/testproto/test_extensions2_pb2.py deleted file mode 100644 index 58c277cb..00000000 --- a/test/generated-async-only/testproto/test_extensions2_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test_extensions2.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test_extensions2.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test_pb2 as testproto_dot_test__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions2.proto\x12\x04test\x1a\x14testproto/test.proto\"_\n\x15SeparateFileExtension\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32\x38\n\x03\x65xt\x12\r.test.Simple2\x18\xe9\x07 \x01(\x0b\x32\x1b.test.SeparateFileExtension') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions2_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SEPARATEFILEEXTENSION']._serialized_start=64 - _globals['_SEPARATEFILEEXTENSION']._serialized_end=159 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_extensions3_pb2.py b/test/generated-async-only/testproto/test_extensions3_pb2.py deleted file mode 100644 index 4bc39093..00000000 --- a/test/generated-async-only/testproto/test_extensions3_pb2.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test_extensions3.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test_extensions3.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions3.proto\x12\x05test3\x1a google/protobuf/descriptor.proto\x1a\x15testproto/test3.proto\"\x91\x01\n\x15MessageOptionsTestMsg:x\x92\x82\x19\x0cHello world!\x9a\x82\x19\x01\x41\x9a\x82\x19\x01\x42\x9a\x82\x19\x01\x43\xa0\x82\x19\x01\xaa\x82\x19\x02\x01\x02\xb2\x82\x19\x15\n\x13Hello OuterMessage3\xba\x82\x19\x17\n\x15Hello OuterMessage3 A\xba\x82\x19\x17\n\x15Hello OuterMessage3 B:=\n\x14test_field_extension\x12\x1d.google.protobuf.FieldOptions\x18\xd0\x86\x03 \x01(\t:8\n\rscalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa2\x90\x03 \x01(\t:A\n\x16repeated_scalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa3\x90\x03 \x03(\t:H\n\x0b\x65num_option\x12\x1f.google.protobuf.MessageOptions\x18\xa4\x90\x03 \x01(\x0e\x32\x10.test3.OuterEnum:Q\n\x14repeated_enum_option\x12\x1f.google.protobuf.MessageOptions\x18\xa5\x90\x03 \x03(\x0e\x32\x10.test3.OuterEnum:K\n\nmsg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa6\x90\x03 \x01(\x0b\x32\x14.test3.OuterMessage3:T\n\x13repeated_msg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa7\x90\x03 \x03(\x0b\x32\x14.test3.OuterMessage3b\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions3_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_MESSAGEOPTIONSTESTMSG']._loaded_options = None - _globals['_MESSAGEOPTIONSTESTMSG']._serialized_options = b'\222\202\031\014Hello world!\232\202\031\001A\232\202\031\001B\232\202\031\001C\240\202\031\001\252\202\031\002\001\002\262\202\031\025\n\023Hello OuterMessage3\272\202\031\027\n\025Hello OuterMessage3 A\272\202\031\027\n\025Hello OuterMessage3 B' - _globals['_MESSAGEOPTIONSTESTMSG']._serialized_start=101 - _globals['_MESSAGEOPTIONSTESTMSG']._serialized_end=246 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_no_generic_services_pb2.py b/test/generated-async-only/testproto/test_no_generic_services_pb2.py deleted file mode 100644 index 532c253b..00000000 --- a/test/generated-async-only/testproto/test_no_generic_services_pb2.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test_no_generic_services.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test_no_generic_services.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(testproto/test_no_generic_services.proto\x12\x04test\"\x1b\n\x07Simple3\x12\x10\n\x08\x61_string\x18\x01 \x02(\t27\n\rATestService2\x12&\n\x04\x45\x63ho\x12\r.test.Simple3\x1a\r.test.Simple3\"\x00') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_no_generic_services_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SIMPLE3']._serialized_start=50 - _globals['_SIMPLE3']._serialized_end=77 - _globals['_ATESTSERVICE2']._serialized_start=79 - _globals['_ATESTSERVICE2']._serialized_end=134 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-async-only/testproto/test_pb2.py b/test/generated-async-only/testproto/test_pb2.py deleted file mode 100644 index cfeef244..00000000 --- a/test/generated-async-only/testproto/test_pb2.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 -from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 -from testproto.nested import nested_pb2 as testproto_dot_nested_dot_nested__pb2 -from testproto import nopackage_pb2 as testproto_dot_nopackage__pb2 -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14testproto/test.proto\x12\x04test\x1a\x1emypy_protobuf/extensions.proto\x1a\x1btestproto/inner/inner.proto\x1a\x1dtestproto/nested/nested.proto\x1a\x19testproto/nopackage.proto\x1a\x15testproto/test3.proto\"\x8d\t\n\x07Simple1\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12\x11\n\ta_boolean\x18\x03 \x01(\x08\x12\x10\n\x08\x61_uint32\x18\x04 \x01(\r\x12\x1f\n\x06\x61_enum\x18\x05 \x01(\x0e\x32\x0f.test.OuterEnum\x12)\n\x0f\x61_external_enum\x18\x06 \x01(\x0e\x32\x10.test3.OuterEnum\x12\x1d\n\x07\x61_inner\x18\x07 \x01(\x0b\x32\x0c.inner.Inner\x12-\n\x08\x61_nested\x18\x0c \x01(\x0b\x32\x1b.test.nested_package.Nested\x12+\n\ninner_enum\x18\x08 \x01(\x0e\x32\x17.test.Simple1.InnerEnum\x12/\n\x0erep_inner_enum\x18\t \x03(\x0e\x32\x17.test.Simple1.InnerEnum\x12\x31\n\rinner_message\x18\n \x01(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x35\n\x11rep_inner_message\x18\x0b \x03(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x1e\n\nno_package\x18\r \x01(\x0b\x32\n.NoPackage\x12\x42\n\x0bnested_enum\x18\x0e \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12H\n\x0enested_message\x18\x0f \x01(\x0b\x32\x30.test.nested_package.AnotherNested.NestedMessage\x12\x13\n\ta_oneof_1\x18\x10 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x11 \x01(\tH\x00\x12/\n\x16outer_message_in_oneof\x18\x12 \x01(\x0b\x32\r.test.Simple2H\x00\x12.\n\x13outer_enum_in_oneof\x18\x13 \x01(\x0e\x32\x0f.test.OuterEnumH\x00\x12\x36\n\x13inner_enum_in_oneof\x18\x14 \x01(\x0e\x32\x17.test.Simple1.InnerEnumH\x00\x12\x33\n\x07user_id\x18\x15 \x01(\rB\"\xfaG\x1ftest/test_generated_mypy.UserId\x12\x30\n\x05\x65mail\x18\x16 \x01(\tB!\xfaG\x1etest/test_generated_mypy.Email\x12x\n\x0c\x65mail_by_uid\x18\x17 \x03(\x0b\x32\x1d.test.Simple1.EmailByUidEntryBC\x82H\x1ftest/test_generated_mypy.UserId\x8aH\x1etest/test_generated_mypy.Email\x1a\x0e\n\x0cInnerMessage\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x01\x12\n\n\x06INNER2\x10\x02*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\t\n\x07\x61_oneof\"&\n\x07Simple2\x12\x10\n\x08\x61_string\x18\x01 \x02(\t*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"R\n\x0b\x45xtensions1\x12\x13\n\x0b\x65xt1_string\x18\x01 \x01(\t2.\n\x03\x65xt\x12\r.test.Simple1\x18\xe8\x07 \x01(\x0b\x32\x11.test.Extensions1\"K\n\x0b\x45xtensions2\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32.\n\x03\x66oo\x12\r.test.Simple1\x18\xe4\x0f \x01(\x0b\x32\x11.test.Extensions2\"\x15\n\x04None\x12\r\n\x05valid\x18\x01 \x01(\x03\"\x80\x05\n\x16PythonReservedKeywords\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\x12\x19\n\x02in\x18\x02 \x01(\x0b\x32\r.test.Simple2\x12\x30\n\x02is\x18\x03 \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x12\x0b\n\x03\x66or\x18\x05 \x01(\x03\x12\x0b\n\x03try\x18\x06 \x01(\x03\x12\x0b\n\x03\x64\x65\x66\x18\x07 \x01(\x03\x12\x10\n\x08nonlocal\x18\x08 \x01(\x03\x12\r\n\x05while\x18\t \x01(\x03\x12\x0b\n\x03\x61nd\x18\n \x01(\x03\x12\x0b\n\x03\x64\x65l\x18\x0b \x01(\x03\x12\x0e\n\x06global\x18\x0c \x01(\x03\x12\x0b\n\x03not\x18\r \x01(\x03\x12\x0c\n\x04with\x18\x0e \x01(\x03\x12\n\n\x02\x61s\x18\x0f \x01(\x03\x12\x0c\n\x04\x65lif\x18\x10 \x01(\x03\x12\n\n\x02if\x18\x11 \x01(\x03\x12\n\n\x02or\x18\x12 \x01(\x03\x12\r\n\x05yield\x18\x13 \x01(\x03\x12\x0e\n\x06\x61ssert\x18\x14 \x01(\x03\x12\x0c\n\x04\x65lse\x18\x15 \x01(\x03\x12\x0e\n\x06import\x18\x16 \x01(\x03\x12\x0c\n\x04pass\x18\x17 \x01(\x03\x12\r\n\x05\x62reak\x18\x18 \x01(\x03\x12\x0e\n\x06\x65xcept\x18\x19 \x01(\x03\x12\r\n\x05raise\x18\x1a \x01(\x03\x12\r\n\x05\x46\x61lse\x18\x1b \x01(\x03\x12\x0c\n\x04True\x18\x1d \x01(\x03\x12\r\n\x05\x63lass\x18\x1e \x01(\x03\x12\x18\n\x04none\x18\x1c \x01(\x0b\x32\n.test.None\x12\x33\n\x05valid\x18\x1f \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x1a)\n\x06lambda\x12\x10\n\x08\x63ontinue\x18\x01 \x01(\x03\x12\r\n\x05valid\x18\x02 \x01(\x03\"-\n\x07\x66inally\x12\x0c\n\x08\x63ontinue\x10\x01\x12\x14\n\x10valid_in_finally\x10\x02\"+\n\x1bPythonReservedKeywordsSmall\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\"\x19\n\tSelfField\x12\x0c\n\x04self\x18\x01 \x01(\x03\")\n\x11\x44\x65precatedMessage\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01\"3\n\x1b\x44\x65precatedMessageBadComment\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01*\x1d\n\tOuterEnum\x12\x07\n\x03\x46OO\x10\x01\x12\x07\n\x03\x42\x41R\x10\x02*G\n\x0fNamingConflicts\x12\x08\n\x04Name\x10\x01\x12\t\n\x05Value\x10\x02\x12\x08\n\x04keys\x10\x03\x12\n\n\x06values\x10\x04\x12\t\n\x05items\x10\x05*<\n\x0e\x44\x65precatedEnum\x12\x12\n\x0e\x44\x45PRECATED_ONE\x10\x01\x12\x12\n\x0e\x44\x45PRECATED_TWO\x10\x02\x1a\x02\x18\x01\x32\xde\x01\n\x1dPythonReservedKeywordsService\x12>\n\x06lambda\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00\x12\x31\n\x12valid_method_name1\x12\r.test.Simple1\x1a\n.test.None\"\x00\x12J\n\x12valid_method_name2\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_DEPRECATEDENUM']._loaded_options = None - _globals['_DEPRECATEDENUM']._serialized_options = b'\030\001' - _globals['_SIMPLE1_EMAILBYUIDENTRY']._loaded_options = None - _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_options = b'8\001' - _globals['_SIMPLE1'].fields_by_name['user_id']._loaded_options = None - _globals['_SIMPLE1'].fields_by_name['user_id']._serialized_options = b'\372G\037test/test_generated_mypy.UserId' - _globals['_SIMPLE1'].fields_by_name['email']._loaded_options = None - _globals['_SIMPLE1'].fields_by_name['email']._serialized_options = b'\372G\036test/test_generated_mypy.Email' - _globals['_SIMPLE1'].fields_by_name['email_by_uid']._loaded_options = None - _globals['_SIMPLE1'].fields_by_name['email_by_uid']._serialized_options = b'\202H\037test/test_generated_mypy.UserId\212H\036test/test_generated_mypy.Email' - _globals['_DEPRECATEDMESSAGE']._loaded_options = None - _globals['_DEPRECATEDMESSAGE']._serialized_options = b'\030\001' - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._loaded_options = None - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_options = b'\030\001' - _globals['_OUTERENUM']._serialized_start=2375 - _globals['_OUTERENUM']._serialized_end=2404 - _globals['_NAMINGCONFLICTS']._serialized_start=2406 - _globals['_NAMINGCONFLICTS']._serialized_end=2477 - _globals['_DEPRECATEDENUM']._serialized_start=2479 - _globals['_DEPRECATEDENUM']._serialized_end=2539 - _globals['_SIMPLE1']._serialized_start=173 - _globals['_SIMPLE1']._serialized_end=1338 - _globals['_SIMPLE1_INNERMESSAGE']._serialized_start=1214 - _globals['_SIMPLE1_INNERMESSAGE']._serialized_end=1228 - _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_start=1230 - _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_end=1279 - _globals['_SIMPLE1_INNERENUM']._serialized_start=1281 - _globals['_SIMPLE1_INNERENUM']._serialized_end=1316 - _globals['_SIMPLE2']._serialized_start=1340 - _globals['_SIMPLE2']._serialized_end=1378 - _globals['_EXTENSIONS1']._serialized_start=1380 - _globals['_EXTENSIONS1']._serialized_end=1462 - _globals['_EXTENSIONS2']._serialized_start=1464 - _globals['_EXTENSIONS2']._serialized_end=1539 - _globals['_NONE']._serialized_start=1541 - _globals['_NONE']._serialized_end=1562 - _globals['_PYTHONRESERVEDKEYWORDS']._serialized_start=1565 - _globals['_PYTHONRESERVEDKEYWORDS']._serialized_end=2205 - _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_start=2117 - _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_end=2158 - _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_start=2160 - _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_end=2205 - _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_start=2207 - _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_end=2250 - _globals['_SELFFIELD']._serialized_start=2252 - _globals['_SELFFIELD']._serialized_end=2277 - _globals['_DEPRECATEDMESSAGE']._serialized_start=2279 - _globals['_DEPRECATEDMESSAGE']._serialized_end=2320 - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_start=2322 - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_end=2373 - _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_start=2542 - _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_end=2764 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-concrete/testproto/Capitalized/Capitalized_pb2.pyi b/test/generated-concrete/testproto/Capitalized/Capitalized_pb2.pyi deleted file mode 100644 index 828d26f2..00000000 --- a/test/generated-concrete/testproto/Capitalized/Capitalized_pb2.pyi +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class lower(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - a: builtins.int - def __init__( - self, - *, - a: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... - -Global___lower: typing_extensions.TypeAlias = lower - -@typing.final -class Upper(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LOWER_FIELD_NUMBER: builtins.int - @property - def Lower(self) -> Global___lower: ... - def __init__( - self, - *, - Lower: Global___lower | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["Lower", b"Lower"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["Lower", b"Lower"]) -> None: ... - -Global___Upper: typing_extensions.TypeAlias = Upper - -@typing.final -class lower2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - UPPER_FIELD_NUMBER: builtins.int - @property - def upper(self) -> Global___Upper: ... - def __init__( - self, - *, - upper: Global___Upper | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["upper", b"upper"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["upper", b"upper"]) -> None: ... - -Global___lower2: typing_extensions.TypeAlias = lower2 diff --git a/test/generated-concrete/testproto/comment_special_chars_pb2.pyi b/test/generated-concrete/testproto/comment_special_chars_pb2.pyi deleted file mode 100644 index 21823424..00000000 --- a/test/generated-concrete/testproto/comment_special_chars_pb2.pyi +++ /dev/null @@ -1,82 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Test(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - B_FIELD_NUMBER: builtins.int - C_FIELD_NUMBER: builtins.int - D_FIELD_NUMBER: builtins.int - E_FIELD_NUMBER: builtins.int - F_FIELD_NUMBER: builtins.int - G_FIELD_NUMBER: builtins.int - H_FIELD_NUMBER: builtins.int - I_FIELD_NUMBER: builtins.int - J_FIELD_NUMBER: builtins.int - K_FIELD_NUMBER: builtins.int - a: builtins.str - """Ending with " """ - b: builtins.str - """Ending with "" """ - c: builtins.str - """Ending with \"\"\" """ - d: builtins.str - """Ending with \\ """ - e: builtins.str - """Containing bad escape: \\x""" - f: builtins.str - """Containing \"\"\"" quadruple""" - g: builtins.str - """Containing \"\"\""" quintuple""" - h: builtins.str - """Containing \"\"\"\"\"\" sextuple""" - i: builtins.str - """\"\"\" Multiple \"\"\" triples \"\"\" """ - j: builtins.str - """"quotes" can be a problem in comments. - \"\"\"Triple quotes\"\"\" just as well - """ - k: builtins.str - """\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" - " " - " Super Duper comments with surrounding edges! " - " " - " Pay attention to me!!!! " - " " - \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" - """ - def __init__( - self, - *, - a: builtins.str = ..., - b: builtins.str = ..., - c: builtins.str = ..., - d: builtins.str = ..., - e: builtins.str = ..., - f: builtins.str = ..., - g: builtins.str = ..., - h: builtins.str = ..., - i: builtins.str = ..., - j: builtins.str = ..., - k: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a", "b", b"b", "c", b"c", "d", b"d", "e", b"e", "f", b"f", "g", b"g", "h", b"h", "i", b"i", "j", b"j", "k", b"k"]) -> None: ... - -Global___Test: typing_extensions.TypeAlias = Test diff --git a/test/generated-concrete/testproto/dot/com/test_pb2.pyi b/test/generated-concrete/testproto/dot/com/test_pb2.pyi deleted file mode 100644 index bb7e86c1..00000000 --- a/test/generated-concrete/testproto/dot/com/test_pb2.pyi +++ /dev/null @@ -1,32 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class TestMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FOO_FIELD_NUMBER: builtins.int - foo: builtins.str - def __init__( - self, - *, - foo: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["foo", b"foo"]) -> None: ... - -Global___TestMessage: typing_extensions.TypeAlias = TestMessage diff --git a/test/generated-concrete/testproto/inner/inner_pb2.pyi b/test/generated-concrete/testproto/inner/inner_pb2.pyi deleted file mode 100644 index dc705d20..00000000 --- a/test/generated-concrete/testproto/inner/inner_pb2.pyi +++ /dev/null @@ -1,33 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Inner(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - a: testproto.test3_pb2.OuterEnum.ValueType - def __init__( - self, - *, - a: testproto.test3_pb2.OuterEnum.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... - -Global___Inner: typing_extensions.TypeAlias = Inner diff --git a/test/generated-concrete/testproto/nested/nested_pb2.pyi b/test/generated-concrete/testproto/nested/nested_pb2.pyi deleted file mode 100644 index e382df0a..00000000 --- a/test/generated-concrete/testproto/nested/nested_pb2.pyi +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Nested(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - a: testproto.test3_pb2.OuterEnum.ValueType - def __init__( - self, - *, - a: testproto.test3_pb2.OuterEnum.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... - -Global___Nested: typing_extensions.TypeAlias = Nested - -@typing.final -class AnotherNested(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _NestedEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _NestedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested._NestedEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INVALID: AnotherNested._NestedEnum.ValueType # 0 - ONE: AnotherNested._NestedEnum.ValueType # 1 - TWO: AnotherNested._NestedEnum.ValueType # 2 - - class NestedEnum(_NestedEnum, metaclass=_NestedEnumEnumTypeWrapper): ... - INVALID: AnotherNested.NestedEnum.ValueType # 0 - ONE: AnotherNested.NestedEnum.ValueType # 1 - TWO: AnotherNested.NestedEnum.ValueType # 2 - - @typing.final - class NestedMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _NestedEnum2: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _NestedEnum2EnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested.NestedMessage._NestedEnum2.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNDEFINED: AnotherNested.NestedMessage._NestedEnum2.ValueType # 0 - NESTED_ENUM1: AnotherNested.NestedMessage._NestedEnum2.ValueType # 1 - NESTED_ENUM2: AnotherNested.NestedMessage._NestedEnum2.ValueType # 2 - - class NestedEnum2(_NestedEnum2, metaclass=_NestedEnum2EnumTypeWrapper): ... - UNDEFINED: AnotherNested.NestedMessage.NestedEnum2.ValueType # 0 - NESTED_ENUM1: AnotherNested.NestedMessage.NestedEnum2.ValueType # 1 - NESTED_ENUM2: AnotherNested.NestedMessage.NestedEnum2.ValueType # 2 - - S_FIELD_NUMBER: builtins.int - B_FIELD_NUMBER: builtins.int - NE_FIELD_NUMBER: builtins.int - NE2_FIELD_NUMBER: builtins.int - s: builtins.str - b: builtins.bool - ne: Global___AnotherNested.NestedEnum.ValueType - ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType - def __init__( - self, - *, - s: builtins.str = ..., - b: builtins.bool = ..., - ne: Global___AnotherNested.NestedEnum.ValueType = ..., - ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["b", b"b", "ne", b"ne", "ne2", b"ne2", "s", b"s"]) -> None: ... - - def __init__( - self, - ) -> None: ... - -Global___AnotherNested: typing_extensions.TypeAlias = AnotherNested diff --git a/test/generated-concrete/testproto/nopackage_pb2.pyi b/test/generated-concrete/testproto/nopackage_pb2.pyi deleted file mode 100644 index 7925439c..00000000 --- a/test/generated-concrete/testproto/nopackage_pb2.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class NoPackage(google.protobuf.message.Message): - """Intentionally don't set a package - just to make sure we can handle it.""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -Global___NoPackage: typing_extensions.TypeAlias = NoPackage - -@typing.final -class NoPackage2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NP_FIELD_NUMBER: builtins.int - NP_REP_FIELD_NUMBER: builtins.int - @property - def np(self) -> Global___NoPackage: ... - @property - def np_rep(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___NoPackage]: ... - def __init__( - self, - *, - np: Global___NoPackage | None = ..., - np_rep: collections.abc.Iterable[Global___NoPackage] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["np", b"np"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["np", b"np", "np_rep", b"np_rep"]) -> None: ... - -Global___NoPackage2: typing_extensions.TypeAlias = NoPackage2 diff --git a/test/generated-concrete/testproto/readme_enum_pb2.pyi b/test/generated-concrete/testproto/readme_enum_pb2.pyi deleted file mode 100644 index be8369c4..00000000 --- a/test/generated-concrete/testproto/readme_enum_pb2.pyi +++ /dev/null @@ -1,32 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _MyEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - HELLO: _MyEnum.ValueType # 0 - WORLD: _MyEnum.ValueType # 1 - -class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... - -HELLO: MyEnum.ValueType # 0 -WORLD: MyEnum.ValueType # 1 -Global___MyEnum: typing_extensions.TypeAlias = MyEnum diff --git a/test/generated-concrete/testproto/reexport_pb2.pyi b/test/generated-concrete/testproto/reexport_pb2.pyi deleted file mode 100644 index 9702c2bd..00000000 --- a/test/generated-concrete/testproto/reexport_pb2.pyi +++ /dev/null @@ -1,19 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import google.protobuf.descriptor -from google.protobuf.empty_pb2 import ( - Empty as Empty, -) -from testproto.test3_pb2 import ( - BAR3 as BAR3, - FOO3 as FOO3, - OuterEnum as OuterEnum, - OuterMessage3 as OuterMessage3, - SimpleProto3 as SimpleProto3, - UNKNOWN as UNKNOWN, -) - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor diff --git a/test/generated-concrete/testproto/test3_pb2.pyi b/test/generated-concrete/testproto/test3_pb2.pyi deleted file mode 100644 index f239d860..00000000 --- a/test/generated-concrete/testproto/test3_pb2.pyi +++ /dev/null @@ -1,209 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -package test3""" - -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import test.test_generated_mypy -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _OuterEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNKNOWN: _OuterEnum.ValueType # 0 - FOO3: _OuterEnum.ValueType # 1 - BAR3: _OuterEnum.ValueType # 2 - -class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... - -UNKNOWN: OuterEnum.ValueType # 0 -FOO3: OuterEnum.ValueType # 1 -BAR3: OuterEnum.ValueType # 2 -Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum - -@typing.final -class OuterMessage3(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___OuterMessage3: typing_extensions.TypeAlias = OuterMessage3 - -@typing.final -class SimpleProto3(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _InnerEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SimpleProto3._InnerEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INNER1: SimpleProto3._InnerEnum.ValueType # 0 - INNER2: SimpleProto3._InnerEnum.ValueType # 1 - - class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... - INNER1: SimpleProto3.InnerEnum.ValueType # 0 - INNER2: SimpleProto3.InnerEnum.ValueType # 1 - - @typing.final - class MapScalarEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - value: builtins.str - def __init__( - self, - *, - key: builtins.int = ..., - value: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - @typing.final - class MapMessageEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - @property - def value(self) -> Global___OuterMessage3: ... - def __init__( - self, - *, - key: builtins.int = ..., - value: Global___OuterMessage3 | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - @typing.final - class EmailByUidEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - value: builtins.str - def __init__( - self, - *, - key: builtins.int = ..., - value: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - A_STRING_FIELD_NUMBER: builtins.int - A_REPEATED_STRING_FIELD_NUMBER: builtins.int - A_OUTER_ENUM_FIELD_NUMBER: builtins.int - OUTER_MESSAGE_FIELD_NUMBER: builtins.int - INNER_ENUM_FIELD_NUMBER: builtins.int - A_ONEOF_1_FIELD_NUMBER: builtins.int - A_ONEOF_2_FIELD_NUMBER: builtins.int - OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int - OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - B_ONEOF_1_FIELD_NUMBER: builtins.int - B_ONEOF_2_FIELD_NUMBER: builtins.int - BOOL_FIELD_NUMBER: builtins.int - OUTERENUM_FIELD_NUMBER: builtins.int - OUTERMESSAGE3_FIELD_NUMBER: builtins.int - MAP_SCALAR_FIELD_NUMBER: builtins.int - MAP_MESSAGE_FIELD_NUMBER: builtins.int - AN_OPTIONAL_STRING_FIELD_NUMBER: builtins.int - USER_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - EMAIL_BY_UID_FIELD_NUMBER: builtins.int - a_string: builtins.str - a_outer_enum: Global___OuterEnum.ValueType - inner_enum: Global___SimpleProto3.InnerEnum.ValueType - a_oneof_1: builtins.str - a_oneof_2: builtins.str - outer_enum_in_oneof: Global___OuterEnum.ValueType - inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType - b_oneof_1: builtins.str - b_oneof_2: builtins.str - OuterEnum: Global___OuterEnum.ValueType - """Test having fieldname match messagename""" - an_optional_string: builtins.str - user_id: test.test_generated_mypy.UserId - email: test.test_generated_mypy.Email - @property - def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - @property - def outer_message(self) -> Global___OuterMessage3: ... - @property - def outer_message_in_oneof(self) -> Global___OuterMessage3: ... - @property - def bool(self) -> Global___OuterMessage3: ... - @property - def OuterMessage3(self) -> Global___OuterMessage3: ... - @property - def map_scalar(self) -> google.protobuf.internal.containers.ScalarMap[builtins.int, builtins.str]: - """Test generation of map""" - - @property - def map_message(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, Global___OuterMessage3]: ... - @property - def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... - def __init__( - self, - *, - a_string: builtins.str = ..., - a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., - a_outer_enum: Global___OuterEnum.ValueType = ..., - outer_message: Global___OuterMessage3 | None = ..., - inner_enum: Global___SimpleProto3.InnerEnum.ValueType = ..., - a_oneof_1: builtins.str = ..., - a_oneof_2: builtins.str = ..., - outer_message_in_oneof: Global___OuterMessage3 | None = ..., - outer_enum_in_oneof: Global___OuterEnum.ValueType = ..., - inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType = ..., - b_oneof_1: builtins.str = ..., - b_oneof_2: builtins.str = ..., - bool: Global___OuterMessage3 | None = ..., - OuterEnum: Global___OuterEnum.ValueType = ..., - OuterMessage3: Global___OuterMessage3 | None = ..., - map_scalar: collections.abc.Mapping[builtins.int, builtins.str] | None = ..., - map_message: collections.abc.Mapping[builtins.int, Global___OuterMessage3] | None = ..., - an_optional_string: builtins.str | None = ..., - user_id: test.test_generated_mypy.UserId = ..., - email: test.test_generated_mypy.Email = ..., - email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "inner_enum_in_oneof", b"inner_enum_in_oneof", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["OuterEnum", b"OuterEnum", "OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_outer_enum", b"a_outer_enum", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "map_message", b"map_message", "map_scalar", b"map_scalar", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_an_optional_string", b"_an_optional_string"]) -> typing.Literal["an_optional_string"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["b_oneof", b"b_oneof"]) -> typing.Literal["b_oneof_1", "b_oneof_2"] | None: ... - -Global___SimpleProto3: typing_extensions.TypeAlias = SimpleProto3 diff --git a/test/generated-concrete/testproto/test_extensions2_pb2.pyi b/test/generated-concrete/testproto/test_extensions2_pb2.pyi deleted file mode 100644 index b8e9f652..00000000 --- a/test/generated-concrete/testproto/test_extensions2_pb2.pyi +++ /dev/null @@ -1,37 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.extension_dict -import google.protobuf.message -import sys -import testproto.test_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class SeparateFileExtension(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FLAG_FIELD_NUMBER: builtins.int - flag: builtins.bool - EXT_FIELD_NUMBER: builtins.int - ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[testproto.test_pb2.Simple2, Global___SeparateFileExtension] - def __init__( - self, - *, - flag: builtins.bool | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... - -Global___SeparateFileExtension: typing_extensions.TypeAlias = SeparateFileExtension diff --git a/test/generated-concrete/testproto/test_extensions3_pb2.pyi b/test/generated-concrete/testproto/test_extensions3_pb2.pyi deleted file mode 100644 index f2292855..00000000 --- a/test/generated-concrete/testproto/test_extensions3_pb2.pyi +++ /dev/null @@ -1,46 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.descriptor_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.extension_dict -import google.protobuf.message -import sys -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class MessageOptionsTestMsg(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -Global___MessageOptionsTestMsg: typing_extensions.TypeAlias = MessageOptionsTestMsg - -TEST_FIELD_EXTENSION_FIELD_NUMBER: builtins.int -SCALAR_OPTION_FIELD_NUMBER: builtins.int -REPEATED_SCALAR_OPTION_FIELD_NUMBER: builtins.int -ENUM_OPTION_FIELD_NUMBER: builtins.int -REPEATED_ENUM_OPTION_FIELD_NUMBER: builtins.int -MSG_OPTION_FIELD_NUMBER: builtins.int -REPEATED_MSG_OPTION_FIELD_NUMBER: builtins.int -test_field_extension: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.str] -scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, builtins.str] -repeated_scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]] -enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterEnum.ValueType] -repeated_enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[testproto.test3_pb2.OuterEnum.ValueType]] -msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterMessage3] -repeated_msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedCompositeFieldContainer[testproto.test3_pb2.OuterMessage3]] diff --git a/test/generated-concrete/testproto/test_no_generic_services_pb2.pyi b/test/generated-concrete/testproto/test_no_generic_services_pb2.pyi deleted file mode 100644 index 3a350109..00000000 --- a/test/generated-concrete/testproto/test_no_generic_services_pb2.pyi +++ /dev/null @@ -1,33 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Simple3(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___Simple3: typing_extensions.TypeAlias = Simple3 diff --git a/test/generated-concrete/testproto/test_pb2.pyi b/test/generated-concrete/testproto/test_pb2.pyi deleted file mode 100644 index 3058335b..00000000 --- a/test/generated-concrete/testproto/test_pb2.pyi +++ /dev/null @@ -1,439 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Proto 2 test file.""" - -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.internal.extension_dict -import google.protobuf.message -import sys -import test.test_generated_mypy -import testproto.inner.inner_pb2 -import testproto.nested.nested_pb2 -import testproto.nopackage_pb2 -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -if sys.version_info >= (3, 13): - from warnings import deprecated -else: - from typing_extensions import deprecated - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _OuterEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - FOO: _OuterEnum.ValueType # 1 - """FOO""" - BAR: _OuterEnum.ValueType # 2 - """BAR""" - -class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): - """Outer Enum""" - -FOO: OuterEnum.ValueType # 1 -"""FOO""" -BAR: OuterEnum.ValueType # 2 -"""BAR""" -Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum - -class _NamingConflicts: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _NamingConflictsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NamingConflicts.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - -class NamingConflicts(_NamingConflicts, metaclass=_NamingConflictsEnumTypeWrapper): - """Naming conflicts!""" - -Name: NamingConflicts.ValueType # 1 -Value: NamingConflicts.ValueType # 2 -keys: NamingConflicts.ValueType # 3 -values: NamingConflicts.ValueType # 4 -items: NamingConflicts.ValueType # 5 -"""See https://github.com/protocolbuffers/protobuf/issues/8803 -proto itself generates broken code when DESCRIPTOR is there -DESCRIPTOR = 8; -""" -Global___NamingConflicts: typing_extensions.TypeAlias = NamingConflicts - -class _DeprecatedEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _DeprecatedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DeprecatedEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEPRECATED_ONE: _DeprecatedEnum.ValueType # 1 - DEPRECATED_TWO: _DeprecatedEnum.ValueType # 2 - -@deprecated("""This enum is deprecated\n2 lines of comments\n"Quotes in comments"\nand 'single quotes'\nTrailing comment""") -class DeprecatedEnum(_DeprecatedEnum, metaclass=_DeprecatedEnumEnumTypeWrapper): ... - -DEPRECATED_ONE: DeprecatedEnum.ValueType # 1 -DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 -Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum - -@typing.final -class Simple1(google.protobuf.message.Message): - """Message with one of everything""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _InnerEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Simple1._InnerEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INNER1: Simple1._InnerEnum.ValueType # 1 - """INNER1""" - INNER2: Simple1._InnerEnum.ValueType # 2 - """INNER2""" - - class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): - """Inner Enum""" - - INNER1: Simple1.InnerEnum.ValueType # 1 - """INNER1""" - INNER2: Simple1.InnerEnum.ValueType # 2 - """INNER2""" - - @typing.final - class InnerMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - - @typing.final - class EmailByUidEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - value: builtins.str - def __init__( - self, - *, - key: builtins.int | None = ..., - value: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - A_STRING_FIELD_NUMBER: builtins.int - A_REPEATED_STRING_FIELD_NUMBER: builtins.int - A_BOOLEAN_FIELD_NUMBER: builtins.int - A_UINT32_FIELD_NUMBER: builtins.int - A_ENUM_FIELD_NUMBER: builtins.int - A_EXTERNAL_ENUM_FIELD_NUMBER: builtins.int - A_INNER_FIELD_NUMBER: builtins.int - A_NESTED_FIELD_NUMBER: builtins.int - INNER_ENUM_FIELD_NUMBER: builtins.int - REP_INNER_ENUM_FIELD_NUMBER: builtins.int - INNER_MESSAGE_FIELD_NUMBER: builtins.int - REP_INNER_MESSAGE_FIELD_NUMBER: builtins.int - NO_PACKAGE_FIELD_NUMBER: builtins.int - NESTED_ENUM_FIELD_NUMBER: builtins.int - NESTED_MESSAGE_FIELD_NUMBER: builtins.int - A_ONEOF_1_FIELD_NUMBER: builtins.int - A_ONEOF_2_FIELD_NUMBER: builtins.int - OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int - OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - USER_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - EMAIL_BY_UID_FIELD_NUMBER: builtins.int - a_string: builtins.str - a_boolean: builtins.bool - a_uint32: builtins.int - a_enum: Global___OuterEnum.ValueType - a_external_enum: testproto.test3_pb2.OuterEnum.ValueType - inner_enum: Global___Simple1.InnerEnum.ValueType - nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType - a_oneof_1: builtins.str - a_oneof_2: builtins.str - outer_enum_in_oneof: Global___OuterEnum.ValueType - inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType - user_id: test.test_generated_mypy.UserId - email: test.test_generated_mypy.Email - @property - def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - @property - def a_inner(self) -> testproto.inner.inner_pb2.Inner: ... - @property - def a_nested(self) -> testproto.nested.nested_pb2.Nested: ... - @property - def rep_inner_enum(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[Global___Simple1.InnerEnum.ValueType]: ... - @property - def inner_message(self) -> Global___Simple1.InnerMessage: ... - @property - def rep_inner_message(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Simple1.InnerMessage]: ... - @property - def no_package(self) -> testproto.nopackage_pb2.NoPackage: ... - @property - def nested_message(self) -> testproto.nested.nested_pb2.AnotherNested.NestedMessage: ... - @property - def outer_message_in_oneof(self) -> Global___Simple2: ... - @property - def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... - def __init__( - self, - *, - a_string: builtins.str | None = ..., - a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., - a_boolean: builtins.bool | None = ..., - a_uint32: builtins.int | None = ..., - a_enum: Global___OuterEnum.ValueType | None = ..., - a_external_enum: testproto.test3_pb2.OuterEnum.ValueType | None = ..., - a_inner: testproto.inner.inner_pb2.Inner | None = ..., - a_nested: testproto.nested.nested_pb2.Nested | None = ..., - inner_enum: Global___Simple1.InnerEnum.ValueType | None = ..., - rep_inner_enum: collections.abc.Iterable[Global___Simple1.InnerEnum.ValueType] | None = ..., - inner_message: Global___Simple1.InnerMessage | None = ..., - rep_inner_message: collections.abc.Iterable[Global___Simple1.InnerMessage] | None = ..., - no_package: testproto.nopackage_pb2.NoPackage | None = ..., - nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType | None = ..., - nested_message: testproto.nested.nested_pb2.AnotherNested.NestedMessage | None = ..., - a_oneof_1: builtins.str | None = ..., - a_oneof_2: builtins.str | None = ..., - outer_message_in_oneof: Global___Simple2 | None = ..., - outer_enum_in_oneof: Global___OuterEnum.ValueType | None = ..., - inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType | None = ..., - user_id: test.test_generated_mypy.UserId | None = ..., - email: test.test_generated_mypy.Email | None = ..., - email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "rep_inner_enum", b"rep_inner_enum", "rep_inner_message", b"rep_inner_message", "user_id", b"user_id"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... - -Global___Simple1: typing_extensions.TypeAlias = Simple1 - -@typing.final -class Simple2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___Simple2: typing_extensions.TypeAlias = Simple2 - -@typing.final -class Extensions1(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EXT1_STRING_FIELD_NUMBER: builtins.int - ext1_string: builtins.str - EXT_FIELD_NUMBER: builtins.int - ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions1] - """ext""" - def __init__( - self, - *, - ext1_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> None: ... - -Global___Extensions1: typing_extensions.TypeAlias = Extensions1 - -@typing.final -class Extensions2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FLAG_FIELD_NUMBER: builtins.int - flag: builtins.bool - FOO_FIELD_NUMBER: builtins.int - foo: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions2] - """foo""" - def __init__( - self, - *, - flag: builtins.bool | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... - -Global___Extensions2: typing_extensions.TypeAlias = Extensions2 - -@typing.final -class _r_None(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - VALID_FIELD_NUMBER: builtins.int - valid: builtins.int - def __init__( - self, - *, - valid: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["valid", b"valid"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["valid", b"valid"]) -> None: ... - -Global____r_None: typing_extensions.TypeAlias = _r_None - -@typing.final -class PythonReservedKeywords(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _finally: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _finallyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PythonReservedKeywords._finally.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - valid_in_finally: PythonReservedKeywords._finally.ValueType # 2 - - class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... - valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 - - @typing.final - class _r_lambda(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CONTINUE_FIELD_NUMBER: builtins.int - VALID_FIELD_NUMBER: builtins.int - valid: builtins.int - def __init__( - self, - *, - valid: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> None: ... - - FROM_FIELD_NUMBER: builtins.int - IN_FIELD_NUMBER: builtins.int - IS_FIELD_NUMBER: builtins.int - FOR_FIELD_NUMBER: builtins.int - TRY_FIELD_NUMBER: builtins.int - DEF_FIELD_NUMBER: builtins.int - NONLOCAL_FIELD_NUMBER: builtins.int - WHILE_FIELD_NUMBER: builtins.int - AND_FIELD_NUMBER: builtins.int - DEL_FIELD_NUMBER: builtins.int - GLOBAL_FIELD_NUMBER: builtins.int - NOT_FIELD_NUMBER: builtins.int - WITH_FIELD_NUMBER: builtins.int - AS_FIELD_NUMBER: builtins.int - ELIF_FIELD_NUMBER: builtins.int - IF_FIELD_NUMBER: builtins.int - OR_FIELD_NUMBER: builtins.int - YIELD_FIELD_NUMBER: builtins.int - ASSERT_FIELD_NUMBER: builtins.int - ELSE_FIELD_NUMBER: builtins.int - IMPORT_FIELD_NUMBER: builtins.int - PASS_FIELD_NUMBER: builtins.int - BREAK_FIELD_NUMBER: builtins.int - EXCEPT_FIELD_NUMBER: builtins.int - RAISE_FIELD_NUMBER: builtins.int - FALSE_FIELD_NUMBER: builtins.int - TRUE_FIELD_NUMBER: builtins.int - CLASS_FIELD_NUMBER: builtins.int - NONE_FIELD_NUMBER: builtins.int - VALID_FIELD_NUMBER: builtins.int - valid: Global___PythonReservedKeywords._r_finally.ValueType - @property - def none(self) -> Global____r_None: - """Test unreserved identifiers w/ reserved message names""" - - def __init__( - self, - *, - none: Global____r_None | None = ..., - valid: Global___PythonReservedKeywords._r_finally.ValueType | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> None: ... - -Global___PythonReservedKeywords: typing_extensions.TypeAlias = PythonReservedKeywords - -@typing.final -class PythonReservedKeywordsSmall(google.protobuf.message.Message): - """Do one with just one arg - to make sure it's syntactically correct""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FROM_FIELD_NUMBER: builtins.int - def __init__( - self, - ) -> None: ... - def HasField(self, field_name: typing.Literal["from", b"from"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["from", b"from"]) -> None: ... - -Global___PythonReservedKeywordsSmall: typing_extensions.TypeAlias = PythonReservedKeywordsSmall - -@typing.final -class SelfField(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SELF_FIELD_NUMBER: builtins.int - self: builtins.int - """Field self -> must generate an __init__ method w/ different name""" - def __init__( - self_, # pyright: ignore[reportSelfClsParameterName] - *, - self: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["self", b"self"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["self", b"self"]) -> None: ... - -Global___SelfField: typing_extensions.TypeAlias = SelfField - -@deprecated("""This message is deprecated""") -@typing.final -class DeprecatedMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage - -@deprecated("""This message has been marked as deprecated using proto message options.""") -@typing.final -class DeprecatedMessageBadComment(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___DeprecatedMessageBadComment: typing_extensions.TypeAlias = DeprecatedMessageBadComment diff --git a/test/generated-sync-only/__init__.py b/test/generated-sync-only/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py b/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py deleted file mode 100644 index 6fddb96c..00000000 --- a/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/Capitalized/Capitalized.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/Capitalized/Capitalized.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'testproto/Capitalized/Capitalized.proto\x12\x0b\x43\x61pitalized\"\x12\n\x05lower\x12\t\n\x01\x61\x18\x01 \x01(\x03\"*\n\x05Upper\x12!\n\x05Lower\x18\x01 \x01(\x0b\x32\x12.Capitalized.lower\"+\n\x06lower2\x12!\n\x05upper\x18\x01 \x01(\x0b\x32\x12.Capitalized.Upperb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.Capitalized.Capitalized_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_LOWER']._serialized_start=56 - _globals['_LOWER']._serialized_end=74 - _globals['_UPPER']._serialized_start=76 - _globals['_UPPER']._serialized_end=118 - _globals['_LOWER2']._serialized_start=120 - _globals['_LOWER2']._serialized_end=163 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi b/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi deleted file mode 100644 index 828d26f2..00000000 --- a/test/generated-sync-only/testproto/Capitalized/Capitalized_pb2.pyi +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class lower(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - a: builtins.int - def __init__( - self, - *, - a: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... - -Global___lower: typing_extensions.TypeAlias = lower - -@typing.final -class Upper(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LOWER_FIELD_NUMBER: builtins.int - @property - def Lower(self) -> Global___lower: ... - def __init__( - self, - *, - Lower: Global___lower | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["Lower", b"Lower"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["Lower", b"Lower"]) -> None: ... - -Global___Upper: typing_extensions.TypeAlias = Upper - -@typing.final -class lower2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - UPPER_FIELD_NUMBER: builtins.int - @property - def upper(self) -> Global___Upper: ... - def __init__( - self, - *, - upper: Global___Upper | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["upper", b"upper"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["upper", b"upper"]) -> None: ... - -Global___lower2: typing_extensions.TypeAlias = lower2 diff --git a/test/generated-sync-only/testproto/Capitalized/__init__.py b/test/generated-sync-only/testproto/Capitalized/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/__init__.py b/test/generated-sync-only/testproto/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/comment_special_chars_pb2.py b/test/generated-sync-only/testproto/comment_special_chars_pb2.py deleted file mode 100644 index 74655702..00000000 --- a/test/generated-sync-only/testproto/comment_special_chars_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/comment_special_chars.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/comment_special_chars.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%testproto/comment_special_chars.proto\x12\x15\x63omment_special_chars\"\x7f\n\x04Test\x12\t\n\x01\x61\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\t\x12\t\n\x01\x63\x18\x03 \x01(\t\x12\t\n\x01\x64\x18\x04 \x01(\t\x12\t\n\x01\x65\x18\x05 \x01(\t\x12\t\n\x01\x66\x18\x06 \x01(\t\x12\t\n\x01g\x18\x07 \x01(\t\x12\t\n\x01h\x18\x08 \x01(\t\x12\t\n\x01i\x18\t \x01(\t\x12\t\n\x01j\x18\n \x01(\t\x12\t\n\x01k\x18\x0b \x01(\tb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.comment_special_chars_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_TEST']._serialized_start=64 - _globals['_TEST']._serialized_end=191 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/comment_special_chars_pb2.pyi b/test/generated-sync-only/testproto/comment_special_chars_pb2.pyi deleted file mode 100644 index 21823424..00000000 --- a/test/generated-sync-only/testproto/comment_special_chars_pb2.pyi +++ /dev/null @@ -1,82 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Test(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - B_FIELD_NUMBER: builtins.int - C_FIELD_NUMBER: builtins.int - D_FIELD_NUMBER: builtins.int - E_FIELD_NUMBER: builtins.int - F_FIELD_NUMBER: builtins.int - G_FIELD_NUMBER: builtins.int - H_FIELD_NUMBER: builtins.int - I_FIELD_NUMBER: builtins.int - J_FIELD_NUMBER: builtins.int - K_FIELD_NUMBER: builtins.int - a: builtins.str - """Ending with " """ - b: builtins.str - """Ending with "" """ - c: builtins.str - """Ending with \"\"\" """ - d: builtins.str - """Ending with \\ """ - e: builtins.str - """Containing bad escape: \\x""" - f: builtins.str - """Containing \"\"\"" quadruple""" - g: builtins.str - """Containing \"\"\""" quintuple""" - h: builtins.str - """Containing \"\"\"\"\"\" sextuple""" - i: builtins.str - """\"\"\" Multiple \"\"\" triples \"\"\" """ - j: builtins.str - """"quotes" can be a problem in comments. - \"\"\"Triple quotes\"\"\" just as well - """ - k: builtins.str - """\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" - " " - " Super Duper comments with surrounding edges! " - " " - " Pay attention to me!!!! " - " " - \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\" - """ - def __init__( - self, - *, - a: builtins.str = ..., - b: builtins.str = ..., - c: builtins.str = ..., - d: builtins.str = ..., - e: builtins.str = ..., - f: builtins.str = ..., - g: builtins.str = ..., - h: builtins.str = ..., - i: builtins.str = ..., - j: builtins.str = ..., - k: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a", "b", b"b", "c", b"c", "d", b"d", "e", b"e", "f", b"f", "g", b"g", "h", b"h", "i", b"i", "j", b"j", "k", b"k"]) -> None: ... - -Global___Test: typing_extensions.TypeAlias = Test diff --git a/test/generated-sync-only/testproto/dot/__init__.py b/test/generated-sync-only/testproto/dot/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/dot/com/__init__.py b/test/generated-sync-only/testproto/dot/com/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/dot/com/test_pb2.py b/test/generated-sync-only/testproto/dot/com/test_pb2.py deleted file mode 100644 index de4a85eb..00000000 --- a/test/generated-sync-only/testproto/dot/com/test_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/dot.com/test.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/dot.com/test.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ctestproto/dot.com/test.proto\x12\x04test\"\x1a\n\x0bTestMessage\x12\x0b\n\x03\x66oo\x18\x01 \x01(\tb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.dot.com.test_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_TESTMESSAGE']._serialized_start=38 - _globals['_TESTMESSAGE']._serialized_end=64 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/dot/com/test_pb2.pyi b/test/generated-sync-only/testproto/dot/com/test_pb2.pyi deleted file mode 100644 index bb7e86c1..00000000 --- a/test/generated-sync-only/testproto/dot/com/test_pb2.pyi +++ /dev/null @@ -1,32 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class TestMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FOO_FIELD_NUMBER: builtins.int - foo: builtins.str - def __init__( - self, - *, - foo: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["foo", b"foo"]) -> None: ... - -Global___TestMessage: typing_extensions.TypeAlias = TestMessage diff --git a/test/generated-sync-only/testproto/edition2024_pb2.py b/test/generated-sync-only/testproto/edition2024_pb2.py deleted file mode 100644 index 40e73646..00000000 --- a/test/generated-sync-only/testproto/edition2024_pb2.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/edition2024.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/edition2024.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/edition2024.proto\x12\x04test\"\'\n\x16\x45\x64itions2024SubMessage\x12\r\n\x05thing\x18\x01 \x01(\t\"\xc3\x01\n\x10\x45\x64itions2024Test\x12\x15\n\x06legacy\x18\x01 \x01(\tB\x05\xaa\x01\x02\x08\x03\x12 \n\x11\x65xplicit_singular\x18\x02 \x01(\tB\x05\xaa\x01\x02\x08\x01\x12:\n\rmessage_field\x18\x03 \x01(\x0b\x32\x1c.test.Editions2024SubMessageB\x05\xaa\x01\x02\x08\x01\x12 \n\x11implicit_singular\x18\x04 \x01(\tB\x05\xaa\x01\x02\x08\x02\x12\x18\n\x10\x64\x65\x66\x61ult_singular\x18\x05 \x01(\tB\x05\x92\x03\x02 \x03\x62\x08\x65\x64itionsp\xe9\x07') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.edition2024_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\222\003\002 \003' - _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['legacy']._serialized_options = b'\252\001\002\010\003' - _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['explicit_singular']._serialized_options = b'\252\001\002\010\001' - _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['message_field']._serialized_options = b'\252\001\002\010\001' - _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._loaded_options = None - _globals['_EDITIONS2024TEST'].fields_by_name['implicit_singular']._serialized_options = b'\252\001\002\010\002' - _globals['_EDITIONS2024SUBMESSAGE']._serialized_start=37 - _globals['_EDITIONS2024SUBMESSAGE']._serialized_end=76 - _globals['_EDITIONS2024TEST']._serialized_start=79 - _globals['_EDITIONS2024TEST']._serialized_end=274 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/edition2024_pb2.pyi b/test/generated-sync-only/testproto/edition2024_pb2.pyi deleted file mode 100644 index 6de2ba64..00000000 --- a/test/generated-sync-only/testproto/edition2024_pb2.pyi +++ /dev/null @@ -1,68 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Edition version of proto2 file""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Editions2024SubMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - THING_FIELD_NUMBER: builtins.int - thing: builtins.str - def __init__( - self, - *, - thing: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["thing", b"thing"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["thing", b"thing"]) -> None: ... - -Global___Editions2024SubMessage: typing_extensions.TypeAlias = Editions2024SubMessage - -@typing.final -class Editions2024Test(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LEGACY_FIELD_NUMBER: builtins.int - EXPLICIT_SINGULAR_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_FIELD_NUMBER: builtins.int - IMPLICIT_SINGULAR_FIELD_NUMBER: builtins.int - DEFAULT_SINGULAR_FIELD_NUMBER: builtins.int - legacy: builtins.str - """Expect to be always set""" - explicit_singular: builtins.str - """Expect HasField generated""" - implicit_singular: builtins.str - """Expect implicit field presence, no HasField generated""" - default_singular: builtins.str - """Not set, should default to EXPLICIT""" - @property - def message_field(self) -> Global___Editions2024SubMessage: - """Expect HasField generated?""" - - def __init__( - self, - *, - legacy: builtins.str | None = ..., - explicit_singular: builtins.str | None = ..., - message_field: Global___Editions2024SubMessage | None = ..., - implicit_singular: builtins.str = ..., - default_singular: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["default_singular", b"default_singular", "explicit_singular", b"explicit_singular", "legacy", b"legacy", "message_field", b"message_field"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["default_singular", b"default_singular", "explicit_singular", b"explicit_singular", "implicit_singular", b"implicit_singular", "legacy", b"legacy", "message_field", b"message_field"]) -> None: ... - -Global___Editions2024Test: typing_extensions.TypeAlias = Editions2024Test diff --git a/test/generated-sync-only/testproto/grpc/__init__.py b/test/generated-sync-only/testproto/grpc/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/inner/__init__.py b/test/generated-sync-only/testproto/inner/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/inner/inner_pb2.py b/test/generated-sync-only/testproto/inner/inner_pb2.py deleted file mode 100644 index fa5eac66..00000000 --- a/test/generated-sync-only/testproto/inner/inner_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/inner/inner.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/inner/inner.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/inner/inner.proto\x12\x05inner\x1a\x15testproto/test3.proto\"$\n\x05Inner\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnumb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.inner.inner_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_INNER']._serialized_start=61 - _globals['_INNER']._serialized_end=97 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/inner/inner_pb2.pyi b/test/generated-sync-only/testproto/inner/inner_pb2.pyi deleted file mode 100644 index dc705d20..00000000 --- a/test/generated-sync-only/testproto/inner/inner_pb2.pyi +++ /dev/null @@ -1,33 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Inner(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - a: testproto.test3_pb2.OuterEnum.ValueType - def __init__( - self, - *, - a: testproto.test3_pb2.OuterEnum.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... - -Global___Inner: typing_extensions.TypeAlias = Inner diff --git a/test/generated-sync-only/testproto/nested/__init__.py b/test/generated-sync-only/testproto/nested/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/generated-sync-only/testproto/nested/nested_pb2.py b/test/generated-sync-only/testproto/nested/nested_pb2.py deleted file mode 100644 index 4e269210..00000000 --- a/test/generated-sync-only/testproto/nested/nested_pb2.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/nested/nested.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/nested/nested.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dtestproto/nested/nested.proto\x12\x13test.nested_package\x1a\x15testproto/test3.proto\"%\n\x06Nested\x12\x1b\n\x01\x61\x18\x01 \x01(\x0e\x32\x10.test3.OuterEnum\"\xac\x02\n\rAnotherNested\x1a\xed\x01\n\rNestedMessage\x12\t\n\x01s\x18\x01 \x01(\t\x12\t\n\x01\x62\x18\x02 \x01(\x08\x12\x39\n\x02ne\x18\x03 \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12I\n\x03ne2\x18\x04 \x01(\x0e\x32<.test.nested_package.AnotherNested.NestedMessage.NestedEnum2\"@\n\x0bNestedEnum2\x12\r\n\tUNDEFINED\x10\x00\x12\x10\n\x0cNESTED_ENUM1\x10\x01\x12\x10\n\x0cNESTED_ENUM2\x10\x02\"+\n\nNestedEnum\x12\x0b\n\x07INVALID\x10\x00\x12\x07\n\x03ONE\x10\x01\x12\x07\n\x03TWO\x10\x02\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nested.nested_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_NESTED']._serialized_start=77 - _globals['_NESTED']._serialized_end=114 - _globals['_ANOTHERNESTED']._serialized_start=117 - _globals['_ANOTHERNESTED']._serialized_end=417 - _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_start=135 - _globals['_ANOTHERNESTED_NESTEDMESSAGE']._serialized_end=372 - _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_start=308 - _globals['_ANOTHERNESTED_NESTEDMESSAGE_NESTEDENUM2']._serialized_end=372 - _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_start=374 - _globals['_ANOTHERNESTED_NESTEDENUM']._serialized_end=417 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/nested/nested_pb2.pyi b/test/generated-sync-only/testproto/nested/nested_pb2.pyi deleted file mode 100644 index e382df0a..00000000 --- a/test/generated-sync-only/testproto/nested/nested_pb2.pyi +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Nested(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_FIELD_NUMBER: builtins.int - a: testproto.test3_pb2.OuterEnum.ValueType - def __init__( - self, - *, - a: testproto.test3_pb2.OuterEnum.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a", b"a"]) -> None: ... - -Global___Nested: typing_extensions.TypeAlias = Nested - -@typing.final -class AnotherNested(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _NestedEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _NestedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested._NestedEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INVALID: AnotherNested._NestedEnum.ValueType # 0 - ONE: AnotherNested._NestedEnum.ValueType # 1 - TWO: AnotherNested._NestedEnum.ValueType # 2 - - class NestedEnum(_NestedEnum, metaclass=_NestedEnumEnumTypeWrapper): ... - INVALID: AnotherNested.NestedEnum.ValueType # 0 - ONE: AnotherNested.NestedEnum.ValueType # 1 - TWO: AnotherNested.NestedEnum.ValueType # 2 - - @typing.final - class NestedMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _NestedEnum2: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _NestedEnum2EnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested.NestedMessage._NestedEnum2.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNDEFINED: AnotherNested.NestedMessage._NestedEnum2.ValueType # 0 - NESTED_ENUM1: AnotherNested.NestedMessage._NestedEnum2.ValueType # 1 - NESTED_ENUM2: AnotherNested.NestedMessage._NestedEnum2.ValueType # 2 - - class NestedEnum2(_NestedEnum2, metaclass=_NestedEnum2EnumTypeWrapper): ... - UNDEFINED: AnotherNested.NestedMessage.NestedEnum2.ValueType # 0 - NESTED_ENUM1: AnotherNested.NestedMessage.NestedEnum2.ValueType # 1 - NESTED_ENUM2: AnotherNested.NestedMessage.NestedEnum2.ValueType # 2 - - S_FIELD_NUMBER: builtins.int - B_FIELD_NUMBER: builtins.int - NE_FIELD_NUMBER: builtins.int - NE2_FIELD_NUMBER: builtins.int - s: builtins.str - b: builtins.bool - ne: Global___AnotherNested.NestedEnum.ValueType - ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType - def __init__( - self, - *, - s: builtins.str = ..., - b: builtins.bool = ..., - ne: Global___AnotherNested.NestedEnum.ValueType = ..., - ne2: Global___AnotherNested.NestedMessage.NestedEnum2.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["b", b"b", "ne", b"ne", "ne2", b"ne2", "s", b"s"]) -> None: ... - - def __init__( - self, - ) -> None: ... - -Global___AnotherNested: typing_extensions.TypeAlias = AnotherNested diff --git a/test/generated-sync-only/testproto/nopackage_pb2.py b/test/generated-sync-only/testproto/nopackage_pb2.py deleted file mode 100644 index 25e501fb..00000000 --- a/test/generated-sync-only/testproto/nopackage_pb2.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/nopackage.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/nopackage.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19testproto/nopackage.proto\"\x0b\n\tNoPackage\"@\n\nNoPackage2\x12\x16\n\x02np\x18\x01 \x01(\x0b\x32\n.NoPackage\x12\x1a\n\x06np_rep\x18\x02 \x03(\x0b\x32\n.NoPackageb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.nopackage_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_NOPACKAGE']._serialized_start=29 - _globals['_NOPACKAGE']._serialized_end=40 - _globals['_NOPACKAGE2']._serialized_start=42 - _globals['_NOPACKAGE2']._serialized_end=106 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/nopackage_pb2.pyi b/test/generated-sync-only/testproto/nopackage_pb2.pyi deleted file mode 100644 index 7925439c..00000000 --- a/test/generated-sync-only/testproto/nopackage_pb2.pyi +++ /dev/null @@ -1,52 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class NoPackage(google.protobuf.message.Message): - """Intentionally don't set a package - just to make sure we can handle it.""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -Global___NoPackage: typing_extensions.TypeAlias = NoPackage - -@typing.final -class NoPackage2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NP_FIELD_NUMBER: builtins.int - NP_REP_FIELD_NUMBER: builtins.int - @property - def np(self) -> Global___NoPackage: ... - @property - def np_rep(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___NoPackage]: ... - def __init__( - self, - *, - np: Global___NoPackage | None = ..., - np_rep: collections.abc.Iterable[Global___NoPackage] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["np", b"np"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["np", b"np", "np_rep", b"np_rep"]) -> None: ... - -Global___NoPackage2: typing_extensions.TypeAlias = NoPackage2 diff --git a/test/generated-sync-only/testproto/readme_enum_pb2.py b/test/generated-sync-only/testproto/readme_enum_pb2.py deleted file mode 100644 index bfce5038..00000000 --- a/test/generated-sync-only/testproto/readme_enum_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/readme_enum.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/readme_enum.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/readme_enum.proto\x12\x04test*\x1e\n\x06MyEnum\x12\t\n\x05HELLO\x10\x00\x12\t\n\x05WORLD\x10\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.readme_enum_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_MYENUM']._serialized_start=37 - _globals['_MYENUM']._serialized_end=67 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/readme_enum_pb2.pyi b/test/generated-sync-only/testproto/readme_enum_pb2.pyi deleted file mode 100644 index be8369c4..00000000 --- a/test/generated-sync-only/testproto/readme_enum_pb2.pyi +++ /dev/null @@ -1,32 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _MyEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - HELLO: _MyEnum.ValueType # 0 - WORLD: _MyEnum.ValueType # 1 - -class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... - -HELLO: MyEnum.ValueType # 0 -WORLD: MyEnum.ValueType # 1 -Global___MyEnum: typing_extensions.TypeAlias = MyEnum diff --git a/test/generated-sync-only/testproto/reexport_pb2.py b/test/generated-sync-only/testproto/reexport_pb2.py deleted file mode 100644 index bebe651b..00000000 --- a/test/generated-sync-only/testproto/reexport_pb2.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/reexport.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/reexport.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test3_pb2 as testproto_dot_test3__pb2 -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 - -from testproto.test3_pb2 import * -from google.protobuf.empty_pb2 import * - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18testproto/reexport.proto\x12\x05test3\x1a\x15testproto/test3.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1btestproto/inner/inner.protoP\x00P\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.reexport_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/reexport_pb2.pyi b/test/generated-sync-only/testproto/reexport_pb2.pyi deleted file mode 100644 index 9702c2bd..00000000 --- a/test/generated-sync-only/testproto/reexport_pb2.pyi +++ /dev/null @@ -1,19 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import google.protobuf.descriptor -from google.protobuf.empty_pb2 import ( - Empty as Empty, -) -from testproto.test3_pb2 import ( - BAR3 as BAR3, - FOO3 as FOO3, - OuterEnum as OuterEnum, - OuterMessage3 as OuterMessage3, - SimpleProto3 as SimpleProto3, - UNKNOWN as UNKNOWN, -) - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor diff --git a/test/generated-sync-only/testproto/test3_pb2.py b/test/generated-sync-only/testproto/test3_pb2.py deleted file mode 100644 index 3b164270..00000000 --- a/test/generated-sync-only/testproto/test3_pb2.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test3.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test3.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15testproto/test3.proto\x12\x05test3\x1a\x1emypy_protobuf/extensions.proto\"!\n\rOuterMessage3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\"\xb3\t\n\x0cSimpleProto3\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12&\n\x0c\x61_outer_enum\x18\x03 \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\router_message\x18\x04 \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x31\n\ninner_enum\x18\x0f \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnum\x12\x13\n\ta_oneof_1\x18\x05 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x06 \x01(\tH\x00\x12\x36\n\x16outer_message_in_oneof\x18\x0c \x01(\x0b\x32\x14.test3.OuterMessage3H\x00\x12/\n\x13outer_enum_in_oneof\x18\r \x01(\x0e\x32\x10.test3.OuterEnumH\x00\x12<\n\x13inner_enum_in_oneof\x18\x0e \x01(\x0e\x32\x1d.test3.SimpleProto3.InnerEnumH\x00\x12\x13\n\tb_oneof_1\x18\x07 \x01(\tH\x01\x12\x13\n\tb_oneof_2\x18\x08 \x01(\tH\x01\x12\"\n\x04\x62ool\x18\t \x01(\x0b\x32\x14.test3.OuterMessage3\x12#\n\tOuterEnum\x18\n \x01(\x0e\x32\x10.test3.OuterEnum\x12+\n\rOuterMessage3\x18\x0b \x01(\x0b\x32\x14.test3.OuterMessage3\x12\x36\n\nmap_scalar\x18\x10 \x03(\x0b\x32\".test3.SimpleProto3.MapScalarEntry\x12\x38\n\x0bmap_message\x18\x11 \x03(\x0b\x32#.test3.SimpleProto3.MapMessageEntry\x12\x1f\n\x12\x61n_optional_string\x18\x12 \x01(\tH\x02\x88\x01\x01\x12\x35\n\x07user_id\x18\x13 \x01(\rB$\x92H!\n\x1ftest/test_generated_mypy.UserId\x12\x32\n\x05\x65mail\x18\x14 \x01(\tB#\x92H \n\x1etest/test_generated_mypy.Email\x12\x7f\n\x0c\x65mail_by_uid\x18\x15 \x03(\x0b\x32#.test3.SimpleProto3.EmailByUidEntryBD\x92HA\x12\x1ftest/test_generated_mypy.UserId\x1a\x1etest/test_generated_mypy.Email\x1a\x30\n\x0eMapScalarEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aG\n\x0fMapMessageEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.test3.OuterMessage3:\x02\x38\x01\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x00\x12\n\n\x06INNER2\x10\x01\x42\t\n\x07\x61_oneofB\t\n\x07\x62_oneofB\x15\n\x13_an_optional_string*,\n\tOuterEnum\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04\x46OO3\x10\x01\x12\x08\n\x04\x42\x41R3\x10\x02\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test3_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._loaded_options = None - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_options = b'8\001' - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._loaded_options = None - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_options = b'8\001' - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._loaded_options = None - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_options = b'8\001' - _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._loaded_options = None - _globals['_SIMPLEPROTO3'].fields_by_name['user_id']._serialized_options = b'\222H!\n\037test/test_generated_mypy.UserId' - _globals['_SIMPLEPROTO3'].fields_by_name['email']._loaded_options = None - _globals['_SIMPLEPROTO3'].fields_by_name['email']._serialized_options = b'\222H \n\036test/test_generated_mypy.Email' - _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._loaded_options = None - _globals['_SIMPLEPROTO3'].fields_by_name['email_by_uid']._serialized_options = b'\222HA\022\037test/test_generated_mypy.UserId\032\036test/test_generated_mypy.Email' - _globals['_OUTERENUM']._serialized_start=1305 - _globals['_OUTERENUM']._serialized_end=1349 - _globals['_OUTERMESSAGE3']._serialized_start=64 - _globals['_OUTERMESSAGE3']._serialized_end=97 - _globals['_SIMPLEPROTO3']._serialized_start=100 - _globals['_SIMPLEPROTO3']._serialized_end=1303 - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_start=1049 - _globals['_SIMPLEPROTO3_MAPSCALARENTRY']._serialized_end=1097 - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_start=1099 - _globals['_SIMPLEPROTO3_MAPMESSAGEENTRY']._serialized_end=1170 - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_start=1172 - _globals['_SIMPLEPROTO3_EMAILBYUIDENTRY']._serialized_end=1221 - _globals['_SIMPLEPROTO3_INNERENUM']._serialized_start=1223 - _globals['_SIMPLEPROTO3_INNERENUM']._serialized_end=1258 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test3_pb2.pyi b/test/generated-sync-only/testproto/test3_pb2.pyi deleted file mode 100644 index f239d860..00000000 --- a/test/generated-sync-only/testproto/test3_pb2.pyi +++ /dev/null @@ -1,209 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -package test3""" - -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import test.test_generated_mypy -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _OuterEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNKNOWN: _OuterEnum.ValueType # 0 - FOO3: _OuterEnum.ValueType # 1 - BAR3: _OuterEnum.ValueType # 2 - -class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... - -UNKNOWN: OuterEnum.ValueType # 0 -FOO3: OuterEnum.ValueType # 1 -BAR3: OuterEnum.ValueType # 2 -Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum - -@typing.final -class OuterMessage3(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___OuterMessage3: typing_extensions.TypeAlias = OuterMessage3 - -@typing.final -class SimpleProto3(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _InnerEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SimpleProto3._InnerEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INNER1: SimpleProto3._InnerEnum.ValueType # 0 - INNER2: SimpleProto3._InnerEnum.ValueType # 1 - - class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... - INNER1: SimpleProto3.InnerEnum.ValueType # 0 - INNER2: SimpleProto3.InnerEnum.ValueType # 1 - - @typing.final - class MapScalarEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - value: builtins.str - def __init__( - self, - *, - key: builtins.int = ..., - value: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - @typing.final - class MapMessageEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - @property - def value(self) -> Global___OuterMessage3: ... - def __init__( - self, - *, - key: builtins.int = ..., - value: Global___OuterMessage3 | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - @typing.final - class EmailByUidEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - value: builtins.str - def __init__( - self, - *, - key: builtins.int = ..., - value: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - A_STRING_FIELD_NUMBER: builtins.int - A_REPEATED_STRING_FIELD_NUMBER: builtins.int - A_OUTER_ENUM_FIELD_NUMBER: builtins.int - OUTER_MESSAGE_FIELD_NUMBER: builtins.int - INNER_ENUM_FIELD_NUMBER: builtins.int - A_ONEOF_1_FIELD_NUMBER: builtins.int - A_ONEOF_2_FIELD_NUMBER: builtins.int - OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int - OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - B_ONEOF_1_FIELD_NUMBER: builtins.int - B_ONEOF_2_FIELD_NUMBER: builtins.int - BOOL_FIELD_NUMBER: builtins.int - OUTERENUM_FIELD_NUMBER: builtins.int - OUTERMESSAGE3_FIELD_NUMBER: builtins.int - MAP_SCALAR_FIELD_NUMBER: builtins.int - MAP_MESSAGE_FIELD_NUMBER: builtins.int - AN_OPTIONAL_STRING_FIELD_NUMBER: builtins.int - USER_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - EMAIL_BY_UID_FIELD_NUMBER: builtins.int - a_string: builtins.str - a_outer_enum: Global___OuterEnum.ValueType - inner_enum: Global___SimpleProto3.InnerEnum.ValueType - a_oneof_1: builtins.str - a_oneof_2: builtins.str - outer_enum_in_oneof: Global___OuterEnum.ValueType - inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType - b_oneof_1: builtins.str - b_oneof_2: builtins.str - OuterEnum: Global___OuterEnum.ValueType - """Test having fieldname match messagename""" - an_optional_string: builtins.str - user_id: test.test_generated_mypy.UserId - email: test.test_generated_mypy.Email - @property - def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - @property - def outer_message(self) -> Global___OuterMessage3: ... - @property - def outer_message_in_oneof(self) -> Global___OuterMessage3: ... - @property - def bool(self) -> Global___OuterMessage3: ... - @property - def OuterMessage3(self) -> Global___OuterMessage3: ... - @property - def map_scalar(self) -> google.protobuf.internal.containers.ScalarMap[builtins.int, builtins.str]: - """Test generation of map""" - - @property - def map_message(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, Global___OuterMessage3]: ... - @property - def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... - def __init__( - self, - *, - a_string: builtins.str = ..., - a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., - a_outer_enum: Global___OuterEnum.ValueType = ..., - outer_message: Global___OuterMessage3 | None = ..., - inner_enum: Global___SimpleProto3.InnerEnum.ValueType = ..., - a_oneof_1: builtins.str = ..., - a_oneof_2: builtins.str = ..., - outer_message_in_oneof: Global___OuterMessage3 | None = ..., - outer_enum_in_oneof: Global___OuterEnum.ValueType = ..., - inner_enum_in_oneof: Global___SimpleProto3.InnerEnum.ValueType = ..., - b_oneof_1: builtins.str = ..., - b_oneof_2: builtins.str = ..., - bool: Global___OuterMessage3 | None = ..., - OuterEnum: Global___OuterEnum.ValueType = ..., - OuterMessage3: Global___OuterMessage3 | None = ..., - map_scalar: collections.abc.Mapping[builtins.int, builtins.str] | None = ..., - map_message: collections.abc.Mapping[builtins.int, Global___OuterMessage3] | None = ..., - an_optional_string: builtins.str | None = ..., - user_id: test.test_generated_mypy.UserId = ..., - email: test.test_generated_mypy.Email = ..., - email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "inner_enum_in_oneof", b"inner_enum_in_oneof", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["OuterEnum", b"OuterEnum", "OuterMessage3", b"OuterMessage3", "_an_optional_string", b"_an_optional_string", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_outer_enum", b"a_outer_enum", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "an_optional_string", b"an_optional_string", "b_oneof", b"b_oneof", "b_oneof_1", b"b_oneof_1", "b_oneof_2", b"b_oneof_2", "bool", b"bool", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "map_message", b"map_message", "map_scalar", b"map_scalar", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message", b"outer_message", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_an_optional_string", b"_an_optional_string"]) -> typing.Literal["an_optional_string"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["b_oneof", b"b_oneof"]) -> typing.Literal["b_oneof_1", "b_oneof_2"] | None: ... - -Global___SimpleProto3: typing_extensions.TypeAlias = SimpleProto3 diff --git a/test/generated-sync-only/testproto/test_extensions2_pb2.py b/test/generated-sync-only/testproto/test_extensions2_pb2.py deleted file mode 100644 index 58c277cb..00000000 --- a/test/generated-sync-only/testproto/test_extensions2_pb2.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test_extensions2.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test_extensions2.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test_pb2 as testproto_dot_test__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions2.proto\x12\x04test\x1a\x14testproto/test.proto\"_\n\x15SeparateFileExtension\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32\x38\n\x03\x65xt\x12\r.test.Simple2\x18\xe9\x07 \x01(\x0b\x32\x1b.test.SeparateFileExtension') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions2_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SEPARATEFILEEXTENSION']._serialized_start=64 - _globals['_SEPARATEFILEEXTENSION']._serialized_end=159 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_extensions2_pb2.pyi b/test/generated-sync-only/testproto/test_extensions2_pb2.pyi deleted file mode 100644 index b8e9f652..00000000 --- a/test/generated-sync-only/testproto/test_extensions2_pb2.pyi +++ /dev/null @@ -1,37 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.extension_dict -import google.protobuf.message -import sys -import testproto.test_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class SeparateFileExtension(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FLAG_FIELD_NUMBER: builtins.int - flag: builtins.bool - EXT_FIELD_NUMBER: builtins.int - ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[testproto.test_pb2.Simple2, Global___SeparateFileExtension] - def __init__( - self, - *, - flag: builtins.bool | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... - -Global___SeparateFileExtension: typing_extensions.TypeAlias = SeparateFileExtension diff --git a/test/generated-sync-only/testproto/test_extensions3_pb2.py b/test/generated-sync-only/testproto/test_extensions3_pb2.py deleted file mode 100644 index 4bc39093..00000000 --- a/test/generated-sync-only/testproto/test_extensions3_pb2.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test_extensions3.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test_extensions3.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n testproto/test_extensions3.proto\x12\x05test3\x1a google/protobuf/descriptor.proto\x1a\x15testproto/test3.proto\"\x91\x01\n\x15MessageOptionsTestMsg:x\x92\x82\x19\x0cHello world!\x9a\x82\x19\x01\x41\x9a\x82\x19\x01\x42\x9a\x82\x19\x01\x43\xa0\x82\x19\x01\xaa\x82\x19\x02\x01\x02\xb2\x82\x19\x15\n\x13Hello OuterMessage3\xba\x82\x19\x17\n\x15Hello OuterMessage3 A\xba\x82\x19\x17\n\x15Hello OuterMessage3 B:=\n\x14test_field_extension\x12\x1d.google.protobuf.FieldOptions\x18\xd0\x86\x03 \x01(\t:8\n\rscalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa2\x90\x03 \x01(\t:A\n\x16repeated_scalar_option\x12\x1f.google.protobuf.MessageOptions\x18\xa3\x90\x03 \x03(\t:H\n\x0b\x65num_option\x12\x1f.google.protobuf.MessageOptions\x18\xa4\x90\x03 \x01(\x0e\x32\x10.test3.OuterEnum:Q\n\x14repeated_enum_option\x12\x1f.google.protobuf.MessageOptions\x18\xa5\x90\x03 \x03(\x0e\x32\x10.test3.OuterEnum:K\n\nmsg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa6\x90\x03 \x01(\x0b\x32\x14.test3.OuterMessage3:T\n\x13repeated_msg_option\x12\x1f.google.protobuf.MessageOptions\x18\xa7\x90\x03 \x03(\x0b\x32\x14.test3.OuterMessage3b\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_extensions3_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_MESSAGEOPTIONSTESTMSG']._loaded_options = None - _globals['_MESSAGEOPTIONSTESTMSG']._serialized_options = b'\222\202\031\014Hello world!\232\202\031\001A\232\202\031\001B\232\202\031\001C\240\202\031\001\252\202\031\002\001\002\262\202\031\025\n\023Hello OuterMessage3\272\202\031\027\n\025Hello OuterMessage3 A\272\202\031\027\n\025Hello OuterMessage3 B' - _globals['_MESSAGEOPTIONSTESTMSG']._serialized_start=101 - _globals['_MESSAGEOPTIONSTESTMSG']._serialized_end=246 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_extensions3_pb2.pyi b/test/generated-sync-only/testproto/test_extensions3_pb2.pyi deleted file mode 100644 index f2292855..00000000 --- a/test/generated-sync-only/testproto/test_extensions3_pb2.pyi +++ /dev/null @@ -1,46 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.descriptor_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.extension_dict -import google.protobuf.message -import sys -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class MessageOptionsTestMsg(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -Global___MessageOptionsTestMsg: typing_extensions.TypeAlias = MessageOptionsTestMsg - -TEST_FIELD_EXTENSION_FIELD_NUMBER: builtins.int -SCALAR_OPTION_FIELD_NUMBER: builtins.int -REPEATED_SCALAR_OPTION_FIELD_NUMBER: builtins.int -ENUM_OPTION_FIELD_NUMBER: builtins.int -REPEATED_ENUM_OPTION_FIELD_NUMBER: builtins.int -MSG_OPTION_FIELD_NUMBER: builtins.int -REPEATED_MSG_OPTION_FIELD_NUMBER: builtins.int -test_field_extension: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, builtins.str] -scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, builtins.str] -repeated_scalar_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]] -enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterEnum.ValueType] -repeated_enum_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[testproto.test3_pb2.OuterEnum.ValueType]] -msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, testproto.test3_pb2.OuterMessage3] -repeated_msg_option: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, google.protobuf.internal.containers.RepeatedCompositeFieldContainer[testproto.test3_pb2.OuterMessage3]] diff --git a/test/generated-sync-only/testproto/test_no_generic_services_pb2.py b/test/generated-sync-only/testproto/test_no_generic_services_pb2.py deleted file mode 100644 index 532c253b..00000000 --- a/test/generated-sync-only/testproto/test_no_generic_services_pb2.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test_no_generic_services.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test_no_generic_services.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(testproto/test_no_generic_services.proto\x12\x04test\"\x1b\n\x07Simple3\x12\x10\n\x08\x61_string\x18\x01 \x02(\t27\n\rATestService2\x12&\n\x04\x45\x63ho\x12\r.test.Simple3\x1a\r.test.Simple3\"\x00') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_no_generic_services_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SIMPLE3']._serialized_start=50 - _globals['_SIMPLE3']._serialized_end=77 - _globals['_ATESTSERVICE2']._serialized_start=79 - _globals['_ATESTSERVICE2']._serialized_end=134 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi b/test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi deleted file mode 100644 index 3a350109..00000000 --- a/test/generated-sync-only/testproto/test_no_generic_services_pb2.pyi +++ /dev/null @@ -1,33 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class Simple3(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___Simple3: typing_extensions.TypeAlias = Simple3 diff --git a/test/generated-sync-only/testproto/test_pb2.py b/test/generated-sync-only/testproto/test_pb2.py deleted file mode 100644 index cfeef244..00000000 --- a/test/generated-sync-only/testproto/test_pb2.py +++ /dev/null @@ -1,91 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/test.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/test.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from mypy_protobuf import extensions_pb2 as mypy__protobuf_dot_extensions__pb2 -from testproto.inner import inner_pb2 as testproto_dot_inner_dot_inner__pb2 -from testproto.nested import nested_pb2 as testproto_dot_nested_dot_nested__pb2 -from testproto import nopackage_pb2 as testproto_dot_nopackage__pb2 -from testproto import test3_pb2 as testproto_dot_test3__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14testproto/test.proto\x12\x04test\x1a\x1emypy_protobuf/extensions.proto\x1a\x1btestproto/inner/inner.proto\x1a\x1dtestproto/nested/nested.proto\x1a\x19testproto/nopackage.proto\x1a\x15testproto/test3.proto\"\x8d\t\n\x07Simple1\x12\x10\n\x08\x61_string\x18\x01 \x01(\t\x12\x19\n\x11\x61_repeated_string\x18\x02 \x03(\t\x12\x11\n\ta_boolean\x18\x03 \x01(\x08\x12\x10\n\x08\x61_uint32\x18\x04 \x01(\r\x12\x1f\n\x06\x61_enum\x18\x05 \x01(\x0e\x32\x0f.test.OuterEnum\x12)\n\x0f\x61_external_enum\x18\x06 \x01(\x0e\x32\x10.test3.OuterEnum\x12\x1d\n\x07\x61_inner\x18\x07 \x01(\x0b\x32\x0c.inner.Inner\x12-\n\x08\x61_nested\x18\x0c \x01(\x0b\x32\x1b.test.nested_package.Nested\x12+\n\ninner_enum\x18\x08 \x01(\x0e\x32\x17.test.Simple1.InnerEnum\x12/\n\x0erep_inner_enum\x18\t \x03(\x0e\x32\x17.test.Simple1.InnerEnum\x12\x31\n\rinner_message\x18\n \x01(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x35\n\x11rep_inner_message\x18\x0b \x03(\x0b\x32\x1a.test.Simple1.InnerMessage\x12\x1e\n\nno_package\x18\r \x01(\x0b\x32\n.NoPackage\x12\x42\n\x0bnested_enum\x18\x0e \x01(\x0e\x32-.test.nested_package.AnotherNested.NestedEnum\x12H\n\x0enested_message\x18\x0f \x01(\x0b\x32\x30.test.nested_package.AnotherNested.NestedMessage\x12\x13\n\ta_oneof_1\x18\x10 \x01(\tH\x00\x12\x13\n\ta_oneof_2\x18\x11 \x01(\tH\x00\x12/\n\x16outer_message_in_oneof\x18\x12 \x01(\x0b\x32\r.test.Simple2H\x00\x12.\n\x13outer_enum_in_oneof\x18\x13 \x01(\x0e\x32\x0f.test.OuterEnumH\x00\x12\x36\n\x13inner_enum_in_oneof\x18\x14 \x01(\x0e\x32\x17.test.Simple1.InnerEnumH\x00\x12\x33\n\x07user_id\x18\x15 \x01(\rB\"\xfaG\x1ftest/test_generated_mypy.UserId\x12\x30\n\x05\x65mail\x18\x16 \x01(\tB!\xfaG\x1etest/test_generated_mypy.Email\x12x\n\x0c\x65mail_by_uid\x18\x17 \x03(\x0b\x32\x1d.test.Simple1.EmailByUidEntryBC\x82H\x1ftest/test_generated_mypy.UserId\x8aH\x1etest/test_generated_mypy.Email\x1a\x0e\n\x0cInnerMessage\x1a\x31\n\x0f\x45mailByUidEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\tInnerEnum\x12\n\n\x06INNER1\x10\x01\x12\n\n\x06INNER2\x10\x02*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\x42\t\n\x07\x61_oneof\"&\n\x07Simple2\x12\x10\n\x08\x61_string\x18\x01 \x02(\t*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02\"R\n\x0b\x45xtensions1\x12\x13\n\x0b\x65xt1_string\x18\x01 \x01(\t2.\n\x03\x65xt\x12\r.test.Simple1\x18\xe8\x07 \x01(\x0b\x32\x11.test.Extensions1\"K\n\x0b\x45xtensions2\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x08\x32.\n\x03\x66oo\x12\r.test.Simple1\x18\xe4\x0f \x01(\x0b\x32\x11.test.Extensions2\"\x15\n\x04None\x12\r\n\x05valid\x18\x01 \x01(\x03\"\x80\x05\n\x16PythonReservedKeywords\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\x12\x19\n\x02in\x18\x02 \x01(\x0b\x32\r.test.Simple2\x12\x30\n\x02is\x18\x03 \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x12\x0b\n\x03\x66or\x18\x05 \x01(\x03\x12\x0b\n\x03try\x18\x06 \x01(\x03\x12\x0b\n\x03\x64\x65\x66\x18\x07 \x01(\x03\x12\x10\n\x08nonlocal\x18\x08 \x01(\x03\x12\r\n\x05while\x18\t \x01(\x03\x12\x0b\n\x03\x61nd\x18\n \x01(\x03\x12\x0b\n\x03\x64\x65l\x18\x0b \x01(\x03\x12\x0e\n\x06global\x18\x0c \x01(\x03\x12\x0b\n\x03not\x18\r \x01(\x03\x12\x0c\n\x04with\x18\x0e \x01(\x03\x12\n\n\x02\x61s\x18\x0f \x01(\x03\x12\x0c\n\x04\x65lif\x18\x10 \x01(\x03\x12\n\n\x02if\x18\x11 \x01(\x03\x12\n\n\x02or\x18\x12 \x01(\x03\x12\r\n\x05yield\x18\x13 \x01(\x03\x12\x0e\n\x06\x61ssert\x18\x14 \x01(\x03\x12\x0c\n\x04\x65lse\x18\x15 \x01(\x03\x12\x0e\n\x06import\x18\x16 \x01(\x03\x12\x0c\n\x04pass\x18\x17 \x01(\x03\x12\r\n\x05\x62reak\x18\x18 \x01(\x03\x12\x0e\n\x06\x65xcept\x18\x19 \x01(\x03\x12\r\n\x05raise\x18\x1a \x01(\x03\x12\r\n\x05\x46\x61lse\x18\x1b \x01(\x03\x12\x0c\n\x04True\x18\x1d \x01(\x03\x12\r\n\x05\x63lass\x18\x1e \x01(\x03\x12\x18\n\x04none\x18\x1c \x01(\x0b\x32\n.test.None\x12\x33\n\x05valid\x18\x1f \x01(\x0e\x32$.test.PythonReservedKeywords.finally\x1a)\n\x06lambda\x12\x10\n\x08\x63ontinue\x18\x01 \x01(\x03\x12\r\n\x05valid\x18\x02 \x01(\x03\"-\n\x07\x66inally\x12\x0c\n\x08\x63ontinue\x10\x01\x12\x14\n\x10valid_in_finally\x10\x02\"+\n\x1bPythonReservedKeywordsSmall\x12\x0c\n\x04\x66rom\x18\x01 \x02(\x03\"\x19\n\tSelfField\x12\x0c\n\x04self\x18\x01 \x01(\x03\")\n\x11\x44\x65precatedMessage\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01\"3\n\x1b\x44\x65precatedMessageBadComment\x12\x10\n\x08\x61_string\x18\x01 \x01(\t:\x02\x18\x01*\x1d\n\tOuterEnum\x12\x07\n\x03\x46OO\x10\x01\x12\x07\n\x03\x42\x41R\x10\x02*G\n\x0fNamingConflicts\x12\x08\n\x04Name\x10\x01\x12\t\n\x05Value\x10\x02\x12\x08\n\x04keys\x10\x03\x12\n\n\x06values\x10\x04\x12\t\n\x05items\x10\x05*<\n\x0e\x44\x65precatedEnum\x12\x12\n\x0e\x44\x45PRECATED_ONE\x10\x01\x12\x12\n\x0e\x44\x45PRECATED_TWO\x10\x02\x1a\x02\x18\x01\x32\xde\x01\n\x1dPythonReservedKeywordsService\x12>\n\x06lambda\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00\x12\x31\n\x12valid_method_name1\x12\r.test.Simple1\x1a\n.test.None\"\x00\x12J\n\x12valid_method_name2\x12\r.test.Simple1\x1a#.test.PythonReservedKeywords.lambda\"\x00') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.test_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_DEPRECATEDENUM']._loaded_options = None - _globals['_DEPRECATEDENUM']._serialized_options = b'\030\001' - _globals['_SIMPLE1_EMAILBYUIDENTRY']._loaded_options = None - _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_options = b'8\001' - _globals['_SIMPLE1'].fields_by_name['user_id']._loaded_options = None - _globals['_SIMPLE1'].fields_by_name['user_id']._serialized_options = b'\372G\037test/test_generated_mypy.UserId' - _globals['_SIMPLE1'].fields_by_name['email']._loaded_options = None - _globals['_SIMPLE1'].fields_by_name['email']._serialized_options = b'\372G\036test/test_generated_mypy.Email' - _globals['_SIMPLE1'].fields_by_name['email_by_uid']._loaded_options = None - _globals['_SIMPLE1'].fields_by_name['email_by_uid']._serialized_options = b'\202H\037test/test_generated_mypy.UserId\212H\036test/test_generated_mypy.Email' - _globals['_DEPRECATEDMESSAGE']._loaded_options = None - _globals['_DEPRECATEDMESSAGE']._serialized_options = b'\030\001' - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._loaded_options = None - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_options = b'\030\001' - _globals['_OUTERENUM']._serialized_start=2375 - _globals['_OUTERENUM']._serialized_end=2404 - _globals['_NAMINGCONFLICTS']._serialized_start=2406 - _globals['_NAMINGCONFLICTS']._serialized_end=2477 - _globals['_DEPRECATEDENUM']._serialized_start=2479 - _globals['_DEPRECATEDENUM']._serialized_end=2539 - _globals['_SIMPLE1']._serialized_start=173 - _globals['_SIMPLE1']._serialized_end=1338 - _globals['_SIMPLE1_INNERMESSAGE']._serialized_start=1214 - _globals['_SIMPLE1_INNERMESSAGE']._serialized_end=1228 - _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_start=1230 - _globals['_SIMPLE1_EMAILBYUIDENTRY']._serialized_end=1279 - _globals['_SIMPLE1_INNERENUM']._serialized_start=1281 - _globals['_SIMPLE1_INNERENUM']._serialized_end=1316 - _globals['_SIMPLE2']._serialized_start=1340 - _globals['_SIMPLE2']._serialized_end=1378 - _globals['_EXTENSIONS1']._serialized_start=1380 - _globals['_EXTENSIONS1']._serialized_end=1462 - _globals['_EXTENSIONS2']._serialized_start=1464 - _globals['_EXTENSIONS2']._serialized_end=1539 - _globals['_NONE']._serialized_start=1541 - _globals['_NONE']._serialized_end=1562 - _globals['_PYTHONRESERVEDKEYWORDS']._serialized_start=1565 - _globals['_PYTHONRESERVEDKEYWORDS']._serialized_end=2205 - _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_start=2117 - _globals['_PYTHONRESERVEDKEYWORDS_LAMBDA']._serialized_end=2158 - _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_start=2160 - _globals['_PYTHONRESERVEDKEYWORDS_FINALLY']._serialized_end=2205 - _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_start=2207 - _globals['_PYTHONRESERVEDKEYWORDSSMALL']._serialized_end=2250 - _globals['_SELFFIELD']._serialized_start=2252 - _globals['_SELFFIELD']._serialized_end=2277 - _globals['_DEPRECATEDMESSAGE']._serialized_start=2279 - _globals['_DEPRECATEDMESSAGE']._serialized_end=2320 - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_start=2322 - _globals['_DEPRECATEDMESSAGEBADCOMMENT']._serialized_end=2373 - _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_start=2542 - _globals['_PYTHONRESERVEDKEYWORDSSERVICE']._serialized_end=2764 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated-sync-only/testproto/test_pb2.pyi b/test/generated-sync-only/testproto/test_pb2.pyi deleted file mode 100644 index 3058335b..00000000 --- a/test/generated-sync-only/testproto/test_pb2.pyi +++ /dev/null @@ -1,439 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Proto 2 test file.""" - -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.internal.extension_dict -import google.protobuf.message -import sys -import test.test_generated_mypy -import testproto.inner.inner_pb2 -import testproto.nested.nested_pb2 -import testproto.nopackage_pb2 -import testproto.test3_pb2 -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -if sys.version_info >= (3, 13): - from warnings import deprecated -else: - from typing_extensions import deprecated - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _OuterEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - FOO: _OuterEnum.ValueType # 1 - """FOO""" - BAR: _OuterEnum.ValueType # 2 - """BAR""" - -class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): - """Outer Enum""" - -FOO: OuterEnum.ValueType # 1 -"""FOO""" -BAR: OuterEnum.ValueType # 2 -"""BAR""" -Global___OuterEnum: typing_extensions.TypeAlias = OuterEnum - -class _NamingConflicts: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _NamingConflictsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NamingConflicts.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - -class NamingConflicts(_NamingConflicts, metaclass=_NamingConflictsEnumTypeWrapper): - """Naming conflicts!""" - -Name: NamingConflicts.ValueType # 1 -Value: NamingConflicts.ValueType # 2 -keys: NamingConflicts.ValueType # 3 -values: NamingConflicts.ValueType # 4 -items: NamingConflicts.ValueType # 5 -"""See https://github.com/protocolbuffers/protobuf/issues/8803 -proto itself generates broken code when DESCRIPTOR is there -DESCRIPTOR = 8; -""" -Global___NamingConflicts: typing_extensions.TypeAlias = NamingConflicts - -class _DeprecatedEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _DeprecatedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DeprecatedEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEPRECATED_ONE: _DeprecatedEnum.ValueType # 1 - DEPRECATED_TWO: _DeprecatedEnum.ValueType # 2 - -@deprecated("""This enum is deprecated\n2 lines of comments\n"Quotes in comments"\nand 'single quotes'\nTrailing comment""") -class DeprecatedEnum(_DeprecatedEnum, metaclass=_DeprecatedEnumEnumTypeWrapper): ... - -DEPRECATED_ONE: DeprecatedEnum.ValueType # 1 -DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 -Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum - -@typing.final -class Simple1(google.protobuf.message.Message): - """Message with one of everything""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _InnerEnum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Simple1._InnerEnum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INNER1: Simple1._InnerEnum.ValueType # 1 - """INNER1""" - INNER2: Simple1._InnerEnum.ValueType # 2 - """INNER2""" - - class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): - """Inner Enum""" - - INNER1: Simple1.InnerEnum.ValueType # 1 - """INNER1""" - INNER2: Simple1.InnerEnum.ValueType # 2 - """INNER2""" - - @typing.final - class InnerMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - - @typing.final - class EmailByUidEntry(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - KEY_FIELD_NUMBER: builtins.int - VALUE_FIELD_NUMBER: builtins.int - key: builtins.int - value: builtins.str - def __init__( - self, - *, - key: builtins.int | None = ..., - value: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - - A_STRING_FIELD_NUMBER: builtins.int - A_REPEATED_STRING_FIELD_NUMBER: builtins.int - A_BOOLEAN_FIELD_NUMBER: builtins.int - A_UINT32_FIELD_NUMBER: builtins.int - A_ENUM_FIELD_NUMBER: builtins.int - A_EXTERNAL_ENUM_FIELD_NUMBER: builtins.int - A_INNER_FIELD_NUMBER: builtins.int - A_NESTED_FIELD_NUMBER: builtins.int - INNER_ENUM_FIELD_NUMBER: builtins.int - REP_INNER_ENUM_FIELD_NUMBER: builtins.int - INNER_MESSAGE_FIELD_NUMBER: builtins.int - REP_INNER_MESSAGE_FIELD_NUMBER: builtins.int - NO_PACKAGE_FIELD_NUMBER: builtins.int - NESTED_ENUM_FIELD_NUMBER: builtins.int - NESTED_MESSAGE_FIELD_NUMBER: builtins.int - A_ONEOF_1_FIELD_NUMBER: builtins.int - A_ONEOF_2_FIELD_NUMBER: builtins.int - OUTER_MESSAGE_IN_ONEOF_FIELD_NUMBER: builtins.int - OUTER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - INNER_ENUM_IN_ONEOF_FIELD_NUMBER: builtins.int - USER_ID_FIELD_NUMBER: builtins.int - EMAIL_FIELD_NUMBER: builtins.int - EMAIL_BY_UID_FIELD_NUMBER: builtins.int - a_string: builtins.str - a_boolean: builtins.bool - a_uint32: builtins.int - a_enum: Global___OuterEnum.ValueType - a_external_enum: testproto.test3_pb2.OuterEnum.ValueType - inner_enum: Global___Simple1.InnerEnum.ValueType - nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType - a_oneof_1: builtins.str - a_oneof_2: builtins.str - outer_enum_in_oneof: Global___OuterEnum.ValueType - inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType - user_id: test.test_generated_mypy.UserId - email: test.test_generated_mypy.Email - @property - def a_repeated_string(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - @property - def a_inner(self) -> testproto.inner.inner_pb2.Inner: ... - @property - def a_nested(self) -> testproto.nested.nested_pb2.Nested: ... - @property - def rep_inner_enum(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[Global___Simple1.InnerEnum.ValueType]: ... - @property - def inner_message(self) -> Global___Simple1.InnerMessage: ... - @property - def rep_inner_message(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Simple1.InnerMessage]: ... - @property - def no_package(self) -> testproto.nopackage_pb2.NoPackage: ... - @property - def nested_message(self) -> testproto.nested.nested_pb2.AnotherNested.NestedMessage: ... - @property - def outer_message_in_oneof(self) -> Global___Simple2: ... - @property - def email_by_uid(self) -> google.protobuf.internal.containers.ScalarMap[test.test_generated_mypy.UserId, test.test_generated_mypy.Email]: ... - def __init__( - self, - *, - a_string: builtins.str | None = ..., - a_repeated_string: collections.abc.Iterable[builtins.str] | None = ..., - a_boolean: builtins.bool | None = ..., - a_uint32: builtins.int | None = ..., - a_enum: Global___OuterEnum.ValueType | None = ..., - a_external_enum: testproto.test3_pb2.OuterEnum.ValueType | None = ..., - a_inner: testproto.inner.inner_pb2.Inner | None = ..., - a_nested: testproto.nested.nested_pb2.Nested | None = ..., - inner_enum: Global___Simple1.InnerEnum.ValueType | None = ..., - rep_inner_enum: collections.abc.Iterable[Global___Simple1.InnerEnum.ValueType] | None = ..., - inner_message: Global___Simple1.InnerMessage | None = ..., - rep_inner_message: collections.abc.Iterable[Global___Simple1.InnerMessage] | None = ..., - no_package: testproto.nopackage_pb2.NoPackage | None = ..., - nested_enum: testproto.nested.nested_pb2.AnotherNested.NestedEnum.ValueType | None = ..., - nested_message: testproto.nested.nested_pb2.AnotherNested.NestedMessage | None = ..., - a_oneof_1: builtins.str | None = ..., - a_oneof_2: builtins.str | None = ..., - outer_message_in_oneof: Global___Simple2 | None = ..., - outer_enum_in_oneof: Global___OuterEnum.ValueType | None = ..., - inner_enum_in_oneof: Global___Simple1.InnerEnum.ValueType | None = ..., - user_id: test.test_generated_mypy.UserId | None = ..., - email: test.test_generated_mypy.Email | None = ..., - email_by_uid: collections.abc.Mapping[test.test_generated_mypy.UserId, test.test_generated_mypy.Email] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "user_id", b"user_id"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_boolean", b"a_boolean", "a_enum", b"a_enum", "a_external_enum", b"a_external_enum", "a_inner", b"a_inner", "a_nested", b"a_nested", "a_oneof", b"a_oneof", "a_oneof_1", b"a_oneof_1", "a_oneof_2", b"a_oneof_2", "a_repeated_string", b"a_repeated_string", "a_string", b"a_string", "a_uint32", b"a_uint32", "email", b"email", "email_by_uid", b"email_by_uid", "inner_enum", b"inner_enum", "inner_enum_in_oneof", b"inner_enum_in_oneof", "inner_message", b"inner_message", "nested_enum", b"nested_enum", "nested_message", b"nested_message", "no_package", b"no_package", "outer_enum_in_oneof", b"outer_enum_in_oneof", "outer_message_in_oneof", b"outer_message_in_oneof", "rep_inner_enum", b"rep_inner_enum", "rep_inner_message", b"rep_inner_message", "user_id", b"user_id"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["a_oneof", b"a_oneof"]) -> typing.Literal["a_oneof_1", "a_oneof_2", "outer_message_in_oneof", "outer_enum_in_oneof", "inner_enum_in_oneof"] | None: ... - -Global___Simple1: typing_extensions.TypeAlias = Simple1 - -@typing.final -class Simple2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___Simple2: typing_extensions.TypeAlias = Simple2 - -@typing.final -class Extensions1(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EXT1_STRING_FIELD_NUMBER: builtins.int - ext1_string: builtins.str - EXT_FIELD_NUMBER: builtins.int - ext: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions1] - """ext""" - def __init__( - self, - *, - ext1_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["ext1_string", b"ext1_string"]) -> None: ... - -Global___Extensions1: typing_extensions.TypeAlias = Extensions1 - -@typing.final -class Extensions2(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FLAG_FIELD_NUMBER: builtins.int - flag: builtins.bool - FOO_FIELD_NUMBER: builtins.int - foo: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[Global___Simple1, Global___Extensions2] - """foo""" - def __init__( - self, - *, - flag: builtins.bool | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["flag", b"flag"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["flag", b"flag"]) -> None: ... - -Global___Extensions2: typing_extensions.TypeAlias = Extensions2 - -@typing.final -class _r_None(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - VALID_FIELD_NUMBER: builtins.int - valid: builtins.int - def __init__( - self, - *, - valid: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["valid", b"valid"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["valid", b"valid"]) -> None: ... - -Global____r_None: typing_extensions.TypeAlias = _r_None - -@typing.final -class PythonReservedKeywords(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _finally: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _finallyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PythonReservedKeywords._finally.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - valid_in_finally: PythonReservedKeywords._finally.ValueType # 2 - - class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... - valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 - - @typing.final - class _r_lambda(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CONTINUE_FIELD_NUMBER: builtins.int - VALID_FIELD_NUMBER: builtins.int - valid: builtins.int - def __init__( - self, - *, - valid: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["continue", b"continue", "valid", b"valid"]) -> None: ... - - FROM_FIELD_NUMBER: builtins.int - IN_FIELD_NUMBER: builtins.int - IS_FIELD_NUMBER: builtins.int - FOR_FIELD_NUMBER: builtins.int - TRY_FIELD_NUMBER: builtins.int - DEF_FIELD_NUMBER: builtins.int - NONLOCAL_FIELD_NUMBER: builtins.int - WHILE_FIELD_NUMBER: builtins.int - AND_FIELD_NUMBER: builtins.int - DEL_FIELD_NUMBER: builtins.int - GLOBAL_FIELD_NUMBER: builtins.int - NOT_FIELD_NUMBER: builtins.int - WITH_FIELD_NUMBER: builtins.int - AS_FIELD_NUMBER: builtins.int - ELIF_FIELD_NUMBER: builtins.int - IF_FIELD_NUMBER: builtins.int - OR_FIELD_NUMBER: builtins.int - YIELD_FIELD_NUMBER: builtins.int - ASSERT_FIELD_NUMBER: builtins.int - ELSE_FIELD_NUMBER: builtins.int - IMPORT_FIELD_NUMBER: builtins.int - PASS_FIELD_NUMBER: builtins.int - BREAK_FIELD_NUMBER: builtins.int - EXCEPT_FIELD_NUMBER: builtins.int - RAISE_FIELD_NUMBER: builtins.int - FALSE_FIELD_NUMBER: builtins.int - TRUE_FIELD_NUMBER: builtins.int - CLASS_FIELD_NUMBER: builtins.int - NONE_FIELD_NUMBER: builtins.int - VALID_FIELD_NUMBER: builtins.int - valid: Global___PythonReservedKeywords._r_finally.ValueType - @property - def none(self) -> Global____r_None: - """Test unreserved identifiers w/ reserved message names""" - - def __init__( - self, - *, - none: Global____r_None | None = ..., - valid: Global___PythonReservedKeywords._r_finally.ValueType | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["False", b"False", "True", b"True", "and", b"and", "as", b"as", "assert", b"assert", "break", b"break", "class", b"class", "def", b"def", "del", b"del", "elif", b"elif", "else", b"else", "except", b"except", "for", b"for", "from", b"from", "global", b"global", "if", b"if", "import", b"import", "in", b"in", "is", b"is", "none", b"none", "nonlocal", b"nonlocal", "not", b"not", "or", b"or", "pass", b"pass", "raise", b"raise", "try", b"try", "valid", b"valid", "while", b"while", "with", b"with", "yield", b"yield"]) -> None: ... - -Global___PythonReservedKeywords: typing_extensions.TypeAlias = PythonReservedKeywords - -@typing.final -class PythonReservedKeywordsSmall(google.protobuf.message.Message): - """Do one with just one arg - to make sure it's syntactically correct""" - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FROM_FIELD_NUMBER: builtins.int - def __init__( - self, - ) -> None: ... - def HasField(self, field_name: typing.Literal["from", b"from"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["from", b"from"]) -> None: ... - -Global___PythonReservedKeywordsSmall: typing_extensions.TypeAlias = PythonReservedKeywordsSmall - -@typing.final -class SelfField(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SELF_FIELD_NUMBER: builtins.int - self: builtins.int - """Field self -> must generate an __init__ method w/ different name""" - def __init__( - self_, # pyright: ignore[reportSelfClsParameterName] - *, - self: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["self", b"self"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["self", b"self"]) -> None: ... - -Global___SelfField: typing_extensions.TypeAlias = SelfField - -@deprecated("""This message is deprecated""") -@typing.final -class DeprecatedMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage - -@deprecated("""This message has been marked as deprecated using proto message options.""") -@typing.final -class DeprecatedMessageBadComment(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - A_STRING_FIELD_NUMBER: builtins.int - a_string: builtins.str - def __init__( - self, - *, - a_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["a_string", b"a_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["a_string", b"a_string"]) -> None: ... - -Global___DeprecatedMessageBadComment: typing_extensions.TypeAlias = DeprecatedMessageBadComment diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2.py b/test/generated_async_only/testproto/grpc/dummy_pb2.py similarity index 100% rename from test/generated-async-only/testproto/grpc/dummy_pb2.py rename to test/generated_async_only/testproto/grpc/dummy_pb2.py diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2.pyi b/test/generated_async_only/testproto/grpc/dummy_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/grpc/dummy_pb2.pyi rename to test/generated_async_only/testproto/grpc/dummy_pb2.pyi diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.py b/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.py similarity index 100% rename from test/generated-async-only/testproto/grpc/dummy_pb2_grpc.py rename to test/generated_async_only/testproto/grpc/dummy_pb2_grpc.py index eef0f7f6..1e06e396 100644 --- a/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.py +++ b/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.py @@ -1,8 +1,8 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" +import grpc import warnings -import grpc from testproto.grpc import dummy_pb2 as testproto_dot_grpc_dot_dummy__pb2 GRPC_GENERATED_VERSION = '1.76.0' diff --git a/test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi similarity index 100% rename from test/generated-async-only/testproto/grpc/dummy_pb2_grpc.pyi rename to test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi diff --git a/test/generated-async-only/testproto/grpc/import_pb2.py b/test/generated_async_only/testproto/grpc/import_pb2.py similarity index 100% rename from test/generated-async-only/testproto/grpc/import_pb2.py rename to test/generated_async_only/testproto/grpc/import_pb2.py diff --git a/test/generated-async-only/testproto/grpc/import_pb2.pyi b/test/generated_async_only/testproto/grpc/import_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/grpc/import_pb2.pyi rename to test/generated_async_only/testproto/grpc/import_pb2.pyi diff --git a/test/generated-async-only/testproto/grpc/import_pb2_grpc.py b/test/generated_async_only/testproto/grpc/import_pb2_grpc.py similarity index 100% rename from test/generated-async-only/testproto/grpc/import_pb2_grpc.py rename to test/generated_async_only/testproto/grpc/import_pb2_grpc.py index 0a09fd20..2c1755d6 100644 --- a/test/generated-async-only/testproto/grpc/import_pb2_grpc.py +++ b/test/generated_async_only/testproto/grpc/import_pb2_grpc.py @@ -1,8 +1,8 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" +import grpc import warnings -import grpc from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from testproto import test_pb2 as testproto_dot_test__pb2 diff --git a/test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi b/test/generated_async_only/testproto/grpc/import_pb2_grpc.pyi similarity index 100% rename from test/generated-async-only/testproto/grpc/import_pb2_grpc.pyi rename to test/generated_async_only/testproto/grpc/import_pb2_grpc.pyi diff --git a/test/generated-concrete/google/protobuf/duration_pb2.pyi b/test/generated_concrete/google/protobuf/duration_pb2.pyi similarity index 100% rename from test/generated-concrete/google/protobuf/duration_pb2.pyi rename to test/generated_concrete/google/protobuf/duration_pb2.pyi diff --git a/test/generated-concrete/mypy_protobuf/extensions_pb2.pyi b/test/generated_concrete/mypy_protobuf/extensions_pb2.pyi similarity index 100% rename from test/generated-concrete/mypy_protobuf/extensions_pb2.pyi rename to test/generated_concrete/mypy_protobuf/extensions_pb2.pyi diff --git a/test/generated-async-only/testproto/Capitalized/Capitalized_pb2.pyi b/test/generated_concrete/testproto/Capitalized/Capitalized_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/Capitalized/Capitalized_pb2.pyi rename to test/generated_concrete/testproto/Capitalized/Capitalized_pb2.pyi diff --git a/test/generated-async-only/testproto/comment_special_chars_pb2.pyi b/test/generated_concrete/testproto/comment_special_chars_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/comment_special_chars_pb2.pyi rename to test/generated_concrete/testproto/comment_special_chars_pb2.pyi diff --git a/test/generated-async-only/testproto/dot/com/test_pb2.pyi b/test/generated_concrete/testproto/dot/com/test_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/dot/com/test_pb2.pyi rename to test/generated_concrete/testproto/dot/com/test_pb2.pyi diff --git a/test/generated-async-only/testproto/edition2024_pb2.pyi b/test/generated_concrete/testproto/edition2024_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/edition2024_pb2.pyi rename to test/generated_concrete/testproto/edition2024_pb2.pyi diff --git a/test/generated-concrete/testproto/grpc/dummy_pb2.pyi b/test/generated_concrete/testproto/grpc/dummy_pb2.pyi similarity index 100% rename from test/generated-concrete/testproto/grpc/dummy_pb2.pyi rename to test/generated_concrete/testproto/grpc/dummy_pb2.pyi diff --git a/test/generated-concrete/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi similarity index 100% rename from test/generated-concrete/testproto/grpc/dummy_pb2_grpc.pyi rename to test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi diff --git a/test/generated-concrete/testproto/grpc/import_pb2.pyi b/test/generated_concrete/testproto/grpc/import_pb2.pyi similarity index 100% rename from test/generated-concrete/testproto/grpc/import_pb2.pyi rename to test/generated_concrete/testproto/grpc/import_pb2.pyi diff --git a/test/generated-concrete/testproto/grpc/import_pb2_grpc.pyi b/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi similarity index 100% rename from test/generated-concrete/testproto/grpc/import_pb2_grpc.pyi rename to test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi diff --git a/test/generated-async-only/testproto/inner/inner_pb2.pyi b/test/generated_concrete/testproto/inner/inner_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/inner/inner_pb2.pyi rename to test/generated_concrete/testproto/inner/inner_pb2.pyi diff --git a/test/generated-async-only/testproto/nested/nested_pb2.pyi b/test/generated_concrete/testproto/nested/nested_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/nested/nested_pb2.pyi rename to test/generated_concrete/testproto/nested/nested_pb2.pyi diff --git a/test/generated-async-only/testproto/nopackage_pb2.pyi b/test/generated_concrete/testproto/nopackage_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/nopackage_pb2.pyi rename to test/generated_concrete/testproto/nopackage_pb2.pyi diff --git a/test/generated-async-only/testproto/readme_enum_pb2.pyi b/test/generated_concrete/testproto/readme_enum_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/readme_enum_pb2.pyi rename to test/generated_concrete/testproto/readme_enum_pb2.pyi diff --git a/test/generated-async-only/testproto/reexport_pb2.pyi b/test/generated_concrete/testproto/reexport_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/reexport_pb2.pyi rename to test/generated_concrete/testproto/reexport_pb2.pyi diff --git a/test/generated-async-only/testproto/test3_pb2.pyi b/test/generated_concrete/testproto/test3_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/test3_pb2.pyi rename to test/generated_concrete/testproto/test3_pb2.pyi diff --git a/test/generated-async-only/testproto/test_extensions2_pb2.pyi b/test/generated_concrete/testproto/test_extensions2_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/test_extensions2_pb2.pyi rename to test/generated_concrete/testproto/test_extensions2_pb2.pyi diff --git a/test/generated-async-only/testproto/test_extensions3_pb2.pyi b/test/generated_concrete/testproto/test_extensions3_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/test_extensions3_pb2.pyi rename to test/generated_concrete/testproto/test_extensions3_pb2.pyi diff --git a/test/generated-async-only/testproto/test_no_generic_services_pb2.pyi b/test/generated_concrete/testproto/test_no_generic_services_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/test_no_generic_services_pb2.pyi rename to test/generated_concrete/testproto/test_no_generic_services_pb2.pyi diff --git a/test/generated-async-only/testproto/test_pb2.pyi b/test/generated_concrete/testproto/test_pb2.pyi similarity index 100% rename from test/generated-async-only/testproto/test_pb2.pyi rename to test/generated_concrete/testproto/test_pb2.pyi diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2.py b/test/generated_sync_only/testproto/grpc/dummy_pb2.py similarity index 100% rename from test/generated-sync-only/testproto/grpc/dummy_pb2.py rename to test/generated_sync_only/testproto/grpc/dummy_pb2.py diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2.pyi b/test/generated_sync_only/testproto/grpc/dummy_pb2.pyi similarity index 100% rename from test/generated-sync-only/testproto/grpc/dummy_pb2.pyi rename to test/generated_sync_only/testproto/grpc/dummy_pb2.pyi diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.py b/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.py similarity index 100% rename from test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.py rename to test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.py index eef0f7f6..1e06e396 100644 --- a/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.py +++ b/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.py @@ -1,8 +1,8 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" +import grpc import warnings -import grpc from testproto.grpc import dummy_pb2 as testproto_dot_grpc_dot_dummy__pb2 GRPC_GENERATED_VERSION = '1.76.0' diff --git a/test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi similarity index 100% rename from test/generated-sync-only/testproto/grpc/dummy_pb2_grpc.pyi rename to test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi diff --git a/test/generated-sync-only/testproto/grpc/import_pb2.py b/test/generated_sync_only/testproto/grpc/import_pb2.py similarity index 100% rename from test/generated-sync-only/testproto/grpc/import_pb2.py rename to test/generated_sync_only/testproto/grpc/import_pb2.py diff --git a/test/generated-sync-only/testproto/grpc/import_pb2.pyi b/test/generated_sync_only/testproto/grpc/import_pb2.pyi similarity index 100% rename from test/generated-sync-only/testproto/grpc/import_pb2.pyi rename to test/generated_sync_only/testproto/grpc/import_pb2.pyi diff --git a/test/generated-sync-only/testproto/grpc/import_pb2_grpc.py b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.py similarity index 100% rename from test/generated-sync-only/testproto/grpc/import_pb2_grpc.py rename to test/generated_sync_only/testproto/grpc/import_pb2_grpc.py index 0a09fd20..2c1755d6 100644 --- a/test/generated-sync-only/testproto/grpc/import_pb2_grpc.py +++ b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.py @@ -1,8 +1,8 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" +import grpc import warnings -import grpc from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from testproto import test_pb2 as testproto_dot_test__pb2 diff --git a/test/generated-sync-only/testproto/grpc/import_pb2_grpc.pyi b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi similarity index 100% rename from test/generated-sync-only/testproto/grpc/import_pb2_grpc.pyi rename to test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi diff --git a/test/sync_only/test_sync_only.py b/test/sync_only/test_sync_only.py new file mode 100644 index 00000000..3970c745 --- /dev/null +++ b/test/sync_only/test_sync_only.py @@ -0,0 +1,25 @@ +""" +Type-checking test for sync_only GRPC stubs. + +This module is run through mypy to validate that stubs generated with the +only_sync flag have the correct types: +- Regular (non-generic) Stub class that only accepts grpc.Channel +- Servicer methods use Iterator for client streaming (not _MaybeAsyncIterator) +- add_XXXServicer_to_server accepts grpc.Server +""" + +import grpc +from testproto.grpc import dummy_pb2_grpc, dummy_pb2 + + +class AsyncOnlyServicer(dummy_pb2_grpc.DummyServiceServicer): + def UnaryUnary( + self, + request: dummy_pb2.DummyRequest, + context: grpc.ServicerContext, + ) -> dummy_pb2.DummyReply: + return dummy_pb2.DummyReply(value=request.value[::-1]) + + +stub = dummy_pb2_grpc.DummyServiceStub(channel=grpc.insecure_channel("localhost:50051")) +stub.UnaryUnary(dummy_pb2.DummyRequest(value="test")) diff --git a/test/test_async_only.py b/test/test_async_only.py deleted file mode 100644 index 3d0ffdf6..00000000 --- a/test/test_async_only.py +++ /dev/null @@ -1,18 +0,0 @@ -""" -Type-checking test for async_only GRPC stubs. - -This module is run through mypy to validate that stubs generated with the -only_async flag have the correct types: -- Regular (non-generic) Stub class that only accepts grpc.aio.Channel -- No AsyncStub type alias (the stub itself is async-only) -- Servicer methods use AsyncIterator for client streaming (not _MaybeAsyncIterator) -- add_XXXServicer_to_server accepts grpc.aio.Server -""" - -from testproto.grpc.dummy_pb2_grpc import DummyServiceServicer - - -class AsyncOnlyServicer(DummyServiceServicer): - """Test servicer for async_only stubs - intentionally incomplete.""" - - pass diff --git a/test/test_sync_only.py b/test/test_sync_only.py deleted file mode 100644 index 5fc10839..00000000 --- a/test/test_sync_only.py +++ /dev/null @@ -1,17 +0,0 @@ -""" -Type-checking test for sync_only GRPC stubs. - -This module is run through mypy to validate that stubs generated with the -only_sync flag have the correct types: -- Regular (non-generic) Stub class that only accepts grpc.Channel -- Servicer methods use Iterator for client streaming (not _MaybeAsyncIterator) -- add_XXXServicer_to_server accepts grpc.Server -""" - -from testproto.grpc.dummy_pb2_grpc import DummyServiceServicer - - -class SyncOnlyServicer(DummyServiceServicer): - """Test servicer for sync_only stubs - intentionally incomplete.""" - - pass From 3298f4bcc1a118e70262a4fe5c34eb50f3f79272 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Wed, 26 Nov 2025 19:06:04 -0800 Subject: [PATCH 6/9] add constructor typing Signed-off-by: Aidan Jensen --- mypy_protobuf/main.py | 12 ++++++++++++ test/async_only/test_async_only.py | 3 ++- .../testproto/grpc/dummy_pb2_grpc.pyi | 4 ++++ .../testproto/grpc/import_pb2_grpc.pyi | 2 ++ .../testproto/grpc/dummy_pb2_grpc.pyi | 4 ++++ .../testproto/grpc/import_pb2_grpc.pyi | 2 ++ test/sync_only/test_sync_only.py | 6 ++++-- 7 files changed, 30 insertions(+), 3 deletions(-) diff --git a/mypy_protobuf/main.py b/mypy_protobuf/main.py index e3de4b0a..d05cb288 100644 --- a/mypy_protobuf/main.py +++ b/mypy_protobuf/main.py @@ -1022,6 +1022,18 @@ def write_grpc_services( self._import("grpc.aio", "Channel"), ) wl("") + elif self.grpc_type == GRPCType.SYNC: + wl( + "def __init__(self, channel: {}) -> None: ...", + self._import("grpc", "Channel"), + ) + wl("") + elif self.grpc_type == GRPCType.ASYNC: + wl( + "def __init__(self, channel: {}) -> None: ...", + self._import("grpc.aio", "Channel"), + ) + wl("") self.write_grpc_stub_methods(service, scl) diff --git a/test/async_only/test_async_only.py b/test/async_only/test_async_only.py index 57e45674..f86e9f30 100644 --- a/test/async_only/test_async_only.py +++ b/test/async_only/test_async_only.py @@ -24,6 +24,7 @@ async def UnaryUnary( return dummy_pb2.DummyReply(value=request.value[::-1]) -async def main(): +async def noop() -> None: + """Don't actually run anything; this is just for type-checking.""" stub = dummy_pb2_grpc.DummyServiceStub(channel=grpc.aio.insecure_channel("localhost:50051")) await stub.UnaryUnary(dummy_pb2.DummyRequest(value="test")) diff --git a/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi index 218366a7..02a1c6a8 100644 --- a/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi @@ -42,6 +42,8 @@ _DummyServiceStreamStreamType: typing_extensions.TypeAlias = grpc.aio.StreamStre class DummyServiceStub: """DummyService""" + def __init__(self, channel: grpc.aio.Channel) -> None: ... + UnaryUnary: _DummyServiceUnaryUnaryType """UnaryUnary""" @@ -103,6 +105,8 @@ _DeprecatedServiceDeprecatedMethodNotDeprecatedRequestType: typing_extensions.Ty class DeprecatedServiceStub: """Marking the service as deprecated""" + def __init__(self, channel: grpc.aio.Channel) -> None: ... + DeprecatedMethod: _DeprecatedServiceDeprecatedMethodType """DeprecatedMethod""" diff --git a/test/generated_async_only/testproto/grpc/import_pb2_grpc.pyi b/test/generated_async_only/testproto/grpc/import_pb2_grpc.pyi index 5bccf22d..dcc2f2ef 100644 --- a/test/generated_async_only/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated_async_only/testproto/grpc/import_pb2_grpc.pyi @@ -34,6 +34,8 @@ _SimpleServiceNoCommentType: typing_extensions.TypeAlias = grpc.aio.UnaryUnaryMu class SimpleServiceStub: """SimpleService""" + def __init__(self, channel: grpc.aio.Channel) -> None: ... + UnaryUnary: _SimpleServiceUnaryUnaryType """UnaryUnary""" diff --git a/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi index bb0a6430..3af5ac96 100644 --- a/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi @@ -42,6 +42,8 @@ _DummyServiceStreamStreamType: typing_extensions.TypeAlias = grpc.StreamStreamMu class DummyServiceStub: """DummyService""" + def __init__(self, channel: grpc.Channel) -> None: ... + UnaryUnary: _DummyServiceUnaryUnaryType """UnaryUnary""" @@ -103,6 +105,8 @@ _DeprecatedServiceDeprecatedMethodNotDeprecatedRequestType: typing_extensions.Ty class DeprecatedServiceStub: """Marking the service as deprecated""" + def __init__(self, channel: grpc.Channel) -> None: ... + DeprecatedMethod: _DeprecatedServiceDeprecatedMethodType """DeprecatedMethod""" diff --git a/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi index 4c123e06..f0fe54df 100644 --- a/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi @@ -34,6 +34,8 @@ _SimpleServiceNoCommentType: typing_extensions.TypeAlias = grpc.UnaryUnaryMultiC class SimpleServiceStub: """SimpleService""" + def __init__(self, channel: grpc.Channel) -> None: ... + UnaryUnary: _SimpleServiceUnaryUnaryType """UnaryUnary""" diff --git a/test/sync_only/test_sync_only.py b/test/sync_only/test_sync_only.py index 3970c745..2578d639 100644 --- a/test/sync_only/test_sync_only.py +++ b/test/sync_only/test_sync_only.py @@ -21,5 +21,7 @@ def UnaryUnary( return dummy_pb2.DummyReply(value=request.value[::-1]) -stub = dummy_pb2_grpc.DummyServiceStub(channel=grpc.insecure_channel("localhost:50051")) -stub.UnaryUnary(dummy_pb2.DummyRequest(value="test")) +def noop() -> None: + """Don't actually run anything; this is just for type-checking.""" + stub = dummy_pb2_grpc.DummyServiceStub(channel=grpc.insecure_channel("localhost:50051")) + stub.UnaryUnary(dummy_pb2.DummyRequest(value="test")) From cb32bd645ce8357c1e37d62624cff6729f3cf6f5 Mon Sep 17 00:00:00 2001 From: Alexey Date: Thu, 27 Nov 2025 11:32:58 +0000 Subject: [PATCH 7/9] run black --- .gitignore | 8 ++++++-- test/async_only/test_async_only.py | 3 ++- test/sync_only/test_sync_only.py | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 18a5a134..829efc43 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,12 @@ __pycache__/ *.pyc /test/generated/**/*.py !/test/generated/**/__init__.py -/test/generated-concrete/**/*.py -!/test/generated-concrete/**/__init__.py +/test/generated_concrete/**/*.py +!/test/generated_concrete/**/__init__.py +/test/generated_async_only/**/*.py +!/test/generated_async_only/**/__init__.py +/test/generated_sync_only/**/*.py +!/test/generated_sync_only/**/__init__.py .pytest_cache /build/ /dist/ diff --git a/test/async_only/test_async_only.py b/test/async_only/test_async_only.py index f86e9f30..5dc5b22c 100644 --- a/test/async_only/test_async_only.py +++ b/test/async_only/test_async_only.py @@ -10,8 +10,9 @@ """ from typing import Awaitable + import grpc.aio -from testproto.grpc import dummy_pb2_grpc, dummy_pb2 +from testproto.grpc import dummy_pb2, dummy_pb2_grpc class AsyncOnlyServicer(dummy_pb2_grpc.DummyServiceServicer): diff --git a/test/sync_only/test_sync_only.py b/test/sync_only/test_sync_only.py index 2578d639..99597587 100644 --- a/test/sync_only/test_sync_only.py +++ b/test/sync_only/test_sync_only.py @@ -9,7 +9,7 @@ """ import grpc -from testproto.grpc import dummy_pb2_grpc, dummy_pb2 +from testproto.grpc import dummy_pb2, dummy_pb2_grpc class AsyncOnlyServicer(dummy_pb2_grpc.DummyServiceServicer): From c497b7daaa5cdd09f8c9ded1ffdbd5d1bd315e40 Mon Sep 17 00:00:00 2001 From: Alexey Date: Thu, 27 Nov 2025 12:06:12 +0000 Subject: [PATCH 8/9] isort: skip generated grpc files --- pyproject.toml | 2 +- .../testproto/grpc/dummy_pb2.py | 54 --- .../testproto/grpc/dummy_pb2_grpc.py | 353 ------------------ .../testproto/grpc/import_pb2.py | 38 -- .../testproto/grpc/import_pb2_grpc.py | 189 ---------- .../testproto/grpc/dummy_pb2.py | 54 --- .../testproto/grpc/dummy_pb2_grpc.py | 353 ------------------ .../testproto/grpc/import_pb2.py | 38 -- .../testproto/grpc/import_pb2_grpc.py | 189 ---------- 9 files changed, 1 insertion(+), 1269 deletions(-) delete mode 100644 test/generated_async_only/testproto/grpc/dummy_pb2.py delete mode 100644 test/generated_async_only/testproto/grpc/dummy_pb2_grpc.py delete mode 100644 test/generated_async_only/testproto/grpc/import_pb2.py delete mode 100644 test/generated_async_only/testproto/grpc/import_pb2_grpc.py delete mode 100644 test/generated_sync_only/testproto/grpc/dummy_pb2.py delete mode 100644 test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.py delete mode 100644 test/generated_sync_only/testproto/grpc/import_pb2.py delete mode 100644 test/generated_sync_only/testproto/grpc/import_pb2_grpc.py diff --git a/pyproject.toml b/pyproject.toml index 77a7f9fc..19be1c3c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ line-length = 10000 [tool.isort] profile = "black" skip_gitignore = true -extend_skip_glob = ["*_pb2.py"] +extend_skip_glob = ["*_pb2.py", "*_pb2_grpc.py"] [tool.mypy] strict = true diff --git a/test/generated_async_only/testproto/grpc/dummy_pb2.py b/test/generated_async_only/testproto/grpc/dummy_pb2.py deleted file mode 100644 index 995862f4..00000000 --- a/test/generated_async_only/testproto/grpc/dummy_pb2.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/grpc/dummy.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/grpc/dummy.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1atestproto/grpc/dummy.proto\x12\x05\x64ummy\"\x1d\n\x0c\x44ummyRequest\x12\r\n\x05value\x18\x01 \x01(\t\"\x1b\n\nDummyReply\x12\r\n\x05value\x18\x01 \x01(\t\".\n\x11\x44\x65precatedRequest\x12\x15\n\told_field\x18\x01 \x01(\tB\x02\x18\x01:\x02\x18\x01\x32\xfa\x01\n\x0c\x44ummyService\x12\x36\n\nUnaryUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x12\x39\n\x0bUnaryStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x30\x01\x12\x39\n\x0bStreamUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x12<\n\x0cStreamStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x30\x01\x32\xb3\x01\n\x11\x44\x65precatedService\x12\x44\n\x10\x44\x65precatedMethod\x12\x18.dummy.DeprecatedRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x12S\n$DeprecatedMethodNotDeprecatedRequest\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x1a\x03\x88\x02\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.dummy_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._loaded_options = None - _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._serialized_options = b'\030\001' - _globals['_DEPRECATEDREQUEST']._loaded_options = None - _globals['_DEPRECATEDREQUEST']._serialized_options = b'\030\001' - _globals['_DEPRECATEDSERVICE']._loaded_options = None - _globals['_DEPRECATEDSERVICE']._serialized_options = b'\210\002\001' - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._loaded_options = None - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._serialized_options = b'\210\002\001' - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._loaded_options = None - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._serialized_options = b'\210\002\001' - _globals['_DUMMYREQUEST']._serialized_start=37 - _globals['_DUMMYREQUEST']._serialized_end=66 - _globals['_DUMMYREPLY']._serialized_start=68 - _globals['_DUMMYREPLY']._serialized_end=95 - _globals['_DEPRECATEDREQUEST']._serialized_start=97 - _globals['_DEPRECATEDREQUEST']._serialized_end=143 - _globals['_DUMMYSERVICE']._serialized_start=146 - _globals['_DUMMYSERVICE']._serialized_end=396 - _globals['_DEPRECATEDSERVICE']._serialized_start=399 - _globals['_DEPRECATEDSERVICE']._serialized_end=578 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.py b/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.py deleted file mode 100644 index 1e06e396..00000000 --- a/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.py +++ /dev/null @@ -1,353 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -import warnings - -from testproto.grpc import dummy_pb2 as testproto_dot_grpc_dot_dummy__pb2 - -GRPC_GENERATED_VERSION = '1.76.0' -GRPC_VERSION = grpc.__version__ -_version_not_supported = False - -try: - from grpc._utilities import first_version_is_lower - _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) -except ImportError: - _version_not_supported = True - -if _version_not_supported: - raise RuntimeError( - f'The grpc package installed is at version {GRPC_VERSION},' - + ' but the generated code in testproto/grpc/dummy_pb2_grpc.py depends on' - + f' grpcio>={GRPC_GENERATED_VERSION}.' - + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' - + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' - ) - - -class DummyServiceStub(object): - """DummyService - """ - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.UnaryUnary = channel.unary_unary( - '/dummy.DummyService/UnaryUnary', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.UnaryStream = channel.unary_stream( - '/dummy.DummyService/UnaryStream', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.StreamUnary = channel.stream_unary( - '/dummy.DummyService/StreamUnary', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.StreamStream = channel.stream_stream( - '/dummy.DummyService/StreamStream', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - - -class DummyServiceServicer(object): - """DummyService - """ - - def UnaryUnary(self, request, context): - """UnaryUnary - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UnaryStream(self, request, context): - """UnaryStream - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def StreamUnary(self, request_iterator, context): - """StreamUnary - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def StreamStream(self, request_iterator, context): - """StreamStream - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_DummyServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'UnaryUnary': grpc.unary_unary_rpc_method_handler( - servicer.UnaryUnary, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'UnaryStream': grpc.unary_stream_rpc_method_handler( - servicer.UnaryStream, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'StreamUnary': grpc.stream_unary_rpc_method_handler( - servicer.StreamUnary, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'StreamStream': grpc.stream_stream_rpc_method_handler( - servicer.StreamStream, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'dummy.DummyService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('dummy.DummyService', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class DummyService(object): - """DummyService - """ - - @staticmethod - def UnaryUnary(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/dummy.DummyService/UnaryUnary', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UnaryStream(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_stream( - request, - target, - '/dummy.DummyService/UnaryStream', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def StreamUnary(request_iterator, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.stream_unary( - request_iterator, - target, - '/dummy.DummyService/StreamUnary', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def StreamStream(request_iterator, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.stream_stream( - request_iterator, - target, - '/dummy.DummyService/StreamStream', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - -class DeprecatedServiceStub(object): - """Marking the service as deprecated - """ - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.DeprecatedMethod = channel.unary_unary( - '/dummy.DeprecatedService/DeprecatedMethod', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.DeprecatedMethodNotDeprecatedRequest = channel.unary_unary( - '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - - -class DeprecatedServiceServicer(object): - """Marking the service as deprecated - """ - - def DeprecatedMethod(self, request, context): - """DeprecatedMethod - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def DeprecatedMethodNotDeprecatedRequest(self, request, context): - """DeprecatedMethodNotDeprecatedRequest - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_DeprecatedServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'DeprecatedMethod': grpc.unary_unary_rpc_method_handler( - servicer.DeprecatedMethod, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'DeprecatedMethodNotDeprecatedRequest': grpc.unary_unary_rpc_method_handler( - servicer.DeprecatedMethodNotDeprecatedRequest, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'dummy.DeprecatedService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('dummy.DeprecatedService', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class DeprecatedService(object): - """Marking the service as deprecated - """ - - @staticmethod - def DeprecatedMethod(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/dummy.DeprecatedService/DeprecatedMethod', - testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def DeprecatedMethodNotDeprecatedRequest(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) diff --git a/test/generated_async_only/testproto/grpc/import_pb2.py b/test/generated_async_only/testproto/grpc/import_pb2.py deleted file mode 100644 index 61cc5689..00000000 --- a/test/generated_async_only/testproto/grpc/import_pb2.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/grpc/import.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/grpc/import.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test_pb2 as testproto_dot_test__pb2 -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/grpc/import.proto\x12\ttest.grpc\x1a\x14testproto/test.proto\x1a\x1bgoogle/protobuf/empty.proto2\xb4\x01\n\rSimpleService\x12\x35\n\nUnaryUnary\x12\x16.google.protobuf.Empty\x1a\r.test.Simple1\"\x00\x12\x36\n\x0bUnaryStream\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00\x12\x34\n\tNoComment\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.import_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SIMPLESERVICE']._serialized_start=94 - _globals['_SIMPLESERVICE']._serialized_end=274 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated_async_only/testproto/grpc/import_pb2_grpc.py b/test/generated_async_only/testproto/grpc/import_pb2_grpc.py deleted file mode 100644 index 2c1755d6..00000000 --- a/test/generated_async_only/testproto/grpc/import_pb2_grpc.py +++ /dev/null @@ -1,189 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -import warnings - -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from testproto import test_pb2 as testproto_dot_test__pb2 - -GRPC_GENERATED_VERSION = '1.76.0' -GRPC_VERSION = grpc.__version__ -_version_not_supported = False - -try: - from grpc._utilities import first_version_is_lower - _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) -except ImportError: - _version_not_supported = True - -if _version_not_supported: - raise RuntimeError( - f'The grpc package installed is at version {GRPC_VERSION},' - + ' but the generated code in testproto/grpc/import_pb2_grpc.py depends on' - + f' grpcio>={GRPC_GENERATED_VERSION}.' - + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' - + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' - ) - - -class SimpleServiceStub(object): - """SimpleService - """ - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.UnaryUnary = channel.unary_unary( - '/test.grpc.SimpleService/UnaryUnary', - request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - response_deserializer=testproto_dot_test__pb2.Simple1.FromString, - _registered_method=True) - self.UnaryStream = channel.unary_unary( - '/test.grpc.SimpleService/UnaryStream', - request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - _registered_method=True) - self.NoComment = channel.unary_unary( - '/test.grpc.SimpleService/NoComment', - request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - _registered_method=True) - - -class SimpleServiceServicer(object): - """SimpleService - """ - - def UnaryUnary(self, request, context): - """UnaryUnary - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UnaryStream(self, request, context): - """UnaryStream - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def NoComment(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_SimpleServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'UnaryUnary': grpc.unary_unary_rpc_method_handler( - servicer.UnaryUnary, - request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - response_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, - ), - 'UnaryStream': grpc.unary_unary_rpc_method_handler( - servicer.UnaryStream, - request_deserializer=testproto_dot_test__pb2.Simple1.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - 'NoComment': grpc.unary_unary_rpc_method_handler( - servicer.NoComment, - request_deserializer=testproto_dot_test__pb2.Simple1.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'test.grpc.SimpleService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('test.grpc.SimpleService', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class SimpleService(object): - """SimpleService - """ - - @staticmethod - def UnaryUnary(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/test.grpc.SimpleService/UnaryUnary', - google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - testproto_dot_test__pb2.Simple1.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UnaryStream(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/test.grpc.SimpleService/UnaryStream', - testproto_dot_test__pb2.Simple1.SerializeToString, - google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def NoComment(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/test.grpc.SimpleService/NoComment', - testproto_dot_test__pb2.Simple1.SerializeToString, - google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) diff --git a/test/generated_sync_only/testproto/grpc/dummy_pb2.py b/test/generated_sync_only/testproto/grpc/dummy_pb2.py deleted file mode 100644 index 995862f4..00000000 --- a/test/generated_sync_only/testproto/grpc/dummy_pb2.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/grpc/dummy.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/grpc/dummy.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1atestproto/grpc/dummy.proto\x12\x05\x64ummy\"\x1d\n\x0c\x44ummyRequest\x12\r\n\x05value\x18\x01 \x01(\t\"\x1b\n\nDummyReply\x12\r\n\x05value\x18\x01 \x01(\t\".\n\x11\x44\x65precatedRequest\x12\x15\n\told_field\x18\x01 \x01(\tB\x02\x18\x01:\x02\x18\x01\x32\xfa\x01\n\x0c\x44ummyService\x12\x36\n\nUnaryUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x12\x39\n\x0bUnaryStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00\x30\x01\x12\x39\n\x0bStreamUnary\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x12<\n\x0cStreamStream\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x00(\x01\x30\x01\x32\xb3\x01\n\x11\x44\x65precatedService\x12\x44\n\x10\x44\x65precatedMethod\x12\x18.dummy.DeprecatedRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x12S\n$DeprecatedMethodNotDeprecatedRequest\x12\x13.dummy.DummyRequest\x1a\x11.dummy.DummyReply\"\x03\x88\x02\x01\x1a\x03\x88\x02\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.dummy_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._loaded_options = None - _globals['_DEPRECATEDREQUEST'].fields_by_name['old_field']._serialized_options = b'\030\001' - _globals['_DEPRECATEDREQUEST']._loaded_options = None - _globals['_DEPRECATEDREQUEST']._serialized_options = b'\030\001' - _globals['_DEPRECATEDSERVICE']._loaded_options = None - _globals['_DEPRECATEDSERVICE']._serialized_options = b'\210\002\001' - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._loaded_options = None - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethod']._serialized_options = b'\210\002\001' - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._loaded_options = None - _globals['_DEPRECATEDSERVICE'].methods_by_name['DeprecatedMethodNotDeprecatedRequest']._serialized_options = b'\210\002\001' - _globals['_DUMMYREQUEST']._serialized_start=37 - _globals['_DUMMYREQUEST']._serialized_end=66 - _globals['_DUMMYREPLY']._serialized_start=68 - _globals['_DUMMYREPLY']._serialized_end=95 - _globals['_DEPRECATEDREQUEST']._serialized_start=97 - _globals['_DEPRECATEDREQUEST']._serialized_end=143 - _globals['_DUMMYSERVICE']._serialized_start=146 - _globals['_DUMMYSERVICE']._serialized_end=396 - _globals['_DEPRECATEDSERVICE']._serialized_start=399 - _globals['_DEPRECATEDSERVICE']._serialized_end=578 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.py b/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.py deleted file mode 100644 index 1e06e396..00000000 --- a/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.py +++ /dev/null @@ -1,353 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -import warnings - -from testproto.grpc import dummy_pb2 as testproto_dot_grpc_dot_dummy__pb2 - -GRPC_GENERATED_VERSION = '1.76.0' -GRPC_VERSION = grpc.__version__ -_version_not_supported = False - -try: - from grpc._utilities import first_version_is_lower - _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) -except ImportError: - _version_not_supported = True - -if _version_not_supported: - raise RuntimeError( - f'The grpc package installed is at version {GRPC_VERSION},' - + ' but the generated code in testproto/grpc/dummy_pb2_grpc.py depends on' - + f' grpcio>={GRPC_GENERATED_VERSION}.' - + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' - + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' - ) - - -class DummyServiceStub(object): - """DummyService - """ - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.UnaryUnary = channel.unary_unary( - '/dummy.DummyService/UnaryUnary', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.UnaryStream = channel.unary_stream( - '/dummy.DummyService/UnaryStream', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.StreamUnary = channel.stream_unary( - '/dummy.DummyService/StreamUnary', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.StreamStream = channel.stream_stream( - '/dummy.DummyService/StreamStream', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - - -class DummyServiceServicer(object): - """DummyService - """ - - def UnaryUnary(self, request, context): - """UnaryUnary - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UnaryStream(self, request, context): - """UnaryStream - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def StreamUnary(self, request_iterator, context): - """StreamUnary - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def StreamStream(self, request_iterator, context): - """StreamStream - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_DummyServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'UnaryUnary': grpc.unary_unary_rpc_method_handler( - servicer.UnaryUnary, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'UnaryStream': grpc.unary_stream_rpc_method_handler( - servicer.UnaryStream, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'StreamUnary': grpc.stream_unary_rpc_method_handler( - servicer.StreamUnary, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'StreamStream': grpc.stream_stream_rpc_method_handler( - servicer.StreamStream, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'dummy.DummyService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('dummy.DummyService', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class DummyService(object): - """DummyService - """ - - @staticmethod - def UnaryUnary(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/dummy.DummyService/UnaryUnary', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UnaryStream(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_stream( - request, - target, - '/dummy.DummyService/UnaryStream', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def StreamUnary(request_iterator, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.stream_unary( - request_iterator, - target, - '/dummy.DummyService/StreamUnary', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def StreamStream(request_iterator, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.stream_stream( - request_iterator, - target, - '/dummy.DummyService/StreamStream', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - -class DeprecatedServiceStub(object): - """Marking the service as deprecated - """ - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.DeprecatedMethod = channel.unary_unary( - '/dummy.DeprecatedService/DeprecatedMethod', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - self.DeprecatedMethodNotDeprecatedRequest = channel.unary_unary( - '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', - request_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - response_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - _registered_method=True) - - -class DeprecatedServiceServicer(object): - """Marking the service as deprecated - """ - - def DeprecatedMethod(self, request, context): - """DeprecatedMethod - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def DeprecatedMethodNotDeprecatedRequest(self, request, context): - """DeprecatedMethodNotDeprecatedRequest - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_DeprecatedServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'DeprecatedMethod': grpc.unary_unary_rpc_method_handler( - servicer.DeprecatedMethod, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - 'DeprecatedMethodNotDeprecatedRequest': grpc.unary_unary_rpc_method_handler( - servicer.DeprecatedMethodNotDeprecatedRequest, - request_deserializer=testproto_dot_grpc_dot_dummy__pb2.DummyRequest.FromString, - response_serializer=testproto_dot_grpc_dot_dummy__pb2.DummyReply.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'dummy.DeprecatedService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('dummy.DeprecatedService', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class DeprecatedService(object): - """Marking the service as deprecated - """ - - @staticmethod - def DeprecatedMethod(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/dummy.DeprecatedService/DeprecatedMethod', - testproto_dot_grpc_dot_dummy__pb2.DeprecatedRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def DeprecatedMethodNotDeprecatedRequest(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/dummy.DeprecatedService/DeprecatedMethodNotDeprecatedRequest', - testproto_dot_grpc_dot_dummy__pb2.DummyRequest.SerializeToString, - testproto_dot_grpc_dot_dummy__pb2.DummyReply.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) diff --git a/test/generated_sync_only/testproto/grpc/import_pb2.py b/test/generated_sync_only/testproto/grpc/import_pb2.py deleted file mode 100644 index 61cc5689..00000000 --- a/test/generated_sync_only/testproto/grpc/import_pb2.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: testproto/grpc/import.proto -# Protobuf Python Version: 6.32.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 32, - 1, - '', - 'testproto/grpc/import.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from testproto import test_pb2 as testproto_dot_test__pb2 -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btestproto/grpc/import.proto\x12\ttest.grpc\x1a\x14testproto/test.proto\x1a\x1bgoogle/protobuf/empty.proto2\xb4\x01\n\rSimpleService\x12\x35\n\nUnaryUnary\x12\x16.google.protobuf.Empty\x1a\r.test.Simple1\"\x00\x12\x36\n\x0bUnaryStream\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00\x12\x34\n\tNoComment\x12\r.test.Simple1\x1a\x16.google.protobuf.Empty\"\x00') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'testproto.grpc.import_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_SIMPLESERVICE']._serialized_start=94 - _globals['_SIMPLESERVICE']._serialized_end=274 -# @@protoc_insertion_point(module_scope) diff --git a/test/generated_sync_only/testproto/grpc/import_pb2_grpc.py b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.py deleted file mode 100644 index 2c1755d6..00000000 --- a/test/generated_sync_only/testproto/grpc/import_pb2_grpc.py +++ /dev/null @@ -1,189 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -import warnings - -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -from testproto import test_pb2 as testproto_dot_test__pb2 - -GRPC_GENERATED_VERSION = '1.76.0' -GRPC_VERSION = grpc.__version__ -_version_not_supported = False - -try: - from grpc._utilities import first_version_is_lower - _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) -except ImportError: - _version_not_supported = True - -if _version_not_supported: - raise RuntimeError( - f'The grpc package installed is at version {GRPC_VERSION},' - + ' but the generated code in testproto/grpc/import_pb2_grpc.py depends on' - + f' grpcio>={GRPC_GENERATED_VERSION}.' - + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' - + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' - ) - - -class SimpleServiceStub(object): - """SimpleService - """ - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.UnaryUnary = channel.unary_unary( - '/test.grpc.SimpleService/UnaryUnary', - request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - response_deserializer=testproto_dot_test__pb2.Simple1.FromString, - _registered_method=True) - self.UnaryStream = channel.unary_unary( - '/test.grpc.SimpleService/UnaryStream', - request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - _registered_method=True) - self.NoComment = channel.unary_unary( - '/test.grpc.SimpleService/NoComment', - request_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, - response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - _registered_method=True) - - -class SimpleServiceServicer(object): - """SimpleService - """ - - def UnaryUnary(self, request, context): - """UnaryUnary - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UnaryStream(self, request, context): - """UnaryStream - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def NoComment(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_SimpleServiceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'UnaryUnary': grpc.unary_unary_rpc_method_handler( - servicer.UnaryUnary, - request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - response_serializer=testproto_dot_test__pb2.Simple1.SerializeToString, - ), - 'UnaryStream': grpc.unary_unary_rpc_method_handler( - servicer.UnaryStream, - request_deserializer=testproto_dot_test__pb2.Simple1.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - 'NoComment': grpc.unary_unary_rpc_method_handler( - servicer.NoComment, - request_deserializer=testproto_dot_test__pb2.Simple1.FromString, - response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'test.grpc.SimpleService', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('test.grpc.SimpleService', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class SimpleService(object): - """SimpleService - """ - - @staticmethod - def UnaryUnary(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/test.grpc.SimpleService/UnaryUnary', - google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, - testproto_dot_test__pb2.Simple1.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UnaryStream(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/test.grpc.SimpleService/UnaryStream', - testproto_dot_test__pb2.Simple1.SerializeToString, - google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def NoComment(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/test.grpc.SimpleService/NoComment', - testproto_dot_test__pb2.Simple1.SerializeToString, - google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) From 82e6e751e27ba21d2773413f64cd3cfb4473d4f9 Mon Sep 17 00:00:00 2001 From: Alexey Date: Thu, 27 Nov 2025 13:35:25 +0000 Subject: [PATCH 9/9] Add init files to generated sync/async --- test/generated_async_only/testproto/__init__.py | 0 test/generated_async_only/testproto/grpc/__init__.py | 0 test/generated_sync_only/testproto/__init__.py | 0 test/generated_sync_only/testproto/grpc/__init__.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/generated_async_only/testproto/__init__.py create mode 100644 test/generated_async_only/testproto/grpc/__init__.py create mode 100644 test/generated_sync_only/testproto/__init__.py create mode 100644 test/generated_sync_only/testproto/grpc/__init__.py diff --git a/test/generated_async_only/testproto/__init__.py b/test/generated_async_only/testproto/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated_async_only/testproto/grpc/__init__.py b/test/generated_async_only/testproto/grpc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated_sync_only/testproto/__init__.py b/test/generated_sync_only/testproto/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/generated_sync_only/testproto/grpc/__init__.py b/test/generated_sync_only/testproto/grpc/__init__.py new file mode 100644 index 00000000..e69de29b