File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree 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