From 47763d2685f700a8a978dd3dc74ca2ef31a262a7 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Wed, 7 Jan 2026 12:05:50 +0900 Subject: [PATCH 1/2] Use custom package for grpc status.proto Signed-off-by: Anuraag Agrawal --- proto/status.proto | 8 +------- src/connectrpc/_gen/status_pb2.py | 9 ++++----- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/proto/status.proto b/proto/status.proto index 0737367..b1ec0f6 100644 --- a/proto/status.proto +++ b/proto/status.proto @@ -14,16 +14,10 @@ syntax = "proto3"; -package google.rpc; +package connectrpc.grpc.compat; import "google/protobuf/any.proto"; -option go_package = "google.golang.org/genproto/googleapis/rpc/status;status"; -option java_multiple_files = true; -option java_outer_classname = "StatusProto"; -option java_package = "com.google.rpc"; -option objc_class_prefix = "RPC"; - // The `Status` type defines a logical error model that is suitable for different // programming environments, including REST APIs and RPC APIs. It is used by // [gRPC](https://github.com/grpc). The error model is designed to be: diff --git a/src/connectrpc/_gen/status_pb2.py b/src/connectrpc/_gen/status_pb2.py index b62ebee..f149922 100644 --- a/src/connectrpc/_gen/status_pb2.py +++ b/src/connectrpc/_gen/status_pb2.py @@ -15,14 +15,13 @@ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cstatus.proto\x12\ngoogle.rpc\x1a\x19google/protobuf/any.proto\"f\n\x06Status\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tailsB^\n\x0e\x63om.google.rpcB\x0bStatusProtoP\x01Z7google.golang.org/genproto/googleapis/rpc/status;status\xa2\x02\x03RPCb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cstatus.proto\x12\x16\x63onnectrpc.grpc.compat\x1a\x19google/protobuf/any.proto\"f\n\x06Status\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tailsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'status_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.rpcB\013StatusProtoP\001Z7google.golang.org/genproto/googleapis/rpc/status;status\242\002\003RPC' - _globals['_STATUS']._serialized_start=55 - _globals['_STATUS']._serialized_end=157 + DESCRIPTOR._loaded_options = None + _globals['_STATUS']._serialized_start=67 + _globals['_STATUS']._serialized_end=169 # @@protoc_insertion_point(module_scope) From 62a00694d73ad2846481e5a6dc0be704fd7909c9 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Wed, 7 Jan 2026 12:12:49 +0900 Subject: [PATCH 2/2] Use connect-go's Signed-off-by: Anuraag Agrawal --- proto/status.proto | 70 ++++--------------------------- src/connectrpc/_gen/status_pb2.py | 6 +-- 2 files changed, 11 insertions(+), 65 deletions(-) diff --git a/proto/status.proto b/proto/status.proto index b1ec0f6..f78b9ea 100644 --- a/proto/status.proto +++ b/proto/status.proto @@ -14,72 +14,18 @@ syntax = "proto3"; -package connectrpc.grpc.compat; +// This package is for internal use by Connect, and provides no backward +// compatibility guarantees whatsoever. +package grpc.status.v1; import "google/protobuf/any.proto"; -// The `Status` type defines a logical error model that is suitable for different -// programming environments, including REST APIs and RPC APIs. It is used by -// [gRPC](https://github.com/grpc). The error model is designed to be: +// See https://cloud.google.com/apis/design/errors. // -// - Simple to use and understand for most users -// - Flexible enough to meet unexpected needs -// -// # Overview -// -// The `Status` message contains three pieces of data: error code, error message, -// and error details. The error code should be an enum value of -// [google.rpc.Code][google.rpc.Code], but it may accept additional error codes if needed. The -// error message should be a developer-facing English message that helps -// developers *understand* and *resolve* the error. If a localized user-facing -// error message is needed, put the localized message in the error details or -// localize it in the client. The optional error details may contain arbitrary -// information about the error. There is a predefined set of error detail types -// in the package `google.rpc` which can be used for common error conditions. -// -// # Language mapping -// -// The `Status` message is the logical representation of the error model, but it -// is not necessarily the actual wire format. When the `Status` message is -// exposed in different client libraries and different wire protocols, it can be -// mapped differently. For example, it will likely be mapped to some exceptions -// in Java, but more likely mapped to some error codes in C. -// -// # Other uses -// -// The error model and the `Status` message can be used in a variety of -// environments, either with or without APIs, to provide a -// consistent developer experience across different environments. -// -// Example uses of this error model include: -// -// - Partial errors. If a service needs to return partial errors to the client, -// it may embed the `Status` in the normal response to indicate the partial -// errors. -// -// - Workflow errors. A typical workflow has multiple steps. Each step may -// have a `Status` message for error reporting purpose. -// -// - Batch operations. If a client uses batch request and batch response, the -// `Status` message should be used directly inside batch response, one for -// each error sub-response. -// -// - Asynchronous operations. If an API call embeds asynchronous operation -// results in its response, the status of those operations should be -// represented directly using the `Status` message. -// -// - Logging. If some API errors are stored in logs, the message `Status` could -// be used directly after any stripping needed for security/privacy reasons. +// This struct must remain binary-compatible with +// https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto. message Status { - // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. - int32 code = 1; - - // A developer-facing error message, which should be in English. Any - // user-facing error message should be localized and sent in the - // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. - string message = 2; - - // A list of messages that carry the error details. There will be a - // common set of message types for APIs to use. + int32 code = 1; // a google.rpc.Code + string message = 2; // developer-facing, English (localize in details or client-side) repeated google.protobuf.Any details = 3; } diff --git a/src/connectrpc/_gen/status_pb2.py b/src/connectrpc/_gen/status_pb2.py index f149922..6abbf26 100644 --- a/src/connectrpc/_gen/status_pb2.py +++ b/src/connectrpc/_gen/status_pb2.py @@ -15,13 +15,13 @@ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cstatus.proto\x12\x16\x63onnectrpc.grpc.compat\x1a\x19google/protobuf/any.proto\"f\n\x06Status\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tailsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cstatus.proto\x12\x0egrpc.status.v1\x1a\x19google/protobuf/any.proto\"f\n\x06Status\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tailsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'status_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: DESCRIPTOR._loaded_options = None - _globals['_STATUS']._serialized_start=67 - _globals['_STATUS']._serialized_end=169 + _globals['_STATUS']._serialized_start=59 + _globals['_STATUS']._serialized_end=161 # @@protoc_insertion_point(module_scope)