178 lines
7.4 KiB
Diff
178 lines
7.4 KiB
Diff
--- a/google/api_core/operations_v1/transports/rest.py
|
|
+++ b/google/api_core/operations_v1/transports/rest.py
|
|
@@ -29,9 +29,13 @@
|
|
from google.longrunning import operations_pb2 # type: ignore
|
|
from google.protobuf import empty_pb2 # type: ignore
|
|
from google.protobuf import json_format # type: ignore
|
|
+import google.protobuf
|
|
+
|
|
import grpc
|
|
from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO, OperationsTransport
|
|
|
|
+PROTOBUF_VERSION = google.protobuf.__version__
|
|
+
|
|
OptionalRetry = Union[retries.Retry, object]
|
|
|
|
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
|
|
@@ -184,11 +188,22 @@ def _list_operations(
|
|
"google.longrunning.Operations.ListOperations"
|
|
]
|
|
|
|
- request_kwargs = json_format.MessageToDict(
|
|
- request,
|
|
- preserving_proto_field_name=True,
|
|
- including_default_value_fields=True,
|
|
- )
|
|
+ # For backwards compatibility with protobuf 3.x 4.x
|
|
+ # Remove once support for protobuf 3.x and 4.x is dropped
|
|
+ # https://github.com/googleapis/python-api-core/issues/643
|
|
+ if PROTOBUF_VERSION[0:2] in ["3.", "4."]:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ including_default_value_fields=True, # type: ignore # backward compatibility
|
|
+ )
|
|
+ else:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ always_print_fields_with_no_presence=True,
|
|
+ )
|
|
+
|
|
transcoded_request = path_template.transcode(http_options, **request_kwargs)
|
|
|
|
uri = transcoded_request["uri"]
|
|
@@ -199,7 +214,6 @@ def _list_operations(
|
|
json_format.ParseDict(transcoded_request["query_params"], query_params_request)
|
|
query_params = json_format.MessageToDict(
|
|
query_params_request,
|
|
- including_default_value_fields=False,
|
|
preserving_proto_field_name=False,
|
|
use_integers_for_enums=False,
|
|
)
|
|
@@ -265,11 +279,22 @@ def _get_operation(
|
|
"google.longrunning.Operations.GetOperation"
|
|
]
|
|
|
|
- request_kwargs = json_format.MessageToDict(
|
|
- request,
|
|
- preserving_proto_field_name=True,
|
|
- including_default_value_fields=True,
|
|
- )
|
|
+ # For backwards compatibility with protobuf 3.x 4.x
|
|
+ # Remove once support for protobuf 3.x and 4.x is dropped
|
|
+ # https://github.com/googleapis/python-api-core/issues/643
|
|
+ if PROTOBUF_VERSION[0:2] in ["3.", "4."]:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ including_default_value_fields=True, # type: ignore # backward compatibility
|
|
+ )
|
|
+ else:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ always_print_fields_with_no_presence=True,
|
|
+ )
|
|
+
|
|
transcoded_request = path_template.transcode(http_options, **request_kwargs)
|
|
|
|
uri = transcoded_request["uri"]
|
|
@@ -280,7 +305,6 @@ def _get_operation(
|
|
json_format.ParseDict(transcoded_request["query_params"], query_params_request)
|
|
query_params = json_format.MessageToDict(
|
|
query_params_request,
|
|
- including_default_value_fields=False,
|
|
preserving_proto_field_name=False,
|
|
use_integers_for_enums=False,
|
|
)
|
|
@@ -339,11 +363,21 @@ def _delete_operation(
|
|
"google.longrunning.Operations.DeleteOperation"
|
|
]
|
|
|
|
- request_kwargs = json_format.MessageToDict(
|
|
- request,
|
|
- preserving_proto_field_name=True,
|
|
- including_default_value_fields=True,
|
|
- )
|
|
+ # For backwards compatibility with protobuf 3.x 4.x
|
|
+ # Remove once support for protobuf 3.x and 4.x is dropped
|
|
+ # https://github.com/googleapis/python-api-core/issues/643
|
|
+ if PROTOBUF_VERSION[0:2] in ["3.", "4."]:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ including_default_value_fields=True, # type: ignore # backward compatibility
|
|
+ )
|
|
+ else:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ always_print_fields_with_no_presence=True,
|
|
+ )
|
|
transcoded_request = path_template.transcode(http_options, **request_kwargs)
|
|
|
|
uri = transcoded_request["uri"]
|
|
@@ -354,7 +388,6 @@ def _delete_operation(
|
|
json_format.ParseDict(transcoded_request["query_params"], query_params_request)
|
|
query_params = json_format.MessageToDict(
|
|
query_params_request,
|
|
- including_default_value_fields=False,
|
|
preserving_proto_field_name=False,
|
|
use_integers_for_enums=False,
|
|
)
|
|
@@ -411,11 +444,21 @@ def _cancel_operation(
|
|
"google.longrunning.Operations.CancelOperation"
|
|
]
|
|
|
|
- request_kwargs = json_format.MessageToDict(
|
|
- request,
|
|
- preserving_proto_field_name=True,
|
|
- including_default_value_fields=True,
|
|
- )
|
|
+ # For backwards compatibility with protobuf 3.x 4.x
|
|
+ # Remove once support for protobuf 3.x and 4.x is dropped
|
|
+ # https://github.com/googleapis/python-api-core/issues/643
|
|
+ if PROTOBUF_VERSION[0:2] in ["3.", "4."]:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ including_default_value_fields=True, # type: ignore # backward compatibility
|
|
+ )
|
|
+ else:
|
|
+ request_kwargs = json_format.MessageToDict(
|
|
+ request,
|
|
+ preserving_proto_field_name=True,
|
|
+ always_print_fields_with_no_presence=True,
|
|
+ )
|
|
transcoded_request = path_template.transcode(http_options, **request_kwargs)
|
|
|
|
# Jsonify the request body
|
|
@@ -423,7 +466,6 @@ def _cancel_operation(
|
|
json_format.ParseDict(transcoded_request["body"], body_request)
|
|
body = json_format.MessageToDict(
|
|
body_request,
|
|
- including_default_value_fields=False,
|
|
preserving_proto_field_name=False,
|
|
use_integers_for_enums=False,
|
|
)
|
|
@@ -435,7 +477,6 @@ def _cancel_operation(
|
|
json_format.ParseDict(transcoded_request["query_params"], query_params_request)
|
|
query_params = json_format.MessageToDict(
|
|
query_params_request,
|
|
- including_default_value_fields=False,
|
|
preserving_proto_field_name=False,
|
|
use_integers_for_enums=False,
|
|
)
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -30,7 +30,7 @@
|
|
release_status = "Development Status :: 5 - Production/Stable"
|
|
dependencies = [
|
|
"googleapis-common-protos >= 1.56.2, < 2.0.dev0",
|
|
- "protobuf>=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5",
|
|
+ "protobuf>=3.19.5,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5",
|
|
"proto-plus >= 1.22.3, <2.0.0dev",
|
|
"google-auth >= 2.14.1, < 3.0.dev0",
|
|
"requests >= 2.18.0, < 3.0.0.dev0",
|