File tree Expand file tree Collapse file tree 4 files changed +26
-6
lines changed
Expand file tree Collapse file tree 4 files changed +26
-6
lines changed Original file line number Diff line number Diff line change 55
66from crossplane .function .proto .v1 import run_function_pb2 as crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2
77
8- GRPC_GENERATED_VERSION = '1.66.0 '
8+ GRPC_GENERATED_VERSION = '1.66.2 '
99GRPC_VERSION = grpc .__version__
1010_version_not_supported = False
1111
Original file line number Diff line number Diff line change 55
66from crossplane .function .proto .v1beta1 import run_function_pb2 as crossplane_dot_function_dot_proto_dot_v1beta1_dot_run__function__pb2
77
8- GRPC_GENERATED_VERSION = '1.66.0 '
8+ GRPC_GENERATED_VERSION = '1.66.2 '
99GRPC_VERSION = grpc .__version__
1010_version_not_supported = False
1111
Original file line number Diff line number Diff line change 1818import datetime
1919
2020import pydantic
21+ from google .protobuf import json_format
2122from google .protobuf import struct_pb2 as structpb
2223
2324import crossplane .function .proto .v1 .run_function_pb2 as fnv1
@@ -69,10 +70,7 @@ def struct_to_dict(s: structpb.Struct) -> dict:
6970 protobuf struct. This function makes it possible to convert resources to a
7071 dictionary.
7172 """
72- return {
73- k : (struct_to_dict (v ) if isinstance (v , structpb .Struct ) else v )
74- for k , v in s .items ()
75- }
73+ return json_format .MessageToDict (s , preserving_proto_field_name = True )
7674
7775
7876@dataclasses .dataclass
Original file line number Diff line number Diff line change @@ -275,6 +275,28 @@ class TestCase:
275275 ),
276276 want = {"foo" : {"bar" : "baz" }},
277277 ),
278+ TestCase (
279+ reason = "Convert a nested struct containing ListValues to a dictionary." ,
280+ s = structpb .Struct (
281+ fields = {
282+ "foo" : structpb .Value (
283+ struct_value = structpb .Struct (
284+ fields = {
285+ "bar" : structpb .Value (
286+ list_value = structpb .ListValue (
287+ values = [
288+ structpb .Value (string_value = "baz" ),
289+ structpb .Value (string_value = "qux" ),
290+ ]
291+ )
292+ )
293+ }
294+ )
295+ )
296+ }
297+ ),
298+ want = {"foo" : {"bar" : ["baz" , "qux" ]}},
299+ ),
278300 ]
279301
280302 for case in cases :
You can’t perform that action at this time.
0 commit comments