From f4443be400019674344a9d7db539cc2afd174ba7 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Tue, 9 Dec 2025 20:53:32 -0800 Subject: [PATCH 1/7] Support comments and deprecation for methods and enum values * Express methods as properties, allows for deprecation * Express enum values as properties, allows for deprecation Signed-off-by: Aidan Jensen --- CHANGELOG.md | 2 + mypy_protobuf/main.py | 56 +- proto/testproto/grpc/dummy.proto | 1 + proto/testproto/test.proto | 8 +- stubtest_allowlist.txt | 11 +- .../testproto/grpc/dummy_pb2_grpc.pyi | 658 ++++++++++++------ .../testproto/grpc/import_pb2_grpc.pyi | 26 +- .../generated/testproto/nested/nested_pb2.pyi | 18 +- test/generated/testproto/readme_enum_pb2.pyi | 6 +- test/generated/testproto/test3_pb2.pyi | 15 +- test/generated/testproto/test_pb2.pyi | 36 +- .../testproto/grpc/dummy_pb2_grpc.pyi | 658 ++++++++++++------ .../testproto/grpc/import_pb2_grpc.pyi | 26 +- .../testproto/nested/nested_pb2.pyi | 18 +- .../testproto/readme_enum_pb2.pyi | 6 +- .../testproto/test3_pb2.pyi | 15 +- .../generated_concrete/testproto/test_pb2.pyi | 36 +- test/test_generated_mypy.py | 2 +- test_negative/negative.py | 9 +- test_negative/output.expected.3.10 | 252 +++---- .../output.expected.3.10.omit_linenos | 6 +- test_negative/output.expected.3.11 | 252 +++---- .../output.expected.3.11.omit_linenos | 6 +- test_negative/output.expected.3.12 | 252 +++---- .../output.expected.3.12.omit_linenos | 6 +- test_negative/output.expected.3.13 | 252 +++---- .../output.expected.3.13.omit_linenos | 6 +- test_negative/output.expected.3.14 | 252 +++---- .../output.expected.3.14.omit_linenos | 6 +- test_negative/output.expected.3.9 | 252 +++---- .../output.expected.3.9.omit_linenos | 6 +- 31 files changed, 1867 insertions(+), 1288 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7eb5e8e6..796729d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ - Add `_WhichOneofArgType_` and `_WhichOneofReturnType_` type aliases - Use `__new__` overloads for async stubs instead of `TypeVar` based `__init__` overloads. - https://github.com/nipunn1313/mypy-protobuf/issues/707 +- Export stub methods as properties instead of attributes. This allows for deprecation +- Export enum fields as properties on class level (not module level) enums. This allows for deprecation ## 3.7.0 diff --git a/mypy_protobuf/main.py b/mypy_protobuf/main.py index 1a061563..13bc401c 100644 --- a/mypy_protobuf/main.py +++ b/mypy_protobuf/main.py @@ -315,7 +315,7 @@ def _get_comments(self, scl: SourceCodeLocation) -> List[str]: return lines - def _write_deprecation_warning(self, scl: SourceCodeLocation, default_message: str) -> None: + def _get_deprecation_message(self, scl: SourceCodeLocation, default_message: str) -> str: msg = default_message if not self.use_default_depreaction_warnings and (comments := self._get_comments(scl)): # Make sure the comment string is a valid python string literal @@ -327,6 +327,10 @@ def _write_deprecation_warning(self, scl: SourceCodeLocation, default_message: s except SyntaxError as e: print(f"Warning: Deprecation comment {joined} could not be parsed as a python string literal. Using default deprecation message. {e}", file=sys.stderr) pass + return msg + + def _write_deprecation_warning(self, scl: SourceCodeLocation, default_message: str) -> None: + msg = self._get_deprecation_message(scl, default_message) self._write_line( '@{}("""{}""")', self._import("warnings", "deprecated"), @@ -387,16 +391,33 @@ def write_enum_values( values: Iterable[Tuple[int, d.EnumValueDescriptorProto]], value_type: str, scl_prefix: SourceCodeLocation, + *, + as_properties: bool = False, ) -> None: for i, val in values: if val.name in PYTHON_RESERVED: continue scl = scl_prefix + [i] - self._write_line( - f"{val.name}: {value_type} # {val.number}", - ) - self._write_comments(scl) + # Class level + if as_properties: + self._write_line("@property") + if val.options.deprecated: + self._write_deprecation_warning( + scl + [d.EnumValueDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.EnumOptions.DEPRECATED_FIELD_NUMBER], + "This enum value has been marked as deprecated using proto enum value options.", + ) + self._write_line( + f"def {val.name}(self) -> {value_type}: {'' if self._has_comments(scl) else '...'} # {val.number}", + ) + with self._indent(): + self._write_comments(scl) + # Module level + else: + self._write_line( + f"{val.name}: {value_type} # {val.number}", + ) + self._write_comments(scl) def write_module_attributes(self) -> None: wl = self._write_line @@ -443,6 +464,7 @@ def write_enums( [(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], + as_properties=True, ) wl("") @@ -461,6 +483,7 @@ def write_enums( if prefix == "": wl("") + # Write the module level constants for enum values self.write_enum_values( enumerate(enum_proto.value), value_type_fq, @@ -878,7 +901,7 @@ def write_grpc_servicer_context(self) -> None: wl("...") wl("") - def write_grpc_stub_methods(self, service: d.ServiceDescriptorProto, scl_prefix: SourceCodeLocation, *, is_async: bool, both: bool = False, ignore_assignment_errors: bool = False) -> None: + def write_grpc_stub_methods(self, service: d.ServiceDescriptorProto, scl_prefix: SourceCodeLocation, *, is_async: bool, both: bool = False, ignore_override_errors: bool = False) -> None: wl = self._write_line methods = [(i, m) for i, m in enumerate(service.method) if m.name not in PYTHON_RESERVED] if not methods: @@ -889,17 +912,20 @@ def type_str(method: d.MethodDescriptorProto, is_async: bool) -> str: for i, method in methods: scl = scl_prefix + [d.ServiceDescriptorProto.METHOD_FIELD_NUMBER, i] - if both: - wl( - "{}: {}[{}, {}]", - method.name, - self._import("typing", "Union"), - type_str(method, is_async=False), - type_str(method, is_async=True), + wl("@property") + if method.options.deprecated: + self._write_deprecation_warning( + scl + [d.MethodDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.MethodOptions.DEPRECATED_FIELD_NUMBER], + "This method has been marked as deprecated using proto method options.", ) + if both: + wl("def {}(self) -> {}[{}, {}]:{}", method.name, self._import("typing", "Union"), type_str(method, is_async=False), type_str(method, is_async=True), " ..." if not self._has_comments(scl) else " ") else: - wl("{}: {}{}", method.name, type_str(method, is_async=is_async), "" if not ignore_assignment_errors else " # type: ignore[assignment]") - self._write_comments(scl) + wl("def {}(self) -> {}:{}{}", method.name, type_str(method, is_async=is_async), " ..." if not self._has_comments(scl) else "", "" if not ignore_override_errors else " # type: ignore[override]") + if self._has_comments(scl): + with self._indent(): + if not self._write_comments(scl): + wl("...") def write_grpc_methods(self, service: d.ServiceDescriptorProto, scl_prefix: SourceCodeLocation) -> None: wl = self._write_line diff --git a/proto/testproto/grpc/dummy.proto b/proto/testproto/grpc/dummy.proto index e6b6fd56..42333c1c 100644 --- a/proto/testproto/grpc/dummy.proto +++ b/proto/testproto/grpc/dummy.proto @@ -38,6 +38,7 @@ service DeprecatedService { } // DeprecatedMethodNotDeprecatedRequest rpc DeprecatedMethodNotDeprecatedRequest(DummyRequest) returns (DummyReply) { + // Method is deprecated, but request message is not option deprecated = true; } } diff --git a/proto/testproto/test.proto b/proto/testproto/test.proto index 34d58399..58a50528 100644 --- a/proto/testproto/test.proto +++ b/proto/testproto/test.proto @@ -193,6 +193,10 @@ enum DeprecatedEnum { option deprecated = true; // Trailing comment - DEPRECATED_ONE = 1; - DEPRECATED_TWO = 2; + DEPRECATED_ONE = 1 [ + // This enum value is deprecated but this message doesn't show + deprecated = true + ]; // Trailing comment for enum value + DEPRECATED_TWO = 2 [deprecated = true]; + NOT_DEPRECATED = 3; } diff --git a/stubtest_allowlist.txt b/stubtest_allowlist.txt index c6f72f6d..617525c1 100644 --- a/stubtest_allowlist.txt +++ b/stubtest_allowlist.txt @@ -36,6 +36,7 @@ testproto.nested.nested_pb2.AnotherNested.NestedMessage.NESTED_ENUM2 testproto.nested.nested_pb2.AnotherNested.INVALID testproto.test_pb2.DEPRECATED_ONE testproto.test_pb2.DEPRECATED_TWO +testproto.test_pb2.NOT_DEPRECATED # Our enum types and helper types aren't there at runtime (Dynamic EnumTypeWrapper at runtime) # .*\..*EnumTypeWrapper$ @@ -246,9 +247,9 @@ testproto.test_pb2.Extensions1.ext .*_WhichOneofReturnType.* .*_WhichOneofArgType.* -# -testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.__init__ -testproto.grpc.dummy_pb2_grpc.DummyServiceStub.__init__ -testproto.grpc.dummy_pb2_grpc.ManyRPCsServiceStub.__init__ -testproto.grpc.import_pb2_grpc.SimpleServiceStub.__init__ +# Because we represent methods as properties, they do not exist at runtime +testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.* +testproto.grpc.dummy_pb2_grpc.DummyServiceStub.* +testproto.grpc.dummy_pb2_grpc.ManyRPCsServiceStub.* +testproto.grpc.import_pb2_grpc.SimpleServiceStub.* testproto.grpc.dummy_pb2_grpc.EmptyServiceStub.__init__ diff --git a/test/generated/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated/testproto/grpc/dummy_pb2_grpc.pyi index 8c6684e8..4644c8d6 100644 --- a/test/generated/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated/testproto/grpc/dummy_pb2_grpc.pyi @@ -33,28 +33,36 @@ class DummyServiceStub: def __new__(cls, channel: grpc.Channel) -> DummyServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> DummyServiceAsyncStub: ... - UnaryUnary: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """UnaryUnary""" - UnaryStream: grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """UnaryStream""" - StreamUnary: grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """StreamUnary""" - StreamStream: grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """StreamStream""" + @property + def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """UnaryStream""" + @property + def StreamUnary(self) -> grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """StreamUnary""" + @property + def StreamStream(self) -> grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """StreamStream""" @typing.type_check_only class DummyServiceAsyncStub(DummyServiceStub): """DummyService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """UnaryUnary""" - UnaryStream: grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """UnaryStream""" - StreamUnary: grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """StreamUnary""" - StreamStream: grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """StreamStream""" + @property + def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """UnaryStream""" + @property + def StreamUnary(self) -> grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """StreamUnary""" + @property + def StreamStream(self) -> grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """StreamStream""" class DummyServiceServicer(metaclass=abc.ABCMeta): """DummyService""" @@ -101,10 +109,14 @@ class DeprecatedServiceStub: def __new__(cls, channel: grpc.Channel) -> DeprecatedServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> DeprecatedServiceAsyncStub: ... - DeprecatedMethod: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethod""" - DeprecatedMethodNotDeprecatedRequest: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethod(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethod""" + @property + @deprecated("""Method is deprecated, but request message is not""") + def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethodNotDeprecatedRequest""" @deprecated("""This service is deprecated""") @typing.type_check_only @@ -112,10 +124,14 @@ class DeprecatedServiceAsyncStub(DeprecatedServiceStub): """Marking the service as deprecated""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - DeprecatedMethod: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """DeprecatedMethod""" - DeprecatedMethodNotDeprecatedRequest: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethod(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """DeprecatedMethod""" + @property + @deprecated("""Method is deprecated, but request message is not""") + def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """DeprecatedMethodNotDeprecatedRequest""" @deprecated("""This service is deprecated""") class DeprecatedServiceServicer(metaclass=abc.ABCMeta): @@ -145,208 +161,406 @@ class ManyRPCsServiceStub: def __new__(cls, channel: grpc.Channel) -> ManyRPCsServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> ManyRPCsServiceAsyncStub: ... - Method1: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] - Method2: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] - Method3: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] - Method4: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] - Method5: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] - Method6: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] - Method7: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] - Method8: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] - Method9: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] - Method10: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] - Method11: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] - Method12: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] - Method13: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] - Method14: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] - Method15: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] - Method16: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] - Method17: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] - Method18: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] - Method19: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] - Method20: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] - Method21: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] - Method22: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] - Method23: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] - Method24: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] - Method25: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] - Method26: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] - Method27: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] - Method28: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] - Method29: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] - Method30: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] - Method31: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] - Method32: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] - Method33: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] - Method34: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] - Method35: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] - Method36: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] - Method37: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] - Method38: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] - Method39: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] - Method40: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] - Method41: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] - Method42: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] - Method43: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] - Method44: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] - Method45: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] - Method46: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] - Method47: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] - Method48: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] - Method49: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] - Method50: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] - Method51: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] - Method52: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] - Method53: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] - Method54: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] - Method55: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] - Method56: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] - Method57: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] - Method58: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] - Method59: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] - Method60: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] - Method61: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] - Method62: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] - Method63: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] - Method64: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] - Method65: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] - Method66: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] - Method67: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] - Method68: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] - Method69: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] - Method70: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] - Method71: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] - Method72: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] - Method73: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] - Method74: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] - Method75: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] - Method76: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] - Method77: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] - Method78: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] - Method79: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] - Method80: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] - Method81: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] - Method82: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] - Method83: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] - Method84: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] - Method85: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] - Method86: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] - Method87: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] - Method88: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] - Method89: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] - Method90: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] - Method91: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] - Method92: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] - Method93: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] - Method94: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] - Method95: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] - Method96: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] - Method97: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] - Method98: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] - Method99: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] + @property + def Method1(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... + @property + def Method2(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... + @property + def Method3(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... + @property + def Method4(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... + @property + def Method5(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... + @property + def Method6(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... + @property + def Method7(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... + @property + def Method8(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... + @property + def Method9(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... + @property + def Method10(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... + @property + def Method11(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... + @property + def Method12(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... + @property + def Method13(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... + @property + def Method14(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... + @property + def Method15(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... + @property + def Method16(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... + @property + def Method17(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... + @property + def Method18(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... + @property + def Method19(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... + @property + def Method20(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... + @property + def Method21(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... + @property + def Method22(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... + @property + def Method23(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... + @property + def Method24(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... + @property + def Method25(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... + @property + def Method26(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... + @property + def Method27(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... + @property + def Method28(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... + @property + def Method29(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... + @property + def Method30(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... + @property + def Method31(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... + @property + def Method32(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... + @property + def Method33(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... + @property + def Method34(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... + @property + def Method35(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... + @property + def Method36(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... + @property + def Method37(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... + @property + def Method38(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... + @property + def Method39(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... + @property + def Method40(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... + @property + def Method41(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... + @property + def Method42(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... + @property + def Method43(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... + @property + def Method44(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... + @property + def Method45(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... + @property + def Method46(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... + @property + def Method47(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... + @property + def Method48(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... + @property + def Method49(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... + @property + def Method50(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... + @property + def Method51(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... + @property + def Method52(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... + @property + def Method53(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... + @property + def Method54(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... + @property + def Method55(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... + @property + def Method56(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... + @property + def Method57(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... + @property + def Method58(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... + @property + def Method59(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... + @property + def Method60(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... + @property + def Method61(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... + @property + def Method62(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... + @property + def Method63(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... + @property + def Method64(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... + @property + def Method65(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... + @property + def Method66(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... + @property + def Method67(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... + @property + def Method68(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... + @property + def Method69(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... + @property + def Method70(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... + @property + def Method71(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... + @property + def Method72(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... + @property + def Method73(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... + @property + def Method74(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... + @property + def Method75(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... + @property + def Method76(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... + @property + def Method77(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... + @property + def Method78(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... + @property + def Method79(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... + @property + def Method80(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... + @property + def Method81(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... + @property + def Method82(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... + @property + def Method83(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... + @property + def Method84(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... + @property + def Method85(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... + @property + def Method86(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... + @property + def Method87(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... + @property + def Method88(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... + @property + def Method89(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... + @property + def Method90(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... + @property + def Method91(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... + @property + def Method92(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... + @property + def Method93(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... + @property + def Method94(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... + @property + def Method95(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... + @property + def Method96(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... + @property + def Method97(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... + @property + def Method98(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... + @property + def Method99(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... @typing.type_check_only class ManyRPCsServiceAsyncStub(ManyRPCsServiceStub): def __init__(self, channel: grpc.aio.Channel) -> None: ... - Method1: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] # type: ignore[assignment] - Method2: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] # type: ignore[assignment] - Method3: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] # type: ignore[assignment] - Method4: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] # type: ignore[assignment] - Method5: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] # type: ignore[assignment] - Method6: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] # type: ignore[assignment] - Method7: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] # type: ignore[assignment] - Method8: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] # type: ignore[assignment] - Method9: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] # type: ignore[assignment] - Method10: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] # type: ignore[assignment] - Method11: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] # type: ignore[assignment] - Method12: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] # type: ignore[assignment] - Method13: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] # type: ignore[assignment] - Method14: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] # type: ignore[assignment] - Method15: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] # type: ignore[assignment] - Method16: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] # type: ignore[assignment] - Method17: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] # type: ignore[assignment] - Method18: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] # type: ignore[assignment] - Method19: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] # type: ignore[assignment] - Method20: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] # type: ignore[assignment] - Method21: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] # type: ignore[assignment] - Method22: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] # type: ignore[assignment] - Method23: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] # type: ignore[assignment] - Method24: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] # type: ignore[assignment] - Method25: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] # type: ignore[assignment] - Method26: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] # type: ignore[assignment] - Method27: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] # type: ignore[assignment] - Method28: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] # type: ignore[assignment] - Method29: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] # type: ignore[assignment] - Method30: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] # type: ignore[assignment] - Method31: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] # type: ignore[assignment] - Method32: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] # type: ignore[assignment] - Method33: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] # type: ignore[assignment] - Method34: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] # type: ignore[assignment] - Method35: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] # type: ignore[assignment] - Method36: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] # type: ignore[assignment] - Method37: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] # type: ignore[assignment] - Method38: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] # type: ignore[assignment] - Method39: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] # type: ignore[assignment] - Method40: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] # type: ignore[assignment] - Method41: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] # type: ignore[assignment] - Method42: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] # type: ignore[assignment] - Method43: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] # type: ignore[assignment] - Method44: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] # type: ignore[assignment] - Method45: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] # type: ignore[assignment] - Method46: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] # type: ignore[assignment] - Method47: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] # type: ignore[assignment] - Method48: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] # type: ignore[assignment] - Method49: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] # type: ignore[assignment] - Method50: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] # type: ignore[assignment] - Method51: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] # type: ignore[assignment] - Method52: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] # type: ignore[assignment] - Method53: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] # type: ignore[assignment] - Method54: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] # type: ignore[assignment] - Method55: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] # type: ignore[assignment] - Method56: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] # type: ignore[assignment] - Method57: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] # type: ignore[assignment] - Method58: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] # type: ignore[assignment] - Method59: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] # type: ignore[assignment] - Method60: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] # type: ignore[assignment] - Method61: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] # type: ignore[assignment] - Method62: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] # type: ignore[assignment] - Method63: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] # type: ignore[assignment] - Method64: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] # type: ignore[assignment] - Method65: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] # type: ignore[assignment] - Method66: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] # type: ignore[assignment] - Method67: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] # type: ignore[assignment] - Method68: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] # type: ignore[assignment] - Method69: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] # type: ignore[assignment] - Method70: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] # type: ignore[assignment] - Method71: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] # type: ignore[assignment] - Method72: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] # type: ignore[assignment] - Method73: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] # type: ignore[assignment] - Method74: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] # type: ignore[assignment] - Method75: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] # type: ignore[assignment] - Method76: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] # type: ignore[assignment] - Method77: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] # type: ignore[assignment] - Method78: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] # type: ignore[assignment] - Method79: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] # type: ignore[assignment] - Method80: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] # type: ignore[assignment] - Method81: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] # type: ignore[assignment] - Method82: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] # type: ignore[assignment] - Method83: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] # type: ignore[assignment] - Method84: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] # type: ignore[assignment] - Method85: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] # type: ignore[assignment] - Method86: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] # type: ignore[assignment] - Method87: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] # type: ignore[assignment] - Method88: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] # type: ignore[assignment] - Method89: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] # type: ignore[assignment] - Method90: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] # type: ignore[assignment] - Method91: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] # type: ignore[assignment] - Method92: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] # type: ignore[assignment] - Method93: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] # type: ignore[assignment] - Method94: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] # type: ignore[assignment] - Method95: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] # type: ignore[assignment] - Method96: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] # type: ignore[assignment] - Method97: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] # type: ignore[assignment] - Method98: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] # type: ignore[assignment] - Method99: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] # type: ignore[assignment] + @property + def Method1(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... # type: ignore[override] + @property + def Method2(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... # type: ignore[override] + @property + def Method3(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... # type: ignore[override] + @property + def Method4(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... # type: ignore[override] + @property + def Method5(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... # type: ignore[override] + @property + def Method6(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... # type: ignore[override] + @property + def Method7(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... # type: ignore[override] + @property + def Method8(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... # type: ignore[override] + @property + def Method9(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... # type: ignore[override] + @property + def Method10(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... # type: ignore[override] + @property + def Method11(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... # type: ignore[override] + @property + def Method12(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... # type: ignore[override] + @property + def Method13(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... # type: ignore[override] + @property + def Method14(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... # type: ignore[override] + @property + def Method15(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... # type: ignore[override] + @property + def Method16(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... # type: ignore[override] + @property + def Method17(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... # type: ignore[override] + @property + def Method18(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... # type: ignore[override] + @property + def Method19(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... # type: ignore[override] + @property + def Method20(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... # type: ignore[override] + @property + def Method21(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... # type: ignore[override] + @property + def Method22(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... # type: ignore[override] + @property + def Method23(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... # type: ignore[override] + @property + def Method24(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... # type: ignore[override] + @property + def Method25(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... # type: ignore[override] + @property + def Method26(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... # type: ignore[override] + @property + def Method27(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... # type: ignore[override] + @property + def Method28(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... # type: ignore[override] + @property + def Method29(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... # type: ignore[override] + @property + def Method30(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... # type: ignore[override] + @property + def Method31(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... # type: ignore[override] + @property + def Method32(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... # type: ignore[override] + @property + def Method33(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... # type: ignore[override] + @property + def Method34(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... # type: ignore[override] + @property + def Method35(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... # type: ignore[override] + @property + def Method36(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... # type: ignore[override] + @property + def Method37(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... # type: ignore[override] + @property + def Method38(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... # type: ignore[override] + @property + def Method39(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... # type: ignore[override] + @property + def Method40(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... # type: ignore[override] + @property + def Method41(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... # type: ignore[override] + @property + def Method42(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... # type: ignore[override] + @property + def Method43(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... # type: ignore[override] + @property + def Method44(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... # type: ignore[override] + @property + def Method45(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... # type: ignore[override] + @property + def Method46(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... # type: ignore[override] + @property + def Method47(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... # type: ignore[override] + @property + def Method48(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... # type: ignore[override] + @property + def Method49(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... # type: ignore[override] + @property + def Method50(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... # type: ignore[override] + @property + def Method51(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... # type: ignore[override] + @property + def Method52(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... # type: ignore[override] + @property + def Method53(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... # type: ignore[override] + @property + def Method54(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... # type: ignore[override] + @property + def Method55(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... # type: ignore[override] + @property + def Method56(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... # type: ignore[override] + @property + def Method57(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... # type: ignore[override] + @property + def Method58(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... # type: ignore[override] + @property + def Method59(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... # type: ignore[override] + @property + def Method60(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... # type: ignore[override] + @property + def Method61(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... # type: ignore[override] + @property + def Method62(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... # type: ignore[override] + @property + def Method63(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... # type: ignore[override] + @property + def Method64(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... # type: ignore[override] + @property + def Method65(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... # type: ignore[override] + @property + def Method66(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... # type: ignore[override] + @property + def Method67(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... # type: ignore[override] + @property + def Method68(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... # type: ignore[override] + @property + def Method69(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... # type: ignore[override] + @property + def Method70(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... # type: ignore[override] + @property + def Method71(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... # type: ignore[override] + @property + def Method72(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... # type: ignore[override] + @property + def Method73(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... # type: ignore[override] + @property + def Method74(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... # type: ignore[override] + @property + def Method75(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... # type: ignore[override] + @property + def Method76(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... # type: ignore[override] + @property + def Method77(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... # type: ignore[override] + @property + def Method78(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... # type: ignore[override] + @property + def Method79(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... # type: ignore[override] + @property + def Method80(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... # type: ignore[override] + @property + def Method81(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... # type: ignore[override] + @property + def Method82(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... # type: ignore[override] + @property + def Method83(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... # type: ignore[override] + @property + def Method84(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... # type: ignore[override] + @property + def Method85(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... # type: ignore[override] + @property + def Method86(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... # type: ignore[override] + @property + def Method87(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... # type: ignore[override] + @property + def Method88(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... # type: ignore[override] + @property + def Method89(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... # type: ignore[override] + @property + def Method90(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... # type: ignore[override] + @property + def Method91(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... # type: ignore[override] + @property + def Method92(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... # type: ignore[override] + @property + def Method93(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... # type: ignore[override] + @property + def Method94(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... # type: ignore[override] + @property + def Method95(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... # type: ignore[override] + @property + def Method96(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... # type: ignore[override] + @property + def Method97(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... # type: ignore[override] + @property + def Method98(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... # type: ignore[override] + @property + def Method99(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... # type: ignore[override] class ManyRPCsServiceServicer(metaclass=abc.ABCMeta): @abc.abstractmethod diff --git a/test/generated/testproto/grpc/import_pb2_grpc.pyi b/test/generated/testproto/grpc/import_pb2_grpc.pyi index 487cc4cf..540827d9 100644 --- a/test/generated/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated/testproto/grpc/import_pb2_grpc.pyi @@ -28,22 +28,28 @@ class SimpleServiceStub: def __new__(cls, channel: grpc.Channel) -> SimpleServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> SimpleServiceAsyncStub: ... - UnaryUnary: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] - """UnaryUnary""" - UnaryStream: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] - """UnaryStream""" - NoComment: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] + @property + def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: + """UnaryStream""" + @property + def NoComment(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... @typing.type_check_only class SimpleServiceAsyncStub(SimpleServiceStub): """SimpleService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] # type: ignore[assignment] - """UnaryUnary""" - UnaryStream: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] - """UnaryStream""" - NoComment: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] + @property + def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: # type: ignore[override] + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: # type: ignore[override] + """UnaryStream""" + @property + def NoComment(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... # type: ignore[override] class SimpleServiceServicer(metaclass=abc.ABCMeta): """SimpleService""" diff --git a/test/generated/testproto/nested/nested_pb2.pyi b/test/generated/testproto/nested/nested_pb2.pyi index ca263aee..91e5d6aa 100644 --- a/test/generated/testproto/nested/nested_pb2.pyi +++ b/test/generated/testproto/nested/nested_pb2.pyi @@ -44,9 +44,12 @@ class AnotherNested(google.protobuf.message.Message): 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 + @property + def INVALID(self) -> AnotherNested._NestedEnum.ValueType: ... # 0 + @property + def ONE(self) -> AnotherNested._NestedEnum.ValueType: ... # 1 + @property + def TWO(self) -> AnotherNested._NestedEnum.ValueType: ... # 2 class NestedEnum(_NestedEnum, metaclass=_NestedEnumEnumTypeWrapper): ... INVALID: AnotherNested.NestedEnum.ValueType # 0 @@ -63,9 +66,12 @@ class AnotherNested(google.protobuf.message.Message): 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 + @property + def UNDEFINED(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 0 + @property + def NESTED_ENUM1(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 1 + @property + def NESTED_ENUM2(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 2 class NestedEnum2(_NestedEnum2, metaclass=_NestedEnum2EnumTypeWrapper): ... UNDEFINED: AnotherNested.NestedMessage.NestedEnum2.ValueType # 0 diff --git a/test/generated/testproto/readme_enum_pb2.pyi b/test/generated/testproto/readme_enum_pb2.pyi index be8369c4..23e01b53 100644 --- a/test/generated/testproto/readme_enum_pb2.pyi +++ b/test/generated/testproto/readme_enum_pb2.pyi @@ -22,8 +22,10 @@ class _MyEnum: 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 + @property + def HELLO(self) -> _MyEnum.ValueType: ... # 0 + @property + def WORLD(self) -> _MyEnum.ValueType: ... # 1 class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... diff --git a/test/generated/testproto/test3_pb2.pyi b/test/generated/testproto/test3_pb2.pyi index ca2421ab..cb19e6c2 100644 --- a/test/generated/testproto/test3_pb2.pyi +++ b/test/generated/testproto/test3_pb2.pyi @@ -26,9 +26,12 @@ class _OuterEnum: 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 + @property + def UNKNOWN(self) -> _OuterEnum.ValueType: ... # 0 + @property + def FOO3(self) -> _OuterEnum.ValueType: ... # 1 + @property + def BAR3(self) -> _OuterEnum.ValueType: ... # 2 class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... @@ -63,8 +66,10 @@ class SimpleProto3(google.protobuf.message.Message): 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 + @property + def INNER1(self) -> SimpleProto3._InnerEnum.ValueType: ... # 0 + @property + def INNER2(self) -> SimpleProto3._InnerEnum.ValueType: ... # 1 class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... INNER1: SimpleProto3.InnerEnum.ValueType # 0 diff --git a/test/generated/testproto/test_pb2.pyi b/test/generated/testproto/test_pb2.pyi index 94e646db..704b6ab4 100644 --- a/test/generated/testproto/test_pb2.pyi +++ b/test/generated/testproto/test_pb2.pyi @@ -36,10 +36,12 @@ class _OuterEnum: 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""" + @property + def FOO(self) -> _OuterEnum.ValueType: # 1 + """FOO""" + @property + def BAR(self) -> _OuterEnum.ValueType: # 2 + """BAR""" class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): """Outer Enum""" @@ -77,14 +79,23 @@ class _DeprecatedEnum: 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 + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_ONE(self) -> _DeprecatedEnum.ValueType: # 1 + """Trailing comment for enum value""" + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_TWO(self) -> _DeprecatedEnum.ValueType: ... # 2 + @property + def NOT_DEPRECATED(self) -> _DeprecatedEnum.ValueType: ... # 3 @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 +"""Trailing comment for enum value""" DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 +NOT_DEPRECATED: DeprecatedEnum.ValueType # 3 Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum @typing.final @@ -99,10 +110,12 @@ class Simple1(google.protobuf.message.Message): 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""" + @property + def INNER1(self) -> Simple1._InnerEnum.ValueType: # 1 + """INNER1""" + @property + def INNER2(self) -> Simple1._InnerEnum.ValueType: # 2 + """INNER2""" class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): """Inner Enum""" @@ -320,7 +333,8 @@ class PythonReservedKeywords(google.protobuf.message.Message): 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 + @property + def valid_in_finally(self) -> PythonReservedKeywords._finally.ValueType: ... # 2 class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 diff --git a/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi index c0d70574..4f055cbd 100644 --- a/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi @@ -33,28 +33,36 @@ class DummyServiceStub: def __new__(cls, channel: grpc.Channel) -> DummyServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> DummyServiceAsyncStub: ... - UnaryUnary: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """UnaryUnary""" - UnaryStream: grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """UnaryStream""" - StreamUnary: grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """StreamUnary""" - StreamStream: grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """StreamStream""" + @property + def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """UnaryStream""" + @property + def StreamUnary(self) -> grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """StreamUnary""" + @property + def StreamStream(self) -> grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """StreamStream""" @typing.type_check_only class DummyServiceAsyncStub(DummyServiceStub): """DummyService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """UnaryUnary""" - UnaryStream: grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """UnaryStream""" - StreamUnary: grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """StreamUnary""" - StreamStream: grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """StreamStream""" + @property + def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """UnaryStream""" + @property + def StreamUnary(self) -> grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """StreamUnary""" + @property + def StreamStream(self) -> grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """StreamStream""" class DummyServiceServicer: """DummyService""" @@ -97,10 +105,14 @@ class DeprecatedServiceStub: def __new__(cls, channel: grpc.Channel) -> DeprecatedServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> DeprecatedServiceAsyncStub: ... - DeprecatedMethod: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethod""" - DeprecatedMethodNotDeprecatedRequest: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethod(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethod""" + @property + @deprecated("""Method is deprecated, but request message is not""") + def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethodNotDeprecatedRequest""" @deprecated("""This service is deprecated""") @typing.type_check_only @@ -108,10 +120,14 @@ class DeprecatedServiceAsyncStub(DeprecatedServiceStub): """Marking the service as deprecated""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - DeprecatedMethod: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """DeprecatedMethod""" - DeprecatedMethodNotDeprecatedRequest: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] - """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethod(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """DeprecatedMethod""" + @property + @deprecated("""Method is deprecated, but request message is not""") + def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] + """DeprecatedMethodNotDeprecatedRequest""" @deprecated("""This service is deprecated""") class DeprecatedServiceServicer: @@ -139,208 +155,406 @@ class ManyRPCsServiceStub: def __new__(cls, channel: grpc.Channel) -> ManyRPCsServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> ManyRPCsServiceAsyncStub: ... - Method1: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] - Method2: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] - Method3: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] - Method4: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] - Method5: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] - Method6: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] - Method7: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] - Method8: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] - Method9: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] - Method10: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] - Method11: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] - Method12: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] - Method13: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] - Method14: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] - Method15: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] - Method16: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] - Method17: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] - Method18: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] - Method19: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] - Method20: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] - Method21: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] - Method22: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] - Method23: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] - Method24: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] - Method25: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] - Method26: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] - Method27: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] - Method28: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] - Method29: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] - Method30: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] - Method31: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] - Method32: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] - Method33: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] - Method34: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] - Method35: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] - Method36: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] - Method37: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] - Method38: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] - Method39: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] - Method40: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] - Method41: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] - Method42: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] - Method43: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] - Method44: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] - Method45: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] - Method46: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] - Method47: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] - Method48: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] - Method49: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] - Method50: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] - Method51: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] - Method52: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] - Method53: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] - Method54: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] - Method55: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] - Method56: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] - Method57: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] - Method58: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] - Method59: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] - Method60: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] - Method61: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] - Method62: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] - Method63: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] - Method64: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] - Method65: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] - Method66: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] - Method67: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] - Method68: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] - Method69: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] - Method70: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] - Method71: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] - Method72: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] - Method73: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] - Method74: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] - Method75: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] - Method76: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] - Method77: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] - Method78: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] - Method79: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] - Method80: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] - Method81: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] - Method82: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] - Method83: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] - Method84: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] - Method85: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] - Method86: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] - Method87: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] - Method88: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] - Method89: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] - Method90: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] - Method91: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] - Method92: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] - Method93: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] - Method94: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] - Method95: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] - Method96: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] - Method97: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] - Method98: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] - Method99: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] + @property + def Method1(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... + @property + def Method2(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... + @property + def Method3(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... + @property + def Method4(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... + @property + def Method5(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... + @property + def Method6(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... + @property + def Method7(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... + @property + def Method8(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... + @property + def Method9(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... + @property + def Method10(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... + @property + def Method11(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... + @property + def Method12(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... + @property + def Method13(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... + @property + def Method14(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... + @property + def Method15(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... + @property + def Method16(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... + @property + def Method17(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... + @property + def Method18(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... + @property + def Method19(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... + @property + def Method20(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... + @property + def Method21(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... + @property + def Method22(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... + @property + def Method23(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... + @property + def Method24(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... + @property + def Method25(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... + @property + def Method26(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... + @property + def Method27(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... + @property + def Method28(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... + @property + def Method29(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... + @property + def Method30(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... + @property + def Method31(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... + @property + def Method32(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... + @property + def Method33(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... + @property + def Method34(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... + @property + def Method35(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... + @property + def Method36(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... + @property + def Method37(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... + @property + def Method38(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... + @property + def Method39(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... + @property + def Method40(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... + @property + def Method41(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... + @property + def Method42(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... + @property + def Method43(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... + @property + def Method44(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... + @property + def Method45(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... + @property + def Method46(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... + @property + def Method47(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... + @property + def Method48(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... + @property + def Method49(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... + @property + def Method50(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... + @property + def Method51(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... + @property + def Method52(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... + @property + def Method53(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... + @property + def Method54(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... + @property + def Method55(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... + @property + def Method56(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... + @property + def Method57(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... + @property + def Method58(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... + @property + def Method59(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... + @property + def Method60(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... + @property + def Method61(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... + @property + def Method62(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... + @property + def Method63(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... + @property + def Method64(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... + @property + def Method65(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... + @property + def Method66(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... + @property + def Method67(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... + @property + def Method68(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... + @property + def Method69(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... + @property + def Method70(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... + @property + def Method71(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... + @property + def Method72(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... + @property + def Method73(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... + @property + def Method74(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... + @property + def Method75(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... + @property + def Method76(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... + @property + def Method77(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... + @property + def Method78(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... + @property + def Method79(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... + @property + def Method80(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... + @property + def Method81(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... + @property + def Method82(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... + @property + def Method83(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... + @property + def Method84(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... + @property + def Method85(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... + @property + def Method86(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... + @property + def Method87(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... + @property + def Method88(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... + @property + def Method89(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... + @property + def Method90(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... + @property + def Method91(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... + @property + def Method92(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... + @property + def Method93(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... + @property + def Method94(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... + @property + def Method95(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... + @property + def Method96(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... + @property + def Method97(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... + @property + def Method98(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... + @property + def Method99(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... @typing.type_check_only class ManyRPCsServiceAsyncStub(ManyRPCsServiceStub): def __init__(self, channel: grpc.aio.Channel) -> None: ... - Method1: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] # type: ignore[assignment] - Method2: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] # type: ignore[assignment] - Method3: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] # type: ignore[assignment] - Method4: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] # type: ignore[assignment] - Method5: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] # type: ignore[assignment] - Method6: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] # type: ignore[assignment] - Method7: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] # type: ignore[assignment] - Method8: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] # type: ignore[assignment] - Method9: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] # type: ignore[assignment] - Method10: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] # type: ignore[assignment] - Method11: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] # type: ignore[assignment] - Method12: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] # type: ignore[assignment] - Method13: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] # type: ignore[assignment] - Method14: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] # type: ignore[assignment] - Method15: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] # type: ignore[assignment] - Method16: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] # type: ignore[assignment] - Method17: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] # type: ignore[assignment] - Method18: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] # type: ignore[assignment] - Method19: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] # type: ignore[assignment] - Method20: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] # type: ignore[assignment] - Method21: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] # type: ignore[assignment] - Method22: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] # type: ignore[assignment] - Method23: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] # type: ignore[assignment] - Method24: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] # type: ignore[assignment] - Method25: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] # type: ignore[assignment] - Method26: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] # type: ignore[assignment] - Method27: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] # type: ignore[assignment] - Method28: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] # type: ignore[assignment] - Method29: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] # type: ignore[assignment] - Method30: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] # type: ignore[assignment] - Method31: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] # type: ignore[assignment] - Method32: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] # type: ignore[assignment] - Method33: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] # type: ignore[assignment] - Method34: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] # type: ignore[assignment] - Method35: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] # type: ignore[assignment] - Method36: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] # type: ignore[assignment] - Method37: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] # type: ignore[assignment] - Method38: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] # type: ignore[assignment] - Method39: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] # type: ignore[assignment] - Method40: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] # type: ignore[assignment] - Method41: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] # type: ignore[assignment] - Method42: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] # type: ignore[assignment] - Method43: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] # type: ignore[assignment] - Method44: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] # type: ignore[assignment] - Method45: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] # type: ignore[assignment] - Method46: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] # type: ignore[assignment] - Method47: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] # type: ignore[assignment] - Method48: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] # type: ignore[assignment] - Method49: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] # type: ignore[assignment] - Method50: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] # type: ignore[assignment] - Method51: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] # type: ignore[assignment] - Method52: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] # type: ignore[assignment] - Method53: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] # type: ignore[assignment] - Method54: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] # type: ignore[assignment] - Method55: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] # type: ignore[assignment] - Method56: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] # type: ignore[assignment] - Method57: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] # type: ignore[assignment] - Method58: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] # type: ignore[assignment] - Method59: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] # type: ignore[assignment] - Method60: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] # type: ignore[assignment] - Method61: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] # type: ignore[assignment] - Method62: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] # type: ignore[assignment] - Method63: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] # type: ignore[assignment] - Method64: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] # type: ignore[assignment] - Method65: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] # type: ignore[assignment] - Method66: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] # type: ignore[assignment] - Method67: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] # type: ignore[assignment] - Method68: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] # type: ignore[assignment] - Method69: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] # type: ignore[assignment] - Method70: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] # type: ignore[assignment] - Method71: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] # type: ignore[assignment] - Method72: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] # type: ignore[assignment] - Method73: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] # type: ignore[assignment] - Method74: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] # type: ignore[assignment] - Method75: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] # type: ignore[assignment] - Method76: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] # type: ignore[assignment] - Method77: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] # type: ignore[assignment] - Method78: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] # type: ignore[assignment] - Method79: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] # type: ignore[assignment] - Method80: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] # type: ignore[assignment] - Method81: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] # type: ignore[assignment] - Method82: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] # type: ignore[assignment] - Method83: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] # type: ignore[assignment] - Method84: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] # type: ignore[assignment] - Method85: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] # type: ignore[assignment] - Method86: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] # type: ignore[assignment] - Method87: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] # type: ignore[assignment] - Method88: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] # type: ignore[assignment] - Method89: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] # type: ignore[assignment] - Method90: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] # type: ignore[assignment] - Method91: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] # type: ignore[assignment] - Method92: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] # type: ignore[assignment] - Method93: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] # type: ignore[assignment] - Method94: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] # type: ignore[assignment] - Method95: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] # type: ignore[assignment] - Method96: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] # type: ignore[assignment] - Method97: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] # type: ignore[assignment] - Method98: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] # type: ignore[assignment] - Method99: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] # type: ignore[assignment] + @property + def Method1(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... # type: ignore[override] + @property + def Method2(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... # type: ignore[override] + @property + def Method3(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... # type: ignore[override] + @property + def Method4(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... # type: ignore[override] + @property + def Method5(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... # type: ignore[override] + @property + def Method6(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... # type: ignore[override] + @property + def Method7(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... # type: ignore[override] + @property + def Method8(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... # type: ignore[override] + @property + def Method9(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... # type: ignore[override] + @property + def Method10(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... # type: ignore[override] + @property + def Method11(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... # type: ignore[override] + @property + def Method12(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... # type: ignore[override] + @property + def Method13(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... # type: ignore[override] + @property + def Method14(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... # type: ignore[override] + @property + def Method15(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... # type: ignore[override] + @property + def Method16(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... # type: ignore[override] + @property + def Method17(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... # type: ignore[override] + @property + def Method18(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... # type: ignore[override] + @property + def Method19(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... # type: ignore[override] + @property + def Method20(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... # type: ignore[override] + @property + def Method21(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... # type: ignore[override] + @property + def Method22(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... # type: ignore[override] + @property + def Method23(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... # type: ignore[override] + @property + def Method24(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... # type: ignore[override] + @property + def Method25(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... # type: ignore[override] + @property + def Method26(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... # type: ignore[override] + @property + def Method27(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... # type: ignore[override] + @property + def Method28(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... # type: ignore[override] + @property + def Method29(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... # type: ignore[override] + @property + def Method30(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... # type: ignore[override] + @property + def Method31(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... # type: ignore[override] + @property + def Method32(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... # type: ignore[override] + @property + def Method33(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... # type: ignore[override] + @property + def Method34(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... # type: ignore[override] + @property + def Method35(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... # type: ignore[override] + @property + def Method36(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... # type: ignore[override] + @property + def Method37(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... # type: ignore[override] + @property + def Method38(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... # type: ignore[override] + @property + def Method39(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... # type: ignore[override] + @property + def Method40(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... # type: ignore[override] + @property + def Method41(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... # type: ignore[override] + @property + def Method42(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... # type: ignore[override] + @property + def Method43(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... # type: ignore[override] + @property + def Method44(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... # type: ignore[override] + @property + def Method45(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... # type: ignore[override] + @property + def Method46(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... # type: ignore[override] + @property + def Method47(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... # type: ignore[override] + @property + def Method48(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... # type: ignore[override] + @property + def Method49(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... # type: ignore[override] + @property + def Method50(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... # type: ignore[override] + @property + def Method51(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... # type: ignore[override] + @property + def Method52(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... # type: ignore[override] + @property + def Method53(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... # type: ignore[override] + @property + def Method54(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... # type: ignore[override] + @property + def Method55(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... # type: ignore[override] + @property + def Method56(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... # type: ignore[override] + @property + def Method57(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... # type: ignore[override] + @property + def Method58(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... # type: ignore[override] + @property + def Method59(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... # type: ignore[override] + @property + def Method60(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... # type: ignore[override] + @property + def Method61(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... # type: ignore[override] + @property + def Method62(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... # type: ignore[override] + @property + def Method63(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... # type: ignore[override] + @property + def Method64(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... # type: ignore[override] + @property + def Method65(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... # type: ignore[override] + @property + def Method66(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... # type: ignore[override] + @property + def Method67(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... # type: ignore[override] + @property + def Method68(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... # type: ignore[override] + @property + def Method69(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... # type: ignore[override] + @property + def Method70(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... # type: ignore[override] + @property + def Method71(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... # type: ignore[override] + @property + def Method72(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... # type: ignore[override] + @property + def Method73(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... # type: ignore[override] + @property + def Method74(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... # type: ignore[override] + @property + def Method75(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... # type: ignore[override] + @property + def Method76(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... # type: ignore[override] + @property + def Method77(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... # type: ignore[override] + @property + def Method78(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... # type: ignore[override] + @property + def Method79(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... # type: ignore[override] + @property + def Method80(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... # type: ignore[override] + @property + def Method81(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... # type: ignore[override] + @property + def Method82(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... # type: ignore[override] + @property + def Method83(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... # type: ignore[override] + @property + def Method84(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... # type: ignore[override] + @property + def Method85(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... # type: ignore[override] + @property + def Method86(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... # type: ignore[override] + @property + def Method87(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... # type: ignore[override] + @property + def Method88(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... # type: ignore[override] + @property + def Method89(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... # type: ignore[override] + @property + def Method90(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... # type: ignore[override] + @property + def Method91(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... # type: ignore[override] + @property + def Method92(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... # type: ignore[override] + @property + def Method93(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... # type: ignore[override] + @property + def Method94(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... # type: ignore[override] + @property + def Method95(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... # type: ignore[override] + @property + def Method96(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... # type: ignore[override] + @property + def Method97(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... # type: ignore[override] + @property + def Method98(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... # type: ignore[override] + @property + def Method99(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... # type: ignore[override] class ManyRPCsServiceServicer: def Method1( diff --git a/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi b/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi index 46f72e3c..ac6f685b 100644 --- a/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi @@ -28,22 +28,28 @@ class SimpleServiceStub: def __new__(cls, channel: grpc.Channel) -> SimpleServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> SimpleServiceAsyncStub: ... - UnaryUnary: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] - """UnaryUnary""" - UnaryStream: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] - """UnaryStream""" - NoComment: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] + @property + def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: + """UnaryStream""" + @property + def NoComment(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... @typing.type_check_only class SimpleServiceAsyncStub(SimpleServiceStub): """SimpleService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] # type: ignore[assignment] - """UnaryUnary""" - UnaryStream: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] - """UnaryStream""" - NoComment: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] + @property + def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: # type: ignore[override] + """UnaryUnary""" + @property + def UnaryStream(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: # type: ignore[override] + """UnaryStream""" + @property + def NoComment(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... # type: ignore[override] class SimpleServiceServicer: """SimpleService""" diff --git a/test/generated_concrete/testproto/nested/nested_pb2.pyi b/test/generated_concrete/testproto/nested/nested_pb2.pyi index ca263aee..91e5d6aa 100644 --- a/test/generated_concrete/testproto/nested/nested_pb2.pyi +++ b/test/generated_concrete/testproto/nested/nested_pb2.pyi @@ -44,9 +44,12 @@ class AnotherNested(google.protobuf.message.Message): 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 + @property + def INVALID(self) -> AnotherNested._NestedEnum.ValueType: ... # 0 + @property + def ONE(self) -> AnotherNested._NestedEnum.ValueType: ... # 1 + @property + def TWO(self) -> AnotherNested._NestedEnum.ValueType: ... # 2 class NestedEnum(_NestedEnum, metaclass=_NestedEnumEnumTypeWrapper): ... INVALID: AnotherNested.NestedEnum.ValueType # 0 @@ -63,9 +66,12 @@ class AnotherNested(google.protobuf.message.Message): 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 + @property + def UNDEFINED(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 0 + @property + def NESTED_ENUM1(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 1 + @property + def NESTED_ENUM2(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 2 class NestedEnum2(_NestedEnum2, metaclass=_NestedEnum2EnumTypeWrapper): ... UNDEFINED: AnotherNested.NestedMessage.NestedEnum2.ValueType # 0 diff --git a/test/generated_concrete/testproto/readme_enum_pb2.pyi b/test/generated_concrete/testproto/readme_enum_pb2.pyi index be8369c4..23e01b53 100644 --- a/test/generated_concrete/testproto/readme_enum_pb2.pyi +++ b/test/generated_concrete/testproto/readme_enum_pb2.pyi @@ -22,8 +22,10 @@ class _MyEnum: 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 + @property + def HELLO(self) -> _MyEnum.ValueType: ... # 0 + @property + def WORLD(self) -> _MyEnum.ValueType: ... # 1 class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... diff --git a/test/generated_concrete/testproto/test3_pb2.pyi b/test/generated_concrete/testproto/test3_pb2.pyi index ca2421ab..cb19e6c2 100644 --- a/test/generated_concrete/testproto/test3_pb2.pyi +++ b/test/generated_concrete/testproto/test3_pb2.pyi @@ -26,9 +26,12 @@ class _OuterEnum: 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 + @property + def UNKNOWN(self) -> _OuterEnum.ValueType: ... # 0 + @property + def FOO3(self) -> _OuterEnum.ValueType: ... # 1 + @property + def BAR3(self) -> _OuterEnum.ValueType: ... # 2 class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... @@ -63,8 +66,10 @@ class SimpleProto3(google.protobuf.message.Message): 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 + @property + def INNER1(self) -> SimpleProto3._InnerEnum.ValueType: ... # 0 + @property + def INNER2(self) -> SimpleProto3._InnerEnum.ValueType: ... # 1 class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... INNER1: SimpleProto3.InnerEnum.ValueType # 0 diff --git a/test/generated_concrete/testproto/test_pb2.pyi b/test/generated_concrete/testproto/test_pb2.pyi index 94e646db..704b6ab4 100644 --- a/test/generated_concrete/testproto/test_pb2.pyi +++ b/test/generated_concrete/testproto/test_pb2.pyi @@ -36,10 +36,12 @@ class _OuterEnum: 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""" + @property + def FOO(self) -> _OuterEnum.ValueType: # 1 + """FOO""" + @property + def BAR(self) -> _OuterEnum.ValueType: # 2 + """BAR""" class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): """Outer Enum""" @@ -77,14 +79,23 @@ class _DeprecatedEnum: 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 + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_ONE(self) -> _DeprecatedEnum.ValueType: # 1 + """Trailing comment for enum value""" + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_TWO(self) -> _DeprecatedEnum.ValueType: ... # 2 + @property + def NOT_DEPRECATED(self) -> _DeprecatedEnum.ValueType: ... # 3 @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 +"""Trailing comment for enum value""" DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 +NOT_DEPRECATED: DeprecatedEnum.ValueType # 3 Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum @typing.final @@ -99,10 +110,12 @@ class Simple1(google.protobuf.message.Message): 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""" + @property + def INNER1(self) -> Simple1._InnerEnum.ValueType: # 1 + """INNER1""" + @property + def INNER2(self) -> Simple1._InnerEnum.ValueType: # 2 + """INNER2""" class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): """Inner Enum""" @@ -320,7 +333,8 @@ class PythonReservedKeywords(google.protobuf.message.Message): 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 + @property + def valid_in_finally(self) -> PythonReservedKeywords._finally.ValueType: ... # 2 class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 diff --git a/test/test_generated_mypy.py b/test/test_generated_mypy.py index 7cd822e8..e28ecb76 100644 --- a/test/test_generated_mypy.py +++ b/test/test_generated_mypy.py @@ -121,7 +121,7 @@ def grab_expectations(filename: str, marker: str) -> Generator[Tuple[str, int], assert errors_39 == expected_errors_39 # Some sanity checks to make sure we don't mess this up. Please update as necessary. - assert len(errors_39) == 90 + assert len(errors_39) == 94 def test_func() -> None: diff --git a/test_negative/negative.py b/test_negative/negative.py index 6e2922d5..78e5238d 100644 --- a/test_negative/negative.py +++ b/test_negative/negative.py @@ -29,6 +29,7 @@ from testproto.test_extensions2_pb2 import SeparateFileExtension from testproto.test_pb2 import DeprecatedEnum # E:3.8 from testproto.test_pb2 import ( # E:3.8 + DEPRECATED_ONE, DESCRIPTOR, FOO, DeprecatedMessage, @@ -315,12 +316,14 @@ def DeprecatedMethodNotDeprecatedRequest( deprecated_servicer = DeprecatedServicer() add_DeprecatedServiceServicer_to_server(deprecated_servicer, server) stub2 = DeprecatedServiceStub(channel) -stub2.DeprecatedMethod(DeprecatedRequest(old_field="test")) -stub2.DeprecatedMethodNotDeprecatedRequest(DummyRequest()) # Cannot deprecate methods at this time +stub2.DeprecatedMethod(DeprecatedRequest(old_field="test")) # E:3.8 +stub2.DeprecatedMethodNotDeprecatedRequest(DummyRequest()) # E:3.8 async_stub2: "dummy_pb2_grpc.DeprecatedServiceAsyncStub" # E:3.8 async_stub2 = DeprecatedServiceStub(grpc.aio.insecure_channel("")) -de = DeprecatedEnum.DEPRECATED_ONE +de = DeprecatedEnum.DEPRECATED_ONE # E:3.8 +de2 = DeprecatedEnum.DEPRECATED_TWO # E:3.8 +de3 = DEPRECATED_ONE # Cannot mark the global one as deprecated yet # Edition 2024 tests diff --git a/test_negative/output.expected.3.10 b/test_negative/output.expected.3.10 index f60b9d96..177ecf69 100644 --- a/test_negative/output.expected.3.10 +++ b/test_negative/output.expected.3.10 @@ -1,18 +1,18 @@ test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:104: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:127: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:88: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:446: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:465: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -23,120 +23,124 @@ test_negative/negative.py:30: error: class testproto.test_pb2.DeprecatedEnum is and 'single quotes' Trailing comment [deprecated] test_negative/negative.py:31: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test_negative/negative.py:45: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] -test_negative/negative.py:48: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] -test_negative/negative.py:51: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] -test_negative/negative.py:55: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] -test_negative/negative.py:57: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] -test_negative/negative.py:60: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] -test_negative/negative.py:63: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:68: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] -test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] -test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:74: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:77: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:80: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:82: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:87: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:91: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] -test_negative/negative.py:94: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] -test_negative/negative.py:94: note: Possible overload variants: -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None -test_negative/negative.py:96: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:100: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:104: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] -test_negative/negative.py:105: error: "type[Extensions1]" has no attribute "bad" [attr-defined] -test_negative/negative.py:107: error: "Extensions1" has no attribute "foo" [attr-defined] -test_negative/negative.py:108: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] -test_negative/negative.py:112: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] -test_negative/negative.py:113: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] -test_negative/negative.py:114: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] -test_negative/negative.py:115: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] -test_negative/negative.py:116: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] -test_negative/negative.py:117: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] -test_negative/negative.py:121: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] -test_negative/negative.py:125: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] -test_negative/negative.py:128: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:46: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] +test_negative/negative.py:49: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] +test_negative/negative.py:52: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] +test_negative/negative.py:56: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] +test_negative/negative.py:58: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] +test_negative/negative.py:61: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] +test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:65: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] +test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] +test_negative/negative.py:72: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:75: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:78: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:81: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:83: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:88: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:92: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] +test_negative/negative.py:95: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] +test_negative/negative.py:95: note: Possible overload variants: +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None +test_negative/negative.py:97: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:101: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:105: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] +test_negative/negative.py:106: error: "type[Extensions1]" has no attribute "bad" [attr-defined] +test_negative/negative.py:108: error: "Extensions1" has no attribute "foo" [attr-defined] +test_negative/negative.py:109: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] +test_negative/negative.py:113: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] +test_negative/negative.py:114: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] +test_negative/negative.py:115: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] +test_negative/negative.py:116: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] +test_negative/negative.py:117: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] +test_negative/negative.py:118: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] +test_negative/negative.py:122: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] +test_negative/negative.py:126: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] test_negative/negative.py:129: error: "Descriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:132: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:135: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:142: error: "ValueType" has no attribute "FOO" [attr-defined] -test_negative/negative.py:146: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] -test_negative/negative.py:148: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:150: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:152: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:156: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] -test_negative/negative.py:158: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] -test_negative/negative.py:158: note: Possible overload variants: -test_negative/negative.py:158: note: def get(self, key: int, default: None = ...) -> str | None -test_negative/negative.py:158: note: def get(self, key: int, default: str) -> str -test_negative/negative.py:158: note: def [_T] get(self, key: int, default: _T) -> str | _T -test_negative/negative.py:159: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:130: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:133: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:136: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:143: error: "ValueType" has no attribute "FOO" [attr-defined] +test_negative/negative.py:147: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] +test_negative/negative.py:149: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:151: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:153: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:157: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] +test_negative/negative.py:159: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] test_negative/negative.py:159: note: Possible overload variants: -test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None -test_negative/negative.py:159: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 -test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T -test_negative/negative.py:162: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] -test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] -test_negative/negative.py:169: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] -test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] -test_negative/negative.py:171: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> str | None +test_negative/negative.py:159: note: def get(self, key: int, default: str) -> str +test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> str | _T +test_negative/negative.py:160: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:160: note: Possible overload variants: +test_negative/negative.py:160: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None +test_negative/negative.py:160: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 +test_negative/negative.py:160: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T +test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] +test_negative/negative.py:164: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] +test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] +test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] +test_negative/negative.py:172: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] test_negative/negative.py:172: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] -test_negative/negative.py:173: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:175: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] -test_negative/negative.py:176: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] -test_negative/negative.py:177: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] -test_negative/negative.py:181: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] -test_negative/negative.py:185: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:190: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] -test_negative/negative.py:191: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] -test_negative/negative.py:196: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] -test_negative/negative.py:200: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:204: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:204: note: Possible overload variants: -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:211: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:212: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:217: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:219: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:226: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:228: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:228: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:235: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:272: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:274: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:274: note: This violates the Liskov substitution principle -test_negative/negative.py:274: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:280: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:282: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:282: note: This violates the Liskov substitution principle -test_negative/negative.py:282: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:289: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:291: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:291: note: This violates the Liskov substitution principle -test_negative/negative.py:291: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:320: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:332: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:334: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:345: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:352: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:359: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:369: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:372: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:372: note: Possible overload variants: -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:373: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:373: note: Possible overload variants: -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +test_negative/negative.py:173: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:174: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] +test_negative/negative.py:176: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] +test_negative/negative.py:177: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] +test_negative/negative.py:178: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] +test_negative/negative.py:182: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] +test_negative/negative.py:186: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:191: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] +test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] +test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] +test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:205: note: Possible overload variants: +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] +test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:275: note: This violates the Liskov substitution principle +test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:283: note: This violates the Liskov substitution principle +test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:292: note: This violates the Liskov substitution principle +test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:375: note: Possible overload variants: +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:376: note: Possible overload variants: +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.10.omit_linenos b/test_negative/output.expected.3.10.omit_linenos index b32a0a1e..3def46af 100644 --- a/test_negative/output.expected.3.10.omit_linenos +++ b/test_negative/output.expected.3.10.omit_linenos @@ -124,7 +124,11 @@ test_negative/negative.py: error: Return type "Iterator[DummyReply]" of "StreamU test_negative/negative.py: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py: note: This violates the Liskov substitution principle test_negative/negative.py: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] test_negative/negative.py: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] test_negative/negative.py: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] @@ -139,4 +143,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.11 b/test_negative/output.expected.3.11 index f60b9d96..177ecf69 100644 --- a/test_negative/output.expected.3.11 +++ b/test_negative/output.expected.3.11 @@ -1,18 +1,18 @@ test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:104: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:127: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:88: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:446: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:465: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -23,120 +23,124 @@ test_negative/negative.py:30: error: class testproto.test_pb2.DeprecatedEnum is and 'single quotes' Trailing comment [deprecated] test_negative/negative.py:31: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test_negative/negative.py:45: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] -test_negative/negative.py:48: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] -test_negative/negative.py:51: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] -test_negative/negative.py:55: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] -test_negative/negative.py:57: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] -test_negative/negative.py:60: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] -test_negative/negative.py:63: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:68: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] -test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] -test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:74: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:77: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:80: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:82: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:87: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:91: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] -test_negative/negative.py:94: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] -test_negative/negative.py:94: note: Possible overload variants: -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None -test_negative/negative.py:96: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:100: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:104: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] -test_negative/negative.py:105: error: "type[Extensions1]" has no attribute "bad" [attr-defined] -test_negative/negative.py:107: error: "Extensions1" has no attribute "foo" [attr-defined] -test_negative/negative.py:108: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] -test_negative/negative.py:112: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] -test_negative/negative.py:113: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] -test_negative/negative.py:114: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] -test_negative/negative.py:115: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] -test_negative/negative.py:116: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] -test_negative/negative.py:117: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] -test_negative/negative.py:121: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] -test_negative/negative.py:125: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] -test_negative/negative.py:128: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:46: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] +test_negative/negative.py:49: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] +test_negative/negative.py:52: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] +test_negative/negative.py:56: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] +test_negative/negative.py:58: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] +test_negative/negative.py:61: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] +test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:65: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] +test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] +test_negative/negative.py:72: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:75: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:78: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:81: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:83: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:88: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:92: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] +test_negative/negative.py:95: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] +test_negative/negative.py:95: note: Possible overload variants: +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None +test_negative/negative.py:97: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:101: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:105: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] +test_negative/negative.py:106: error: "type[Extensions1]" has no attribute "bad" [attr-defined] +test_negative/negative.py:108: error: "Extensions1" has no attribute "foo" [attr-defined] +test_negative/negative.py:109: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] +test_negative/negative.py:113: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] +test_negative/negative.py:114: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] +test_negative/negative.py:115: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] +test_negative/negative.py:116: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] +test_negative/negative.py:117: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] +test_negative/negative.py:118: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] +test_negative/negative.py:122: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] +test_negative/negative.py:126: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] test_negative/negative.py:129: error: "Descriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:132: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:135: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:142: error: "ValueType" has no attribute "FOO" [attr-defined] -test_negative/negative.py:146: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] -test_negative/negative.py:148: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:150: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:152: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:156: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] -test_negative/negative.py:158: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] -test_negative/negative.py:158: note: Possible overload variants: -test_negative/negative.py:158: note: def get(self, key: int, default: None = ...) -> str | None -test_negative/negative.py:158: note: def get(self, key: int, default: str) -> str -test_negative/negative.py:158: note: def [_T] get(self, key: int, default: _T) -> str | _T -test_negative/negative.py:159: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:130: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:133: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:136: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:143: error: "ValueType" has no attribute "FOO" [attr-defined] +test_negative/negative.py:147: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] +test_negative/negative.py:149: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:151: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:153: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:157: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] +test_negative/negative.py:159: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] test_negative/negative.py:159: note: Possible overload variants: -test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None -test_negative/negative.py:159: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 -test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T -test_negative/negative.py:162: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] -test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] -test_negative/negative.py:169: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] -test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] -test_negative/negative.py:171: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> str | None +test_negative/negative.py:159: note: def get(self, key: int, default: str) -> str +test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> str | _T +test_negative/negative.py:160: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:160: note: Possible overload variants: +test_negative/negative.py:160: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None +test_negative/negative.py:160: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 +test_negative/negative.py:160: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T +test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] +test_negative/negative.py:164: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] +test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] +test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] +test_negative/negative.py:172: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] test_negative/negative.py:172: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] -test_negative/negative.py:173: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:175: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] -test_negative/negative.py:176: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] -test_negative/negative.py:177: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] -test_negative/negative.py:181: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] -test_negative/negative.py:185: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:190: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] -test_negative/negative.py:191: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] -test_negative/negative.py:196: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] -test_negative/negative.py:200: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:204: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:204: note: Possible overload variants: -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:211: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:212: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:217: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:219: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:226: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:228: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:228: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:235: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:272: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:274: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:274: note: This violates the Liskov substitution principle -test_negative/negative.py:274: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:280: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:282: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:282: note: This violates the Liskov substitution principle -test_negative/negative.py:282: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:289: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:291: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:291: note: This violates the Liskov substitution principle -test_negative/negative.py:291: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:320: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:332: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:334: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:345: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:352: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:359: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:369: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:372: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:372: note: Possible overload variants: -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:373: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:373: note: Possible overload variants: -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +test_negative/negative.py:173: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:174: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] +test_negative/negative.py:176: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] +test_negative/negative.py:177: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] +test_negative/negative.py:178: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] +test_negative/negative.py:182: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] +test_negative/negative.py:186: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:191: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] +test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] +test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] +test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:205: note: Possible overload variants: +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] +test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:275: note: This violates the Liskov substitution principle +test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:283: note: This violates the Liskov substitution principle +test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:292: note: This violates the Liskov substitution principle +test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:375: note: Possible overload variants: +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:376: note: Possible overload variants: +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.11.omit_linenos b/test_negative/output.expected.3.11.omit_linenos index b32a0a1e..3def46af 100644 --- a/test_negative/output.expected.3.11.omit_linenos +++ b/test_negative/output.expected.3.11.omit_linenos @@ -124,7 +124,11 @@ test_negative/negative.py: error: Return type "Iterator[DummyReply]" of "StreamU test_negative/negative.py: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py: note: This violates the Liskov substitution principle test_negative/negative.py: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] test_negative/negative.py: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] test_negative/negative.py: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] @@ -139,4 +143,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.12 b/test_negative/output.expected.3.12 index f60b9d96..177ecf69 100644 --- a/test_negative/output.expected.3.12 +++ b/test_negative/output.expected.3.12 @@ -1,18 +1,18 @@ test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:104: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:127: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:88: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:446: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:465: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -23,120 +23,124 @@ test_negative/negative.py:30: error: class testproto.test_pb2.DeprecatedEnum is and 'single quotes' Trailing comment [deprecated] test_negative/negative.py:31: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test_negative/negative.py:45: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] -test_negative/negative.py:48: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] -test_negative/negative.py:51: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] -test_negative/negative.py:55: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] -test_negative/negative.py:57: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] -test_negative/negative.py:60: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] -test_negative/negative.py:63: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:68: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] -test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] -test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:74: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:77: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:80: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:82: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:87: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:91: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] -test_negative/negative.py:94: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] -test_negative/negative.py:94: note: Possible overload variants: -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None -test_negative/negative.py:96: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:100: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:104: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] -test_negative/negative.py:105: error: "type[Extensions1]" has no attribute "bad" [attr-defined] -test_negative/negative.py:107: error: "Extensions1" has no attribute "foo" [attr-defined] -test_negative/negative.py:108: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] -test_negative/negative.py:112: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] -test_negative/negative.py:113: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] -test_negative/negative.py:114: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] -test_negative/negative.py:115: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] -test_negative/negative.py:116: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] -test_negative/negative.py:117: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] -test_negative/negative.py:121: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] -test_negative/negative.py:125: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] -test_negative/negative.py:128: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:46: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] +test_negative/negative.py:49: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] +test_negative/negative.py:52: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] +test_negative/negative.py:56: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] +test_negative/negative.py:58: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] +test_negative/negative.py:61: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] +test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:65: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] +test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] +test_negative/negative.py:72: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:75: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:78: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:81: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:83: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:88: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:92: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] +test_negative/negative.py:95: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] +test_negative/negative.py:95: note: Possible overload variants: +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None +test_negative/negative.py:97: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:101: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:105: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] +test_negative/negative.py:106: error: "type[Extensions1]" has no attribute "bad" [attr-defined] +test_negative/negative.py:108: error: "Extensions1" has no attribute "foo" [attr-defined] +test_negative/negative.py:109: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] +test_negative/negative.py:113: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] +test_negative/negative.py:114: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] +test_negative/negative.py:115: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] +test_negative/negative.py:116: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] +test_negative/negative.py:117: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] +test_negative/negative.py:118: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] +test_negative/negative.py:122: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] +test_negative/negative.py:126: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] test_negative/negative.py:129: error: "Descriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:132: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:135: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:142: error: "ValueType" has no attribute "FOO" [attr-defined] -test_negative/negative.py:146: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] -test_negative/negative.py:148: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:150: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:152: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:156: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] -test_negative/negative.py:158: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] -test_negative/negative.py:158: note: Possible overload variants: -test_negative/negative.py:158: note: def get(self, key: int, default: None = ...) -> str | None -test_negative/negative.py:158: note: def get(self, key: int, default: str) -> str -test_negative/negative.py:158: note: def [_T] get(self, key: int, default: _T) -> str | _T -test_negative/negative.py:159: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:130: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:133: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:136: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:143: error: "ValueType" has no attribute "FOO" [attr-defined] +test_negative/negative.py:147: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] +test_negative/negative.py:149: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:151: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:153: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:157: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] +test_negative/negative.py:159: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] test_negative/negative.py:159: note: Possible overload variants: -test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None -test_negative/negative.py:159: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 -test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T -test_negative/negative.py:162: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] -test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] -test_negative/negative.py:169: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] -test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] -test_negative/negative.py:171: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> str | None +test_negative/negative.py:159: note: def get(self, key: int, default: str) -> str +test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> str | _T +test_negative/negative.py:160: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:160: note: Possible overload variants: +test_negative/negative.py:160: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None +test_negative/negative.py:160: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 +test_negative/negative.py:160: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T +test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] +test_negative/negative.py:164: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] +test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] +test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] +test_negative/negative.py:172: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] test_negative/negative.py:172: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] -test_negative/negative.py:173: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:175: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] -test_negative/negative.py:176: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] -test_negative/negative.py:177: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] -test_negative/negative.py:181: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] -test_negative/negative.py:185: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:190: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] -test_negative/negative.py:191: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] -test_negative/negative.py:196: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] -test_negative/negative.py:200: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:204: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:204: note: Possible overload variants: -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:211: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:212: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:217: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:219: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:226: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:228: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:228: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:235: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:272: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:274: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:274: note: This violates the Liskov substitution principle -test_negative/negative.py:274: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:280: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:282: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:282: note: This violates the Liskov substitution principle -test_negative/negative.py:282: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:289: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:291: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:291: note: This violates the Liskov substitution principle -test_negative/negative.py:291: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:320: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:332: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:334: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:345: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:352: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:359: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:369: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:372: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:372: note: Possible overload variants: -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:373: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:373: note: Possible overload variants: -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +test_negative/negative.py:173: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:174: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] +test_negative/negative.py:176: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] +test_negative/negative.py:177: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] +test_negative/negative.py:178: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] +test_negative/negative.py:182: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] +test_negative/negative.py:186: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:191: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] +test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] +test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] +test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:205: note: Possible overload variants: +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] +test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:275: note: This violates the Liskov substitution principle +test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:283: note: This violates the Liskov substitution principle +test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:292: note: This violates the Liskov substitution principle +test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:375: note: Possible overload variants: +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:376: note: Possible overload variants: +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.12.omit_linenos b/test_negative/output.expected.3.12.omit_linenos index b32a0a1e..3def46af 100644 --- a/test_negative/output.expected.3.12.omit_linenos +++ b/test_negative/output.expected.3.12.omit_linenos @@ -124,7 +124,11 @@ test_negative/negative.py: error: Return type "Iterator[DummyReply]" of "StreamU test_negative/negative.py: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py: note: This violates the Liskov substitution principle test_negative/negative.py: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] test_negative/negative.py: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] test_negative/negative.py: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] @@ -139,4 +143,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.13 b/test_negative/output.expected.3.13 index f60b9d96..177ecf69 100644 --- a/test_negative/output.expected.3.13 +++ b/test_negative/output.expected.3.13 @@ -1,18 +1,18 @@ test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:104: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:127: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:88: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:446: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:465: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -23,120 +23,124 @@ test_negative/negative.py:30: error: class testproto.test_pb2.DeprecatedEnum is and 'single quotes' Trailing comment [deprecated] test_negative/negative.py:31: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test_negative/negative.py:45: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] -test_negative/negative.py:48: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] -test_negative/negative.py:51: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] -test_negative/negative.py:55: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] -test_negative/negative.py:57: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] -test_negative/negative.py:60: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] -test_negative/negative.py:63: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:68: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] -test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] -test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:74: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:77: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:80: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:82: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:87: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:91: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] -test_negative/negative.py:94: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] -test_negative/negative.py:94: note: Possible overload variants: -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None -test_negative/negative.py:96: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:100: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:104: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] -test_negative/negative.py:105: error: "type[Extensions1]" has no attribute "bad" [attr-defined] -test_negative/negative.py:107: error: "Extensions1" has no attribute "foo" [attr-defined] -test_negative/negative.py:108: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] -test_negative/negative.py:112: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] -test_negative/negative.py:113: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] -test_negative/negative.py:114: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] -test_negative/negative.py:115: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] -test_negative/negative.py:116: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] -test_negative/negative.py:117: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] -test_negative/negative.py:121: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] -test_negative/negative.py:125: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] -test_negative/negative.py:128: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:46: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] +test_negative/negative.py:49: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] +test_negative/negative.py:52: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] +test_negative/negative.py:56: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] +test_negative/negative.py:58: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] +test_negative/negative.py:61: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] +test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:65: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] +test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] +test_negative/negative.py:72: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:75: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:78: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:81: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:83: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:88: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:92: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] +test_negative/negative.py:95: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] +test_negative/negative.py:95: note: Possible overload variants: +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None +test_negative/negative.py:97: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:101: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:105: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] +test_negative/negative.py:106: error: "type[Extensions1]" has no attribute "bad" [attr-defined] +test_negative/negative.py:108: error: "Extensions1" has no attribute "foo" [attr-defined] +test_negative/negative.py:109: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] +test_negative/negative.py:113: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] +test_negative/negative.py:114: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] +test_negative/negative.py:115: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] +test_negative/negative.py:116: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] +test_negative/negative.py:117: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] +test_negative/negative.py:118: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] +test_negative/negative.py:122: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] +test_negative/negative.py:126: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] test_negative/negative.py:129: error: "Descriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:132: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:135: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:142: error: "ValueType" has no attribute "FOO" [attr-defined] -test_negative/negative.py:146: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] -test_negative/negative.py:148: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:150: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:152: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:156: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] -test_negative/negative.py:158: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] -test_negative/negative.py:158: note: Possible overload variants: -test_negative/negative.py:158: note: def get(self, key: int, default: None = ...) -> str | None -test_negative/negative.py:158: note: def get(self, key: int, default: str) -> str -test_negative/negative.py:158: note: def [_T] get(self, key: int, default: _T) -> str | _T -test_negative/negative.py:159: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:130: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:133: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:136: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:143: error: "ValueType" has no attribute "FOO" [attr-defined] +test_negative/negative.py:147: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] +test_negative/negative.py:149: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:151: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:153: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:157: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] +test_negative/negative.py:159: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] test_negative/negative.py:159: note: Possible overload variants: -test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None -test_negative/negative.py:159: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 -test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T -test_negative/negative.py:162: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] -test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] -test_negative/negative.py:169: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] -test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] -test_negative/negative.py:171: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> str | None +test_negative/negative.py:159: note: def get(self, key: int, default: str) -> str +test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> str | _T +test_negative/negative.py:160: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:160: note: Possible overload variants: +test_negative/negative.py:160: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None +test_negative/negative.py:160: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 +test_negative/negative.py:160: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T +test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] +test_negative/negative.py:164: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] +test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] +test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] +test_negative/negative.py:172: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] test_negative/negative.py:172: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] -test_negative/negative.py:173: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:175: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] -test_negative/negative.py:176: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] -test_negative/negative.py:177: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] -test_negative/negative.py:181: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] -test_negative/negative.py:185: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:190: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] -test_negative/negative.py:191: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] -test_negative/negative.py:196: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] -test_negative/negative.py:200: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:204: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:204: note: Possible overload variants: -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:211: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:212: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:217: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:219: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:226: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:228: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:228: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:235: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:272: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:274: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:274: note: This violates the Liskov substitution principle -test_negative/negative.py:274: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:280: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:282: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:282: note: This violates the Liskov substitution principle -test_negative/negative.py:282: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:289: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:291: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:291: note: This violates the Liskov substitution principle -test_negative/negative.py:291: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:320: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:332: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:334: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:345: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:352: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:359: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:369: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:372: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:372: note: Possible overload variants: -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:373: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:373: note: Possible overload variants: -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +test_negative/negative.py:173: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:174: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] +test_negative/negative.py:176: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] +test_negative/negative.py:177: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] +test_negative/negative.py:178: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] +test_negative/negative.py:182: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] +test_negative/negative.py:186: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:191: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] +test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] +test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] +test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:205: note: Possible overload variants: +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] +test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:275: note: This violates the Liskov substitution principle +test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:283: note: This violates the Liskov substitution principle +test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:292: note: This violates the Liskov substitution principle +test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:375: note: Possible overload variants: +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:376: note: Possible overload variants: +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.13.omit_linenos b/test_negative/output.expected.3.13.omit_linenos index b32a0a1e..3def46af 100644 --- a/test_negative/output.expected.3.13.omit_linenos +++ b/test_negative/output.expected.3.13.omit_linenos @@ -124,7 +124,11 @@ test_negative/negative.py: error: Return type "Iterator[DummyReply]" of "StreamU test_negative/negative.py: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py: note: This violates the Liskov substitution principle test_negative/negative.py: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] test_negative/negative.py: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] test_negative/negative.py: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] @@ -139,4 +143,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.14 b/test_negative/output.expected.3.14 index f60b9d96..177ecf69 100644 --- a/test_negative/output.expected.3.14 +++ b/test_negative/output.expected.3.14 @@ -1,18 +1,18 @@ test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:104: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:127: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:88: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:446: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:465: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -23,120 +23,124 @@ test_negative/negative.py:30: error: class testproto.test_pb2.DeprecatedEnum is and 'single quotes' Trailing comment [deprecated] test_negative/negative.py:31: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test_negative/negative.py:45: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] -test_negative/negative.py:48: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] -test_negative/negative.py:51: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] -test_negative/negative.py:55: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] -test_negative/negative.py:57: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] -test_negative/negative.py:60: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] -test_negative/negative.py:63: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:68: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] -test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] -test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:74: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:77: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:80: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:82: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:87: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:91: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] -test_negative/negative.py:94: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] -test_negative/negative.py:94: note: Possible overload variants: -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None -test_negative/negative.py:96: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] -test_negative/negative.py:100: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:104: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] -test_negative/negative.py:105: error: "type[Extensions1]" has no attribute "bad" [attr-defined] -test_negative/negative.py:107: error: "Extensions1" has no attribute "foo" [attr-defined] -test_negative/negative.py:108: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] -test_negative/negative.py:112: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] -test_negative/negative.py:113: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] -test_negative/negative.py:114: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] -test_negative/negative.py:115: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] -test_negative/negative.py:116: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] -test_negative/negative.py:117: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] -test_negative/negative.py:121: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] -test_negative/negative.py:125: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] -test_negative/negative.py:128: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:46: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] +test_negative/negative.py:49: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] +test_negative/negative.py:52: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] +test_negative/negative.py:56: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] +test_negative/negative.py:58: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] +test_negative/negative.py:61: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] +test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:65: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] +test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] +test_negative/negative.py:72: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:75: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:78: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:81: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:83: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:88: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:92: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "str") [assignment] +test_negative/negative.py:95: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] +test_negative/negative.py:95: note: Possible overload variants: +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Literal['an_optional_string'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Literal['b_oneof_1', 'b_oneof_2'] | None +test_negative/negative.py:97: error: Incompatible types in assignment (expression has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None", variable has type "int") [assignment] +test_negative/negative.py:101: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:105: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] +test_negative/negative.py:106: error: "type[Extensions1]" has no attribute "bad" [attr-defined] +test_negative/negative.py:108: error: "Extensions1" has no attribute "foo" [attr-defined] +test_negative/negative.py:109: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] +test_negative/negative.py:113: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] +test_negative/negative.py:114: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] +test_negative/negative.py:115: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] +test_negative/negative.py:116: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] +test_negative/negative.py:117: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] +test_negative/negative.py:118: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] +test_negative/negative.py:122: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] +test_negative/negative.py:126: error: Incompatible types in assignment (expression has type "Literal['b_oneof_1', 'b_oneof_2'] | None", variable has type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof'] | None") [assignment] test_negative/negative.py:129: error: "Descriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:132: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:135: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:142: error: "ValueType" has no attribute "FOO" [attr-defined] -test_negative/negative.py:146: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] -test_negative/negative.py:148: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:150: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:152: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:156: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] -test_negative/negative.py:158: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] -test_negative/negative.py:158: note: Possible overload variants: -test_negative/negative.py:158: note: def get(self, key: int, default: None = ...) -> str | None -test_negative/negative.py:158: note: def get(self, key: int, default: str) -> str -test_negative/negative.py:158: note: def [_T] get(self, key: int, default: _T) -> str | _T -test_negative/negative.py:159: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:130: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:133: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:136: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:143: error: "ValueType" has no attribute "FOO" [attr-defined] +test_negative/negative.py:147: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] +test_negative/negative.py:149: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:151: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:153: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:157: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] +test_negative/negative.py:159: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] test_negative/negative.py:159: note: Possible overload variants: -test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None -test_negative/negative.py:159: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 -test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T -test_negative/negative.py:162: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] -test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] -test_negative/negative.py:169: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] -test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] -test_negative/negative.py:171: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> str | None +test_negative/negative.py:159: note: def get(self, key: int, default: str) -> str +test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> str | _T +test_negative/negative.py:160: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:160: note: Possible overload variants: +test_negative/negative.py:160: note: def get(self, key: int, default: None = ...) -> OuterMessage3 | None +test_negative/negative.py:160: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 +test_negative/negative.py:160: note: def [_T] get(self, key: int, default: _T) -> OuterMessage3 | _T +test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "str | None", variable has type "int") [assignment] +test_negative/negative.py:164: error: Incompatible types in assignment (expression has type "OuterMessage3 | None", variable has type "int") [assignment] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] +test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] +test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] +test_negative/negative.py:172: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] test_negative/negative.py:172: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] -test_negative/negative.py:173: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:175: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] -test_negative/negative.py:176: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] -test_negative/negative.py:177: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] -test_negative/negative.py:181: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] -test_negative/negative.py:185: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:190: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] -test_negative/negative.py:191: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] -test_negative/negative.py:196: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] -test_negative/negative.py:200: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:204: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:204: note: Possible overload variants: -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:211: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:212: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:217: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:219: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:226: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:228: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:228: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:235: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:272: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:274: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:274: note: This violates the Liskov substitution principle -test_negative/negative.py:274: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:280: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:282: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:282: note: This violates the Liskov substitution principle -test_negative/negative.py:282: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:289: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:291: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:291: note: This violates the Liskov substitution principle -test_negative/negative.py:291: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:320: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:332: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:334: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:345: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:352: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:359: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:369: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:372: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:372: note: Possible overload variants: -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:373: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:373: note: Possible overload variants: -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +test_negative/negative.py:173: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:174: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] +test_negative/negative.py:176: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "UserId | None" [arg-type] +test_negative/negative.py:177: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Email | None" [arg-type] +test_negative/negative.py:178: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] +test_negative/negative.py:182: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] +test_negative/negative.py:186: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:191: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] +test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] +test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] +test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:205: note: Possible overload variants: +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] +test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:275: note: This violates the Liskov substitution principle +test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:283: note: This violates the Liskov substitution principle +test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:292: note: This violates the Liskov substitution principle +test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:375: note: Possible overload variants: +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:376: note: Possible overload variants: +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.14.omit_linenos b/test_negative/output.expected.3.14.omit_linenos index b32a0a1e..3def46af 100644 --- a/test_negative/output.expected.3.14.omit_linenos +++ b/test_negative/output.expected.3.14.omit_linenos @@ -124,7 +124,11 @@ test_negative/negative.py: error: Return type "Iterator[DummyReply]" of "StreamU test_negative/negative.py: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py: note: This violates the Liskov substitution principle test_negative/negative.py: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] test_negative/negative.py: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] test_negative/negative.py: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] @@ -139,4 +143,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.9 b/test_negative/output.expected.3.9 index 99a44f73..aad9af48 100644 --- a/test_negative/output.expected.3.9 +++ b/test_negative/output.expected.3.9 @@ -1,18 +1,18 @@ test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:104: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:115: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:127: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:88: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:446: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:465: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -23,120 +23,124 @@ test_negative/negative.py:30: error: class testproto.test_pb2.DeprecatedEnum is and 'single quotes' Trailing comment [deprecated] test_negative/negative.py:31: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test_negative/negative.py:45: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] -test_negative/negative.py:48: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] -test_negative/negative.py:51: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] -test_negative/negative.py:55: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] -test_negative/negative.py:57: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] -test_negative/negative.py:60: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] -test_negative/negative.py:63: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:68: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] -test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] -test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] -test_negative/negative.py:74: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:77: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] -test_negative/negative.py:80: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:82: error: Incompatible types in assignment (expression has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]", variable has type "int") [assignment] -test_negative/negative.py:87: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:91: error: Incompatible types in assignment (expression has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]", variable has type "str") [assignment] -test_negative/negative.py:94: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] -test_negative/negative.py:94: note: Possible overload variants: -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Optional[Literal['an_optional_string']] -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']] -test_negative/negative.py:94: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Optional[Literal['b_oneof_1', 'b_oneof_2']] -test_negative/negative.py:96: error: Incompatible types in assignment (expression has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]", variable has type "int") [assignment] -test_negative/negative.py:100: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] -test_negative/negative.py:104: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] -test_negative/negative.py:105: error: "type[Extensions1]" has no attribute "bad" [attr-defined] -test_negative/negative.py:107: error: "Extensions1" has no attribute "foo" [attr-defined] -test_negative/negative.py:108: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] -test_negative/negative.py:112: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] -test_negative/negative.py:113: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] -test_negative/negative.py:114: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] -test_negative/negative.py:115: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] -test_negative/negative.py:116: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] -test_negative/negative.py:117: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] -test_negative/negative.py:121: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] -test_negative/negative.py:125: error: Incompatible types in assignment (expression has type "Optional[Literal['b_oneof_1', 'b_oneof_2']]", variable has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]") [assignment] -test_negative/negative.py:128: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:46: error: "Simple1" has no attribute "SerializeToStringg" [attr-defined] +test_negative/negative.py:49: error: Argument 1 to "ParseFromString" of "Message" has incompatible type "Simple1"; expected "bytes" [arg-type] +test_negative/negative.py:52: error: Argument 1 to "CopyFrom" of "Message" has incompatible type "bytes"; expected "Simple1" [arg-type] +test_negative/negative.py:56: error: Argument 1 to "extend" of "list" has incompatible type "RepeatedScalarFieldContainer[str]"; expected "Iterable[int]" [arg-type] +test_negative/negative.py:58: error: Argument "foo" to "TestMessage" has incompatible type "int"; expected "str" [arg-type] +test_negative/negative.py:61: error: Incompatible types in assignment (expression has type "int", variable has type "ValueType") [assignment] +test_negative/negative.py:64: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:65: error: Argument 1 to "HasField" of "Simple1" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:69: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:70: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_string']"; expected "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']" [arg-type] +test_negative/negative.py:71: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['outer_enum']"; expected "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']" [arg-type] +test_negative/negative.py:72: error: Argument 1 to "HasField" of "SimpleProto3" has incompatible type "Literal['a_repeated_string']"; expected "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']" [arg-type] +test_negative/negative.py:75: error: Argument 1 to "ClearField" of "Simple1" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:78: error: Argument 1 to "ClearField" of "SimpleProto3" has incompatible type "Literal['garbage']"; expected "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']" [arg-type] +test_negative/negative.py:81: error: Argument 1 to "WhichOneof" of "Simple1" has incompatible type "Literal['garbage']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:83: error: Incompatible types in assignment (expression has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]", variable has type "int") [assignment] +test_negative/negative.py:88: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:92: error: Incompatible types in assignment (expression has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]", variable has type "str") [assignment] +test_negative/negative.py:95: error: No overload variant of "WhichOneof" of "SimpleProto3" matches argument type "str" [call-overload] +test_negative/negative.py:95: note: Possible overload variants: +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['_an_optional_string', b'_an_optional_string']) -> Optional[Literal['an_optional_string']] +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['a_oneof', b'a_oneof']) -> Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']] +test_negative/negative.py:95: note: def WhichOneof(self, oneof_group: Literal['b_oneof', b'b_oneof']) -> Optional[Literal['b_oneof_1', 'b_oneof_2']] +test_negative/negative.py:97: error: Incompatible types in assignment (expression has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]", variable has type "int") [assignment] +test_negative/negative.py:101: error: Argument 1 to "HasField" of "Simple2" has incompatible type "Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']"; expected "Literal['a_string', b'a_string']" [arg-type] +test_negative/negative.py:105: error: Incompatible types in assignment (expression has type "_ExtensionFieldDescriptor[Simple1, Extensions1]", variable has type "int") [assignment] +test_negative/negative.py:106: error: "type[Extensions1]" has no attribute "bad" [attr-defined] +test_negative/negative.py:108: error: "Extensions1" has no attribute "foo" [attr-defined] +test_negative/negative.py:109: error: Incompatible types in assignment (expression has type "Extensions2", variable has type "Extensions1") [assignment] +test_negative/negative.py:113: error: Invalid index type "str" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, Never]" [index] +test_negative/negative.py:114: error: Invalid index type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" for "_ExtensionDict[Simple1]"; expected type "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [index] +test_negative/negative.py:115: error: Unsupported operand types for in ("_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]" and "_ExtensionDict[Simple1]") [operator] +test_negative/negative.py:116: error: Argument 1 to "__delitem__" of "_ExtensionDict" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, SeparateFileExtension]" [arg-type] +test_negative/negative.py:117: error: Argument 1 to "HasExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple2, SeparateFileExtension]"; expected "_ExtensionFieldDescriptor[Simple1, Any]" [arg-type] +test_negative/negative.py:118: error: Argument 1 to "ClearExtension" of "Message" has incompatible type "_ExtensionFieldDescriptor[Simple1, Extensions1]"; expected "_ExtensionFieldDescriptor[Simple2, Any]" [arg-type] +test_negative/negative.py:122: error: Incompatible types in assignment (expression has type "int", variable has type "_ExtensionFieldDescriptor[Simple1, Any]") [assignment] +test_negative/negative.py:126: error: Incompatible types in assignment (expression has type "Optional[Literal['b_oneof_1', 'b_oneof_2']]", variable has type "Optional[Literal['a_oneof_1', 'a_oneof_2', 'outer_message_in_oneof', 'outer_enum_in_oneof', 'inner_enum_in_oneof']]") [assignment] test_negative/negative.py:129: error: "Descriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:132: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:135: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] -test_negative/negative.py:142: error: "ValueType" has no attribute "FOO" [attr-defined] -test_negative/negative.py:146: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] -test_negative/negative.py:148: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:150: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:152: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] -test_negative/negative.py:156: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] -test_negative/negative.py:158: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] -test_negative/negative.py:158: note: Possible overload variants: -test_negative/negative.py:158: note: def get(self, key: int, default: None = ...) -> Optional[str] -test_negative/negative.py:158: note: def get(self, key: int, default: str) -> str -test_negative/negative.py:158: note: def [_T] get(self, key: int, default: _T) -> Union[str, _T] -test_negative/negative.py:159: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:130: error: "Descriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:133: error: "EnumDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:136: error: "FileDescriptor" has no attribute "Garbage" [attr-defined] +test_negative/negative.py:143: error: "ValueType" has no attribute "FOO" [attr-defined] +test_negative/negative.py:147: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "int"; expected "ValueType" [arg-type] +test_negative/negative.py:149: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:151: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:153: error: Argument 1 to "Name" of "_EnumTypeWrapper" has incompatible type "testproto.test3_pb2.SimpleProto3._InnerEnum.ValueType"; expected "testproto.test3_pb2._OuterEnum.ValueType" [arg-type] +test_negative/negative.py:157: error: "ScalarMap[int, str]" has no attribute "get_or_create" [attr-defined] +test_negative/negative.py:159: error: No overload variant of "get" of "ScalarMap" matches argument type "str" [call-overload] test_negative/negative.py:159: note: Possible overload variants: -test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> Optional[OuterMessage3] -test_negative/negative.py:159: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 -test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> Union[OuterMessage3, _T] -test_negative/negative.py:162: error: Incompatible types in assignment (expression has type "Optional[str]", variable has type "int") [assignment] -test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "Optional[OuterMessage3]", variable has type "int") [assignment] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] -test_negative/negative.py:165: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] -test_negative/negative.py:169: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] -test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] -test_negative/negative.py:171: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:159: note: def get(self, key: int, default: None = ...) -> Optional[str] +test_negative/negative.py:159: note: def get(self, key: int, default: str) -> str +test_negative/negative.py:159: note: def [_T] get(self, key: int, default: _T) -> Union[str, _T] +test_negative/negative.py:160: error: No overload variant of "get" of "MessageMap" matches argument type "str" [call-overload] +test_negative/negative.py:160: note: Possible overload variants: +test_negative/negative.py:160: note: def get(self, key: int, default: None = ...) -> Optional[OuterMessage3] +test_negative/negative.py:160: note: def get(self, key: int, default: OuterMessage3) -> OuterMessage3 +test_negative/negative.py:160: note: def [_T] get(self, key: int, default: _T) -> Union[OuterMessage3, _T] +test_negative/negative.py:163: error: Incompatible types in assignment (expression has type "Optional[str]", variable has type "int") [assignment] +test_negative/negative.py:164: error: Incompatible types in assignment (expression has type "Optional[OuterMessage3]", variable has type "int") [assignment] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "int"; expected "int": "str" [dict-item] +test_negative/negative.py:166: error: Dict entry 0 has incompatible type "str": "str"; expected "int": "OuterMessage3" [dict-item] +test_negative/negative.py:170: error: Incompatible types in assignment (expression has type "int", variable has type "UserId") [assignment] +test_negative/negative.py:171: error: Incompatible types in assignment (expression has type "str", variable has type "Email") [assignment] +test_negative/negative.py:172: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] test_negative/negative.py:172: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] -test_negative/negative.py:173: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] -test_negative/negative.py:175: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "Optional[UserId]" [arg-type] -test_negative/negative.py:176: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Optional[Email]" [arg-type] -test_negative/negative.py:177: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] -test_negative/negative.py:181: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] -test_negative/negative.py:185: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:190: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] -test_negative/negative.py:191: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] -test_negative/negative.py:196: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] -test_negative/negative.py:200: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:204: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:204: note: Possible overload variants: -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:204: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:211: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:212: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:217: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:219: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:226: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:228: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:228: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:235: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:272: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:274: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:274: note: This violates the Liskov substitution principle -test_negative/negative.py:274: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:280: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Union[Iterator[DummyReply], AsyncIterator[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:282: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:282: note: This violates the Liskov substitution principle -test_negative/negative.py:282: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:289: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:291: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:291: note: This violates the Liskov substitution principle -test_negative/negative.py:291: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:320: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:332: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:334: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:345: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:352: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:359: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:369: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:372: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:372: note: Possible overload variants: -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:372: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:373: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:373: note: Possible overload variants: -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:373: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +test_negative/negative.py:173: error: Incompatible types in assignment (expression has type "str", target has type "Email") [assignment] +test_negative/negative.py:174: error: Invalid index type "int" for "ScalarMap[UserId, Email]"; expected type "UserId" [index] +test_negative/negative.py:176: error: Argument "user_id" to "Simple1" has incompatible type "int"; expected "Optional[UserId]" [arg-type] +test_negative/negative.py:177: error: Argument "email" to "Simple1" has incompatible type "str"; expected "Optional[Email]" [arg-type] +test_negative/negative.py:178: error: Dict entry 0 has incompatible type "int": "str"; expected "UserId": "Email" [dict-item] +test_negative/negative.py:182: error: Module "testproto.reexport_pb2" has no attribute "Inner" [attr-defined] +test_negative/negative.py:186: error: Argument "a_string" to "OuterMessage3" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:191: error: Property "a_repeated_string" defined in "Simple1" is read-only [misc] +test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] +test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] +test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:205: note: Possible overload variants: +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] +test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:275: note: This violates the Liskov substitution principle +test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Union[Iterator[DummyReply], AsyncIterator[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:283: note: This violates the Liskov substitution principle +test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:292: note: This violates the Liskov substitution principle +test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:375: note: Possible overload variants: +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:376: note: Possible overload variants: +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 109 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.9.omit_linenos b/test_negative/output.expected.3.9.omit_linenos index 619c4693..f634f902 100644 --- a/test_negative/output.expected.3.9.omit_linenos +++ b/test_negative/output.expected.3.9.omit_linenos @@ -124,7 +124,11 @@ test_negative/negative.py: error: Return type "Iterator[DummyReply]" of "StreamU test_negative/negative.py: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py: note: This violates the Liskov substitution principle test_negative/negative.py: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] test_negative/negative.py: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] test_negative/negative.py: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] @@ -139,4 +143,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 105 errors in 4 files (checked 4 source files) +Found 109 errors in 4 files (checked 4 source files) From 99bc340ca6e3ac0a1b8ac3d79e27a95c7b2b8b21 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Wed, 10 Dec 2025 01:00:28 -0800 Subject: [PATCH 2/7] Minor readme updates Signed-off-by: Aidan Jensen --- README.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dc794ad8..6e17dc80 100644 --- a/README.md +++ b/README.md @@ -102,12 +102,18 @@ See [Changelog](CHANGELOG.md) for full listing * `mypy-protobuf` generates correctly typed `HasField`, `WhichOneof`, and `ClearField` methods. * There are differences in how `mypy-protobuf` and `pyi_out` generate enums. See [this issue](https://github.com/protocolbuffers/protobuf/issues/8175) for details * Type aliases exported for `HasField`, `WhichOneof` and `ClearField` arguments +* Parses comments as docstrings #### Examples `mypy-protobuf`: ```python +""" +@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 @@ -132,8 +138,10 @@ class Editions2024SubMessage(google.protobuf.message.Message): *, 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: ... + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["thing", b"thing"] + def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... + _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["thing", b"thing"] + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___Editions2024SubMessage: typing_extensions.TypeAlias = Editions2024SubMessage @@ -167,10 +175,13 @@ class Editions2024Test(google.protobuf.message.Message): 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: ... + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["default_singular", b"default_singular", "explicit_singular", b"explicit_singular", "legacy", b"legacy", "message_field", b"message_field"] + def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... + _ClearFieldArgType: typing_extensions.TypeAlias = 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"] + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___Editions2024Test: typing_extensions.TypeAlias = Editions2024Test + ``` Builtin pyi generator: From 734aaea953e68e3e4ef0e114bfa90ec2985a16f0 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Wed, 10 Dec 2025 01:21:48 -0800 Subject: [PATCH 3/7] allow message field deprecation as well Signed-off-by: Aidan Jensen --- CHANGELOG.md | 5 +- README.md | 1 + mypy_protobuf/main.py | 57 ++++++++--- proto/testproto/test.proto | 1 + run_test.sh | 1 + stubtest_allowlist.txt | 4 + test/generated/testproto/grpc/dummy_pb2.pyi | 7 +- .../generated/testproto/nested/nested_pb2.pyi | 18 ++-- test/generated/testproto/readme_enum_pb2.pyi | 6 +- test/generated/testproto/test3_pb2.pyi | 15 +-- test/generated/testproto/test_pb2.pyi | 38 +++---- .../testproto/grpc/dummy_pb2.pyi | 7 +- .../testproto/nested/nested_pb2.pyi | 18 ++-- .../testproto/readme_enum_pb2.pyi | 6 +- .../testproto/test3_pb2.pyi | 15 +-- .../generated_concrete/testproto/test_pb2.pyi | 38 +++---- test/test_generated_mypy.py | 2 +- test_negative/negative.py | 6 +- test_negative/output.expected.3.10 | 98 ++++++++++--------- .../output.expected.3.10.omit_linenos | 4 +- test_negative/output.expected.3.11 | 98 ++++++++++--------- .../output.expected.3.11.omit_linenos | 4 +- test_negative/output.expected.3.12 | 98 ++++++++++--------- .../output.expected.3.12.omit_linenos | 4 +- test_negative/output.expected.3.13 | 98 ++++++++++--------- .../output.expected.3.13.omit_linenos | 4 +- test_negative/output.expected.3.14 | 98 ++++++++++--------- .../output.expected.3.14.omit_linenos | 4 +- test_negative/output.expected.3.9 | 98 ++++++++++--------- .../output.expected.3.9.omit_linenos | 4 +- 30 files changed, 458 insertions(+), 399 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 796729d7..0b7b08ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,8 +13,9 @@ - Add `_WhichOneofArgType_` and `_WhichOneofReturnType_` type aliases - Use `__new__` overloads for async stubs instead of `TypeVar` based `__init__` overloads. - https://github.com/nipunn1313/mypy-protobuf/issues/707 -- Export stub methods as properties instead of attributes. This allows for deprecation -- Export enum fields as properties on class level (not module level) enums. This allows for deprecation +- Export stub methods as properties instead of attributes if deprecated and mark as such +- Export enum fields as properties on class level (not module level) enums if deprecated and mark as such +- Export fields as properties with getters/setters if deprecated and mark as such ## 3.7.0 diff --git a/README.md b/README.md index 6e17dc80..a0abb128 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,7 @@ See [Changelog](CHANGELOG.md) for full listing * There are differences in how `mypy-protobuf` and `pyi_out` generate enums. See [this issue](https://github.com/protocolbuffers/protobuf/issues/8175) for details * Type aliases exported for `HasField`, `WhichOneof` and `ClearField` arguments * Parses comments as docstrings +* `mypy-protobuf` marks enums, enum values, messages, message fields, services, and methods with `@warnings.deprecated` if the deprecation option is set to true. #### Examples diff --git a/mypy_protobuf/main.py b/mypy_protobuf/main.py index 13bc401c..c94b870b 100644 --- a/mypy_protobuf/main.py +++ b/mypy_protobuf/main.py @@ -392,7 +392,7 @@ def write_enum_values( value_type: str, scl_prefix: SourceCodeLocation, *, - as_properties: bool = False, + class_attributes: bool = False, ) -> None: for i, val in values: if val.name in PYTHON_RESERVED: @@ -400,17 +400,22 @@ def write_enum_values( scl = scl_prefix + [i] # Class level - if as_properties: - self._write_line("@property") + if class_attributes: if val.options.deprecated: + self._write_line("@property") self._write_deprecation_warning( scl + [d.EnumValueDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.EnumOptions.DEPRECATED_FIELD_NUMBER], "This enum value has been marked as deprecated using proto enum value options.", ) - self._write_line( - f"def {val.name}(self) -> {value_type}: {'' if self._has_comments(scl) else '...'} # {val.number}", - ) - with self._indent(): + self._write_line( + f"def {val.name}(self) -> {value_type}: {'' if self._has_comments(scl) else '...'} # {val.number}", + ) + with self._indent(): + self._write_comments(scl) + else: + self._write_line( + f"{val.name}: {value_type} # {val.number}", + ) self._write_comments(scl) # Module level else: @@ -464,7 +469,7 @@ def write_enums( [(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], - as_properties=True, + class_attributes=True, ) wl("") @@ -556,9 +561,34 @@ def write_messages( continue field_type = self.python_type(field) if is_scalar(field) and field.label != d.FieldDescriptorProto.LABEL_REPEATED: - # Scalar non repeated fields are r/w - wl(f"{field.name}: {field_type}") - self._write_comments(scl + [d.DescriptorProto.FIELD_FIELD_NUMBER, idx]) + # Scalar non repeated fields are r/w, generate getter and setter if deprecated + scl_field = scl + [d.DescriptorProto.FIELD_FIELD_NUMBER, idx] + if field.options.deprecated: + wl("@property") + self._write_deprecation_warning( + scl_field + [d.FieldDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.FieldOptions.DEPRECATED_FIELD_NUMBER], + "This field has been marked as deprecated using proto field options.", + ) + body = " ..." if not self._has_comments(scl_field) else "" + wl(f"def {field.name}(self) -> {field_type}:{body}") + if self._has_comments(scl_field): + with self._indent(): + self._write_comments(scl_field) + wl("") + wl(f"@{field.name}.setter") + self._write_deprecation_warning( + scl_field + [d.FieldDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.FieldOptions.DEPRECATED_FIELD_NUMBER], + "This field has been marked as deprecated using proto field options.", + ) + body = " ..." if not self._has_comments(scl_field) else "" + wl(f"def {field.name}(self, value: {field_type}) -> None:{body}") + if self._has_comments(scl_field): + with self._indent(): + self._write_comments(scl_field) + wl("") + else: + wl(f"{field.name}: {field_type}") + self._write_comments(scl_field) for idx, field in enumerate(desc.field): if field.name in PYTHON_RESERVED: @@ -568,6 +598,11 @@ def write_messages( # r/o Getters for non-scalar fields and scalar-repeated fields scl_field = scl + [d.DescriptorProto.FIELD_FIELD_NUMBER, idx] wl("@property") + if field.options.deprecated: + self._write_deprecation_warning( + scl_field + [d.FieldDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.FieldOptions.DEPRECATED_FIELD_NUMBER], + "This field has been marked as deprecated using proto field options.", + ) body = " ..." if not self._has_comments(scl_field) else "" wl(f"def {field.name}(self) -> {field_type}:{body}") if self._has_comments(scl_field): diff --git a/proto/testproto/test.proto b/proto/testproto/test.proto index 58a50528..591adb4c 100644 --- a/proto/testproto/test.proto +++ b/proto/testproto/test.proto @@ -175,6 +175,7 @@ message DeprecatedMessage { option deprecated = true; optional string a_string = 1; + optional string deprecated_field = 2 [deprecated = true]; } message DeprecatedMessageBadComment { diff --git a/run_test.sh b/run_test.sh index 190aa587..0a7aff5a 100755 --- a/run_test.sh +++ b/run_test.sh @@ -197,6 +197,7 @@ for PY_VER in $PY_VER_UNIT_TESTS; do if [[ "$PY_VER_MYPY" == "3.13.9" ]] || [[ "$PY_VER_MYPY" == "3.14.0" ]]; then echo "Skipping stubtest for Python $PY_VER_MYPY until positional argument decision is made" else + echo "Running stubtest for Python $PY_VER_MYPY with API implementation: $API_IMPL" PYTHONPATH=test/generated python3 -m mypy.stubtest ${CUSTOM_TYPESHED_DIR_ARG:+"$CUSTOM_TYPESHED_DIR_ARG"} --allowlist stubtest_allowlist.txt testproto fi fi diff --git a/stubtest_allowlist.txt b/stubtest_allowlist.txt index 617525c1..a9a361a2 100644 --- a/stubtest_allowlist.txt +++ b/stubtest_allowlist.txt @@ -253,3 +253,7 @@ testproto.grpc.dummy_pb2_grpc.DummyServiceStub.* testproto.grpc.dummy_pb2_grpc.ManyRPCsServiceStub.* testproto.grpc.import_pb2_grpc.SimpleServiceStub.* testproto.grpc.dummy_pb2_grpc.EmptyServiceStub.__init__ + +# Because we generate message fields as properties when deprecated they do not exist at runtime +testproto.grpc.dummy_pb2.DeprecatedRequest.old_field +testproto.test_pb2.DeprecatedMessage.deprecated_field diff --git a/test/generated/testproto/grpc/dummy_pb2.pyi b/test/generated/testproto/grpc/dummy_pb2.pyi index 94987554..2c0487e6 100644 --- a/test/generated/testproto/grpc/dummy_pb2.pyi +++ b/test/generated/testproto/grpc/dummy_pb2.pyi @@ -59,7 +59,12 @@ class DeprecatedRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor OLD_FIELD_FIELD_NUMBER: builtins.int - old_field: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self) -> builtins.str: ... + @old_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self, value: builtins.str) -> None: ... def __init__( self, *, diff --git a/test/generated/testproto/nested/nested_pb2.pyi b/test/generated/testproto/nested/nested_pb2.pyi index 91e5d6aa..ca263aee 100644 --- a/test/generated/testproto/nested/nested_pb2.pyi +++ b/test/generated/testproto/nested/nested_pb2.pyi @@ -44,12 +44,9 @@ class AnotherNested(google.protobuf.message.Message): class _NestedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested._NestedEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def INVALID(self) -> AnotherNested._NestedEnum.ValueType: ... # 0 - @property - def ONE(self) -> AnotherNested._NestedEnum.ValueType: ... # 1 - @property - def TWO(self) -> AnotherNested._NestedEnum.ValueType: ... # 2 + 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 @@ -66,12 +63,9 @@ class AnotherNested(google.protobuf.message.Message): class _NestedEnum2EnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested.NestedMessage._NestedEnum2.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def UNDEFINED(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 0 - @property - def NESTED_ENUM1(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 1 - @property - def NESTED_ENUM2(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 2 + 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 diff --git a/test/generated/testproto/readme_enum_pb2.pyi b/test/generated/testproto/readme_enum_pb2.pyi index 23e01b53..be8369c4 100644 --- a/test/generated/testproto/readme_enum_pb2.pyi +++ b/test/generated/testproto/readme_enum_pb2.pyi @@ -22,10 +22,8 @@ class _MyEnum: class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def HELLO(self) -> _MyEnum.ValueType: ... # 0 - @property - def WORLD(self) -> _MyEnum.ValueType: ... # 1 + HELLO: _MyEnum.ValueType # 0 + WORLD: _MyEnum.ValueType # 1 class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... diff --git a/test/generated/testproto/test3_pb2.pyi b/test/generated/testproto/test3_pb2.pyi index cb19e6c2..ca2421ab 100644 --- a/test/generated/testproto/test3_pb2.pyi +++ b/test/generated/testproto/test3_pb2.pyi @@ -26,12 +26,9 @@ class _OuterEnum: class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def UNKNOWN(self) -> _OuterEnum.ValueType: ... # 0 - @property - def FOO3(self) -> _OuterEnum.ValueType: ... # 1 - @property - def BAR3(self) -> _OuterEnum.ValueType: ... # 2 + UNKNOWN: _OuterEnum.ValueType # 0 + FOO3: _OuterEnum.ValueType # 1 + BAR3: _OuterEnum.ValueType # 2 class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... @@ -66,10 +63,8 @@ class SimpleProto3(google.protobuf.message.Message): class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SimpleProto3._InnerEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def INNER1(self) -> SimpleProto3._InnerEnum.ValueType: ... # 0 - @property - def INNER2(self) -> SimpleProto3._InnerEnum.ValueType: ... # 1 + INNER1: SimpleProto3._InnerEnum.ValueType # 0 + INNER2: SimpleProto3._InnerEnum.ValueType # 1 class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... INNER1: SimpleProto3.InnerEnum.ValueType # 0 diff --git a/test/generated/testproto/test_pb2.pyi b/test/generated/testproto/test_pb2.pyi index 704b6ab4..bc4ab5f8 100644 --- a/test/generated/testproto/test_pb2.pyi +++ b/test/generated/testproto/test_pb2.pyi @@ -36,12 +36,10 @@ class _OuterEnum: class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def FOO(self) -> _OuterEnum.ValueType: # 1 - """FOO""" - @property - def BAR(self) -> _OuterEnum.ValueType: # 2 - """BAR""" + FOO: _OuterEnum.ValueType # 1 + """FOO""" + BAR: _OuterEnum.ValueType # 2 + """BAR""" class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): """Outer Enum""" @@ -86,8 +84,7 @@ class _DeprecatedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper. @property @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") def DEPRECATED_TWO(self) -> _DeprecatedEnum.ValueType: ... # 2 - @property - def NOT_DEPRECATED(self) -> _DeprecatedEnum.ValueType: ... # 3 + NOT_DEPRECATED: _DeprecatedEnum.ValueType # 3 @deprecated("""This enum is deprecated\n2 lines of comments\n"Quotes in comments"\nand 'single quotes'\nTrailing comment""") class DeprecatedEnum(_DeprecatedEnum, metaclass=_DeprecatedEnumEnumTypeWrapper): ... @@ -110,12 +107,10 @@ class Simple1(google.protobuf.message.Message): class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Simple1._InnerEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def INNER1(self) -> Simple1._InnerEnum.ValueType: # 1 - """INNER1""" - @property - def INNER2(self) -> Simple1._InnerEnum.ValueType: # 2 - """INNER2""" + INNER1: Simple1._InnerEnum.ValueType # 1 + """INNER1""" + INNER2: Simple1._InnerEnum.ValueType # 2 + """INNER2""" class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): """Inner Enum""" @@ -333,8 +328,7 @@ class PythonReservedKeywords(google.protobuf.message.Message): class _finallyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PythonReservedKeywords._finally.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def valid_in_finally(self) -> PythonReservedKeywords._finally.ValueType: ... # 2 + valid_in_finally: PythonReservedKeywords._finally.ValueType # 2 class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 @@ -446,15 +440,23 @@ class DeprecatedMessage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor A_STRING_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_FIELD_NUMBER: builtins.int a_string: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self) -> builtins.str: ... + @deprecated_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self, value: builtins.str) -> None: ... def __init__( self, *, a_string: builtins.str | None = ..., + deprecated_field: builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... - _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage diff --git a/test/generated_concrete/testproto/grpc/dummy_pb2.pyi b/test/generated_concrete/testproto/grpc/dummy_pb2.pyi index 94987554..2c0487e6 100644 --- a/test/generated_concrete/testproto/grpc/dummy_pb2.pyi +++ b/test/generated_concrete/testproto/grpc/dummy_pb2.pyi @@ -59,7 +59,12 @@ class DeprecatedRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor OLD_FIELD_FIELD_NUMBER: builtins.int - old_field: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self) -> builtins.str: ... + @old_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self, value: builtins.str) -> None: ... def __init__( self, *, diff --git a/test/generated_concrete/testproto/nested/nested_pb2.pyi b/test/generated_concrete/testproto/nested/nested_pb2.pyi index 91e5d6aa..ca263aee 100644 --- a/test/generated_concrete/testproto/nested/nested_pb2.pyi +++ b/test/generated_concrete/testproto/nested/nested_pb2.pyi @@ -44,12 +44,9 @@ class AnotherNested(google.protobuf.message.Message): class _NestedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested._NestedEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def INVALID(self) -> AnotherNested._NestedEnum.ValueType: ... # 0 - @property - def ONE(self) -> AnotherNested._NestedEnum.ValueType: ... # 1 - @property - def TWO(self) -> AnotherNested._NestedEnum.ValueType: ... # 2 + 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 @@ -66,12 +63,9 @@ class AnotherNested(google.protobuf.message.Message): class _NestedEnum2EnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AnotherNested.NestedMessage._NestedEnum2.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def UNDEFINED(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 0 - @property - def NESTED_ENUM1(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 1 - @property - def NESTED_ENUM2(self) -> AnotherNested.NestedMessage._NestedEnum2.ValueType: ... # 2 + 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 diff --git a/test/generated_concrete/testproto/readme_enum_pb2.pyi b/test/generated_concrete/testproto/readme_enum_pb2.pyi index 23e01b53..be8369c4 100644 --- a/test/generated_concrete/testproto/readme_enum_pb2.pyi +++ b/test/generated_concrete/testproto/readme_enum_pb2.pyi @@ -22,10 +22,8 @@ class _MyEnum: class _MyEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MyEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def HELLO(self) -> _MyEnum.ValueType: ... # 0 - @property - def WORLD(self) -> _MyEnum.ValueType: ... # 1 + HELLO: _MyEnum.ValueType # 0 + WORLD: _MyEnum.ValueType # 1 class MyEnum(_MyEnum, metaclass=_MyEnumEnumTypeWrapper): ... diff --git a/test/generated_concrete/testproto/test3_pb2.pyi b/test/generated_concrete/testproto/test3_pb2.pyi index cb19e6c2..ca2421ab 100644 --- a/test/generated_concrete/testproto/test3_pb2.pyi +++ b/test/generated_concrete/testproto/test3_pb2.pyi @@ -26,12 +26,9 @@ class _OuterEnum: class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def UNKNOWN(self) -> _OuterEnum.ValueType: ... # 0 - @property - def FOO3(self) -> _OuterEnum.ValueType: ... # 1 - @property - def BAR3(self) -> _OuterEnum.ValueType: ... # 2 + UNKNOWN: _OuterEnum.ValueType # 0 + FOO3: _OuterEnum.ValueType # 1 + BAR3: _OuterEnum.ValueType # 2 class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): ... @@ -66,10 +63,8 @@ class SimpleProto3(google.protobuf.message.Message): class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SimpleProto3._InnerEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def INNER1(self) -> SimpleProto3._InnerEnum.ValueType: ... # 0 - @property - def INNER2(self) -> SimpleProto3._InnerEnum.ValueType: ... # 1 + INNER1: SimpleProto3._InnerEnum.ValueType # 0 + INNER2: SimpleProto3._InnerEnum.ValueType # 1 class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): ... INNER1: SimpleProto3.InnerEnum.ValueType # 0 diff --git a/test/generated_concrete/testproto/test_pb2.pyi b/test/generated_concrete/testproto/test_pb2.pyi index 704b6ab4..bc4ab5f8 100644 --- a/test/generated_concrete/testproto/test_pb2.pyi +++ b/test/generated_concrete/testproto/test_pb2.pyi @@ -36,12 +36,10 @@ class _OuterEnum: class _OuterEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_OuterEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def FOO(self) -> _OuterEnum.ValueType: # 1 - """FOO""" - @property - def BAR(self) -> _OuterEnum.ValueType: # 2 - """BAR""" + FOO: _OuterEnum.ValueType # 1 + """FOO""" + BAR: _OuterEnum.ValueType # 2 + """BAR""" class OuterEnum(_OuterEnum, metaclass=_OuterEnumEnumTypeWrapper): """Outer Enum""" @@ -86,8 +84,7 @@ class _DeprecatedEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper. @property @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") def DEPRECATED_TWO(self) -> _DeprecatedEnum.ValueType: ... # 2 - @property - def NOT_DEPRECATED(self) -> _DeprecatedEnum.ValueType: ... # 3 + NOT_DEPRECATED: _DeprecatedEnum.ValueType # 3 @deprecated("""This enum is deprecated\n2 lines of comments\n"Quotes in comments"\nand 'single quotes'\nTrailing comment""") class DeprecatedEnum(_DeprecatedEnum, metaclass=_DeprecatedEnumEnumTypeWrapper): ... @@ -110,12 +107,10 @@ class Simple1(google.protobuf.message.Message): class _InnerEnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Simple1._InnerEnum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def INNER1(self) -> Simple1._InnerEnum.ValueType: # 1 - """INNER1""" - @property - def INNER2(self) -> Simple1._InnerEnum.ValueType: # 2 - """INNER2""" + INNER1: Simple1._InnerEnum.ValueType # 1 + """INNER1""" + INNER2: Simple1._InnerEnum.ValueType # 2 + """INNER2""" class InnerEnum(_InnerEnum, metaclass=_InnerEnumEnumTypeWrapper): """Inner Enum""" @@ -333,8 +328,7 @@ class PythonReservedKeywords(google.protobuf.message.Message): class _finallyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PythonReservedKeywords._finally.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - @property - def valid_in_finally(self) -> PythonReservedKeywords._finally.ValueType: ... # 2 + valid_in_finally: PythonReservedKeywords._finally.ValueType # 2 class _r_finally(_finally, metaclass=_finallyEnumTypeWrapper): ... valid_in_finally: PythonReservedKeywords._r_finally.ValueType # 2 @@ -446,15 +440,23 @@ class DeprecatedMessage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor A_STRING_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_FIELD_NUMBER: builtins.int a_string: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self) -> builtins.str: ... + @deprecated_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self, value: builtins.str) -> None: ... def __init__( self, *, a_string: builtins.str | None = ..., + deprecated_field: builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... - _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage diff --git a/test/test_generated_mypy.py b/test/test_generated_mypy.py index e28ecb76..28101287 100644 --- a/test/test_generated_mypy.py +++ b/test/test_generated_mypy.py @@ -121,7 +121,7 @@ def grab_expectations(filename: str, marker: str) -> Generator[Tuple[str, int], assert errors_39 == expected_errors_39 # Some sanity checks to make sure we don't mess this up. Please update as necessary. - assert len(errors_39) == 94 + assert len(errors_39) == 96 def test_func() -> None: diff --git a/test_negative/negative.py b/test_negative/negative.py index 78e5238d..1ade1960 100644 --- a/test_negative/negative.py +++ b/test_negative/negative.py @@ -11,7 +11,7 @@ import grpc import grpc.aio from testproto.dot.com.test_pb2 import TestMessage -from testproto.edition2024_pb2 import Editions2024Test +from testproto.edition2024_pb2 import Editions2024SubMessage, Editions2024Test from testproto.grpc import dummy_pb2_grpc from testproto.grpc.dummy_pb2 import ( # E:3.8 DeprecatedRequest, @@ -201,6 +201,8 @@ a_string = PythonReservedKeywords().valid # E:3.8 deprecated_message = DeprecatedMessage() +deprecated_field = deprecated_message.deprecated_field +deprecated_message.deprecated_field = "test" # E:3.8 stub0 = DummyServiceStub() # E:3.8 channel = grpc.insecure_channel("127.0.0.1:8080") @@ -360,6 +362,8 @@ def test_clearfield_alias(msg: Editions2024Test, field: "Editions2024Test._Clear test_clearfield_alias(Editions2024Test(), "not_a_field") # E:3.8 +Editions2024Test().message_field = Editions2024SubMessage() # E:3.8 +mf = Editions2024Test().message_field def test_whichoneof_alias( diff --git a/test_negative/output.expected.3.10 b/test_negative/output.expected.3.10 index 177ecf69..d17faff7 100644 --- a/test_negative/output.expected.3.10 +++ b/test_negative/output.expected.3.10 @@ -1,4 +1,4 @@ -test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -6,13 +6,13 @@ test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grp test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -99,48 +99,50 @@ test_negative/negative.py:191: error: Property "a_repeated_string" defined in "S test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:205: note: Possible overload variants: -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:205: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] +test_negative/negative.py:207: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:207: note: Possible overload variants: +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:214: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:215: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:220: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:222: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:275: note: This violates the Liskov substitution principle -test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:283: note: This violates the Liskov substitution principle -test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:292: note: This violates the Liskov substitution principle -test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:375: note: Possible overload variants: -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:376: note: Possible overload variants: -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +test_negative/negative.py:231: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:234: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:238: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:275: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:277: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:277: note: This violates the Liskov substitution principle +test_negative/negative.py:277: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:283: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:285: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:285: note: This violates the Liskov substitution principle +test_negative/negative.py:285: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:294: note: This violates the Liskov substitution principle +test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:379: note: Possible overload variants: +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:380: note: Possible overload variants: +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.10.omit_linenos b/test_negative/output.expected.3.10.omit_linenos index 3def46af..db730817 100644 --- a/test_negative/output.expected.3.10.omit_linenos +++ b/test_negative/output.expected.3.10.omit_linenos @@ -99,6 +99,7 @@ test_negative/negative.py: error: Property "a_repeated_string" defined in "Simpl test_negative/negative.py: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub @@ -134,6 +135,7 @@ test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] test_negative/negative.py: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] test_negative/negative.py: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: @@ -143,4 +145,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.11 b/test_negative/output.expected.3.11 index 177ecf69..d17faff7 100644 --- a/test_negative/output.expected.3.11 +++ b/test_negative/output.expected.3.11 @@ -1,4 +1,4 @@ -test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -6,13 +6,13 @@ test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grp test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -99,48 +99,50 @@ test_negative/negative.py:191: error: Property "a_repeated_string" defined in "S test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:205: note: Possible overload variants: -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:205: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] +test_negative/negative.py:207: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:207: note: Possible overload variants: +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:214: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:215: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:220: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:222: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:275: note: This violates the Liskov substitution principle -test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:283: note: This violates the Liskov substitution principle -test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:292: note: This violates the Liskov substitution principle -test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:375: note: Possible overload variants: -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:376: note: Possible overload variants: -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +test_negative/negative.py:231: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:234: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:238: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:275: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:277: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:277: note: This violates the Liskov substitution principle +test_negative/negative.py:277: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:283: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:285: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:285: note: This violates the Liskov substitution principle +test_negative/negative.py:285: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:294: note: This violates the Liskov substitution principle +test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:379: note: Possible overload variants: +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:380: note: Possible overload variants: +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.11.omit_linenos b/test_negative/output.expected.3.11.omit_linenos index 3def46af..db730817 100644 --- a/test_negative/output.expected.3.11.omit_linenos +++ b/test_negative/output.expected.3.11.omit_linenos @@ -99,6 +99,7 @@ test_negative/negative.py: error: Property "a_repeated_string" defined in "Simpl test_negative/negative.py: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub @@ -134,6 +135,7 @@ test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] test_negative/negative.py: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] test_negative/negative.py: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: @@ -143,4 +145,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.12 b/test_negative/output.expected.3.12 index 177ecf69..d17faff7 100644 --- a/test_negative/output.expected.3.12 +++ b/test_negative/output.expected.3.12 @@ -1,4 +1,4 @@ -test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -6,13 +6,13 @@ test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grp test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -99,48 +99,50 @@ test_negative/negative.py:191: error: Property "a_repeated_string" defined in "S test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:205: note: Possible overload variants: -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:205: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] +test_negative/negative.py:207: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:207: note: Possible overload variants: +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:214: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:215: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:220: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:222: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:275: note: This violates the Liskov substitution principle -test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:283: note: This violates the Liskov substitution principle -test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:292: note: This violates the Liskov substitution principle -test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:375: note: Possible overload variants: -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:376: note: Possible overload variants: -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +test_negative/negative.py:231: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:234: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:238: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:275: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:277: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:277: note: This violates the Liskov substitution principle +test_negative/negative.py:277: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:283: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:285: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:285: note: This violates the Liskov substitution principle +test_negative/negative.py:285: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:294: note: This violates the Liskov substitution principle +test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:379: note: Possible overload variants: +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:380: note: Possible overload variants: +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.12.omit_linenos b/test_negative/output.expected.3.12.omit_linenos index 3def46af..db730817 100644 --- a/test_negative/output.expected.3.12.omit_linenos +++ b/test_negative/output.expected.3.12.omit_linenos @@ -99,6 +99,7 @@ test_negative/negative.py: error: Property "a_repeated_string" defined in "Simpl test_negative/negative.py: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub @@ -134,6 +135,7 @@ test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] test_negative/negative.py: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] test_negative/negative.py: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: @@ -143,4 +145,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.13 b/test_negative/output.expected.3.13 index 177ecf69..d17faff7 100644 --- a/test_negative/output.expected.3.13 +++ b/test_negative/output.expected.3.13 @@ -1,4 +1,4 @@ -test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -6,13 +6,13 @@ test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grp test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -99,48 +99,50 @@ test_negative/negative.py:191: error: Property "a_repeated_string" defined in "S test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:205: note: Possible overload variants: -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:205: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] +test_negative/negative.py:207: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:207: note: Possible overload variants: +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:214: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:215: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:220: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:222: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:275: note: This violates the Liskov substitution principle -test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:283: note: This violates the Liskov substitution principle -test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:292: note: This violates the Liskov substitution principle -test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:375: note: Possible overload variants: -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:376: note: Possible overload variants: -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +test_negative/negative.py:231: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:234: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:238: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:275: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:277: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:277: note: This violates the Liskov substitution principle +test_negative/negative.py:277: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:283: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:285: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:285: note: This violates the Liskov substitution principle +test_negative/negative.py:285: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:294: note: This violates the Liskov substitution principle +test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:379: note: Possible overload variants: +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:380: note: Possible overload variants: +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.13.omit_linenos b/test_negative/output.expected.3.13.omit_linenos index 3def46af..db730817 100644 --- a/test_negative/output.expected.3.13.omit_linenos +++ b/test_negative/output.expected.3.13.omit_linenos @@ -99,6 +99,7 @@ test_negative/negative.py: error: Property "a_repeated_string" defined in "Simpl test_negative/negative.py: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub @@ -134,6 +135,7 @@ test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] test_negative/negative.py: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] test_negative/negative.py: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: @@ -143,4 +145,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.14 b/test_negative/output.expected.3.14 index 177ecf69..d17faff7 100644 --- a/test_negative/output.expected.3.14 +++ b/test_negative/output.expected.3.14 @@ -1,4 +1,4 @@ -test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -6,13 +6,13 @@ test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grp test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -99,48 +99,50 @@ test_negative/negative.py:191: error: Property "a_repeated_string" defined in "S test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:205: note: Possible overload variants: -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:205: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] +test_negative/negative.py:207: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:207: note: Possible overload variants: +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:214: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:215: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:220: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:222: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:275: note: This violates the Liskov substitution principle -test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:283: note: This violates the Liskov substitution principle -test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:292: note: This violates the Liskov substitution principle -test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:375: note: Possible overload variants: -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:376: note: Possible overload variants: -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +test_negative/negative.py:231: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:234: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:238: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:275: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:277: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:277: note: This violates the Liskov substitution principle +test_negative/negative.py:277: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:283: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Iterator[DummyReply] | AsyncIterator[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:285: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:285: note: This violates the Liskov substitution principle +test_negative/negative.py:285: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "DummyReply | Awaitable[DummyReply]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:294: note: This violates the Liskov substitution principle +test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:379: note: Possible overload variants: +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:380: note: Possible overload variants: +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.14.omit_linenos b/test_negative/output.expected.3.14.omit_linenos index 3def46af..db730817 100644 --- a/test_negative/output.expected.3.14.omit_linenos +++ b/test_negative/output.expected.3.14.omit_linenos @@ -99,6 +99,7 @@ test_negative/negative.py: error: Property "a_repeated_string" defined in "Simpl test_negative/negative.py: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub @@ -134,6 +135,7 @@ test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] test_negative/negative.py: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] test_negative/negative.py: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: @@ -143,4 +145,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.9 b/test_negative/output.expected.3.9 index aad9af48..00c25b08 100644 --- a/test_negative/output.expected.3.9 +++ b/test_negative/output.expected.3.9 @@ -1,4 +1,4 @@ -test/generated/testproto/grpc/dummy_pb2.pyi:71: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -6,13 +6,13 @@ test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grp test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:99: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated +test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:460: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:479: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] @@ -99,48 +99,50 @@ test_negative/negative.py:191: error: Property "a_repeated_string" defined in "S test_negative/negative.py:192: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py:197: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py:201: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] -test_negative/negative.py:205: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:205: note: Possible overload variants: -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:205: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:212: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:213: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] -test_negative/negative.py:218: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:220: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] -test_negative/negative.py:227: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:229: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:205: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] +test_negative/negative.py:207: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:207: note: Possible overload variants: +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:207: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:214: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:215: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:220: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:222: error: "_CallIterator[DummyReply]" has no attribute "value" [attr-defined] test_negative/negative.py:229: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:232: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] -test_negative/negative.py:236: error: "DummyReply" has no attribute "not_exists" [attr-defined] -test_negative/negative.py:273: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:275: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:275: note: This violates the Liskov substitution principle -test_negative/negative.py:275: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:281: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Union[Iterator[DummyReply], AsyncIterator[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:283: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] -test_negative/negative.py:283: note: This violates the Liskov substitution principle -test_negative/negative.py:283: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:290: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] -test_negative/negative.py:292: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] -test_negative/negative.py:292: note: This violates the Liskov substitution principle -test_negative/negative.py:292: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:319: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:320: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:321: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:324: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:325: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:335: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:337: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:348: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:355: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:362: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:372: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:375: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:375: note: Possible overload variants: -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:375: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:376: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:376: note: Possible overload variants: -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:376: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +test_negative/negative.py:231: error: "DummyReply" has no attribute "__iter__" (not iterable) [attr-defined] +test_negative/negative.py:231: error: Argument 1 to "__call__" of "StreamUnaryMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:234: error: Argument 1 to "__call__" of "StreamStreamMultiCallable" has incompatible type "DummyRequest"; expected "Iterator[DummyRequest]" [arg-type] +test_negative/negative.py:238: error: "DummyReply" has no attribute "not_exists" [attr-defined] +test_negative/negative.py:275: error: Return type "Iterator[DummyReply]" of "UnaryUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:277: error: Argument 1 of "UnaryUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:277: note: This violates the Liskov substitution principle +test_negative/negative.py:277: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:283: error: Return type "DummyReply" of "UnaryStream" incompatible with return type "Union[Iterator[DummyReply], AsyncIterator[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:285: error: Argument 1 of "UnaryStream" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "DummyRequest" [override] +test_negative/negative.py:285: note: This violates the Liskov substitution principle +test_negative/negative.py:285: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "StreamUnary" incompatible with return type "Union[DummyReply, Awaitable[DummyReply]]" in supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer" [override] +test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] +test_negative/negative.py:294: note: This violates the Liskov substitution principle +test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides +test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:379: note: Possible overload variants: +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:380: note: Possible overload variants: +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 111 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.9.omit_linenos b/test_negative/output.expected.3.9.omit_linenos index f634f902..fa55c645 100644 --- a/test_negative/output.expected.3.9.omit_linenos +++ b/test_negative/output.expected.3.9.omit_linenos @@ -99,6 +99,7 @@ test_negative/negative.py: error: Property "a_repeated_string" defined in "Simpl test_negative/negative.py: error: Property "rep_inner_enum" defined in "Simple1" is read-only [misc] test_negative/negative.py: error: "_r_None" has no attribute "invalid"; maybe "valid"? [attr-defined] test_negative/negative.py: error: Incompatible types in assignment (expression has type "ValueType", variable has type "str") [assignment] +test_negative/negative.py: error: function testproto.test_pb2.DeprecatedMessage.deprecated_field is deprecated: This field has been marked as deprecated using proto field options. [deprecated] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub @@ -134,6 +135,7 @@ test_negative/negative.py: error: Argument 1 to "HasField" of "Editions2024Test" test_negative/negative.py: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] test_negative/negative.py: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] test_negative/negative.py: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] test_negative/negative.py: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] test_negative/negative.py: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] test_negative/negative.py: note: Possible overload variants: @@ -143,4 +145,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 109 errors in 4 files (checked 4 source files) +Found 111 errors in 4 files (checked 4 source files) From 74945596661697fcea3284001a21857639311251 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Wed, 10 Dec 2025 10:19:22 -0800 Subject: [PATCH 4/7] only generate method as property if deprecated Signed-off-by: Aidan Jensen --- mypy_protobuf/main.py | 39 +- proto/testproto/grpc/dummy.proto | 3 + .../testproto/grpc/dummy_pb2_grpc.pyi | 647 ++++++------------ .../testproto/grpc/import_pb2_grpc.pyi | 26 +- .../testproto/grpc/dummy_pb2_grpc.pyi | 646 ++++++----------- .../testproto/grpc/import_pb2_grpc.pyi | 26 +- test_negative/negative.py | 7 + test_negative/output.expected.3.10 | 58 +- .../output.expected.3.10.omit_linenos | 6 +- test_negative/output.expected.3.11 | 58 +- .../output.expected.3.11.omit_linenos | 6 +- test_negative/output.expected.3.12 | 58 +- .../output.expected.3.12.omit_linenos | 6 +- test_negative/output.expected.3.13 | 58 +- .../output.expected.3.13.omit_linenos | 6 +- test_negative/output.expected.3.14 | 58 +- .../output.expected.3.14.omit_linenos | 6 +- test_negative/output.expected.3.9 | 58 +- .../output.expected.3.9.omit_linenos | 6 +- 19 files changed, 724 insertions(+), 1054 deletions(-) diff --git a/mypy_protobuf/main.py b/mypy_protobuf/main.py index c94b870b..40d1188c 100644 --- a/mypy_protobuf/main.py +++ b/mypy_protobuf/main.py @@ -563,10 +563,11 @@ def write_messages( if is_scalar(field) and field.label != d.FieldDescriptorProto.LABEL_REPEATED: # Scalar non repeated fields are r/w, generate getter and setter if deprecated scl_field = scl + [d.DescriptorProto.FIELD_FIELD_NUMBER, idx] + deprecation_scl_field = scl_field + [d.FieldDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.FieldOptions.DEPRECATED_FIELD_NUMBER] if field.options.deprecated: wl("@property") self._write_deprecation_warning( - scl_field + [d.FieldDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.FieldOptions.DEPRECATED_FIELD_NUMBER], + deprecation_scl_field, "This field has been marked as deprecated using proto field options.", ) body = " ..." if not self._has_comments(scl_field) else "" @@ -577,7 +578,7 @@ def write_messages( wl("") wl(f"@{field.name}.setter") self._write_deprecation_warning( - scl_field + [d.FieldDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.FieldOptions.DEPRECATED_FIELD_NUMBER], + deprecation_scl_field, "This field has been marked as deprecated using proto field options.", ) body = " ..." if not self._has_comments(scl_field) else "" @@ -936,7 +937,7 @@ def write_grpc_servicer_context(self) -> None: wl("...") wl("") - def write_grpc_stub_methods(self, service: d.ServiceDescriptorProto, scl_prefix: SourceCodeLocation, *, is_async: bool, both: bool = False, ignore_override_errors: bool = False) -> None: + def write_grpc_stub_methods(self, service: d.ServiceDescriptorProto, scl_prefix: SourceCodeLocation, *, is_async: bool, both: bool = False, ignore_type_error: bool = False) -> None: wl = self._write_line methods = [(i, m) for i, m in enumerate(service.method) if m.name not in PYTHON_RESERVED] if not methods: @@ -947,20 +948,30 @@ def type_str(method: d.MethodDescriptorProto, is_async: bool) -> str: for i, method in methods: scl = scl_prefix + [d.ServiceDescriptorProto.METHOD_FIELD_NUMBER, i] - wl("@property") - if method.options.deprecated: + is_deprecated = method.options.deprecated + has_comments = self._has_comments(scl) + + # Generate type annotation once + if both: + type_annotation = f"{self._import('typing', 'Union')}[{type_str(method, is_async=False)}, {type_str(method, is_async=True)}]" + else: + type_annotation = type_str(method, is_async=is_async) + + if is_deprecated: + wl("@property") self._write_deprecation_warning( - scl + [d.MethodDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.MethodOptions.DEPRECATED_FIELD_NUMBER], + scl + [d.MethodDescriptorProto.OPTIONS_FIELD_NUMBER, d.MethodOptions.DEPRECATED_FIELD_NUMBER], "This method has been marked as deprecated using proto method options.", ) - if both: - wl("def {}(self) -> {}[{}, {}]:{}", method.name, self._import("typing", "Union"), type_str(method, is_async=False), type_str(method, is_async=True), " ..." if not self._has_comments(scl) else " ") + wl(f"def {method.name}(self) -> {type_annotation}:{' ...' if not has_comments else ''}{' # type: ignore[override]' if ignore_type_error else ''}") + + if has_comments: + with self._indent(): + if not self._write_comments(scl): + wl("...") else: - wl("def {}(self) -> {}:{}{}", method.name, type_str(method, is_async=is_async), " ..." if not self._has_comments(scl) else "", "" if not ignore_override_errors else " # type: ignore[override]") - if self._has_comments(scl): - with self._indent(): - if not self._write_comments(scl): - wl("...") + wl(f"{method.name}: {type_annotation}{' # type: ignore[assignment]' if ignore_type_error else ''}") + self._write_comments(scl) def write_grpc_methods(self, service: d.ServiceDescriptorProto, scl_prefix: SourceCodeLocation) -> None: wl = self._write_line @@ -1077,7 +1088,7 @@ def write_grpc_services( if self._write_comments(scl): wl("") wl("def __init__(self, channel: {}) -> None: ...", self._import("grpc.aio", "Channel")) - self.write_grpc_stub_methods(service, scl, is_async=True, ignore_assignment_errors=True) + self.write_grpc_stub_methods(service, scl, is_async=True, ignore_type_error=True) else: # ASYNC only - use Stub name (not AsyncStub) since there's only one type wl("class {}:", class_name) diff --git a/proto/testproto/grpc/dummy.proto b/proto/testproto/grpc/dummy.proto index 42333c1c..d9075ec4 100644 --- a/proto/testproto/grpc/dummy.proto +++ b/proto/testproto/grpc/dummy.proto @@ -41,6 +41,9 @@ service DeprecatedService { // Method is deprecated, but request message is not option deprecated = true; } + rpc DeprecatedMethodNoComments(DeprecatedRequest) returns (DummyReply) { + option deprecated = true; + } } message ManyRequest1 {} diff --git a/test/generated/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated/testproto/grpc/dummy_pb2_grpc.pyi index 4644c8d6..afce01d2 100644 --- a/test/generated/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated/testproto/grpc/dummy_pb2_grpc.pyi @@ -33,36 +33,28 @@ class DummyServiceStub: def __new__(cls, channel: grpc.Channel) -> DummyServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> DummyServiceAsyncStub: ... - @property - def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """UnaryStream""" - @property - def StreamUnary(self) -> grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """StreamUnary""" - @property - def StreamStream(self) -> grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """StreamStream""" + UnaryUnary: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """UnaryUnary""" + UnaryStream: grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """UnaryStream""" + StreamUnary: grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """StreamUnary""" + StreamStream: grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """StreamStream""" @typing.type_check_only class DummyServiceAsyncStub(DummyServiceStub): """DummyService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - @property - def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """UnaryStream""" - @property - def StreamUnary(self) -> grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """StreamUnary""" - @property - def StreamStream(self) -> grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """StreamStream""" + UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """UnaryUnary""" + UnaryStream: grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """UnaryStream""" + StreamUnary: grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """StreamUnary""" + StreamStream: grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """StreamStream""" class DummyServiceServicer(metaclass=abc.ABCMeta): """DummyService""" @@ -117,6 +109,9 @@ class DeprecatedServiceStub: @deprecated("""Method is deprecated, but request message is not""") def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethodNoComments(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: ... @deprecated("""This service is deprecated""") @typing.type_check_only @@ -132,6 +127,9 @@ class DeprecatedServiceAsyncStub(DeprecatedServiceStub): @deprecated("""Method is deprecated, but request message is not""") def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethodNoComments(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: ... # type: ignore[override] @deprecated("""This service is deprecated""") class DeprecatedServiceServicer(metaclass=abc.ABCMeta): @@ -153,6 +151,13 @@ class DeprecatedServiceServicer(metaclass=abc.ABCMeta): ) -> typing.Union[testproto.grpc.dummy_pb2.DummyReply, collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]]: """DeprecatedMethodNotDeprecatedRequest""" + @abc.abstractmethod + def DeprecatedMethodNoComments( + self, + request: testproto.grpc.dummy_pb2.DeprecatedRequest, + context: _ServicerContext, + ) -> typing.Union[testproto.grpc.dummy_pb2.DummyReply, collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]]: ... + @deprecated("""This service is deprecated""") def add_DeprecatedServiceServicer_to_server(servicer: DeprecatedServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... @@ -161,406 +166,208 @@ class ManyRPCsServiceStub: def __new__(cls, channel: grpc.Channel) -> ManyRPCsServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> ManyRPCsServiceAsyncStub: ... - @property - def Method1(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... - @property - def Method2(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... - @property - def Method3(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... - @property - def Method4(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... - @property - def Method5(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... - @property - def Method6(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... - @property - def Method7(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... - @property - def Method8(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... - @property - def Method9(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... - @property - def Method10(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... - @property - def Method11(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... - @property - def Method12(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... - @property - def Method13(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... - @property - def Method14(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... - @property - def Method15(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... - @property - def Method16(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... - @property - def Method17(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... - @property - def Method18(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... - @property - def Method19(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... - @property - def Method20(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... - @property - def Method21(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... - @property - def Method22(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... - @property - def Method23(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... - @property - def Method24(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... - @property - def Method25(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... - @property - def Method26(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... - @property - def Method27(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... - @property - def Method28(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... - @property - def Method29(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... - @property - def Method30(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... - @property - def Method31(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... - @property - def Method32(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... - @property - def Method33(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... - @property - def Method34(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... - @property - def Method35(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... - @property - def Method36(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... - @property - def Method37(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... - @property - def Method38(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... - @property - def Method39(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... - @property - def Method40(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... - @property - def Method41(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... - @property - def Method42(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... - @property - def Method43(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... - @property - def Method44(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... - @property - def Method45(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... - @property - def Method46(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... - @property - def Method47(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... - @property - def Method48(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... - @property - def Method49(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... - @property - def Method50(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... - @property - def Method51(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... - @property - def Method52(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... - @property - def Method53(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... - @property - def Method54(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... - @property - def Method55(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... - @property - def Method56(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... - @property - def Method57(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... - @property - def Method58(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... - @property - def Method59(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... - @property - def Method60(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... - @property - def Method61(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... - @property - def Method62(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... - @property - def Method63(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... - @property - def Method64(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... - @property - def Method65(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... - @property - def Method66(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... - @property - def Method67(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... - @property - def Method68(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... - @property - def Method69(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... - @property - def Method70(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... - @property - def Method71(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... - @property - def Method72(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... - @property - def Method73(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... - @property - def Method74(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... - @property - def Method75(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... - @property - def Method76(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... - @property - def Method77(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... - @property - def Method78(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... - @property - def Method79(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... - @property - def Method80(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... - @property - def Method81(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... - @property - def Method82(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... - @property - def Method83(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... - @property - def Method84(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... - @property - def Method85(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... - @property - def Method86(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... - @property - def Method87(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... - @property - def Method88(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... - @property - def Method89(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... - @property - def Method90(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... - @property - def Method91(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... - @property - def Method92(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... - @property - def Method93(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... - @property - def Method94(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... - @property - def Method95(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... - @property - def Method96(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... - @property - def Method97(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... - @property - def Method98(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... - @property - def Method99(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... + Method1: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] + Method2: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] + Method3: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] + Method4: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] + Method5: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] + Method6: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] + Method7: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] + Method8: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] + Method9: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] + Method10: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] + Method11: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] + Method12: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] + Method13: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] + Method14: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] + Method15: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] + Method16: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] + Method17: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] + Method18: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] + Method19: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] + Method20: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] + Method21: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] + Method22: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] + Method23: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] + Method24: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] + Method25: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] + Method26: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] + Method27: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] + Method28: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] + Method29: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] + Method30: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] + Method31: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] + Method32: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] + Method33: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] + Method34: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] + Method35: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] + Method36: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] + Method37: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] + Method38: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] + Method39: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] + Method40: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] + Method41: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] + Method42: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] + Method43: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] + Method44: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] + Method45: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] + Method46: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] + Method47: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] + Method48: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] + Method49: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] + Method50: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] + Method51: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] + Method52: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] + Method53: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] + Method54: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] + Method55: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] + Method56: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] + Method57: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] + Method58: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] + Method59: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] + Method60: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] + Method61: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] + Method62: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] + Method63: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] + Method64: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] + Method65: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] + Method66: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] + Method67: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] + Method68: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] + Method69: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] + Method70: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] + Method71: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] + Method72: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] + Method73: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] + Method74: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] + Method75: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] + Method76: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] + Method77: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] + Method78: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] + Method79: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] + Method80: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] + Method81: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] + Method82: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] + Method83: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] + Method84: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] + Method85: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] + Method86: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] + Method87: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] + Method88: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] + Method89: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] + Method90: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] + Method91: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] + Method92: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] + Method93: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] + Method94: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] + Method95: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] + Method96: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] + Method97: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] + Method98: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] + Method99: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] @typing.type_check_only class ManyRPCsServiceAsyncStub(ManyRPCsServiceStub): def __init__(self, channel: grpc.aio.Channel) -> None: ... - @property - def Method1(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... # type: ignore[override] - @property - def Method2(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... # type: ignore[override] - @property - def Method3(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... # type: ignore[override] - @property - def Method4(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... # type: ignore[override] - @property - def Method5(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... # type: ignore[override] - @property - def Method6(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... # type: ignore[override] - @property - def Method7(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... # type: ignore[override] - @property - def Method8(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... # type: ignore[override] - @property - def Method9(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... # type: ignore[override] - @property - def Method10(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... # type: ignore[override] - @property - def Method11(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... # type: ignore[override] - @property - def Method12(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... # type: ignore[override] - @property - def Method13(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... # type: ignore[override] - @property - def Method14(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... # type: ignore[override] - @property - def Method15(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... # type: ignore[override] - @property - def Method16(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... # type: ignore[override] - @property - def Method17(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... # type: ignore[override] - @property - def Method18(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... # type: ignore[override] - @property - def Method19(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... # type: ignore[override] - @property - def Method20(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... # type: ignore[override] - @property - def Method21(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... # type: ignore[override] - @property - def Method22(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... # type: ignore[override] - @property - def Method23(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... # type: ignore[override] - @property - def Method24(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... # type: ignore[override] - @property - def Method25(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... # type: ignore[override] - @property - def Method26(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... # type: ignore[override] - @property - def Method27(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... # type: ignore[override] - @property - def Method28(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... # type: ignore[override] - @property - def Method29(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... # type: ignore[override] - @property - def Method30(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... # type: ignore[override] - @property - def Method31(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... # type: ignore[override] - @property - def Method32(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... # type: ignore[override] - @property - def Method33(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... # type: ignore[override] - @property - def Method34(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... # type: ignore[override] - @property - def Method35(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... # type: ignore[override] - @property - def Method36(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... # type: ignore[override] - @property - def Method37(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... # type: ignore[override] - @property - def Method38(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... # type: ignore[override] - @property - def Method39(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... # type: ignore[override] - @property - def Method40(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... # type: ignore[override] - @property - def Method41(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... # type: ignore[override] - @property - def Method42(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... # type: ignore[override] - @property - def Method43(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... # type: ignore[override] - @property - def Method44(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... # type: ignore[override] - @property - def Method45(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... # type: ignore[override] - @property - def Method46(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... # type: ignore[override] - @property - def Method47(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... # type: ignore[override] - @property - def Method48(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... # type: ignore[override] - @property - def Method49(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... # type: ignore[override] - @property - def Method50(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... # type: ignore[override] - @property - def Method51(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... # type: ignore[override] - @property - def Method52(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... # type: ignore[override] - @property - def Method53(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... # type: ignore[override] - @property - def Method54(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... # type: ignore[override] - @property - def Method55(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... # type: ignore[override] - @property - def Method56(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... # type: ignore[override] - @property - def Method57(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... # type: ignore[override] - @property - def Method58(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... # type: ignore[override] - @property - def Method59(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... # type: ignore[override] - @property - def Method60(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... # type: ignore[override] - @property - def Method61(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... # type: ignore[override] - @property - def Method62(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... # type: ignore[override] - @property - def Method63(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... # type: ignore[override] - @property - def Method64(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... # type: ignore[override] - @property - def Method65(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... # type: ignore[override] - @property - def Method66(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... # type: ignore[override] - @property - def Method67(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... # type: ignore[override] - @property - def Method68(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... # type: ignore[override] - @property - def Method69(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... # type: ignore[override] - @property - def Method70(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... # type: ignore[override] - @property - def Method71(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... # type: ignore[override] - @property - def Method72(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... # type: ignore[override] - @property - def Method73(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... # type: ignore[override] - @property - def Method74(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... # type: ignore[override] - @property - def Method75(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... # type: ignore[override] - @property - def Method76(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... # type: ignore[override] - @property - def Method77(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... # type: ignore[override] - @property - def Method78(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... # type: ignore[override] - @property - def Method79(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... # type: ignore[override] - @property - def Method80(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... # type: ignore[override] - @property - def Method81(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... # type: ignore[override] - @property - def Method82(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... # type: ignore[override] - @property - def Method83(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... # type: ignore[override] - @property - def Method84(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... # type: ignore[override] - @property - def Method85(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... # type: ignore[override] - @property - def Method86(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... # type: ignore[override] - @property - def Method87(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... # type: ignore[override] - @property - def Method88(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... # type: ignore[override] - @property - def Method89(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... # type: ignore[override] - @property - def Method90(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... # type: ignore[override] - @property - def Method91(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... # type: ignore[override] - @property - def Method92(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... # type: ignore[override] - @property - def Method93(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... # type: ignore[override] - @property - def Method94(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... # type: ignore[override] - @property - def Method95(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... # type: ignore[override] - @property - def Method96(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... # type: ignore[override] - @property - def Method97(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... # type: ignore[override] - @property - def Method98(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... # type: ignore[override] - @property - def Method99(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... # type: ignore[override] + Method1: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] # type: ignore[assignment] + Method2: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] # type: ignore[assignment] + Method3: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] # type: ignore[assignment] + Method4: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] # type: ignore[assignment] + Method5: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] # type: ignore[assignment] + Method6: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] # type: ignore[assignment] + Method7: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] # type: ignore[assignment] + Method8: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] # type: ignore[assignment] + Method9: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] # type: ignore[assignment] + Method10: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] # type: ignore[assignment] + Method11: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] # type: ignore[assignment] + Method12: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] # type: ignore[assignment] + Method13: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] # type: ignore[assignment] + Method14: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] # type: ignore[assignment] + Method15: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] # type: ignore[assignment] + Method16: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] # type: ignore[assignment] + Method17: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] # type: ignore[assignment] + Method18: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] # type: ignore[assignment] + Method19: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] # type: ignore[assignment] + Method20: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] # type: ignore[assignment] + Method21: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] # type: ignore[assignment] + Method22: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] # type: ignore[assignment] + Method23: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] # type: ignore[assignment] + Method24: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] # type: ignore[assignment] + Method25: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] # type: ignore[assignment] + Method26: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] # type: ignore[assignment] + Method27: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] # type: ignore[assignment] + Method28: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] # type: ignore[assignment] + Method29: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] # type: ignore[assignment] + Method30: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] # type: ignore[assignment] + Method31: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] # type: ignore[assignment] + Method32: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] # type: ignore[assignment] + Method33: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] # type: ignore[assignment] + Method34: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] # type: ignore[assignment] + Method35: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] # type: ignore[assignment] + Method36: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] # type: ignore[assignment] + Method37: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] # type: ignore[assignment] + Method38: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] # type: ignore[assignment] + Method39: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] # type: ignore[assignment] + Method40: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] # type: ignore[assignment] + Method41: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] # type: ignore[assignment] + Method42: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] # type: ignore[assignment] + Method43: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] # type: ignore[assignment] + Method44: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] # type: ignore[assignment] + Method45: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] # type: ignore[assignment] + Method46: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] # type: ignore[assignment] + Method47: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] # type: ignore[assignment] + Method48: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] # type: ignore[assignment] + Method49: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] # type: ignore[assignment] + Method50: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] # type: ignore[assignment] + Method51: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] # type: ignore[assignment] + Method52: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] # type: ignore[assignment] + Method53: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] # type: ignore[assignment] + Method54: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] # type: ignore[assignment] + Method55: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] # type: ignore[assignment] + Method56: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] # type: ignore[assignment] + Method57: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] # type: ignore[assignment] + Method58: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] # type: ignore[assignment] + Method59: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] # type: ignore[assignment] + Method60: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] # type: ignore[assignment] + Method61: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] # type: ignore[assignment] + Method62: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] # type: ignore[assignment] + Method63: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] # type: ignore[assignment] + Method64: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] # type: ignore[assignment] + Method65: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] # type: ignore[assignment] + Method66: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] # type: ignore[assignment] + Method67: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] # type: ignore[assignment] + Method68: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] # type: ignore[assignment] + Method69: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] # type: ignore[assignment] + Method70: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] # type: ignore[assignment] + Method71: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] # type: ignore[assignment] + Method72: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] # type: ignore[assignment] + Method73: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] # type: ignore[assignment] + Method74: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] # type: ignore[assignment] + Method75: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] # type: ignore[assignment] + Method76: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] # type: ignore[assignment] + Method77: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] # type: ignore[assignment] + Method78: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] # type: ignore[assignment] + Method79: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] # type: ignore[assignment] + Method80: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] # type: ignore[assignment] + Method81: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] # type: ignore[assignment] + Method82: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] # type: ignore[assignment] + Method83: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] # type: ignore[assignment] + Method84: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] # type: ignore[assignment] + Method85: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] # type: ignore[assignment] + Method86: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] # type: ignore[assignment] + Method87: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] # type: ignore[assignment] + Method88: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] # type: ignore[assignment] + Method89: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] # type: ignore[assignment] + Method90: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] # type: ignore[assignment] + Method91: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] # type: ignore[assignment] + Method92: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] # type: ignore[assignment] + Method93: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] # type: ignore[assignment] + Method94: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] # type: ignore[assignment] + Method95: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] # type: ignore[assignment] + Method96: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] # type: ignore[assignment] + Method97: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] # type: ignore[assignment] + Method98: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] # type: ignore[assignment] + Method99: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] # type: ignore[assignment] class ManyRPCsServiceServicer(metaclass=abc.ABCMeta): @abc.abstractmethod diff --git a/test/generated/testproto/grpc/import_pb2_grpc.pyi b/test/generated/testproto/grpc/import_pb2_grpc.pyi index 540827d9..487cc4cf 100644 --- a/test/generated/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated/testproto/grpc/import_pb2_grpc.pyi @@ -28,28 +28,22 @@ class SimpleServiceStub: def __new__(cls, channel: grpc.Channel) -> SimpleServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> SimpleServiceAsyncStub: ... - @property - def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: - """UnaryStream""" - @property - def NoComment(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... + UnaryUnary: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] + """UnaryUnary""" + UnaryStream: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] + """UnaryStream""" + NoComment: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] @typing.type_check_only class SimpleServiceAsyncStub(SimpleServiceStub): """SimpleService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - @property - def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: # type: ignore[override] - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: # type: ignore[override] - """UnaryStream""" - @property - def NoComment(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... # type: ignore[override] + UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] # type: ignore[assignment] + """UnaryUnary""" + UnaryStream: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] + """UnaryStream""" + NoComment: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] class SimpleServiceServicer(metaclass=abc.ABCMeta): """SimpleService""" diff --git a/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi b/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi index 4f055cbd..7e2bc1ed 100644 --- a/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated_concrete/testproto/grpc/dummy_pb2_grpc.pyi @@ -33,36 +33,28 @@ class DummyServiceStub: def __new__(cls, channel: grpc.Channel) -> DummyServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> DummyServiceAsyncStub: ... - @property - def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """UnaryStream""" - @property - def StreamUnary(self) -> grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """StreamUnary""" - @property - def StreamStream(self) -> grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: - """StreamStream""" + UnaryUnary: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """UnaryUnary""" + UnaryStream: grpc.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """UnaryStream""" + StreamUnary: grpc.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """StreamUnary""" + StreamStream: grpc.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] + """StreamStream""" @typing.type_check_only class DummyServiceAsyncStub(DummyServiceStub): """DummyService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - @property - def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """UnaryStream""" - @property - def StreamUnary(self) -> grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """StreamUnary""" - @property - def StreamStream(self) -> grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] - """StreamStream""" + UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """UnaryUnary""" + UnaryStream: grpc.aio.UnaryStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """UnaryStream""" + StreamUnary: grpc.aio.StreamUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """StreamUnary""" + StreamStream: grpc.aio.StreamStreamMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] # type: ignore[assignment] + """StreamStream""" class DummyServiceServicer: """DummyService""" @@ -113,6 +105,9 @@ class DeprecatedServiceStub: @deprecated("""Method is deprecated, but request message is not""") def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethodNoComments(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: ... @deprecated("""This service is deprecated""") @typing.type_check_only @@ -128,6 +123,9 @@ class DeprecatedServiceAsyncStub(DeprecatedServiceStub): @deprecated("""Method is deprecated, but request message is not""") def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: # type: ignore[override] """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethodNoComments(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: ... # type: ignore[override] @deprecated("""This service is deprecated""") class DeprecatedServiceServicer: @@ -147,6 +145,12 @@ class DeprecatedServiceServicer: ) -> typing.Union[testproto.grpc.dummy_pb2.DummyReply, collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]]: """DeprecatedMethodNotDeprecatedRequest""" + def DeprecatedMethodNoComments( + self, + request: testproto.grpc.dummy_pb2.DeprecatedRequest, + context: _ServicerContext, + ) -> typing.Union[testproto.grpc.dummy_pb2.DummyReply, collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]]: ... + @deprecated("""This service is deprecated""") def add_DeprecatedServiceServicer_to_server(servicer: DeprecatedServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... @@ -155,406 +159,208 @@ class ManyRPCsServiceStub: def __new__(cls, channel: grpc.Channel) -> ManyRPCsServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> ManyRPCsServiceAsyncStub: ... - @property - def Method1(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... - @property - def Method2(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... - @property - def Method3(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... - @property - def Method4(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... - @property - def Method5(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... - @property - def Method6(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... - @property - def Method7(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... - @property - def Method8(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... - @property - def Method9(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... - @property - def Method10(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... - @property - def Method11(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... - @property - def Method12(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... - @property - def Method13(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... - @property - def Method14(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... - @property - def Method15(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... - @property - def Method16(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... - @property - def Method17(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... - @property - def Method18(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... - @property - def Method19(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... - @property - def Method20(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... - @property - def Method21(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... - @property - def Method22(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... - @property - def Method23(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... - @property - def Method24(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... - @property - def Method25(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... - @property - def Method26(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... - @property - def Method27(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... - @property - def Method28(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... - @property - def Method29(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... - @property - def Method30(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... - @property - def Method31(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... - @property - def Method32(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... - @property - def Method33(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... - @property - def Method34(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... - @property - def Method35(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... - @property - def Method36(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... - @property - def Method37(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... - @property - def Method38(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... - @property - def Method39(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... - @property - def Method40(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... - @property - def Method41(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... - @property - def Method42(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... - @property - def Method43(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... - @property - def Method44(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... - @property - def Method45(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... - @property - def Method46(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... - @property - def Method47(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... - @property - def Method48(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... - @property - def Method49(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... - @property - def Method50(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... - @property - def Method51(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... - @property - def Method52(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... - @property - def Method53(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... - @property - def Method54(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... - @property - def Method55(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... - @property - def Method56(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... - @property - def Method57(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... - @property - def Method58(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... - @property - def Method59(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... - @property - def Method60(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... - @property - def Method61(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... - @property - def Method62(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... - @property - def Method63(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... - @property - def Method64(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... - @property - def Method65(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... - @property - def Method66(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... - @property - def Method67(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... - @property - def Method68(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... - @property - def Method69(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... - @property - def Method70(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... - @property - def Method71(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... - @property - def Method72(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... - @property - def Method73(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... - @property - def Method74(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... - @property - def Method75(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... - @property - def Method76(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... - @property - def Method77(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... - @property - def Method78(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... - @property - def Method79(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... - @property - def Method80(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... - @property - def Method81(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... - @property - def Method82(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... - @property - def Method83(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... - @property - def Method84(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... - @property - def Method85(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... - @property - def Method86(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... - @property - def Method87(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... - @property - def Method88(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... - @property - def Method89(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... - @property - def Method90(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... - @property - def Method91(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... - @property - def Method92(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... - @property - def Method93(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... - @property - def Method94(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... - @property - def Method95(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... - @property - def Method96(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... - @property - def Method97(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... - @property - def Method98(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... - @property - def Method99(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... + Method1: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] + Method2: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] + Method3: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] + Method4: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] + Method5: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] + Method6: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] + Method7: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] + Method8: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] + Method9: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] + Method10: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] + Method11: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] + Method12: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] + Method13: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] + Method14: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] + Method15: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] + Method16: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] + Method17: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] + Method18: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] + Method19: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] + Method20: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] + Method21: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] + Method22: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] + Method23: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] + Method24: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] + Method25: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] + Method26: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] + Method27: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] + Method28: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] + Method29: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] + Method30: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] + Method31: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] + Method32: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] + Method33: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] + Method34: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] + Method35: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] + Method36: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] + Method37: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] + Method38: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] + Method39: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] + Method40: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] + Method41: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] + Method42: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] + Method43: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] + Method44: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] + Method45: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] + Method46: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] + Method47: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] + Method48: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] + Method49: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] + Method50: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] + Method51: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] + Method52: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] + Method53: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] + Method54: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] + Method55: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] + Method56: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] + Method57: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] + Method58: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] + Method59: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] + Method60: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] + Method61: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] + Method62: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] + Method63: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] + Method64: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] + Method65: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] + Method66: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] + Method67: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] + Method68: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] + Method69: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] + Method70: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] + Method71: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] + Method72: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] + Method73: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] + Method74: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] + Method75: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] + Method76: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] + Method77: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] + Method78: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] + Method79: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] + Method80: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] + Method81: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] + Method82: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] + Method83: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] + Method84: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] + Method85: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] + Method86: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] + Method87: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] + Method88: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] + Method89: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] + Method90: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] + Method91: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] + Method92: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] + Method93: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] + Method94: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] + Method95: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] + Method96: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] + Method97: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] + Method98: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] + Method99: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] @typing.type_check_only class ManyRPCsServiceAsyncStub(ManyRPCsServiceStub): def __init__(self, channel: grpc.aio.Channel) -> None: ... - @property - def Method1(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1]: ... # type: ignore[override] - @property - def Method2(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2]: ... # type: ignore[override] - @property - def Method3(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3]: ... # type: ignore[override] - @property - def Method4(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4]: ... # type: ignore[override] - @property - def Method5(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5]: ... # type: ignore[override] - @property - def Method6(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6]: ... # type: ignore[override] - @property - def Method7(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7]: ... # type: ignore[override] - @property - def Method8(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8]: ... # type: ignore[override] - @property - def Method9(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9]: ... # type: ignore[override] - @property - def Method10(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10]: ... # type: ignore[override] - @property - def Method11(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11]: ... # type: ignore[override] - @property - def Method12(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12]: ... # type: ignore[override] - @property - def Method13(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13]: ... # type: ignore[override] - @property - def Method14(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14]: ... # type: ignore[override] - @property - def Method15(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15]: ... # type: ignore[override] - @property - def Method16(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16]: ... # type: ignore[override] - @property - def Method17(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17]: ... # type: ignore[override] - @property - def Method18(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18]: ... # type: ignore[override] - @property - def Method19(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19]: ... # type: ignore[override] - @property - def Method20(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20]: ... # type: ignore[override] - @property - def Method21(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21]: ... # type: ignore[override] - @property - def Method22(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22]: ... # type: ignore[override] - @property - def Method23(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23]: ... # type: ignore[override] - @property - def Method24(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24]: ... # type: ignore[override] - @property - def Method25(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25]: ... # type: ignore[override] - @property - def Method26(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26]: ... # type: ignore[override] - @property - def Method27(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27]: ... # type: ignore[override] - @property - def Method28(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28]: ... # type: ignore[override] - @property - def Method29(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29]: ... # type: ignore[override] - @property - def Method30(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30]: ... # type: ignore[override] - @property - def Method31(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31]: ... # type: ignore[override] - @property - def Method32(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32]: ... # type: ignore[override] - @property - def Method33(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33]: ... # type: ignore[override] - @property - def Method34(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34]: ... # type: ignore[override] - @property - def Method35(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35]: ... # type: ignore[override] - @property - def Method36(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36]: ... # type: ignore[override] - @property - def Method37(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37]: ... # type: ignore[override] - @property - def Method38(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38]: ... # type: ignore[override] - @property - def Method39(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39]: ... # type: ignore[override] - @property - def Method40(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40]: ... # type: ignore[override] - @property - def Method41(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41]: ... # type: ignore[override] - @property - def Method42(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42]: ... # type: ignore[override] - @property - def Method43(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43]: ... # type: ignore[override] - @property - def Method44(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44]: ... # type: ignore[override] - @property - def Method45(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45]: ... # type: ignore[override] - @property - def Method46(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46]: ... # type: ignore[override] - @property - def Method47(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47]: ... # type: ignore[override] - @property - def Method48(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48]: ... # type: ignore[override] - @property - def Method49(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49]: ... # type: ignore[override] - @property - def Method50(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50]: ... # type: ignore[override] - @property - def Method51(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51]: ... # type: ignore[override] - @property - def Method52(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52]: ... # type: ignore[override] - @property - def Method53(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53]: ... # type: ignore[override] - @property - def Method54(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54]: ... # type: ignore[override] - @property - def Method55(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55]: ... # type: ignore[override] - @property - def Method56(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56]: ... # type: ignore[override] - @property - def Method57(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57]: ... # type: ignore[override] - @property - def Method58(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58]: ... # type: ignore[override] - @property - def Method59(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59]: ... # type: ignore[override] - @property - def Method60(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60]: ... # type: ignore[override] - @property - def Method61(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61]: ... # type: ignore[override] - @property - def Method62(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62]: ... # type: ignore[override] - @property - def Method63(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63]: ... # type: ignore[override] - @property - def Method64(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64]: ... # type: ignore[override] - @property - def Method65(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65]: ... # type: ignore[override] - @property - def Method66(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66]: ... # type: ignore[override] - @property - def Method67(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67]: ... # type: ignore[override] - @property - def Method68(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68]: ... # type: ignore[override] - @property - def Method69(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69]: ... # type: ignore[override] - @property - def Method70(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70]: ... # type: ignore[override] - @property - def Method71(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71]: ... # type: ignore[override] - @property - def Method72(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72]: ... # type: ignore[override] - @property - def Method73(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73]: ... # type: ignore[override] - @property - def Method74(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74]: ... # type: ignore[override] - @property - def Method75(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75]: ... # type: ignore[override] - @property - def Method76(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76]: ... # type: ignore[override] - @property - def Method77(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77]: ... # type: ignore[override] - @property - def Method78(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78]: ... # type: ignore[override] - @property - def Method79(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79]: ... # type: ignore[override] - @property - def Method80(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80]: ... # type: ignore[override] - @property - def Method81(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81]: ... # type: ignore[override] - @property - def Method82(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82]: ... # type: ignore[override] - @property - def Method83(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83]: ... # type: ignore[override] - @property - def Method84(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84]: ... # type: ignore[override] - @property - def Method85(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85]: ... # type: ignore[override] - @property - def Method86(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86]: ... # type: ignore[override] - @property - def Method87(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87]: ... # type: ignore[override] - @property - def Method88(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88]: ... # type: ignore[override] - @property - def Method89(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89]: ... # type: ignore[override] - @property - def Method90(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90]: ... # type: ignore[override] - @property - def Method91(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91]: ... # type: ignore[override] - @property - def Method92(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92]: ... # type: ignore[override] - @property - def Method93(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93]: ... # type: ignore[override] - @property - def Method94(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94]: ... # type: ignore[override] - @property - def Method95(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95]: ... # type: ignore[override] - @property - def Method96(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96]: ... # type: ignore[override] - @property - def Method97(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97]: ... # type: ignore[override] - @property - def Method98(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98]: ... # type: ignore[override] - @property - def Method99(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99]: ... # type: ignore[override] + Method1: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest1, testproto.grpc.dummy_pb2.ManyResponse1] # type: ignore[assignment] + Method2: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest2, testproto.grpc.dummy_pb2.ManyResponse2] # type: ignore[assignment] + Method3: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest3, testproto.grpc.dummy_pb2.ManyResponse3] # type: ignore[assignment] + Method4: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest4, testproto.grpc.dummy_pb2.ManyResponse4] # type: ignore[assignment] + Method5: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest5, testproto.grpc.dummy_pb2.ManyResponse5] # type: ignore[assignment] + Method6: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest6, testproto.grpc.dummy_pb2.ManyResponse6] # type: ignore[assignment] + Method7: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest7, testproto.grpc.dummy_pb2.ManyResponse7] # type: ignore[assignment] + Method8: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest8, testproto.grpc.dummy_pb2.ManyResponse8] # type: ignore[assignment] + Method9: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest9, testproto.grpc.dummy_pb2.ManyResponse9] # type: ignore[assignment] + Method10: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest10, testproto.grpc.dummy_pb2.ManyResponse10] # type: ignore[assignment] + Method11: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest11, testproto.grpc.dummy_pb2.ManyResponse11] # type: ignore[assignment] + Method12: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest12, testproto.grpc.dummy_pb2.ManyResponse12] # type: ignore[assignment] + Method13: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest13, testproto.grpc.dummy_pb2.ManyResponse13] # type: ignore[assignment] + Method14: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest14, testproto.grpc.dummy_pb2.ManyResponse14] # type: ignore[assignment] + Method15: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest15, testproto.grpc.dummy_pb2.ManyResponse15] # type: ignore[assignment] + Method16: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest16, testproto.grpc.dummy_pb2.ManyResponse16] # type: ignore[assignment] + Method17: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest17, testproto.grpc.dummy_pb2.ManyResponse17] # type: ignore[assignment] + Method18: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest18, testproto.grpc.dummy_pb2.ManyResponse18] # type: ignore[assignment] + Method19: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest19, testproto.grpc.dummy_pb2.ManyResponse19] # type: ignore[assignment] + Method20: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest20, testproto.grpc.dummy_pb2.ManyResponse20] # type: ignore[assignment] + Method21: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest21, testproto.grpc.dummy_pb2.ManyResponse21] # type: ignore[assignment] + Method22: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest22, testproto.grpc.dummy_pb2.ManyResponse22] # type: ignore[assignment] + Method23: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest23, testproto.grpc.dummy_pb2.ManyResponse23] # type: ignore[assignment] + Method24: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest24, testproto.grpc.dummy_pb2.ManyResponse24] # type: ignore[assignment] + Method25: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest25, testproto.grpc.dummy_pb2.ManyResponse25] # type: ignore[assignment] + Method26: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest26, testproto.grpc.dummy_pb2.ManyResponse26] # type: ignore[assignment] + Method27: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest27, testproto.grpc.dummy_pb2.ManyResponse27] # type: ignore[assignment] + Method28: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest28, testproto.grpc.dummy_pb2.ManyResponse28] # type: ignore[assignment] + Method29: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest29, testproto.grpc.dummy_pb2.ManyResponse29] # type: ignore[assignment] + Method30: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest30, testproto.grpc.dummy_pb2.ManyResponse30] # type: ignore[assignment] + Method31: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest31, testproto.grpc.dummy_pb2.ManyResponse31] # type: ignore[assignment] + Method32: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest32, testproto.grpc.dummy_pb2.ManyResponse32] # type: ignore[assignment] + Method33: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest33, testproto.grpc.dummy_pb2.ManyResponse33] # type: ignore[assignment] + Method34: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest34, testproto.grpc.dummy_pb2.ManyResponse34] # type: ignore[assignment] + Method35: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest35, testproto.grpc.dummy_pb2.ManyResponse35] # type: ignore[assignment] + Method36: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest36, testproto.grpc.dummy_pb2.ManyResponse36] # type: ignore[assignment] + Method37: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest37, testproto.grpc.dummy_pb2.ManyResponse37] # type: ignore[assignment] + Method38: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest38, testproto.grpc.dummy_pb2.ManyResponse38] # type: ignore[assignment] + Method39: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest39, testproto.grpc.dummy_pb2.ManyResponse39] # type: ignore[assignment] + Method40: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest40, testproto.grpc.dummy_pb2.ManyResponse40] # type: ignore[assignment] + Method41: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest41, testproto.grpc.dummy_pb2.ManyResponse41] # type: ignore[assignment] + Method42: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest42, testproto.grpc.dummy_pb2.ManyResponse42] # type: ignore[assignment] + Method43: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest43, testproto.grpc.dummy_pb2.ManyResponse43] # type: ignore[assignment] + Method44: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest44, testproto.grpc.dummy_pb2.ManyResponse44] # type: ignore[assignment] + Method45: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest45, testproto.grpc.dummy_pb2.ManyResponse45] # type: ignore[assignment] + Method46: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest46, testproto.grpc.dummy_pb2.ManyResponse46] # type: ignore[assignment] + Method47: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest47, testproto.grpc.dummy_pb2.ManyResponse47] # type: ignore[assignment] + Method48: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest48, testproto.grpc.dummy_pb2.ManyResponse48] # type: ignore[assignment] + Method49: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest49, testproto.grpc.dummy_pb2.ManyResponse49] # type: ignore[assignment] + Method50: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest50, testproto.grpc.dummy_pb2.ManyResponse50] # type: ignore[assignment] + Method51: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest51, testproto.grpc.dummy_pb2.ManyResponse51] # type: ignore[assignment] + Method52: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest52, testproto.grpc.dummy_pb2.ManyResponse52] # type: ignore[assignment] + Method53: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest53, testproto.grpc.dummy_pb2.ManyResponse53] # type: ignore[assignment] + Method54: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest54, testproto.grpc.dummy_pb2.ManyResponse54] # type: ignore[assignment] + Method55: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest55, testproto.grpc.dummy_pb2.ManyResponse55] # type: ignore[assignment] + Method56: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest56, testproto.grpc.dummy_pb2.ManyResponse56] # type: ignore[assignment] + Method57: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest57, testproto.grpc.dummy_pb2.ManyResponse57] # type: ignore[assignment] + Method58: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest58, testproto.grpc.dummy_pb2.ManyResponse58] # type: ignore[assignment] + Method59: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest59, testproto.grpc.dummy_pb2.ManyResponse59] # type: ignore[assignment] + Method60: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest60, testproto.grpc.dummy_pb2.ManyResponse60] # type: ignore[assignment] + Method61: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest61, testproto.grpc.dummy_pb2.ManyResponse61] # type: ignore[assignment] + Method62: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest62, testproto.grpc.dummy_pb2.ManyResponse62] # type: ignore[assignment] + Method63: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest63, testproto.grpc.dummy_pb2.ManyResponse63] # type: ignore[assignment] + Method64: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest64, testproto.grpc.dummy_pb2.ManyResponse64] # type: ignore[assignment] + Method65: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest65, testproto.grpc.dummy_pb2.ManyResponse65] # type: ignore[assignment] + Method66: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest66, testproto.grpc.dummy_pb2.ManyResponse66] # type: ignore[assignment] + Method67: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest67, testproto.grpc.dummy_pb2.ManyResponse67] # type: ignore[assignment] + Method68: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest68, testproto.grpc.dummy_pb2.ManyResponse68] # type: ignore[assignment] + Method69: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest69, testproto.grpc.dummy_pb2.ManyResponse69] # type: ignore[assignment] + Method70: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest70, testproto.grpc.dummy_pb2.ManyResponse70] # type: ignore[assignment] + Method71: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest71, testproto.grpc.dummy_pb2.ManyResponse71] # type: ignore[assignment] + Method72: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest72, testproto.grpc.dummy_pb2.ManyResponse72] # type: ignore[assignment] + Method73: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest73, testproto.grpc.dummy_pb2.ManyResponse73] # type: ignore[assignment] + Method74: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest74, testproto.grpc.dummy_pb2.ManyResponse74] # type: ignore[assignment] + Method75: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest75, testproto.grpc.dummy_pb2.ManyResponse75] # type: ignore[assignment] + Method76: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest76, testproto.grpc.dummy_pb2.ManyResponse76] # type: ignore[assignment] + Method77: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest77, testproto.grpc.dummy_pb2.ManyResponse77] # type: ignore[assignment] + Method78: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest78, testproto.grpc.dummy_pb2.ManyResponse78] # type: ignore[assignment] + Method79: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest79, testproto.grpc.dummy_pb2.ManyResponse79] # type: ignore[assignment] + Method80: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest80, testproto.grpc.dummy_pb2.ManyResponse80] # type: ignore[assignment] + Method81: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest81, testproto.grpc.dummy_pb2.ManyResponse81] # type: ignore[assignment] + Method82: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest82, testproto.grpc.dummy_pb2.ManyResponse82] # type: ignore[assignment] + Method83: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest83, testproto.grpc.dummy_pb2.ManyResponse83] # type: ignore[assignment] + Method84: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest84, testproto.grpc.dummy_pb2.ManyResponse84] # type: ignore[assignment] + Method85: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest85, testproto.grpc.dummy_pb2.ManyResponse85] # type: ignore[assignment] + Method86: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest86, testproto.grpc.dummy_pb2.ManyResponse86] # type: ignore[assignment] + Method87: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest87, testproto.grpc.dummy_pb2.ManyResponse87] # type: ignore[assignment] + Method88: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest88, testproto.grpc.dummy_pb2.ManyResponse88] # type: ignore[assignment] + Method89: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest89, testproto.grpc.dummy_pb2.ManyResponse89] # type: ignore[assignment] + Method90: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest90, testproto.grpc.dummy_pb2.ManyResponse90] # type: ignore[assignment] + Method91: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest91, testproto.grpc.dummy_pb2.ManyResponse91] # type: ignore[assignment] + Method92: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest92, testproto.grpc.dummy_pb2.ManyResponse92] # type: ignore[assignment] + Method93: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest93, testproto.grpc.dummy_pb2.ManyResponse93] # type: ignore[assignment] + Method94: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest94, testproto.grpc.dummy_pb2.ManyResponse94] # type: ignore[assignment] + Method95: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest95, testproto.grpc.dummy_pb2.ManyResponse95] # type: ignore[assignment] + Method96: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest96, testproto.grpc.dummy_pb2.ManyResponse96] # type: ignore[assignment] + Method97: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest97, testproto.grpc.dummy_pb2.ManyResponse97] # type: ignore[assignment] + Method98: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest98, testproto.grpc.dummy_pb2.ManyResponse98] # type: ignore[assignment] + Method99: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.ManyRequest99, testproto.grpc.dummy_pb2.ManyResponse99] # type: ignore[assignment] class ManyRPCsServiceServicer: def Method1( diff --git a/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi b/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi index ac6f685b..46f72e3c 100644 --- a/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated_concrete/testproto/grpc/import_pb2_grpc.pyi @@ -28,28 +28,22 @@ class SimpleServiceStub: def __new__(cls, channel: grpc.Channel) -> SimpleServiceStub: ... @typing.overload def __new__(cls, channel: grpc.aio.Channel) -> SimpleServiceAsyncStub: ... - @property - def UnaryUnary(self) -> grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: - """UnaryStream""" - @property - def NoComment(self) -> grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... + UnaryUnary: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] + """UnaryUnary""" + UnaryStream: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] + """UnaryStream""" + NoComment: grpc.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] @typing.type_check_only class SimpleServiceAsyncStub(SimpleServiceStub): """SimpleService""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - @property - def UnaryUnary(self) -> grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1]: # type: ignore[override] - """UnaryUnary""" - @property - def UnaryStream(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: # type: ignore[override] - """UnaryStream""" - @property - def NoComment(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty]: ... # type: ignore[override] + UnaryUnary: grpc.aio.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, testproto.test_pb2.Simple1] # type: ignore[assignment] + """UnaryUnary""" + UnaryStream: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] + """UnaryStream""" + NoComment: grpc.aio.UnaryUnaryMultiCallable[testproto.test_pb2.Simple1, google.protobuf.empty_pb2.Empty] # type: ignore[assignment] class SimpleServiceServicer: """SimpleService""" diff --git a/test_negative/negative.py b/test_negative/negative.py index 1ade1960..66bb3187 100644 --- a/test_negative/negative.py +++ b/test_negative/negative.py @@ -313,6 +313,13 @@ def DeprecatedMethodNotDeprecatedRequest( ) -> DummyReply: return DummyReply() + def DeprecatedMethodNoComments( + self, + request: DeprecatedRequest, + context: grpc.ServicerContext, + ) -> DummyReply: + return DummyReply() + server = grpc.server(thread_pool=concurrent.futures.ThreadPoolExecutor()) deprecated_servicer = DeprecatedServicer() diff --git a/test_negative/output.expected.3.10 b/test_negative/output.expected.3.10 index d17faff7..bd72a769 100644 --- a/test_negative/output.expected.3.10 +++ b/test_negative/output.expected.3.10 @@ -1,11 +1,15 @@ test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:106: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:118: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:162: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" @@ -125,24 +129,24 @@ test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "Str test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py:294: note: This violates the Liskov substitution principle test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] -test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:379: note: Possible overload variants: -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:380: note: Possible overload variants: -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +test_negative/negative.py:328: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:329: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:330: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:333: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:334: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:344: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:346: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:357: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:364: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:371: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:383: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:386: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:386: note: Possible overload variants: +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:387: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:387: note: Possible overload variants: +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.10.omit_linenos b/test_negative/output.expected.3.10.omit_linenos index db730817..abe41b67 100644 --- a/test_negative/output.expected.3.10.omit_linenos +++ b/test_negative/output.expected.3.10.omit_linenos @@ -1,10 +1,14 @@ test/generated/testproto/grpc/dummy_pb2.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments @@ -145,4 +149,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.11 b/test_negative/output.expected.3.11 index d17faff7..bd72a769 100644 --- a/test_negative/output.expected.3.11 +++ b/test_negative/output.expected.3.11 @@ -1,11 +1,15 @@ test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:106: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:118: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:162: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" @@ -125,24 +129,24 @@ test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "Str test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py:294: note: This violates the Liskov substitution principle test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] -test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:379: note: Possible overload variants: -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:380: note: Possible overload variants: -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +test_negative/negative.py:328: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:329: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:330: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:333: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:334: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:344: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:346: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:357: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:364: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:371: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:383: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:386: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:386: note: Possible overload variants: +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:387: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:387: note: Possible overload variants: +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.11.omit_linenos b/test_negative/output.expected.3.11.omit_linenos index db730817..abe41b67 100644 --- a/test_negative/output.expected.3.11.omit_linenos +++ b/test_negative/output.expected.3.11.omit_linenos @@ -1,10 +1,14 @@ test/generated/testproto/grpc/dummy_pb2.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments @@ -145,4 +149,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.12 b/test_negative/output.expected.3.12 index d17faff7..bd72a769 100644 --- a/test_negative/output.expected.3.12 +++ b/test_negative/output.expected.3.12 @@ -1,11 +1,15 @@ test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:106: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:118: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:162: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" @@ -125,24 +129,24 @@ test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "Str test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py:294: note: This violates the Liskov substitution principle test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] -test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:379: note: Possible overload variants: -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:380: note: Possible overload variants: -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +test_negative/negative.py:328: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:329: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:330: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:333: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:334: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:344: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:346: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:357: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:364: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:371: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:383: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:386: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:386: note: Possible overload variants: +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:387: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:387: note: Possible overload variants: +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.12.omit_linenos b/test_negative/output.expected.3.12.omit_linenos index db730817..abe41b67 100644 --- a/test_negative/output.expected.3.12.omit_linenos +++ b/test_negative/output.expected.3.12.omit_linenos @@ -1,10 +1,14 @@ test/generated/testproto/grpc/dummy_pb2.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments @@ -145,4 +149,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.13 b/test_negative/output.expected.3.13 index d17faff7..bd72a769 100644 --- a/test_negative/output.expected.3.13 +++ b/test_negative/output.expected.3.13 @@ -1,11 +1,15 @@ test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:106: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:118: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:162: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" @@ -125,24 +129,24 @@ test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "Str test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py:294: note: This violates the Liskov substitution principle test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] -test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:379: note: Possible overload variants: -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:380: note: Possible overload variants: -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +test_negative/negative.py:328: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:329: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:330: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:333: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:334: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:344: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:346: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:357: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:364: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:371: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:383: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:386: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:386: note: Possible overload variants: +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:387: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:387: note: Possible overload variants: +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.13.omit_linenos b/test_negative/output.expected.3.13.omit_linenos index db730817..abe41b67 100644 --- a/test_negative/output.expected.3.13.omit_linenos +++ b/test_negative/output.expected.3.13.omit_linenos @@ -1,10 +1,14 @@ test/generated/testproto/grpc/dummy_pb2.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments @@ -145,4 +149,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.14 b/test_negative/output.expected.3.14 index d17faff7..bd72a769 100644 --- a/test_negative/output.expected.3.14 +++ b/test_negative/output.expected.3.14 @@ -1,11 +1,15 @@ test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:106: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:118: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:162: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" @@ -125,24 +129,24 @@ test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "Str test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py:294: note: This violates the Liskov substitution principle test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] -test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:379: note: Possible overload variants: -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:380: note: Possible overload variants: -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +test_negative/negative.py:328: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:329: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:330: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:333: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:334: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:344: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:346: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:357: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:364: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:371: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:383: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:386: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:386: note: Possible overload variants: +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:387: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:387: note: Possible overload variants: +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.14.omit_linenos b/test_negative/output.expected.3.14.omit_linenos index db730817..abe41b67 100644 --- a/test_negative/output.expected.3.14.omit_linenos +++ b/test_negative/output.expected.3.14.omit_linenos @@ -1,10 +1,14 @@ test/generated/testproto/grpc/dummy_pb2.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments @@ -145,4 +149,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.9 b/test_negative/output.expected.3.9 index 00c25b08..0b63fca7 100644 --- a/test_negative/output.expected.3.9 +++ b/test_negative/output.expected.3.9 @@ -1,11 +1,15 @@ test/generated/testproto/grpc/dummy_pb2.pyi:76: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:111: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:103: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:106: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi:114: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:123: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:129: note: Error code "deprecated" not covered by "type: ignore" comment -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:143: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] -test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:118: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:124: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:132: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:141: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:157: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi:162: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments "Quotes in comments" @@ -125,24 +129,24 @@ test_negative/negative.py:292: error: Return type "Iterator[DummyReply]" of "Str test_negative/negative.py:294: error: Argument 1 of "StreamUnary" is incompatible with supertype "testproto.grpc.dummy_pb2_grpc.DummyServiceServicer"; supertype defines the argument type as "_MaybeAsyncIterator[DummyRequest]" [override] test_negative/negative.py:294: note: This violates the Liskov substitution principle test_negative/negative.py:294: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides -test_negative/negative.py:321: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] -test_negative/negative.py:322: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] -test_negative/negative.py:323: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] -test_negative/negative.py:326: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:327: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] -test_negative/negative.py:337: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] -test_negative/negative.py:339: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:350: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] -test_negative/negative.py:357: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:364: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] -test_negative/negative.py:365: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] -test_negative/negative.py:376: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] -test_negative/negative.py:379: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] -test_negative/negative.py:379: note: Possible overload variants: -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:379: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -test_negative/negative.py:380: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] -test_negative/negative.py:380: note: Possible overload variants: -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceStub -test_negative/negative.py:380: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +test_negative/negative.py:328: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethod is deprecated: This method has been marked as deprecated using proto method options. [deprecated] +test_negative/negative.py:329: error: function testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub.DeprecatedMethodNotDeprecatedRequest is deprecated: Method is deprecated, but request message is not [deprecated] +test_negative/negative.py:330: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] +test_negative/negative.py:333: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_ONE is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:334: error: function testproto.test_pb2._DeprecatedEnumEnumTypeWrapper.DEPRECATED_TWO is deprecated: This enum value has been marked as deprecated using proto enum value options. [deprecated] +test_negative/negative.py:344: error: Argument "implicit_singular" to "Editions2024Test" has incompatible type "None"; expected "str" [arg-type] +test_negative/negative.py:346: error: Argument 1 to "HasField" of "Editions2024Test" has incompatible type "Literal['implicit_singular']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:357: error: Cannot instantiate abstract class "IncompleteServicer" with abstract attributes "StreamStream", "StreamUnary", "UnaryStream" and "UnaryUnary" [abstract] +test_negative/negative.py:364: error: Argument 2 to "test_hasfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:371: error: Argument 2 to "test_clearfield_alias" has incompatible type "Literal['not_a_field']"; expected "Literal['default_singular', b'default_singular', 'explicit_singular', b'explicit_singular', 'implicit_singular', b'implicit_singular', 'legacy', b'legacy', 'message_field', b'message_field']" [arg-type] +test_negative/negative.py:372: error: Property "message_field" defined in "Editions2024Test" is read-only [misc] +test_negative/negative.py:383: error: Argument 2 to "test_whichoneof_alias" has incompatible type "Literal['not_a_oneof']"; expected "Literal['a_oneof', b'a_oneof']" [arg-type] +test_negative/negative.py:386: error: All overload variants of "DummyServiceStub" require at least one argument [call-overload] +test_negative/negative.py:386: note: Possible overload variants: +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:386: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +test_negative/negative.py:387: error: No overload variant of "DummyServiceStub" matches argument type "str" [call-overload] +test_negative/negative.py:387: note: Possible overload variants: +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceStub +test_negative/negative.py:387: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub +Found 114 errors in 4 files (checked 4 source files) diff --git a/test_negative/output.expected.3.9.omit_linenos b/test_negative/output.expected.3.9.omit_linenos index fa55c645..3f090ea9 100644 --- a/test_negative/output.expected.3.9.omit_linenos +++ b/test_negative/output.expected.3.9.omit_linenos @@ -1,10 +1,14 @@ test/generated/testproto/grpc/dummy_pb2.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceAsyncStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: note: Error code "deprecated" not covered by "type: ignore" comment +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test/generated/testproto/grpc/dummy_pb2_grpc.pyi: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test/generated/testproto/test_pb2.pyi: error: class testproto.test_pb2.DeprecatedEnum is deprecated: This enum is deprecated 2 lines of comments @@ -145,4 +149,4 @@ test_negative/negative.py: error: No overload variant of "DummyServiceStub" matc test_negative/negative.py: note: Possible overload variants: test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceStub test_negative/negative.py: note: def __new__(cls, channel: Channel) -> DummyServiceAsyncStub -Found 111 errors in 4 files (checked 4 source files) +Found 114 errors in 4 files (checked 4 source files) From 3f6e0625fca50eb7f4ad4238fa35a1b47e5cd1e9 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Wed, 10 Dec 2025 10:33:07 -0800 Subject: [PATCH 5/7] add a few more test cases Signed-off-by: Aidan Jensen --- proto/testproto/test.proto | 2 ++ stubtest_allowlist.txt | 1 + test/generated/testproto/test_pb2.pyi | 16 ++++++++++++++-- test/generated_concrete/testproto/test_pb2.pyi | 16 ++++++++++++++-- test_negative/output.expected.3.10 | 4 ++-- test_negative/output.expected.3.11 | 4 ++-- test_negative/output.expected.3.12 | 4 ++-- test_negative/output.expected.3.13 | 4 ++-- test_negative/output.expected.3.14 | 4 ++-- test_negative/output.expected.3.9 | 4 ++-- 10 files changed, 43 insertions(+), 16 deletions(-) diff --git a/proto/testproto/test.proto b/proto/testproto/test.proto index 591adb4c..5469099c 100644 --- a/proto/testproto/test.proto +++ b/proto/testproto/test.proto @@ -176,6 +176,8 @@ message DeprecatedMessage { optional string a_string = 1; optional string deprecated_field = 2 [deprecated = true]; + // This field is deprecated with comment + optional string deprecated_field_with_comment = 3 [deprecated = true]; } message DeprecatedMessageBadComment { diff --git a/stubtest_allowlist.txt b/stubtest_allowlist.txt index a9a361a2..def734e6 100644 --- a/stubtest_allowlist.txt +++ b/stubtest_allowlist.txt @@ -257,3 +257,4 @@ testproto.grpc.dummy_pb2_grpc.EmptyServiceStub.__init__ # Because we generate message fields as properties when deprecated they do not exist at runtime testproto.grpc.dummy_pb2.DeprecatedRequest.old_field testproto.test_pb2.DeprecatedMessage.deprecated_field +testproto.test_pb2.DeprecatedMessage.deprecated_field_with_comment diff --git a/test/generated/testproto/test_pb2.pyi b/test/generated/testproto/test_pb2.pyi index bc4ab5f8..25129fe0 100644 --- a/test/generated/testproto/test_pb2.pyi +++ b/test/generated/testproto/test_pb2.pyi @@ -441,6 +441,7 @@ class DeprecatedMessage(google.protobuf.message.Message): A_STRING_FIELD_NUMBER: builtins.int DEPRECATED_FIELD_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_WITH_COMMENT_FIELD_NUMBER: builtins.int a_string: builtins.str @property @deprecated("""This field has been marked as deprecated using proto field options.""") @@ -448,15 +449,26 @@ class DeprecatedMessage(google.protobuf.message.Message): @deprecated_field.setter @deprecated("""This field has been marked as deprecated using proto field options.""") def deprecated_field(self, value: builtins.str) -> None: ... + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self) -> builtins.str: + """This field is deprecated with comment""" + + @deprecated_field_with_comment.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self, value: builtins.str) -> None: + """This field is deprecated with comment""" + def __init__( self, *, a_string: builtins.str | None = ..., deprecated_field: builtins.str | None = ..., + deprecated_field_with_comment: builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... - _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] + _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage diff --git a/test/generated_concrete/testproto/test_pb2.pyi b/test/generated_concrete/testproto/test_pb2.pyi index bc4ab5f8..25129fe0 100644 --- a/test/generated_concrete/testproto/test_pb2.pyi +++ b/test/generated_concrete/testproto/test_pb2.pyi @@ -441,6 +441,7 @@ class DeprecatedMessage(google.protobuf.message.Message): A_STRING_FIELD_NUMBER: builtins.int DEPRECATED_FIELD_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_WITH_COMMENT_FIELD_NUMBER: builtins.int a_string: builtins.str @property @deprecated("""This field has been marked as deprecated using proto field options.""") @@ -448,15 +449,26 @@ class DeprecatedMessage(google.protobuf.message.Message): @deprecated_field.setter @deprecated("""This field has been marked as deprecated using proto field options.""") def deprecated_field(self, value: builtins.str) -> None: ... + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self) -> builtins.str: + """This field is deprecated with comment""" + + @deprecated_field_with_comment.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self, value: builtins.str) -> None: + """This field is deprecated with comment""" + def __init__( self, *, a_string: builtins.str | None = ..., deprecated_field: builtins.str | None = ..., + deprecated_field_with_comment: builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... - _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field"] + _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage diff --git a/test_negative/output.expected.3.10 b/test_negative/output.expected.3.10 index bd72a769..d7341476 100644 --- a/test_negative/output.expected.3.10 +++ b/test_negative/output.expected.3.10 @@ -15,8 +15,8 @@ test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.Deprec "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:474: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:493: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] diff --git a/test_negative/output.expected.3.11 b/test_negative/output.expected.3.11 index bd72a769..d7341476 100644 --- a/test_negative/output.expected.3.11 +++ b/test_negative/output.expected.3.11 @@ -15,8 +15,8 @@ test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.Deprec "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:474: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:493: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] diff --git a/test_negative/output.expected.3.12 b/test_negative/output.expected.3.12 index bd72a769..d7341476 100644 --- a/test_negative/output.expected.3.12 +++ b/test_negative/output.expected.3.12 @@ -15,8 +15,8 @@ test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.Deprec "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:474: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:493: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] diff --git a/test_negative/output.expected.3.13 b/test_negative/output.expected.3.13 index bd72a769..d7341476 100644 --- a/test_negative/output.expected.3.13 +++ b/test_negative/output.expected.3.13 @@ -15,8 +15,8 @@ test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.Deprec "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:474: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:493: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] diff --git a/test_negative/output.expected.3.14 b/test_negative/output.expected.3.14 index bd72a769..d7341476 100644 --- a/test_negative/output.expected.3.14 +++ b/test_negative/output.expected.3.14 @@ -15,8 +15,8 @@ test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.Deprec "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:474: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:493: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] diff --git a/test_negative/output.expected.3.9 b/test_negative/output.expected.3.9 index 0b63fca7..7085952b 100644 --- a/test_negative/output.expected.3.9 +++ b/test_negative/output.expected.3.9 @@ -15,8 +15,8 @@ test/generated/testproto/test_pb2.pyi:96: error: class testproto.test_pb2.Deprec "Quotes in comments" and 'single quotes' Trailing comment [deprecated] -test/generated/testproto/test_pb2.pyi:462: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] -test/generated/testproto/test_pb2.pyi:481: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] +test/generated/testproto/test_pb2.pyi:474: error: class testproto.test_pb2.DeprecatedMessage is deprecated: This message is deprecated [deprecated] +test/generated/testproto/test_pb2.pyi:493: error: class testproto.test_pb2.DeprecatedMessageBadComment is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:16: error: class testproto.grpc.dummy_pb2.DeprecatedRequest is deprecated: This message has been marked as deprecated using proto message options. [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceServicer is deprecated: This service is deprecated [deprecated] test_negative/negative.py:21: error: class testproto.grpc.dummy_pb2_grpc.DeprecatedServiceStub is deprecated: This service is deprecated [deprecated] From 078307d0208bdf1af9cf61a5bbeb5a941aad9ceb Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Wed, 10 Dec 2025 10:41:04 -0800 Subject: [PATCH 6/7] logic cleanup Signed-off-by: Aidan Jensen --- mypy_protobuf/main.py | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/mypy_protobuf/main.py b/mypy_protobuf/main.py index 40d1188c..f688c8df 100644 --- a/mypy_protobuf/main.py +++ b/mypy_protobuf/main.py @@ -400,24 +400,18 @@ def write_enum_values( scl = scl_prefix + [i] # Class level - if class_attributes: - if val.options.deprecated: - self._write_line("@property") - self._write_deprecation_warning( - scl + [d.EnumValueDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.EnumOptions.DEPRECATED_FIELD_NUMBER], - "This enum value has been marked as deprecated using proto enum value options.", - ) - self._write_line( - f"def {val.name}(self) -> {value_type}: {'' if self._has_comments(scl) else '...'} # {val.number}", - ) - with self._indent(): - self._write_comments(scl) - else: - self._write_line( - f"{val.name}: {value_type} # {val.number}", - ) + if class_attributes and val.options.deprecated: + self._write_line("@property") + self._write_deprecation_warning( + scl + [d.EnumValueDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.EnumOptions.DEPRECATED_FIELD_NUMBER], + "This enum value has been marked as deprecated using proto enum value options.", + ) + self._write_line( + f"def {val.name}(self) -> {value_type}: {'' if self._has_comments(scl) else '...'} # {val.number}", + ) + with self._indent(): self._write_comments(scl) - # Module level + # Module level or non-deprecated class level else: self._write_line( f"{val.name}: {value_type} # {val.number}", @@ -570,8 +564,7 @@ def write_messages( deprecation_scl_field, "This field has been marked as deprecated using proto field options.", ) - body = " ..." if not self._has_comments(scl_field) else "" - wl(f"def {field.name}(self) -> {field_type}:{body}") + wl(f"def {field.name}(self) -> {field_type}:{' ...' if not self._has_comments(scl_field) else ''}") if self._has_comments(scl_field): with self._indent(): self._write_comments(scl_field) @@ -581,8 +574,7 @@ def write_messages( deprecation_scl_field, "This field has been marked as deprecated using proto field options.", ) - body = " ..." if not self._has_comments(scl_field) else "" - wl(f"def {field.name}(self, value: {field_type}) -> None:{body}") + wl(f"def {field.name}(self, value: {field_type}) -> None:{' ...' if not self._has_comments(scl_field) else ''}") if self._has_comments(scl_field): with self._indent(): self._write_comments(scl_field) @@ -604,8 +596,7 @@ def write_messages( scl_field + [d.FieldDescriptorProto.OPTIONS_FIELD_NUMBER] + [d.FieldOptions.DEPRECATED_FIELD_NUMBER], "This field has been marked as deprecated using proto field options.", ) - body = " ..." if not self._has_comments(scl_field) else "" - wl(f"def {field.name}(self) -> {field_type}:{body}") + wl(f"def {field.name}(self) -> {field_type}:{' ...' if not self._has_comments(scl_field) else ''}") if self._has_comments(scl_field): with self._indent(): self._write_comments(scl_field) From 4d7046f3396763e4d72276c3e9155f403908448d Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Sun, 14 Dec 2025 20:16:59 -0800 Subject: [PATCH 7/7] Update generated code after rebase Signed-off-by: Aidan Jensen --- pyproject.toml | 2 +- .../testproto/grpc/dummy_pb2.pyi | 7 +++- .../testproto/grpc/dummy_pb2_grpc.pyi | 22 +++++++++--- .../testproto/test_pb2.pyi | 36 ++++++++++++++++--- .../testproto/grpc/dummy_pb2.pyi | 7 +++- .../testproto/grpc/dummy_pb2_grpc.pyi | 23 +++++++++--- .../testproto/grpc/import_pb2_grpc.pyi | 1 + .../test_no_generic_services_pb2_grpc.pyi | 1 + .../testproto/test_pb2.pyi | 36 ++++++++++++++++--- .../testproto/test_pb2_grpc.pyi | 1 + 10 files changed, 117 insertions(+), 19 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a15fcfac..6bf95b03 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", "*_pb2_grpc.py"] +extend_skip_glob = ["*_pb2.py"] [tool.mypy] strict = true diff --git a/test/generated_async_only/testproto/grpc/dummy_pb2.pyi b/test/generated_async_only/testproto/grpc/dummy_pb2.pyi index 94987554..2c0487e6 100644 --- a/test/generated_async_only/testproto/grpc/dummy_pb2.pyi +++ b/test/generated_async_only/testproto/grpc/dummy_pb2.pyi @@ -59,7 +59,12 @@ class DeprecatedRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor OLD_FIELD_FIELD_NUMBER: builtins.int - old_field: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self) -> builtins.str: ... + @old_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self, value: builtins.str) -> None: ... def __init__( self, *, 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 009b200c..a3d0facd 100644 --- a/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated_async_only/testproto/grpc/dummy_pb2_grpc.pyi @@ -75,10 +75,17 @@ class DeprecatedServiceStub: """Marking the service as deprecated""" def __init__(self, channel: grpc.aio.Channel) -> None: ... - DeprecatedMethod: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethod""" - DeprecatedMethodNotDeprecatedRequest: grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethod(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethod""" + @property + @deprecated("""Method is deprecated, but request message is not""") + def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethodNoComments(self) -> grpc.aio.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: ... @deprecated("""This service is deprecated""") class DeprecatedServiceServicer(metaclass=abc.ABCMeta): @@ -100,6 +107,13 @@ class DeprecatedServiceServicer(metaclass=abc.ABCMeta): ) -> collections.abc.Awaitable[testproto.grpc.dummy_pb2.DummyReply]: """DeprecatedMethodNotDeprecatedRequest""" + @abc.abstractmethod + def DeprecatedMethodNoComments( + self, + request: testproto.grpc.dummy_pb2.DeprecatedRequest, + 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]: ... + @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/test_pb2.pyi b/test/generated_async_only/testproto/test_pb2.pyi index 94e646db..25129fe0 100644 --- a/test/generated_async_only/testproto/test_pb2.pyi +++ b/test/generated_async_only/testproto/test_pb2.pyi @@ -77,14 +77,22 @@ class _DeprecatedEnum: 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 + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_ONE(self) -> _DeprecatedEnum.ValueType: # 1 + """Trailing comment for enum value""" + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_TWO(self) -> _DeprecatedEnum.ValueType: ... # 2 + NOT_DEPRECATED: _DeprecatedEnum.ValueType # 3 @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 +"""Trailing comment for enum value""" DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 +NOT_DEPRECATED: DeprecatedEnum.ValueType # 3 Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum @typing.final @@ -432,15 +440,35 @@ class DeprecatedMessage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor A_STRING_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_WITH_COMMENT_FIELD_NUMBER: builtins.int a_string: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self) -> builtins.str: ... + @deprecated_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self, value: builtins.str) -> None: ... + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self) -> builtins.str: + """This field is deprecated with comment""" + + @deprecated_field_with_comment.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self, value: builtins.str) -> None: + """This field is deprecated with comment""" + def __init__( self, *, a_string: builtins.str | None = ..., + deprecated_field: builtins.str | None = ..., + deprecated_field_with_comment: builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... - _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage diff --git a/test/generated_sync_only/testproto/grpc/dummy_pb2.pyi b/test/generated_sync_only/testproto/grpc/dummy_pb2.pyi index 94987554..2c0487e6 100644 --- a/test/generated_sync_only/testproto/grpc/dummy_pb2.pyi +++ b/test/generated_sync_only/testproto/grpc/dummy_pb2.pyi @@ -59,7 +59,12 @@ class DeprecatedRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor OLD_FIELD_FIELD_NUMBER: builtins.int - old_field: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self) -> builtins.str: ... + @old_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def old_field(self, value: builtins.str) -> None: ... def __init__( self, *, 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 f389dbb2..7211af0d 100644 --- a/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi +++ b/test/generated_sync_only/testproto/grpc/dummy_pb2_grpc.pyi @@ -6,6 +6,7 @@ https://github.com/vmagamedov/grpclib/blob/master/tests/dummy.proto""" import abc import collections.abc import grpc +import grpc.aio import sys import testproto.grpc.dummy_pb2 import typing @@ -74,10 +75,17 @@ class DeprecatedServiceStub: """Marking the service as deprecated""" def __init__(self, channel: grpc.Channel) -> None: ... - DeprecatedMethod: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethod""" - DeprecatedMethodNotDeprecatedRequest: grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply] - """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethod(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethod""" + @property + @deprecated("""Method is deprecated, but request message is not""") + def DeprecatedMethodNotDeprecatedRequest(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DummyRequest, testproto.grpc.dummy_pb2.DummyReply]: + """DeprecatedMethodNotDeprecatedRequest""" + @property + @deprecated("""This method has been marked as deprecated using proto method options.""") + def DeprecatedMethodNoComments(self) -> grpc.UnaryUnaryMultiCallable[testproto.grpc.dummy_pb2.DeprecatedRequest, testproto.grpc.dummy_pb2.DummyReply]: ... @deprecated("""This service is deprecated""") class DeprecatedServiceServicer(metaclass=abc.ABCMeta): @@ -99,6 +107,13 @@ class DeprecatedServiceServicer(metaclass=abc.ABCMeta): ) -> testproto.grpc.dummy_pb2.DummyReply: """DeprecatedMethodNotDeprecatedRequest""" + @abc.abstractmethod + def DeprecatedMethodNoComments( + self, + request: testproto.grpc.dummy_pb2.DeprecatedRequest, + context: grpc.ServicerContext, + ) -> testproto.grpc.dummy_pb2.DummyReply: ... + @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_grpc.pyi b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi index 4525deb7..8609914d 100644 --- a/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi +++ b/test/generated_sync_only/testproto/grpc/import_pb2_grpc.pyi @@ -7,6 +7,7 @@ import abc import collections.abc import google.protobuf.empty_pb2 import grpc +import grpc.aio import testproto.test_pb2 import typing diff --git a/test/generated_sync_only/testproto/test_no_generic_services_pb2_grpc.pyi b/test/generated_sync_only/testproto/test_no_generic_services_pb2_grpc.pyi index eb15b37f..c1af3ee3 100644 --- a/test/generated_sync_only/testproto/test_no_generic_services_pb2_grpc.pyi +++ b/test/generated_sync_only/testproto/test_no_generic_services_pb2_grpc.pyi @@ -6,6 +6,7 @@ isort:skip_file import abc import collections.abc import grpc +import grpc.aio import testproto.test_no_generic_services_pb2 import typing diff --git a/test/generated_sync_only/testproto/test_pb2.pyi b/test/generated_sync_only/testproto/test_pb2.pyi index 94e646db..25129fe0 100644 --- a/test/generated_sync_only/testproto/test_pb2.pyi +++ b/test/generated_sync_only/testproto/test_pb2.pyi @@ -77,14 +77,22 @@ class _DeprecatedEnum: 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 + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_ONE(self) -> _DeprecatedEnum.ValueType: # 1 + """Trailing comment for enum value""" + @property + @deprecated("""This enum value has been marked as deprecated using proto enum value options.""") + def DEPRECATED_TWO(self) -> _DeprecatedEnum.ValueType: ... # 2 + NOT_DEPRECATED: _DeprecatedEnum.ValueType # 3 @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 +"""Trailing comment for enum value""" DEPRECATED_TWO: DeprecatedEnum.ValueType # 2 +NOT_DEPRECATED: DeprecatedEnum.ValueType # 3 Global___DeprecatedEnum: typing_extensions.TypeAlias = DeprecatedEnum @typing.final @@ -432,15 +440,35 @@ class DeprecatedMessage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor A_STRING_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_FIELD_NUMBER: builtins.int + DEPRECATED_FIELD_WITH_COMMENT_FIELD_NUMBER: builtins.int a_string: builtins.str + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self) -> builtins.str: ... + @deprecated_field.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field(self, value: builtins.str) -> None: ... + @property + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self) -> builtins.str: + """This field is deprecated with comment""" + + @deprecated_field_with_comment.setter + @deprecated("""This field has been marked as deprecated using proto field options.""") + def deprecated_field_with_comment(self, value: builtins.str) -> None: + """This field is deprecated with comment""" + def __init__( self, *, a_string: builtins.str | None = ..., + deprecated_field: builtins.str | None = ..., + deprecated_field_with_comment: builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ... - _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string"] + _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["a_string", b"a_string", "deprecated_field", b"deprecated_field", "deprecated_field_with_comment", b"deprecated_field_with_comment"] def ClearField(self, field_name: _ClearFieldArgType) -> None: ... Global___DeprecatedMessage: typing_extensions.TypeAlias = DeprecatedMessage diff --git a/test/generated_sync_only/testproto/test_pb2_grpc.pyi b/test/generated_sync_only/testproto/test_pb2_grpc.pyi index 71b14ba3..35ecdade 100644 --- a/test/generated_sync_only/testproto/test_pb2_grpc.pyi +++ b/test/generated_sync_only/testproto/test_pb2_grpc.pyi @@ -6,6 +6,7 @@ Proto 2 test file.""" import abc import collections.abc import grpc +import grpc.aio import testproto.test_pb2 import typing