From d26c2287273e19723815f0b4c78ef2d31b37f9f2 Mon Sep 17 00:00:00 2001 From: Yee Hing Tong Date: Wed, 8 May 2024 11:42:14 -0700 Subject: [PATCH 01/38] proto Signed-off-by: Yee Hing Tong --- flyteidl/protos/flyteidl/core/literals.proto | 5 +++++ flyteidl/protos/flyteidl/core/types.proto | 1 + 2 files changed, 6 insertions(+) diff --git a/flyteidl/protos/flyteidl/core/literals.proto b/flyteidl/protos/flyteidl/core/literals.proto index f886873ffb..1bbf6876e1 100644 --- a/flyteidl/protos/flyteidl/core/literals.proto +++ b/flyteidl/protos/flyteidl/core/literals.proto @@ -46,6 +46,10 @@ message Binary { string tag = 2; } +message Json { + string value = 1; +} + // A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. message Schema { string uri = 1; @@ -88,6 +92,7 @@ message Scalar { google.protobuf.Struct generic = 7; StructuredDataset structured_dataset = 8; Union union = 9; + Json json = 10; } } diff --git a/flyteidl/protos/flyteidl/core/types.proto b/flyteidl/protos/flyteidl/core/types.proto index 3580eea9f0..006d483833 100644 --- a/flyteidl/protos/flyteidl/core/types.proto +++ b/flyteidl/protos/flyteidl/core/types.proto @@ -18,6 +18,7 @@ enum SimpleType { BINARY = 7; ERROR = 8; STRUCT = 9; + JSON = 10; } // Defines schema columns and types to strongly type-validate schemas interoperability. From a5d515d77055a641cf435f2bb05bafffb8aa724b Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 6 Aug 2024 09:44:49 +0800 Subject: [PATCH 02/38] make generate Signed-off-by: Yee Hing Tong Signed-off-by: Future-Outlier --- flyteidl/clients/go/assets/admin.swagger.json | 61 +- .../gen/pb-es/flyteidl/core/literals_pb.ts | 44 ++ flyteidl/gen/pb-es/flyteidl/core/types_pb.ts | 6 + .../gen/pb-go/flyteidl/core/literals.pb.go | 643 ++++++++++-------- flyteidl/gen/pb-go/flyteidl/core/types.pb.go | 52 +- .../cacheservice/cacheservice.swagger.json | 14 +- .../datacatalog/datacatalog.swagger.json | 14 +- .../flyteidl/service/admin.swagger.json | 14 +- .../flyteidl/service/agent.swagger.json | 14 +- .../flyteidl/service/dataproxy.swagger.json | 14 +- .../external_plugin_service.swagger.json | 14 +- .../flyteidl/service/signal.swagger.json | 14 +- flyteidl/gen/pb-js/flyteidl.d.ts | 63 +- flyteidl/gen/pb-js/flyteidl.js | 141 +++- .../pb_python/flyteidl/core/literals_pb2.py | 76 ++- .../pb_python/flyteidl/core/literals_pb2.pyi | 12 +- .../gen/pb_python/flyteidl/core/types_pb2.py | 4 +- .../gen/pb_python/flyteidl/core/types_pb2.pyi | 2 + flyteidl/gen/pb_rust/flyteidl.core.rs | 13 +- 19 files changed, 809 insertions(+), 406 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 7e6e7d3367..c23bee9fa1 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -7087,53 +7087,6 @@ }, "description": "Represents an error thrown from a node." }, - "coreExecutionEnv": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "name is a human-readable identifier for the execution environment. This is combined with the\nproject, domain, and version to uniquely identify an execution environment." - }, - "type": { - "type": "string", - "description": "type is the type of the execution environment." - }, - "extant": { - "type": "object", - "description": "extant is a reference to an existing environment." - }, - "spec": { - "type": "object", - "description": "spec is a specification of the environment." - }, - "version": { - "type": "string", - "description": "version is the version of the execution environment. This may be used differently by each\nindividual environment type (ex. auto-generated or manually provided), but is intended to\nallow variance in environment specifications with the same ID." - } - }, - "description": "ExecutionEnv is a message that is used to specify the execution environment." - }, - "coreExecutionEnvAssignment": { - "type": "object", - "properties": { - "node_ids": { - "type": "array", - "items": { - "type": "string" - }, - "description": "node_ids is a list of node ids that are being assigned the execution environment." - }, - "task_type": { - "type": "string", - "description": "task_type is the type of task that is being assigned. This is used to override which Flyte\nplugin will be used during execution." - }, - "execution_env": { - "$ref": "#/definitions/coreExecutionEnv", - "description": "execution_env is the environment that is being assigned to the nodes." - } - }, - "description": "ExecutionEnvAssignment is a message that is used to assign an execution environment to a set of\nnodes." - }, "coreExecutionError": { "type": "object", "properties": { @@ -7324,6 +7277,14 @@ } } }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -7915,6 +7876,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -8010,7 +7974,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts index 6cf6b07ca2..cf11847639 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts @@ -253,6 +253,43 @@ export class Binary extends Message { } } +/** + * @generated from message flyteidl.core.Json + */ +export class Json extends Message { + /** + * @generated from field: string value = 1; + */ + value = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "flyteidl.core.Json"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Json { + return new Json().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Json { + return new Json().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Json { + return new Json().fromJsonString(jsonString, options); + } + + static equals(a: Json | PlainMessage | undefined, b: Json | PlainMessage | undefined): boolean { + return proto3.util.equals(Json, a, b); + } +} + /** * A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. * @@ -495,6 +532,12 @@ export class Scalar extends Message { */ value: Union; case: "union"; + } | { + /** + * @generated from field: flyteidl.core.Json json = 10; + */ + value: Json; + case: "json"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -514,6 +557,7 @@ export class Scalar extends Message { { no: 7, name: "generic", kind: "message", T: Struct, oneof: "value" }, { no: 8, name: "structured_dataset", kind: "message", T: StructuredDataset, oneof: "value" }, { no: 9, name: "union", kind: "message", T: Union, oneof: "value" }, + { no: 10, name: "json", kind: "message", T: Json, oneof: "value" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Scalar { diff --git a/flyteidl/gen/pb-es/flyteidl/core/types_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/types_pb.ts index f311fa0692..35b4312dab 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/types_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/types_pb.ts @@ -61,6 +61,11 @@ export enum SimpleType { * @generated from enum value: STRUCT = 9; */ STRUCT = 9, + + /** + * @generated from enum value: JSON = 10; + */ + JSON = 10, } // Retrieve enum metadata with: proto3.getEnumType(SimpleType) proto3.util.setEnumType(SimpleType, "flyteidl.core.SimpleType", [ @@ -74,6 +79,7 @@ proto3.util.setEnumType(SimpleType, "flyteidl.core.SimpleType", [ { no: 7, name: "BINARY" }, { no: 8, name: "ERROR" }, { no: 9, name: "STRUCT" }, + { no: 10, name: "JSON" }, ]); /** diff --git a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go index 40b24e30a5..a86400b965 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go @@ -365,6 +365,53 @@ func (x *Binary) GetTag() string { return "" } +type Json struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Json) Reset() { + *x = Json{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl_core_literals_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Json) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Json) ProtoMessage() {} + +func (x *Json) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl_core_literals_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Json.ProtoReflect.Descriptor instead. +func (*Json) Descriptor() ([]byte, []int) { + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{5} +} + +func (x *Json) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + // A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. type Schema struct { state protoimpl.MessageState @@ -378,7 +425,7 @@ type Schema struct { func (x *Schema) Reset() { *x = Schema{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[5] + mi := &file_flyteidl_core_literals_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -391,7 +438,7 @@ func (x *Schema) String() string { func (*Schema) ProtoMessage() {} func (x *Schema) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[5] + mi := &file_flyteidl_core_literals_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -404,7 +451,7 @@ func (x *Schema) ProtoReflect() protoreflect.Message { // Deprecated: Use Schema.ProtoReflect.Descriptor instead. func (*Schema) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{5} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{6} } func (x *Schema) GetUri() string { @@ -434,7 +481,7 @@ type Union struct { func (x *Union) Reset() { *x = Union{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[6] + mi := &file_flyteidl_core_literals_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -447,7 +494,7 @@ func (x *Union) String() string { func (*Union) ProtoMessage() {} func (x *Union) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[6] + mi := &file_flyteidl_core_literals_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -460,7 +507,7 @@ func (x *Union) ProtoReflect() protoreflect.Message { // Deprecated: Use Union.ProtoReflect.Descriptor instead. func (*Union) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{6} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{7} } func (x *Union) GetValue() *Literal { @@ -495,7 +542,7 @@ type StructuredDatasetMetadata struct { func (x *StructuredDatasetMetadata) Reset() { *x = StructuredDatasetMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[7] + mi := &file_flyteidl_core_literals_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -508,7 +555,7 @@ func (x *StructuredDatasetMetadata) String() string { func (*StructuredDatasetMetadata) ProtoMessage() {} func (x *StructuredDatasetMetadata) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[7] + mi := &file_flyteidl_core_literals_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -521,7 +568,7 @@ func (x *StructuredDatasetMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use StructuredDatasetMetadata.ProtoReflect.Descriptor instead. func (*StructuredDatasetMetadata) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{7} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{8} } func (x *StructuredDatasetMetadata) GetStructuredDatasetType() *StructuredDatasetType { @@ -545,7 +592,7 @@ type StructuredDataset struct { func (x *StructuredDataset) Reset() { *x = StructuredDataset{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[8] + mi := &file_flyteidl_core_literals_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -558,7 +605,7 @@ func (x *StructuredDataset) String() string { func (*StructuredDataset) ProtoMessage() {} func (x *StructuredDataset) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[8] + mi := &file_flyteidl_core_literals_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -571,7 +618,7 @@ func (x *StructuredDataset) ProtoReflect() protoreflect.Message { // Deprecated: Use StructuredDataset.ProtoReflect.Descriptor instead. func (*StructuredDataset) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{8} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{9} } func (x *StructuredDataset) GetUri() string { @@ -604,13 +651,14 @@ type Scalar struct { // *Scalar_Generic // *Scalar_StructuredDataset // *Scalar_Union + // *Scalar_Json Value isScalar_Value `protobuf_oneof:"value"` } func (x *Scalar) Reset() { *x = Scalar{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[9] + mi := &file_flyteidl_core_literals_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -623,7 +671,7 @@ func (x *Scalar) String() string { func (*Scalar) ProtoMessage() {} func (x *Scalar) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[9] + mi := &file_flyteidl_core_literals_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -636,7 +684,7 @@ func (x *Scalar) ProtoReflect() protoreflect.Message { // Deprecated: Use Scalar.ProtoReflect.Descriptor instead. func (*Scalar) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{9} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{10} } func (m *Scalar) GetValue() isScalar_Value { @@ -709,6 +757,13 @@ func (x *Scalar) GetUnion() *Union { return nil } +func (x *Scalar) GetJson() *Json { + if x, ok := x.GetValue().(*Scalar_Json); ok { + return x.Json + } + return nil +} + type isScalar_Value interface { isScalar_Value() } @@ -749,6 +804,10 @@ type Scalar_Union struct { Union *Union `protobuf:"bytes,9,opt,name=union,proto3,oneof"` } +type Scalar_Json struct { + Json *Json `protobuf:"bytes,10,opt,name=json,proto3,oneof"` +} + func (*Scalar_Primitive) isScalar_Value() {} func (*Scalar_Blob) isScalar_Value() {} @@ -767,6 +826,8 @@ func (*Scalar_StructuredDataset) isScalar_Value() {} func (*Scalar_Union) isScalar_Value() {} +func (*Scalar_Json) isScalar_Value() {} + // A simple value. This supports any level of nesting (e.g. array of array of array of Blobs) as well as simple primitives. type Literal struct { state protoimpl.MessageState @@ -790,7 +851,7 @@ type Literal struct { func (x *Literal) Reset() { *x = Literal{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[10] + mi := &file_flyteidl_core_literals_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -803,7 +864,7 @@ func (x *Literal) String() string { func (*Literal) ProtoMessage() {} func (x *Literal) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[10] + mi := &file_flyteidl_core_literals_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -816,7 +877,7 @@ func (x *Literal) ProtoReflect() protoreflect.Message { // Deprecated: Use Literal.ProtoReflect.Descriptor instead. func (*Literal) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{10} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{11} } func (m *Literal) GetValue() isLiteral_Value { @@ -898,7 +959,7 @@ type LiteralCollection struct { func (x *LiteralCollection) Reset() { *x = LiteralCollection{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[11] + mi := &file_flyteidl_core_literals_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -911,7 +972,7 @@ func (x *LiteralCollection) String() string { func (*LiteralCollection) ProtoMessage() {} func (x *LiteralCollection) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[11] + mi := &file_flyteidl_core_literals_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -924,7 +985,7 @@ func (x *LiteralCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use LiteralCollection.ProtoReflect.Descriptor instead. func (*LiteralCollection) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{11} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{12} } func (x *LiteralCollection) GetLiterals() []*Literal { @@ -946,7 +1007,7 @@ type LiteralMap struct { func (x *LiteralMap) Reset() { *x = LiteralMap{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[12] + mi := &file_flyteidl_core_literals_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -959,7 +1020,7 @@ func (x *LiteralMap) String() string { func (*LiteralMap) ProtoMessage() {} func (x *LiteralMap) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[12] + mi := &file_flyteidl_core_literals_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -972,7 +1033,7 @@ func (x *LiteralMap) ProtoReflect() protoreflect.Message { // Deprecated: Use LiteralMap.ProtoReflect.Descriptor instead. func (*LiteralMap) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{12} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{13} } func (x *LiteralMap) GetLiterals() map[string]*Literal { @@ -994,7 +1055,7 @@ type BindingDataCollection struct { func (x *BindingDataCollection) Reset() { *x = BindingDataCollection{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[13] + mi := &file_flyteidl_core_literals_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1007,7 +1068,7 @@ func (x *BindingDataCollection) String() string { func (*BindingDataCollection) ProtoMessage() {} func (x *BindingDataCollection) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[13] + mi := &file_flyteidl_core_literals_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1020,7 +1081,7 @@ func (x *BindingDataCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingDataCollection.ProtoReflect.Descriptor instead. func (*BindingDataCollection) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{13} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{14} } func (x *BindingDataCollection) GetBindings() []*BindingData { @@ -1042,7 +1103,7 @@ type BindingDataMap struct { func (x *BindingDataMap) Reset() { *x = BindingDataMap{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[14] + mi := &file_flyteidl_core_literals_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1055,7 +1116,7 @@ func (x *BindingDataMap) String() string { func (*BindingDataMap) ProtoMessage() {} func (x *BindingDataMap) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[14] + mi := &file_flyteidl_core_literals_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1068,7 +1129,7 @@ func (x *BindingDataMap) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingDataMap.ProtoReflect.Descriptor instead. func (*BindingDataMap) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{14} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{15} } func (x *BindingDataMap) GetBindings() map[string]*BindingData { @@ -1089,7 +1150,7 @@ type UnionInfo struct { func (x *UnionInfo) Reset() { *x = UnionInfo{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[15] + mi := &file_flyteidl_core_literals_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1102,7 +1163,7 @@ func (x *UnionInfo) String() string { func (*UnionInfo) ProtoMessage() {} func (x *UnionInfo) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[15] + mi := &file_flyteidl_core_literals_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1115,7 +1176,7 @@ func (x *UnionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UnionInfo.ProtoReflect.Descriptor instead. func (*UnionInfo) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{15} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{16} } func (x *UnionInfo) GetTargetType() *LiteralType { @@ -1144,7 +1205,7 @@ type BindingData struct { func (x *BindingData) Reset() { *x = BindingData{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[16] + mi := &file_flyteidl_core_literals_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1218,7 @@ func (x *BindingData) String() string { func (*BindingData) ProtoMessage() {} func (x *BindingData) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[16] + mi := &file_flyteidl_core_literals_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1231,7 @@ func (x *BindingData) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingData.ProtoReflect.Descriptor instead. func (*BindingData) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{16} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{17} } func (m *BindingData) GetValue() isBindingData_Value { @@ -1263,7 +1324,7 @@ type Binding struct { func (x *Binding) Reset() { *x = Binding{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[17] + mi := &file_flyteidl_core_literals_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1276,7 +1337,7 @@ func (x *Binding) String() string { func (*Binding) ProtoMessage() {} func (x *Binding) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[17] + mi := &file_flyteidl_core_literals_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1289,7 +1350,7 @@ func (x *Binding) ProtoReflect() protoreflect.Message { // Deprecated: Use Binding.ProtoReflect.Descriptor instead. func (*Binding) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{17} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{18} } func (x *Binding) GetVar() string { @@ -1321,7 +1382,7 @@ type KeyValuePair struct { func (x *KeyValuePair) Reset() { *x = KeyValuePair{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[18] + mi := &file_flyteidl_core_literals_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1334,7 +1395,7 @@ func (x *KeyValuePair) String() string { func (*KeyValuePair) ProtoMessage() {} func (x *KeyValuePair) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[18] + mi := &file_flyteidl_core_literals_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1347,7 +1408,7 @@ func (x *KeyValuePair) ProtoReflect() protoreflect.Message { // Deprecated: Use KeyValuePair.ProtoReflect.Descriptor instead. func (*KeyValuePair) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{18} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{19} } func (x *KeyValuePair) GetKey() string { @@ -1378,7 +1439,7 @@ type RetryStrategy struct { func (x *RetryStrategy) Reset() { *x = RetryStrategy{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[19] + mi := &file_flyteidl_core_literals_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1391,7 +1452,7 @@ func (x *RetryStrategy) String() string { func (*RetryStrategy) ProtoMessage() {} func (x *RetryStrategy) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[19] + mi := &file_flyteidl_core_literals_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1404,7 +1465,7 @@ func (x *RetryStrategy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryStrategy.ProtoReflect.Descriptor instead. func (*RetryStrategy) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{19} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{20} } func (x *RetryStrategy) GetRetries() uint32 { @@ -1456,163 +1517,168 @@ var file_flyteidl_core_literals_proto_rawDesc = []byte{ 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x30, 0x0a, 0x06, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x49, 0x0a, 0x06, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x65, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, - 0x19, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x17, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, - 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf0, 0x03, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, - 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, - 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x6c, - 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, 0x52, - 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x06, - 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x48, - 0x00, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x51, - 0x0a, 0x12, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x11, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, - 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, - 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc9, 0x02, 0x0a, 0x07, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, - 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1c, 0x0a, 0x04, 0x4a, + 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x49, 0x0a, 0x06, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x65, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x70, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, - 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x40, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, - 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, 0x01, - 0x0a, 0x0a, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x08, - 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x62, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x09, - 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, - 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x17, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x44, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x9b, 0x04, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x38, + 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, + 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x04, 0x62, + 0x6c, 0x6f, 0x62, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x06, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x48, 0x00, 0x52, + 0x08, 0x6e, 0x6f, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x51, 0x0a, 0x12, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, + 0x2c, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, + 0x6e, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, + 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xc9, 0x02, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2f, 0x0a, + 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, + 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x42, + 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, + 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, + 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, + 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, - 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, - 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, 0x0a, - 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, 0x0a, - 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, - 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, - 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, - 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, + 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, 0x0d, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x09, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xae, + 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, + 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, + 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, + 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, + 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, + 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x48, + 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x07, + 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, + 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, 0x65, + 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, + 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, + 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, + 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, + 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -1627,82 +1693,84 @@ func file_flyteidl_core_literals_proto_rawDescGZIP() []byte { return file_flyteidl_core_literals_proto_rawDescData } -var file_flyteidl_core_literals_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_flyteidl_core_literals_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_flyteidl_core_literals_proto_goTypes = []interface{}{ (*Primitive)(nil), // 0: flyteidl.core.Primitive (*Void)(nil), // 1: flyteidl.core.Void (*Blob)(nil), // 2: flyteidl.core.Blob (*BlobMetadata)(nil), // 3: flyteidl.core.BlobMetadata (*Binary)(nil), // 4: flyteidl.core.Binary - (*Schema)(nil), // 5: flyteidl.core.Schema - (*Union)(nil), // 6: flyteidl.core.Union - (*StructuredDatasetMetadata)(nil), // 7: flyteidl.core.StructuredDatasetMetadata - (*StructuredDataset)(nil), // 8: flyteidl.core.StructuredDataset - (*Scalar)(nil), // 9: flyteidl.core.Scalar - (*Literal)(nil), // 10: flyteidl.core.Literal - (*LiteralCollection)(nil), // 11: flyteidl.core.LiteralCollection - (*LiteralMap)(nil), // 12: flyteidl.core.LiteralMap - (*BindingDataCollection)(nil), // 13: flyteidl.core.BindingDataCollection - (*BindingDataMap)(nil), // 14: flyteidl.core.BindingDataMap - (*UnionInfo)(nil), // 15: flyteidl.core.UnionInfo - (*BindingData)(nil), // 16: flyteidl.core.BindingData - (*Binding)(nil), // 17: flyteidl.core.Binding - (*KeyValuePair)(nil), // 18: flyteidl.core.KeyValuePair - (*RetryStrategy)(nil), // 19: flyteidl.core.RetryStrategy - nil, // 20: flyteidl.core.Literal.MetadataEntry - nil, // 21: flyteidl.core.LiteralMap.LiteralsEntry - nil, // 22: flyteidl.core.BindingDataMap.BindingsEntry - (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 24: google.protobuf.Duration - (*BlobType)(nil), // 25: flyteidl.core.BlobType - (*SchemaType)(nil), // 26: flyteidl.core.SchemaType - (*LiteralType)(nil), // 27: flyteidl.core.LiteralType - (*StructuredDatasetType)(nil), // 28: flyteidl.core.StructuredDatasetType - (*Error)(nil), // 29: flyteidl.core.Error - (*structpb.Struct)(nil), // 30: google.protobuf.Struct - (*OutputReference)(nil), // 31: flyteidl.core.OutputReference + (*Json)(nil), // 5: flyteidl.core.Json + (*Schema)(nil), // 6: flyteidl.core.Schema + (*Union)(nil), // 7: flyteidl.core.Union + (*StructuredDatasetMetadata)(nil), // 8: flyteidl.core.StructuredDatasetMetadata + (*StructuredDataset)(nil), // 9: flyteidl.core.StructuredDataset + (*Scalar)(nil), // 10: flyteidl.core.Scalar + (*Literal)(nil), // 11: flyteidl.core.Literal + (*LiteralCollection)(nil), // 12: flyteidl.core.LiteralCollection + (*LiteralMap)(nil), // 13: flyteidl.core.LiteralMap + (*BindingDataCollection)(nil), // 14: flyteidl.core.BindingDataCollection + (*BindingDataMap)(nil), // 15: flyteidl.core.BindingDataMap + (*UnionInfo)(nil), // 16: flyteidl.core.UnionInfo + (*BindingData)(nil), // 17: flyteidl.core.BindingData + (*Binding)(nil), // 18: flyteidl.core.Binding + (*KeyValuePair)(nil), // 19: flyteidl.core.KeyValuePair + (*RetryStrategy)(nil), // 20: flyteidl.core.RetryStrategy + nil, // 21: flyteidl.core.Literal.MetadataEntry + nil, // 22: flyteidl.core.LiteralMap.LiteralsEntry + nil, // 23: flyteidl.core.BindingDataMap.BindingsEntry + (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 25: google.protobuf.Duration + (*BlobType)(nil), // 26: flyteidl.core.BlobType + (*SchemaType)(nil), // 27: flyteidl.core.SchemaType + (*LiteralType)(nil), // 28: flyteidl.core.LiteralType + (*StructuredDatasetType)(nil), // 29: flyteidl.core.StructuredDatasetType + (*Error)(nil), // 30: flyteidl.core.Error + (*structpb.Struct)(nil), // 31: google.protobuf.Struct + (*OutputReference)(nil), // 32: flyteidl.core.OutputReference } var file_flyteidl_core_literals_proto_depIdxs = []int32{ - 23, // 0: flyteidl.core.Primitive.datetime:type_name -> google.protobuf.Timestamp - 24, // 1: flyteidl.core.Primitive.duration:type_name -> google.protobuf.Duration + 24, // 0: flyteidl.core.Primitive.datetime:type_name -> google.protobuf.Timestamp + 25, // 1: flyteidl.core.Primitive.duration:type_name -> google.protobuf.Duration 3, // 2: flyteidl.core.Blob.metadata:type_name -> flyteidl.core.BlobMetadata - 25, // 3: flyteidl.core.BlobMetadata.type:type_name -> flyteidl.core.BlobType - 26, // 4: flyteidl.core.Schema.type:type_name -> flyteidl.core.SchemaType - 10, // 5: flyteidl.core.Union.value:type_name -> flyteidl.core.Literal - 27, // 6: flyteidl.core.Union.type:type_name -> flyteidl.core.LiteralType - 28, // 7: flyteidl.core.StructuredDatasetMetadata.structured_dataset_type:type_name -> flyteidl.core.StructuredDatasetType - 7, // 8: flyteidl.core.StructuredDataset.metadata:type_name -> flyteidl.core.StructuredDatasetMetadata + 26, // 3: flyteidl.core.BlobMetadata.type:type_name -> flyteidl.core.BlobType + 27, // 4: flyteidl.core.Schema.type:type_name -> flyteidl.core.SchemaType + 11, // 5: flyteidl.core.Union.value:type_name -> flyteidl.core.Literal + 28, // 6: flyteidl.core.Union.type:type_name -> flyteidl.core.LiteralType + 29, // 7: flyteidl.core.StructuredDatasetMetadata.structured_dataset_type:type_name -> flyteidl.core.StructuredDatasetType + 8, // 8: flyteidl.core.StructuredDataset.metadata:type_name -> flyteidl.core.StructuredDatasetMetadata 0, // 9: flyteidl.core.Scalar.primitive:type_name -> flyteidl.core.Primitive 2, // 10: flyteidl.core.Scalar.blob:type_name -> flyteidl.core.Blob 4, // 11: flyteidl.core.Scalar.binary:type_name -> flyteidl.core.Binary - 5, // 12: flyteidl.core.Scalar.schema:type_name -> flyteidl.core.Schema + 6, // 12: flyteidl.core.Scalar.schema:type_name -> flyteidl.core.Schema 1, // 13: flyteidl.core.Scalar.none_type:type_name -> flyteidl.core.Void - 29, // 14: flyteidl.core.Scalar.error:type_name -> flyteidl.core.Error - 30, // 15: flyteidl.core.Scalar.generic:type_name -> google.protobuf.Struct - 8, // 16: flyteidl.core.Scalar.structured_dataset:type_name -> flyteidl.core.StructuredDataset - 6, // 17: flyteidl.core.Scalar.union:type_name -> flyteidl.core.Union - 9, // 18: flyteidl.core.Literal.scalar:type_name -> flyteidl.core.Scalar - 11, // 19: flyteidl.core.Literal.collection:type_name -> flyteidl.core.LiteralCollection - 12, // 20: flyteidl.core.Literal.map:type_name -> flyteidl.core.LiteralMap - 20, // 21: flyteidl.core.Literal.metadata:type_name -> flyteidl.core.Literal.MetadataEntry - 10, // 22: flyteidl.core.LiteralCollection.literals:type_name -> flyteidl.core.Literal - 21, // 23: flyteidl.core.LiteralMap.literals:type_name -> flyteidl.core.LiteralMap.LiteralsEntry - 16, // 24: flyteidl.core.BindingDataCollection.bindings:type_name -> flyteidl.core.BindingData - 22, // 25: flyteidl.core.BindingDataMap.bindings:type_name -> flyteidl.core.BindingDataMap.BindingsEntry - 27, // 26: flyteidl.core.UnionInfo.targetType:type_name -> flyteidl.core.LiteralType - 9, // 27: flyteidl.core.BindingData.scalar:type_name -> flyteidl.core.Scalar - 13, // 28: flyteidl.core.BindingData.collection:type_name -> flyteidl.core.BindingDataCollection - 31, // 29: flyteidl.core.BindingData.promise:type_name -> flyteidl.core.OutputReference - 14, // 30: flyteidl.core.BindingData.map:type_name -> flyteidl.core.BindingDataMap - 15, // 31: flyteidl.core.BindingData.union:type_name -> flyteidl.core.UnionInfo - 16, // 32: flyteidl.core.Binding.binding:type_name -> flyteidl.core.BindingData - 10, // 33: flyteidl.core.LiteralMap.LiteralsEntry.value:type_name -> flyteidl.core.Literal - 16, // 34: flyteidl.core.BindingDataMap.BindingsEntry.value:type_name -> flyteidl.core.BindingData - 35, // [35:35] is the sub-list for method output_type - 35, // [35:35] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 30, // 14: flyteidl.core.Scalar.error:type_name -> flyteidl.core.Error + 31, // 15: flyteidl.core.Scalar.generic:type_name -> google.protobuf.Struct + 9, // 16: flyteidl.core.Scalar.structured_dataset:type_name -> flyteidl.core.StructuredDataset + 7, // 17: flyteidl.core.Scalar.union:type_name -> flyteidl.core.Union + 5, // 18: flyteidl.core.Scalar.json:type_name -> flyteidl.core.Json + 10, // 19: flyteidl.core.Literal.scalar:type_name -> flyteidl.core.Scalar + 12, // 20: flyteidl.core.Literal.collection:type_name -> flyteidl.core.LiteralCollection + 13, // 21: flyteidl.core.Literal.map:type_name -> flyteidl.core.LiteralMap + 21, // 22: flyteidl.core.Literal.metadata:type_name -> flyteidl.core.Literal.MetadataEntry + 11, // 23: flyteidl.core.LiteralCollection.literals:type_name -> flyteidl.core.Literal + 22, // 24: flyteidl.core.LiteralMap.literals:type_name -> flyteidl.core.LiteralMap.LiteralsEntry + 17, // 25: flyteidl.core.BindingDataCollection.bindings:type_name -> flyteidl.core.BindingData + 23, // 26: flyteidl.core.BindingDataMap.bindings:type_name -> flyteidl.core.BindingDataMap.BindingsEntry + 28, // 27: flyteidl.core.UnionInfo.targetType:type_name -> flyteidl.core.LiteralType + 10, // 28: flyteidl.core.BindingData.scalar:type_name -> flyteidl.core.Scalar + 14, // 29: flyteidl.core.BindingData.collection:type_name -> flyteidl.core.BindingDataCollection + 32, // 30: flyteidl.core.BindingData.promise:type_name -> flyteidl.core.OutputReference + 15, // 31: flyteidl.core.BindingData.map:type_name -> flyteidl.core.BindingDataMap + 16, // 32: flyteidl.core.BindingData.union:type_name -> flyteidl.core.UnionInfo + 17, // 33: flyteidl.core.Binding.binding:type_name -> flyteidl.core.BindingData + 11, // 34: flyteidl.core.LiteralMap.LiteralsEntry.value:type_name -> flyteidl.core.Literal + 17, // 35: flyteidl.core.BindingDataMap.BindingsEntry.value:type_name -> flyteidl.core.BindingData + 36, // [36:36] is the sub-list for method output_type + 36, // [36:36] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name } func init() { file_flyteidl_core_literals_proto_init() } @@ -1773,7 +1841,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Schema); i { + switch v := v.(*Json); i { case 0: return &v.state case 1: @@ -1785,7 +1853,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Union); i { + switch v := v.(*Schema); i { case 0: return &v.state case 1: @@ -1797,7 +1865,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StructuredDatasetMetadata); i { + switch v := v.(*Union); i { case 0: return &v.state case 1: @@ -1809,7 +1877,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StructuredDataset); i { + switch v := v.(*StructuredDatasetMetadata); i { case 0: return &v.state case 1: @@ -1821,7 +1889,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Scalar); i { + switch v := v.(*StructuredDataset); i { case 0: return &v.state case 1: @@ -1833,7 +1901,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Literal); i { + switch v := v.(*Scalar); i { case 0: return &v.state case 1: @@ -1845,7 +1913,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LiteralCollection); i { + switch v := v.(*Literal); i { case 0: return &v.state case 1: @@ -1857,7 +1925,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LiteralMap); i { + switch v := v.(*LiteralCollection); i { case 0: return &v.state case 1: @@ -1869,7 +1937,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingDataCollection); i { + switch v := v.(*LiteralMap); i { case 0: return &v.state case 1: @@ -1881,7 +1949,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingDataMap); i { + switch v := v.(*BindingDataCollection); i { case 0: return &v.state case 1: @@ -1893,7 +1961,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnionInfo); i { + switch v := v.(*BindingDataMap); i { case 0: return &v.state case 1: @@ -1905,7 +1973,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingData); i { + switch v := v.(*UnionInfo); i { case 0: return &v.state case 1: @@ -1917,7 +1985,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Binding); i { + switch v := v.(*BindingData); i { case 0: return &v.state case 1: @@ -1929,7 +1997,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeyValuePair); i { + switch v := v.(*Binding); i { case 0: return &v.state case 1: @@ -1941,6 +2009,18 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeyValuePair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_core_literals_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetryStrategy); i { case 0: return &v.state @@ -1961,7 +2041,7 @@ func file_flyteidl_core_literals_proto_init() { (*Primitive_Datetime)(nil), (*Primitive_Duration)(nil), } - file_flyteidl_core_literals_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_flyteidl_core_literals_proto_msgTypes[10].OneofWrappers = []interface{}{ (*Scalar_Primitive)(nil), (*Scalar_Blob)(nil), (*Scalar_Binary)(nil), @@ -1971,13 +2051,14 @@ func file_flyteidl_core_literals_proto_init() { (*Scalar_Generic)(nil), (*Scalar_StructuredDataset)(nil), (*Scalar_Union)(nil), + (*Scalar_Json)(nil), } - file_flyteidl_core_literals_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_flyteidl_core_literals_proto_msgTypes[11].OneofWrappers = []interface{}{ (*Literal_Scalar)(nil), (*Literal_Collection)(nil), (*Literal_Map)(nil), } - file_flyteidl_core_literals_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_flyteidl_core_literals_proto_msgTypes[17].OneofWrappers = []interface{}{ (*BindingData_Scalar)(nil), (*BindingData_Collection)(nil), (*BindingData_Promise)(nil), @@ -1989,7 +2070,7 @@ func file_flyteidl_core_literals_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_core_literals_proto_rawDesc, NumEnums: 0, - NumMessages: 23, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb-go/flyteidl/core/types.pb.go b/flyteidl/gen/pb-go/flyteidl/core/types.pb.go index b844e951c9..341eb063c9 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/types.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/types.pb.go @@ -35,21 +35,23 @@ const ( SimpleType_BINARY SimpleType = 7 SimpleType_ERROR SimpleType = 8 SimpleType_STRUCT SimpleType = 9 + SimpleType_JSON SimpleType = 10 ) // Enum value maps for SimpleType. var ( SimpleType_name = map[int32]string{ - 0: "NONE", - 1: "INTEGER", - 2: "FLOAT", - 3: "STRING", - 4: "BOOLEAN", - 5: "DATETIME", - 6: "DURATION", - 7: "BINARY", - 8: "ERROR", - 9: "STRUCT", + 0: "NONE", + 1: "INTEGER", + 2: "FLOAT", + 3: "STRING", + 4: "BOOLEAN", + 5: "DATETIME", + 6: "DURATION", + 7: "BINARY", + 8: "ERROR", + 9: "STRUCT", + 10: "JSON", } SimpleType_value = map[string]int32{ "NONE": 0, @@ -62,6 +64,7 @@ var ( "BINARY": 7, "ERROR": 8, "STRUCT": 9, + "JSON": 10, } ) @@ -1274,7 +1277,7 @@ var file_flyteidl_core_types_proto_rawDesc = []byte{ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x86, 0x01, 0x0a, 0x0a, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x90, 0x01, 0x0a, 0x0a, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, @@ -1282,19 +1285,20 @@ var file_flyteidl_core_types_proto_rawDesc = []byte{ 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x09, 0x42, 0xb0, - 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, - 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, - 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, - 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, - 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, - 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x09, 0x12, 0x08, + 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x0a, 0x42, 0xb0, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0a, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, + 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, + 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, + 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, + 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json index 79be0ba117..521644148c 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json @@ -202,6 +202,14 @@ }, "description": "Encapsulation of fields that uniquely identifies a Flyte resource." }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreLiteral": { "type": "object", "properties": { @@ -374,6 +382,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -403,7 +414,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json index 1f2f91d28b..759d40585f 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json @@ -146,6 +146,14 @@ }, "description": "Represents an error thrown from a node." }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreLiteral": { "type": "object", "properties": { @@ -306,6 +314,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -335,7 +346,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json index 7e6e7d3367..320ff7d71b 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -7324,6 +7324,14 @@ } } }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -7915,6 +7923,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -8010,7 +8021,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json index a0e8cfed39..22fc3bfc23 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -1179,6 +1179,14 @@ } } }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -1537,6 +1545,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -1614,7 +1625,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json index 4798fc6c2d..876375da5f 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json @@ -262,6 +262,14 @@ }, "description": "Represents an error thrown from a node." }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreLiteral": { "type": "object", "properties": { @@ -434,6 +442,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -463,7 +474,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json index f488a49c00..658b3fc9e8 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json @@ -495,6 +495,14 @@ } } }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreK8sObjectMetadata": { "type": "object", "properties": { @@ -841,6 +849,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -918,7 +929,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json index 94c859bfcd..f0cd2eb056 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json @@ -338,6 +338,14 @@ }, "description": "Represents an error thrown from a node." }, + "coreJson": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, "coreLiteral": { "type": "object", "properties": { @@ -498,6 +506,9 @@ }, "union": { "$ref": "#/definitions/coreUnion" + }, + "json": { + "$ref": "#/definitions/coreJson" } } }, @@ -541,7 +552,8 @@ "DURATION", "BINARY", "ERROR", - "STRUCT" + "STRUCT", + "JSON" ], "default": "NONE", "description": "Define a set of simple types." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index a1d9a34637..2367dffd81 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -1906,7 +1906,8 @@ export namespace flyteidl { DURATION = 6, BINARY = 7, ERROR = 8, - STRUCT = 9 + STRUCT = 9, + JSON = 10 } /** Properties of a SchemaType. */ @@ -3044,6 +3045,58 @@ export namespace flyteidl { public static verify(message: { [k: string]: any }): (string|null); } + /** Properties of a Json. */ + interface IJson { + + /** Json value */ + value?: (string|null); + } + + /** Represents a Json. */ + class Json implements IJson { + + /** + * Constructs a new Json. + * @param [properties] Properties to set + */ + constructor(properties?: flyteidl.core.IJson); + + /** Json value. */ + public value: string; + + /** + * Creates a new Json instance using the specified properties. + * @param [properties] Properties to set + * @returns Json instance + */ + public static create(properties?: flyteidl.core.IJson): flyteidl.core.Json; + + /** + * Encodes the specified Json message. Does not implicitly {@link flyteidl.core.Json.verify|verify} messages. + * @param message Json message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: flyteidl.core.IJson, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Json message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Json + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): flyteidl.core.Json; + + /** + * Verifies a Json message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + } + /** Properties of a Schema. */ interface ISchema { @@ -3299,6 +3352,9 @@ export namespace flyteidl { /** Scalar union */ union?: (flyteidl.core.IUnion|null); + + /** Scalar json */ + json?: (flyteidl.core.IJson|null); } /** Represents a Scalar. */ @@ -3337,8 +3393,11 @@ export namespace flyteidl { /** Scalar union. */ public union?: (flyteidl.core.IUnion|null); + /** Scalar json. */ + public json?: (flyteidl.core.IJson|null); + /** Scalar value. */ - public value?: ("primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"); + public value?: ("primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"|"json"); /** * Creates a new Scalar instance using the specified properties. diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 3402b1bdbb..bb63bf67c2 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -4545,6 +4545,7 @@ * @property {number} BINARY=7 BINARY value * @property {number} ERROR=8 ERROR value * @property {number} STRUCT=9 STRUCT value + * @property {number} JSON=10 JSON value */ core.SimpleType = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -4558,6 +4559,7 @@ values[valuesById[7] = "BINARY"] = 7; values[valuesById[8] = "ERROR"] = 8; values[valuesById[9] = "STRUCT"] = 9; + values[valuesById[10] = "JSON"] = 10; return values; })(); @@ -6049,6 +6051,7 @@ case 7: case 8: case 9: + case 10: break; } } @@ -7271,6 +7274,116 @@ return Binary; })(); + core.Json = (function() { + + /** + * Properties of a Json. + * @memberof flyteidl.core + * @interface IJson + * @property {string|null} [value] Json value + */ + + /** + * Constructs a new Json. + * @memberof flyteidl.core + * @classdesc Represents a Json. + * @implements IJson + * @constructor + * @param {flyteidl.core.IJson=} [properties] Properties to set + */ + function Json(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Json value. + * @member {string} value + * @memberof flyteidl.core.Json + * @instance + */ + Json.prototype.value = ""; + + /** + * Creates a new Json instance using the specified properties. + * @function create + * @memberof flyteidl.core.Json + * @static + * @param {flyteidl.core.IJson=} [properties] Properties to set + * @returns {flyteidl.core.Json} Json instance + */ + Json.create = function create(properties) { + return new Json(properties); + }; + + /** + * Encodes the specified Json message. Does not implicitly {@link flyteidl.core.Json.verify|verify} messages. + * @function encode + * @memberof flyteidl.core.Json + * @static + * @param {flyteidl.core.IJson} message Json message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Json.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); + return writer; + }; + + /** + * Decodes a Json message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.core.Json + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.core.Json} Json + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Json.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.core.Json(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies a Json message. + * @function verify + * @memberof flyteidl.core.Json + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Json.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isString(message.value)) + return "value: string expected"; + return null; + }; + + return Json; + })(); + core.Schema = (function() { /** @@ -7787,6 +7900,7 @@ * @property {google.protobuf.IStruct|null} [generic] Scalar generic * @property {flyteidl.core.IStructuredDataset|null} [structuredDataset] Scalar structuredDataset * @property {flyteidl.core.IUnion|null} [union] Scalar union + * @property {flyteidl.core.IJson|null} [json] Scalar json */ /** @@ -7876,17 +7990,25 @@ */ Scalar.prototype.union = null; + /** + * Scalar json. + * @member {flyteidl.core.IJson|null|undefined} json + * @memberof flyteidl.core.Scalar + * @instance + */ + Scalar.prototype.json = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * Scalar value. - * @member {"primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"|undefined} value + * @member {"primitive"|"blob"|"binary"|"schema"|"noneType"|"error"|"generic"|"structuredDataset"|"union"|"json"|undefined} value * @memberof flyteidl.core.Scalar * @instance */ Object.defineProperty(Scalar.prototype, "value", { - get: $util.oneOfGetter($oneOfFields = ["primitive", "blob", "binary", "schema", "noneType", "error", "generic", "structuredDataset", "union"]), + get: $util.oneOfGetter($oneOfFields = ["primitive", "blob", "binary", "schema", "noneType", "error", "generic", "structuredDataset", "union", "json"]), set: $util.oneOfSetter($oneOfFields) }); @@ -7932,6 +8054,8 @@ $root.flyteidl.core.StructuredDataset.encode(message.structuredDataset, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); if (message.union != null && message.hasOwnProperty("union")) $root.flyteidl.core.Union.encode(message.union, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.json != null && message.hasOwnProperty("json")) + $root.flyteidl.core.Json.encode(message.json, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; }; @@ -7980,6 +8104,9 @@ case 9: message.union = $root.flyteidl.core.Union.decode(reader, reader.uint32()); break; + case 10: + message.json = $root.flyteidl.core.Json.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -8088,6 +8215,16 @@ return "union." + error; } } + if (message.json != null && message.hasOwnProperty("json")) { + if (properties.value === 1) + return "value: multiple values"; + properties.value = 1; + { + var error = $root.flyteidl.core.Json.verify(message.json); + if (error) + return "json." + error; + } + } return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py index 77bc3ea3f0..787e835eef 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py @@ -17,7 +17,7 @@ from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\xf0\x03\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05unionB\x07\n\x05value\"\xc9\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"\x1c\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\tR\x05value\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xc9\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -42,40 +42,42 @@ _globals['_BLOBMETADATA']._serialized_end=585 _globals['_BINARY']._serialized_start=587 _globals['_BINARY']._serialized_end=635 - _globals['_SCHEMA']._serialized_start=637 - _globals['_SCHEMA']._serialized_end=710 - _globals['_UNION']._serialized_start=712 - _globals['_UNION']._serialized_end=813 - _globals['_STRUCTUREDDATASETMETADATA']._serialized_start=815 - _globals['_STRUCTUREDDATASETMETADATA']._serialized_end=936 - _globals['_STRUCTUREDDATASET']._serialized_start=938 - _globals['_STRUCTUREDDATASET']._serialized_end=1045 - _globals['_SCALAR']._serialized_start=1048 - _globals['_SCALAR']._serialized_end=1544 - _globals['_LITERAL']._serialized_start=1547 - _globals['_LITERAL']._serialized_end=1876 - _globals['_LITERAL_METADATAENTRY']._serialized_start=1808 - _globals['_LITERAL_METADATAENTRY']._serialized_end=1867 - _globals['_LITERALCOLLECTION']._serialized_start=1878 - _globals['_LITERALCOLLECTION']._serialized_end=1949 - _globals['_LITERALMAP']._serialized_start=1952 - _globals['_LITERALMAP']._serialized_end=2118 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2035 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2118 - _globals['_BINDINGDATACOLLECTION']._serialized_start=2120 - _globals['_BINDINGDATACOLLECTION']._serialized_end=2199 - _globals['_BINDINGDATAMAP']._serialized_start=2202 - _globals['_BINDINGDATAMAP']._serialized_end=2380 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2293 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2380 - _globals['_UNIONINFO']._serialized_start=2382 - _globals['_UNIONINFO']._serialized_end=2453 - _globals['_BINDINGDATA']._serialized_start=2456 - _globals['_BINDINGDATA']._serialized_end=2758 - _globals['_BINDING']._serialized_start=2760 - _globals['_BINDING']._serialized_end=2841 - _globals['_KEYVALUEPAIR']._serialized_start=2843 - _globals['_KEYVALUEPAIR']._serialized_end=2897 - _globals['_RETRYSTRATEGY']._serialized_start=2899 - _globals['_RETRYSTRATEGY']._serialized_end=2940 + _globals['_JSON']._serialized_start=637 + _globals['_JSON']._serialized_end=665 + _globals['_SCHEMA']._serialized_start=667 + _globals['_SCHEMA']._serialized_end=740 + _globals['_UNION']._serialized_start=742 + _globals['_UNION']._serialized_end=843 + _globals['_STRUCTUREDDATASETMETADATA']._serialized_start=845 + _globals['_STRUCTUREDDATASETMETADATA']._serialized_end=966 + _globals['_STRUCTUREDDATASET']._serialized_start=968 + _globals['_STRUCTUREDDATASET']._serialized_end=1075 + _globals['_SCALAR']._serialized_start=1078 + _globals['_SCALAR']._serialized_end=1617 + _globals['_LITERAL']._serialized_start=1620 + _globals['_LITERAL']._serialized_end=1949 + _globals['_LITERAL_METADATAENTRY']._serialized_start=1881 + _globals['_LITERAL_METADATAENTRY']._serialized_end=1940 + _globals['_LITERALCOLLECTION']._serialized_start=1951 + _globals['_LITERALCOLLECTION']._serialized_end=2022 + _globals['_LITERALMAP']._serialized_start=2025 + _globals['_LITERALMAP']._serialized_end=2191 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2108 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2191 + _globals['_BINDINGDATACOLLECTION']._serialized_start=2193 + _globals['_BINDINGDATACOLLECTION']._serialized_end=2272 + _globals['_BINDINGDATAMAP']._serialized_start=2275 + _globals['_BINDINGDATAMAP']._serialized_end=2453 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2366 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2453 + _globals['_UNIONINFO']._serialized_start=2455 + _globals['_UNIONINFO']._serialized_end=2526 + _globals['_BINDINGDATA']._serialized_start=2529 + _globals['_BINDINGDATA']._serialized_end=2831 + _globals['_BINDING']._serialized_start=2833 + _globals['_BINDING']._serialized_end=2914 + _globals['_KEYVALUEPAIR']._serialized_start=2916 + _globals['_KEYVALUEPAIR']._serialized_end=2970 + _globals['_RETRYSTRATEGY']._serialized_start=2972 + _globals['_RETRYSTRATEGY']._serialized_end=3013 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi index 62622203bd..5cbe719c63 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi @@ -51,6 +51,12 @@ class Binary(_message.Message): tag: str def __init__(self, value: _Optional[bytes] = ..., tag: _Optional[str] = ...) -> None: ... +class Json(_message.Message): + __slots__ = ["value"] + VALUE_FIELD_NUMBER: _ClassVar[int] + value: str + def __init__(self, value: _Optional[str] = ...) -> None: ... + class Schema(_message.Message): __slots__ = ["uri", "type"] URI_FIELD_NUMBER: _ClassVar[int] @@ -82,7 +88,7 @@ class StructuredDataset(_message.Message): def __init__(self, uri: _Optional[str] = ..., metadata: _Optional[_Union[StructuredDatasetMetadata, _Mapping]] = ...) -> None: ... class Scalar(_message.Message): - __slots__ = ["primitive", "blob", "binary", "schema", "none_type", "error", "generic", "structured_dataset", "union"] + __slots__ = ["primitive", "blob", "binary", "schema", "none_type", "error", "generic", "structured_dataset", "union", "json"] PRIMITIVE_FIELD_NUMBER: _ClassVar[int] BLOB_FIELD_NUMBER: _ClassVar[int] BINARY_FIELD_NUMBER: _ClassVar[int] @@ -92,6 +98,7 @@ class Scalar(_message.Message): GENERIC_FIELD_NUMBER: _ClassVar[int] STRUCTURED_DATASET_FIELD_NUMBER: _ClassVar[int] UNION_FIELD_NUMBER: _ClassVar[int] + JSON_FIELD_NUMBER: _ClassVar[int] primitive: Primitive blob: Blob binary: Binary @@ -101,7 +108,8 @@ class Scalar(_message.Message): generic: _struct_pb2.Struct structured_dataset: StructuredDataset union: Union - def __init__(self, primitive: _Optional[_Union[Primitive, _Mapping]] = ..., blob: _Optional[_Union[Blob, _Mapping]] = ..., binary: _Optional[_Union[Binary, _Mapping]] = ..., schema: _Optional[_Union[Schema, _Mapping]] = ..., none_type: _Optional[_Union[Void, _Mapping]] = ..., error: _Optional[_Union[_types_pb2.Error, _Mapping]] = ..., generic: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., structured_dataset: _Optional[_Union[StructuredDataset, _Mapping]] = ..., union: _Optional[_Union[Union, _Mapping]] = ...) -> None: ... + json: Json + def __init__(self, primitive: _Optional[_Union[Primitive, _Mapping]] = ..., blob: _Optional[_Union[Blob, _Mapping]] = ..., binary: _Optional[_Union[Binary, _Mapping]] = ..., schema: _Optional[_Union[Schema, _Mapping]] = ..., none_type: _Optional[_Union[Void, _Mapping]] = ..., error: _Optional[_Union[_types_pb2.Error, _Mapping]] = ..., generic: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., structured_dataset: _Optional[_Union[StructuredDataset, _Mapping]] = ..., union: _Optional[_Union[Union, _Mapping]] = ..., json: _Optional[_Union[Json, _Mapping]] = ...) -> None: ... class Literal(_message.Message): __slots__ = ["scalar", "collection", "map", "hash", "metadata"] diff --git a/flyteidl/gen/pb_python/flyteidl/core/types_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/types_pb2.py index 3043a0cf6b..f91f2c90a1 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/types_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/types_pb2.py @@ -14,7 +14,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19\x66lyteidl/core/types.proto\x12\rflyteidl.core\x1a\x1cgoogle/protobuf/struct.proto\"\xa1\x02\n\nSchemaType\x12@\n\x07\x63olumns\x18\x03 \x03(\x0b\x32&.flyteidl.core.SchemaType.SchemaColumnR\x07\x63olumns\x1a\xd0\x01\n\x0cSchemaColumn\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12K\n\x04type\x18\x02 \x01(\x0e\x32\x37.flyteidl.core.SchemaType.SchemaColumn.SchemaColumnTypeR\x04type\"_\n\x10SchemaColumnType\x12\x0b\n\x07INTEGER\x10\x00\x12\t\n\x05\x46LOAT\x10\x01\x12\n\n\x06STRING\x10\x02\x12\x0b\n\x07\x42OOLEAN\x10\x03\x12\x0c\n\x08\x44\x41TETIME\x10\x04\x12\x0c\n\x08\x44URATION\x10\x05\"\xc7\x02\n\x15StructuredDatasetType\x12L\n\x07\x63olumns\x18\x01 \x03(\x0b\x32\x32.flyteidl.core.StructuredDatasetType.DatasetColumnR\x07\x63olumns\x12\x16\n\x06\x66ormat\x18\x02 \x01(\tR\x06\x66ormat\x12\x30\n\x14\x65xternal_schema_type\x18\x03 \x01(\tR\x12\x65xternalSchemaType\x12\x32\n\x15\x65xternal_schema_bytes\x18\x04 \x01(\x0cR\x13\x65xternalSchemaBytes\x1a\x62\n\rDatasetColumn\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12=\n\x0cliteral_type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x0bliteralType\"\xa7\x01\n\x08\x42lobType\x12\x16\n\x06\x66ormat\x18\x01 \x01(\tR\x06\x66ormat\x12R\n\x0e\x64imensionality\x18\x02 \x01(\x0e\x32*.flyteidl.core.BlobType.BlobDimensionalityR\x0e\x64imensionality\"/\n\x12\x42lobDimensionality\x12\n\n\x06SINGLE\x10\x00\x12\r\n\tMULTIPART\x10\x01\"\"\n\x08\x45numType\x12\x16\n\x06values\x18\x01 \x03(\tR\x06values\"C\n\tUnionType\x12\x36\n\x08variants\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x08variants\"\xd7\x01\n\rTypeStructure\x12\x10\n\x03tag\x18\x01 \x01(\tR\x03tag\x12V\n\x0e\x64\x61taclass_type\x18\x02 \x03(\x0b\x32/.flyteidl.core.TypeStructure.DataclassTypeEntryR\rdataclassType\x1a\\\n\x12\x44\x61taclassTypeEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x05value:\x02\x38\x01\"K\n\x0eTypeAnnotation\x12\x39\n\x0b\x61nnotations\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x0b\x61nnotations\"\xbc\x05\n\x0bLiteralType\x12\x33\n\x06simple\x18\x01 \x01(\x0e\x32\x19.flyteidl.core.SimpleTypeH\x00R\x06simple\x12\x33\n\x06schema\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeH\x00R\x06schema\x12\x45\n\x0f\x63ollection_type\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeH\x00R\x0e\x63ollectionType\x12\x42\n\x0emap_value_type\x18\x04 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeH\x00R\x0cmapValueType\x12-\n\x04\x62lob\x18\x05 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeH\x00R\x04\x62lob\x12\x36\n\tenum_type\x18\x07 \x01(\x0b\x32\x17.flyteidl.core.EnumTypeH\x00R\x08\x65numType\x12^\n\x17structured_dataset_type\x18\x08 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeH\x00R\x15structuredDatasetType\x12\x39\n\nunion_type\x18\n \x01(\x0b\x32\x18.flyteidl.core.UnionTypeH\x00R\tunionType\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12=\n\nannotation\x18\t \x01(\x0b\x32\x1d.flyteidl.core.TypeAnnotationR\nannotation\x12:\n\tstructure\x18\x0b \x01(\x0b\x32\x1c.flyteidl.core.TypeStructureR\tstructureB\x06\n\x04type\"z\n\x0fOutputReference\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x10\n\x03var\x18\x02 \x01(\tR\x03var\x12<\n\tattr_path\x18\x03 \x03(\x0b\x32\x1f.flyteidl.core.PromiseAttributeR\x08\x61ttrPath\"_\n\x10PromiseAttribute\x12#\n\x0cstring_value\x18\x01 \x01(\tH\x00R\x0bstringValue\x12\x1d\n\tint_value\x18\x02 \x01(\x05H\x00R\x08intValueB\x07\n\x05value\"G\n\x05\x45rror\x12$\n\x0e\x66\x61iled_node_id\x18\x01 \x01(\tR\x0c\x66\x61iledNodeId\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message*\x86\x01\n\nSimpleType\x12\x08\n\x04NONE\x10\x00\x12\x0b\n\x07INTEGER\x10\x01\x12\t\n\x05\x46LOAT\x10\x02\x12\n\n\x06STRING\x10\x03\x12\x0b\n\x07\x42OOLEAN\x10\x04\x12\x0c\n\x08\x44\x41TETIME\x10\x05\x12\x0c\n\x08\x44URATION\x10\x06\x12\n\n\x06\x42INARY\x10\x07\x12\t\n\x05\x45RROR\x10\x08\x12\n\n\x06STRUCT\x10\tB\xb0\x01\n\x11\x63om.flyteidl.coreB\nTypesProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19\x66lyteidl/core/types.proto\x12\rflyteidl.core\x1a\x1cgoogle/protobuf/struct.proto\"\xa1\x02\n\nSchemaType\x12@\n\x07\x63olumns\x18\x03 \x03(\x0b\x32&.flyteidl.core.SchemaType.SchemaColumnR\x07\x63olumns\x1a\xd0\x01\n\x0cSchemaColumn\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12K\n\x04type\x18\x02 \x01(\x0e\x32\x37.flyteidl.core.SchemaType.SchemaColumn.SchemaColumnTypeR\x04type\"_\n\x10SchemaColumnType\x12\x0b\n\x07INTEGER\x10\x00\x12\t\n\x05\x46LOAT\x10\x01\x12\n\n\x06STRING\x10\x02\x12\x0b\n\x07\x42OOLEAN\x10\x03\x12\x0c\n\x08\x44\x41TETIME\x10\x04\x12\x0c\n\x08\x44URATION\x10\x05\"\xc7\x02\n\x15StructuredDatasetType\x12L\n\x07\x63olumns\x18\x01 \x03(\x0b\x32\x32.flyteidl.core.StructuredDatasetType.DatasetColumnR\x07\x63olumns\x12\x16\n\x06\x66ormat\x18\x02 \x01(\tR\x06\x66ormat\x12\x30\n\x14\x65xternal_schema_type\x18\x03 \x01(\tR\x12\x65xternalSchemaType\x12\x32\n\x15\x65xternal_schema_bytes\x18\x04 \x01(\x0cR\x13\x65xternalSchemaBytes\x1a\x62\n\rDatasetColumn\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12=\n\x0cliteral_type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x0bliteralType\"\xa7\x01\n\x08\x42lobType\x12\x16\n\x06\x66ormat\x18\x01 \x01(\tR\x06\x66ormat\x12R\n\x0e\x64imensionality\x18\x02 \x01(\x0e\x32*.flyteidl.core.BlobType.BlobDimensionalityR\x0e\x64imensionality\"/\n\x12\x42lobDimensionality\x12\n\n\x06SINGLE\x10\x00\x12\r\n\tMULTIPART\x10\x01\"\"\n\x08\x45numType\x12\x16\n\x06values\x18\x01 \x03(\tR\x06values\"C\n\tUnionType\x12\x36\n\x08variants\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x08variants\"\xd7\x01\n\rTypeStructure\x12\x10\n\x03tag\x18\x01 \x01(\tR\x03tag\x12V\n\x0e\x64\x61taclass_type\x18\x02 \x03(\x0b\x32/.flyteidl.core.TypeStructure.DataclassTypeEntryR\rdataclassType\x1a\\\n\x12\x44\x61taclassTypeEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x05value:\x02\x38\x01\"K\n\x0eTypeAnnotation\x12\x39\n\x0b\x61nnotations\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x0b\x61nnotations\"\xbc\x05\n\x0bLiteralType\x12\x33\n\x06simple\x18\x01 \x01(\x0e\x32\x19.flyteidl.core.SimpleTypeH\x00R\x06simple\x12\x33\n\x06schema\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeH\x00R\x06schema\x12\x45\n\x0f\x63ollection_type\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeH\x00R\x0e\x63ollectionType\x12\x42\n\x0emap_value_type\x18\x04 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeH\x00R\x0cmapValueType\x12-\n\x04\x62lob\x18\x05 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeH\x00R\x04\x62lob\x12\x36\n\tenum_type\x18\x07 \x01(\x0b\x32\x17.flyteidl.core.EnumTypeH\x00R\x08\x65numType\x12^\n\x17structured_dataset_type\x18\x08 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeH\x00R\x15structuredDatasetType\x12\x39\n\nunion_type\x18\n \x01(\x0b\x32\x18.flyteidl.core.UnionTypeH\x00R\tunionType\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12=\n\nannotation\x18\t \x01(\x0b\x32\x1d.flyteidl.core.TypeAnnotationR\nannotation\x12:\n\tstructure\x18\x0b \x01(\x0b\x32\x1c.flyteidl.core.TypeStructureR\tstructureB\x06\n\x04type\"z\n\x0fOutputReference\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x10\n\x03var\x18\x02 \x01(\tR\x03var\x12<\n\tattr_path\x18\x03 \x03(\x0b\x32\x1f.flyteidl.core.PromiseAttributeR\x08\x61ttrPath\"_\n\x10PromiseAttribute\x12#\n\x0cstring_value\x18\x01 \x01(\tH\x00R\x0bstringValue\x12\x1d\n\tint_value\x18\x02 \x01(\x05H\x00R\x08intValueB\x07\n\x05value\"G\n\x05\x45rror\x12$\n\x0e\x66\x61iled_node_id\x18\x01 \x01(\tR\x0c\x66\x61iledNodeId\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message*\x90\x01\n\nSimpleType\x12\x08\n\x04NONE\x10\x00\x12\x0b\n\x07INTEGER\x10\x01\x12\t\n\x05\x46LOAT\x10\x02\x12\n\n\x06STRING\x10\x03\x12\x0b\n\x07\x42OOLEAN\x10\x04\x12\x0c\n\x08\x44\x41TETIME\x10\x05\x12\x0c\n\x08\x44URATION\x10\x06\x12\n\n\x06\x42INARY\x10\x07\x12\t\n\x05\x45RROR\x10\x08\x12\n\n\x06STRUCT\x10\t\x12\x08\n\x04JSON\x10\nB\xb0\x01\n\x11\x63om.flyteidl.coreB\nTypesProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -26,7 +26,7 @@ _TYPESTRUCTURE_DATACLASSTYPEENTRY._options = None _TYPESTRUCTURE_DATACLASSTYPEENTRY._serialized_options = b'8\001' _globals['_SIMPLETYPE']._serialized_start=2264 - _globals['_SIMPLETYPE']._serialized_end=2398 + _globals['_SIMPLETYPE']._serialized_end=2408 _globals['_SCHEMATYPE']._serialized_start=75 _globals['_SCHEMATYPE']._serialized_end=364 _globals['_SCHEMATYPE_SCHEMACOLUMN']._serialized_start=156 diff --git a/flyteidl/gen/pb_python/flyteidl/core/types_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/types_pb2.pyi index 9028afabd5..694a1961ee 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/types_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/types_pb2.pyi @@ -19,6 +19,7 @@ class SimpleType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): BINARY: _ClassVar[SimpleType] ERROR: _ClassVar[SimpleType] STRUCT: _ClassVar[SimpleType] + JSON: _ClassVar[SimpleType] NONE: SimpleType INTEGER: SimpleType FLOAT: SimpleType @@ -29,6 +30,7 @@ DURATION: SimpleType BINARY: SimpleType ERROR: SimpleType STRUCT: SimpleType +JSON: SimpleType class SchemaType(_message.Message): __slots__ = ["columns"] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index bb3a04d75a..efe9a1a536 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -305,6 +305,7 @@ pub enum SimpleType { Binary = 7, Error = 8, Struct = 9, + Json = 10, } impl SimpleType { /// String value of the enum field names used in the ProtoBuf definition. @@ -323,6 +324,7 @@ impl SimpleType { SimpleType::Binary => "BINARY", SimpleType::Error => "ERROR", SimpleType::Struct => "STRUCT", + SimpleType::Json => "JSON", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -338,6 +340,7 @@ impl SimpleType { "BINARY" => Some(Self::Binary), "ERROR" => Some(Self::Error), "STRUCT" => Some(Self::Struct), + "JSON" => Some(Self::Json), _ => None, } } @@ -404,6 +407,12 @@ pub struct Binary { #[prost(string, tag="2")] pub tag: ::prost::alloc::string::String, } +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Json { + #[prost(string, tag="1")] + pub value: ::prost::alloc::string::String, +} /// A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -448,7 +457,7 @@ pub struct StructuredDataset { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Scalar { - #[prost(oneof="scalar::Value", tags="1, 2, 3, 4, 5, 6, 7, 8, 9")] + #[prost(oneof="scalar::Value", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10")] pub value: ::core::option::Option, } /// Nested message and enum types in `Scalar`. @@ -474,6 +483,8 @@ pub mod scalar { StructuredDataset(super::StructuredDataset), #[prost(message, tag="9")] Union(::prost::alloc::boxed::Box), + #[prost(message, tag="10")] + Json(super::Json), } } /// A simple value. This supports any level of nesting (e.g. array of array of array of Blobs) as well as simple primitives. From 707a0135ba510d36e5a6c492b080eadace07bce6 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 6 Aug 2024 09:46:21 +0800 Subject: [PATCH 03/38] new swagger Signed-off-by: Future-Outlier --- flyteidl/clients/go/assets/admin.swagger.json | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index c23bee9fa1..320ff7d71b 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -7087,6 +7087,53 @@ }, "description": "Represents an error thrown from a node." }, + "coreExecutionEnv": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "name is a human-readable identifier for the execution environment. This is combined with the\nproject, domain, and version to uniquely identify an execution environment." + }, + "type": { + "type": "string", + "description": "type is the type of the execution environment." + }, + "extant": { + "type": "object", + "description": "extant is a reference to an existing environment." + }, + "spec": { + "type": "object", + "description": "spec is a specification of the environment." + }, + "version": { + "type": "string", + "description": "version is the version of the execution environment. This may be used differently by each\nindividual environment type (ex. auto-generated or manually provided), but is intended to\nallow variance in environment specifications with the same ID." + } + }, + "description": "ExecutionEnv is a message that is used to specify the execution environment." + }, + "coreExecutionEnvAssignment": { + "type": "object", + "properties": { + "node_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "node_ids is a list of node ids that are being assigned the execution environment." + }, + "task_type": { + "type": "string", + "description": "task_type is the type of task that is being assigned. This is used to override which Flyte\nplugin will be used during execution." + }, + "execution_env": { + "$ref": "#/definitions/coreExecutionEnv", + "description": "execution_env is the environment that is being assigned to the nodes." + } + }, + "description": "ExecutionEnvAssignment is a message that is used to assign an execution environment to a set of\nnodes." + }, "coreExecutionError": { "type": "object", "properties": { From 5d85d16aac0947bbe86f7df777eed5be545b0ea8 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 22 Jul 2024 23:44:32 -0700 Subject: [PATCH 04/38] update test Signed-off-by: Future-Outlier --- .../pkg/compiler/validators/typing_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/flytepropeller/pkg/compiler/validators/typing_test.go b/flytepropeller/pkg/compiler/validators/typing_test.go index f2e407b986..c75ebe7a49 100644 --- a/flytepropeller/pkg/compiler/validators/typing_test.go +++ b/flytepropeller/pkg/compiler/validators/typing_test.go @@ -22,6 +22,18 @@ func TestSimpleLiteralCasting(t *testing.T) { assert.True(t, castable, "Integers should be castable to other integers") }) + t.Run("BaseCase_Json", func(t *testing.T) { + castable := AreTypesCastable( + &core.LiteralType{ + Type: &core.LiteralType_Simple{Simple: core.SimpleType_JSON}, + }, + &core.LiteralType{ + Type: &core.LiteralType_Simple{Simple: core.SimpleType_JSON}, + }, + ) + assert.True(t, castable, "Json should be castable to other Json") + }) + t.Run("IntegerToFloat", func(t *testing.T) { castable := AreTypesCastable( &core.LiteralType{ From fa8bbd5eb9f1010632b4e88c44b62ab573af2c30 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 23 Jul 2024 14:38:58 -0700 Subject: [PATCH 05/38] add all json scalar things need to be implemented, need to add tests and support json idl attribute access Signed-off-by: Future-Outlier --- .../clients/go/coreutils/extract_literal.go | 2 ++ flyteidl/clients/go/coreutils/literals.go | 18 ++++++++++++++++ .../clients/go/coreutils/literals_test.go | 21 +++++++++++++++++++ .../pkg/compiler/validators/utils.go | 2 ++ 4 files changed, 43 insertions(+) diff --git a/flyteidl/clients/go/coreutils/extract_literal.go b/flyteidl/clients/go/coreutils/extract_literal.go index 5801296dc3..d3b38816dc 100644 --- a/flyteidl/clients/go/coreutils/extract_literal.go +++ b/flyteidl/clients/go/coreutils/extract_literal.go @@ -62,6 +62,8 @@ func ExtractFromLiteral(literal *core.Literal) (interface{}, error) { return scalarValue.Generic, nil case *core.Scalar_StructuredDataset: return scalarValue.StructuredDataset.Uri, nil + case *core.Scalar_Json: + return scalarValue.Json.Value, nil case *core.Scalar_Union: // extract the value of the union but not the actual union object extractedVal, err := ExtractFromLiteral(scalarValue.Union.Value) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index 3527ac246b..65780fbea7 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -250,6 +250,18 @@ func MakeDefaultLiteralForType(typ *core.LiteralType) (*core.Literal, error) { }, }, }, nil + case core.SimpleType_JSON: + return &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: []byte("{}"), + }, + }, + }, + }, + }, nil } return nil, errors.Errorf("Not yet implemented. Default creation is not yet implemented for [%s] ", t.Simple.String()) case *core.LiteralType_Blob: @@ -385,6 +397,12 @@ func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error scalar.Value = &core.Scalar_Generic{ Generic: st, } + case core.SimpleType_JSON: + scalar.Value = &core.Scalar_Json{ + Json: &core.Json{ + Value: []byte(s), + }, + } case core.SimpleType_BINARY: scalar.Value = &core.Scalar_Binary{ Binary: &core.Binary{ diff --git a/flyteidl/clients/go/coreutils/literals_test.go b/flyteidl/clients/go/coreutils/literals_test.go index 24a0af4865..35bd464cee 100644 --- a/flyteidl/clients/go/coreutils/literals_test.go +++ b/flyteidl/clients/go/coreutils/literals_test.go @@ -444,6 +444,27 @@ func TestMakeLiteralForType(t *testing.T) { assert.Equal(t, expectedVal, actualVal) }) + t.Run("SimpleJson", func(t *testing.T) { + var literalType = &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_JSON}} + input := `{"key": "value"}` + val, err := MakeLiteralForType(literalType, input) + assert.NoError(t, err) + literalVal := &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: []byte(input), + }, + }, + }, + }, + } + expectedVal, _ := ExtractFromLiteral(literalVal) + actualVal, _ := ExtractFromLiteral(val) + assert.Equal(t, expectedVal, actualVal) + }) + t.Run("ArrayStrings", func(t *testing.T) { var literalType = &core.LiteralType{Type: &core.LiteralType_CollectionType{ CollectionType: &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_STRING}}}} diff --git a/flytepropeller/pkg/compiler/validators/utils.go b/flytepropeller/pkg/compiler/validators/utils.go index 5f41a6e65e..2ecc34a68b 100644 --- a/flytepropeller/pkg/compiler/validators/utils.go +++ b/flytepropeller/pkg/compiler/validators/utils.go @@ -79,6 +79,8 @@ func literalTypeForScalar(scalar *core.Scalar) *core.LiteralType { }, }, } + case *core.Scalar_Json: + literalType = &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_JSON}} default: return nil } From a503b8b66a73f14b47a23beeee357d54a15aa8bb Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 5 Aug 2024 14:08:03 +0800 Subject: [PATCH 06/38] support upstream STRUCT downstream JSON case Signed-off-by: Future-Outlier --- flytepropeller/pkg/compiler/validators/typing.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flytepropeller/pkg/compiler/validators/typing.go b/flytepropeller/pkg/compiler/validators/typing.go index 2bde60b47b..a1a23dadd8 100644 --- a/flytepropeller/pkg/compiler/validators/typing.go +++ b/flytepropeller/pkg/compiler/validators/typing.go @@ -44,6 +44,10 @@ func (t trivialChecker) CastsFrom(upstreamType *flyte.LiteralType) bool { downstreamTypeCopy.Metadata = &structpb.Struct{} upstreamTypeCopy.Annotation = &flyte.TypeAnnotation{} downstreamTypeCopy.Annotation = &flyte.TypeAnnotation{} + // Handle upstream: STRUCT, downstream JSON + if upstreamTypeCopy.GetSimple() == flyte.SimpleType_STRUCT && downstreamTypeCopy.GetSimple() == flyte.SimpleType_JSON { + return true + } return upstreamTypeCopy.String() == downstreamTypeCopy.String() } From 0b32845e92cfe354c197ddf5ae3c8605a17f079b Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 6 Aug 2024 09:55:45 +0800 Subject: [PATCH 07/38] make idl correct back Signed-off-by: Future-Outlier --- flyteidl/clients/go/assets/admin.swagger.json | 3 ++- flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts | 6 +++--- flyteidl/gen/pb-go/flyteidl/core/literals.pb.go | 8 ++++---- .../cacheservice/cacheservice.swagger.json | 3 ++- .../flyteidl/datacatalog/datacatalog.swagger.json | 3 ++- .../gateway/flyteidl/service/admin.swagger.json | 3 ++- .../gateway/flyteidl/service/agent.swagger.json | 3 ++- .../flyteidl/service/dataproxy.swagger.json | 3 ++- .../service/external_plugin_service.swagger.json | 3 ++- .../gateway/flyteidl/service/signal.swagger.json | 3 ++- flyteidl/gen/pb-js/flyteidl.d.ts | 4 ++-- flyteidl/gen/pb-js/flyteidl.js | 14 +++++++------- .../gen/pb_python/flyteidl/core/literals_pb2.py | 2 +- .../gen/pb_python/flyteidl/core/literals_pb2.pyi | 4 ++-- flyteidl/gen/pb_rust/flyteidl.core.rs | 4 ++-- flyteidl/protos/flyteidl/core/literals.proto | 2 +- 16 files changed, 38 insertions(+), 30 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 320ff7d71b..1ec9b9b8f0 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -7328,7 +7328,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts index cf11847639..b8731989fb 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts @@ -258,9 +258,9 @@ export class Binary extends Message { */ export class Json extends Message { /** - * @generated from field: string value = 1; + * @generated from field: bytes value = 1; */ - value = ""; + value = new Uint8Array(0); constructor(data?: PartialMessage) { super(); @@ -270,7 +270,7 @@ export class Json extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "flyteidl.core.Json"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 1, name: "value", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Json { diff --git a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go index a86400b965..19fba29cd0 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go @@ -370,7 +370,7 @@ type Json struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } func (x *Json) Reset() { @@ -405,11 +405,11 @@ func (*Json) Descriptor() ([]byte, []int) { return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{5} } -func (x *Json) GetValue() string { +func (x *Json) GetValue() []byte { if x != nil { return x.Value } - return "" + return nil } // A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. @@ -1519,7 +1519,7 @@ var file_flyteidl_core_literals_proto_rawDesc = []byte{ 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1c, 0x0a, 0x04, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x49, 0x0a, 0x06, 0x53, 0x63, 0x68, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x49, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json index 521644148c..8d3c7bcd09 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json @@ -206,7 +206,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json index 759d40585f..3ef22e5da2 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json @@ -150,7 +150,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json index 320ff7d71b..1ec9b9b8f0 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -7328,7 +7328,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json index 22fc3bfc23..c065b698bc 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -1183,7 +1183,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json index 876375da5f..008ef09826 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json @@ -266,7 +266,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json index 658b3fc9e8..9e9e6b3f56 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json @@ -499,7 +499,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json index f0cd2eb056..8adcab718d 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json @@ -342,7 +342,8 @@ "type": "object", "properties": { "value": { - "type": "string" + "type": "string", + "format": "byte" } } }, diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 2367dffd81..e2a189711a 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -3049,7 +3049,7 @@ export namespace flyteidl { interface IJson { /** Json value */ - value?: (string|null); + value?: (Uint8Array|null); } /** Represents a Json. */ @@ -3062,7 +3062,7 @@ export namespace flyteidl { constructor(properties?: flyteidl.core.IJson); /** Json value. */ - public value: string; + public value: Uint8Array; /** * Creates a new Json instance using the specified properties. diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index bb63bf67c2..4792af473e 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -7280,7 +7280,7 @@ * Properties of a Json. * @memberof flyteidl.core * @interface IJson - * @property {string|null} [value] Json value + * @property {Uint8Array|null} [value] Json value */ /** @@ -7300,11 +7300,11 @@ /** * Json value. - * @member {string} value + * @member {Uint8Array} value * @memberof flyteidl.core.Json * @instance */ - Json.prototype.value = ""; + Json.prototype.value = $util.newBuffer([]); /** * Creates a new Json instance using the specified properties. @@ -7331,7 +7331,7 @@ if (!writer) writer = $Writer.create(); if (message.value != null && message.hasOwnProperty("value")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); return writer; }; @@ -7354,7 +7354,7 @@ var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.string(); + message.value = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -7376,8 +7376,8 @@ if (typeof message !== "object" || message === null) return "object expected"; if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isString(message.value)) - return "value: string expected"; + if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) + return "value: buffer expected"; return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py index 787e835eef..a92580cddb 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py @@ -17,7 +17,7 @@ from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"\x1c\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\tR\x05value\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xc9\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"\x1c\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xc9\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi index 5cbe719c63..3907294e65 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi @@ -54,8 +54,8 @@ class Binary(_message.Message): class Json(_message.Message): __slots__ = ["value"] VALUE_FIELD_NUMBER: _ClassVar[int] - value: str - def __init__(self, value: _Optional[str] = ...) -> None: ... + value: bytes + def __init__(self, value: _Optional[bytes] = ...) -> None: ... class Schema(_message.Message): __slots__ = ["uri", "type"] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index efe9a1a536..ac9f8cf28b 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -410,8 +410,8 @@ pub struct Binary { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Json { - #[prost(string, tag="1")] - pub value: ::prost::alloc::string::String, + #[prost(bytes="vec", tag="1")] + pub value: ::prost::alloc::vec::Vec, } /// A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/protos/flyteidl/core/literals.proto b/flyteidl/protos/flyteidl/core/literals.proto index 1bbf6876e1..588f5b91eb 100644 --- a/flyteidl/protos/flyteidl/core/literals.proto +++ b/flyteidl/protos/flyteidl/core/literals.proto @@ -47,7 +47,7 @@ message Binary { } message Json { - string value = 1; + bytes value = 1; } // A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. From 1dcfbc488c6d7e30bbe06f972da4779993279542 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 7 Aug 2024 09:52:53 +0800 Subject: [PATCH 08/38] support attribute access Signed-off-by: Future-Outlier --- flytepropeller/go.mod | 2 + flytepropeller/go.sum | 4 + .../controller/nodes/attr_path_resolver.go | 97 +++++++++++++++++-- go.mod | 3 + go.sum | 4 + 5 files changed, 104 insertions(+), 6 deletions(-) diff --git a/flytepropeller/go.mod b/flytepropeller/go.mod index 5d828f9e9b..358e4c7966 100644 --- a/flytepropeller/go.mod +++ b/flytepropeller/go.mod @@ -25,6 +25,7 @@ require ( github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 + github.com/vmihailenco/msgpack/v5 v5.4.1 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 go.opentelemetry.io/otel v1.24.0 go.opentelemetry.io/otel/trace v1.24.0 @@ -123,6 +124,7 @@ require ( github.com/spf13/viper v1.11.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.2.0 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect diff --git a/flytepropeller/go.sum b/flytepropeller/go.sum index 8bbdd06eba..cba516732a 100644 --- a/flytepropeller/go.sum +++ b/flytepropeller/go.sum @@ -407,6 +407,10 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index 42150cb887..79d6ef8b6f 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -1,10 +1,12 @@ package nodes import ( - "google.golang.org/protobuf/types/known/structpb" - + "encoding/json" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/errors" + "github.com/vmihailenco/msgpack/v5" + "google.golang.org/protobuf/types/known/structpb" + "strings" ) // resolveAttrPathInPromise resolves the literal with attribute path @@ -12,7 +14,6 @@ import ( func resolveAttrPathInPromise(nodeID string, literal *core.Literal, bindAttrPath []*core.PromiseAttribute) (*core.Literal, error) { var currVal *core.Literal = literal var tmpVal *core.Literal - var err error var exist bool count := 0 @@ -38,13 +39,19 @@ func resolveAttrPathInPromise(nodeID string, literal *core.Literal, bindAttrPath } // resolve dataclass - if currVal.GetScalar() != nil && currVal.GetScalar().GetGeneric() != nil { - st := currVal.GetScalar().GetGeneric() + if scalar := currVal.GetScalar(); scalar != nil { // start from index "count" - currVal, err = resolveAttrPathInPbStruct(nodeID, st, bindAttrPath[count:]) + var err error + + if json := scalar.GetJson(); json != nil { + currVal, err = resolveAttrPathInJson(nodeID, json.GetValue(), bindAttrPath[count:]) + } else if generic := scalar.GetGeneric(); generic != nil { + currVal, err = resolveAttrPathInPbStruct(nodeID, generic, bindAttrPath[count:]) + } if err != nil { return nil, err } + } return currVal, nil @@ -84,6 +91,82 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath return literal, err } +// resolveAttrPathInJson resolves the msgpack bytes (e.g. dataclass) with attribute path +func resolveAttrPathInJson(nodeID string, json_byte []byte, bindAttrPath []*core.PromiseAttribute) (*core.Literal, + error) { + + var currVal interface{} + var tmpVal interface{} + var exist bool + var jsonStr string + + err := msgpack.Unmarshal(json_byte, &jsonStr) + if err != nil { + return nil, err + } + + // Golang has problem with unmarshalling integer as float64 + // reference: https://stackoverflow.com/questions/22343083/json-unmarshaling-with-long-numbers-gives-floating-point-number + + decoder := json.NewDecoder(strings.NewReader(jsonStr)) + decoder.UseNumber() + err = decoder.Decode(&tmpVal) + if err != nil { + return nil, err + } + currVal = convertNumbers(tmpVal) + + // Turn the current value to a map so it can be resolved more easily + for _, attr := range bindAttrPath { + switch resolvedVal := currVal.(type) { + // map + case map[string]interface{}: + tmpVal, exist = resolvedVal[attr.GetStringValue()] + if !exist { + return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, "key [%v] does not exist in literal %v", attr.GetStringValue(), currVal) + } + currVal = tmpVal + // list + case []interface{}: + if int(attr.GetIntValue()) >= len(resolvedVal) { + return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, "index [%v] is out of range of %v", attr.GetIntValue(), currVal) + } + currVal = resolvedVal[attr.GetIntValue()] + } + } + + // After resolve, convert the interface to literal + literal, err := convertInterfaceToLiteral(nodeID, currVal) + + return literal, err +} + +// convertNumbers recursively converts json.Number to int64 or float64 +func convertNumbers(v interface{}) interface{} { + switch vv := v.(type) { + case map[string]interface{}: + for key, value := range vv { + vv[key] = convertNumbers(value) + } + return vv + case []interface{}: + for i, value := range vv { + vv[i] = convertNumbers(value) + } + return vv + case json.Number: + // Try to convert to int64 first + if intVal, err := vv.Int64(); err == nil { + return intVal + } + // If it fails, fall back to float64 + if floatVal, err := vv.Float64(); err == nil { + return floatVal + } + } + return v +} + // convertInterfaceToLiteral converts the protobuf struct (e.g. dataclass) to literal func convertInterfaceToLiteral(nodeID string, obj interface{}) (*core.Literal, error) { @@ -137,6 +220,8 @@ func convertInterfaceToLiteralScalar(nodeID string, obj interface{}) (*core.Lite value.Value = &core.Primitive_StringValue{StringValue: obj} case int: value.Value = &core.Primitive_Integer{Integer: int64(obj)} + case int64: + value.Value = &core.Primitive_Integer{Integer: obj} case float64: value.Value = &core.Primitive_FloatValue{FloatValue: obj} case bool: diff --git a/go.mod b/go.mod index 3a7098d3c0..d0709feb20 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( golang.org/x/sync v0.7.0 gorm.io/driver/postgres v1.5.3 sigs.k8s.io/controller-runtime v0.16.3 + ) require ( @@ -177,6 +178,8 @@ require ( github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/sjson v1.2.5 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect; indirects + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/wI2L/jsondiff v0.5.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect diff --git a/go.sum b/go.sum index 05db1b9c1c..f2b201cdeb 100644 --- a/go.sum +++ b/go.sum @@ -1331,6 +1331,10 @@ github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IA github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/wI2L/jsondiff v0.5.0 h1:RRMTi/mH+R2aXcPe1VYyvGINJqQfC3R+KSEakuU1Ikw= github.com/wI2L/jsondiff v0.5.0/go.mod h1:qqG6hnK0Lsrz2BpIVCxWiK9ItsBCpIZQiv0izJjOZ9s= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= From d5d7b798155356ca77e5cce1267ae0d9945b1b20 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Thu, 8 Aug 2024 18:52:27 +0800 Subject: [PATCH 09/38] fix attribute access for nested dict/dataclass Signed-off-by: Future-Outlier --- .../pkg/controller/nodes/attr_path_resolver.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index 79d6ef8b6f..204b0d7190 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -174,14 +174,20 @@ func convertInterfaceToLiteral(nodeID string, obj interface{}) (*core.Literal, e switch obj := obj.(type) { case map[string]interface{}: - newSt, err := structpb.NewStruct(obj) + jsonBytes, err := json.Marshal(obj) + if err != nil { + return nil, err + } + jsonBytes, err = msgpack.Marshal(jsonBytes) if err != nil { return nil, err } literal.Value = &core.Literal_Scalar{ Scalar: &core.Scalar{ - Value: &core.Scalar_Generic{ - Generic: newSt, + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: jsonBytes, + }, }, }, } From c7c82ac70946cff2027411ba38e272ae48bb14c2 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Thu, 8 Aug 2024 19:31:36 +0800 Subject: [PATCH 10/38] Create Execution Success, need to implement get Execution Signed-off-by: Future-Outlier --- flytectl/go.mod | 2 ++ flytectl/go.sum | 4 ++++ .../clients/go/coreutils/extract_literal.go | 2 +- flyteidl/clients/go/coreutils/literals.go | 22 +++++++++++++++---- flyteidl/go.mod | 2 ++ flyteidl/go.sum | 4 ++++ 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/flytectl/go.mod b/flytectl/go.mod index 9e4baeea63..f0bba9f2f8 100644 --- a/flytectl/go.mod +++ b/flytectl/go.mod @@ -150,6 +150,8 @@ require ( github.com/spf13/viper v1.11.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.2.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect diff --git a/flytectl/go.sum b/flytectl/go.sum index 1e3b5d7ef8..5b76bf5814 100644 --- a/flytectl/go.sum +++ b/flytectl/go.sum @@ -457,6 +457,10 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/flyteidl/clients/go/coreutils/extract_literal.go b/flyteidl/clients/go/coreutils/extract_literal.go index d3b38816dc..3edb31d5a5 100644 --- a/flyteidl/clients/go/coreutils/extract_literal.go +++ b/flyteidl/clients/go/coreutils/extract_literal.go @@ -63,7 +63,7 @@ func ExtractFromLiteral(literal *core.Literal) (interface{}, error) { case *core.Scalar_StructuredDataset: return scalarValue.StructuredDataset.Uri, nil case *core.Scalar_Json: - return scalarValue.Json.Value, nil + return scalarValue.Json, nil case *core.Scalar_Union: // extract the value of the union but not the actual union object extractedVal, err := ExtractFromLiteral(scalarValue.Union.Value) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index 65780fbea7..c2962d7cda 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -4,19 +4,19 @@ package coreutils import ( "encoding/json" "fmt" + "github.com/vmihailenco/msgpack/v5" "math" "reflect" "strconv" "strings" "time" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" + "github.com/flyteorg/flyte/flytestdlib/storage" "github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/ptypes" structpb "github.com/golang/protobuf/ptypes/struct" "github.com/pkg/errors" - - "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" - "github.com/flyteorg/flyte/flytestdlib/storage" ) func MakePrimitive(v interface{}) (*core.Primitive, error) { @@ -256,7 +256,7 @@ func MakeDefaultLiteralForType(typ *core.LiteralType) (*core.Literal, error) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: []byte("{}"), + Value: []byte(""), }, }, }, @@ -398,6 +398,7 @@ func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error Generic: st, } case core.SimpleType_JSON: + fmt.Println("@@@ JSON STRING: ", s) scalar.Value = &core.Scalar_Json{ Json: &core.Json{ Value: []byte(s), @@ -585,6 +586,19 @@ func MakeLiteralForType(t *core.LiteralType, v interface{}) (*core.Literal, erro strValue = string(byteValue) } } + if newT.Simple == core.SimpleType_JSON { + if _, isValueStringType := v.(string); !isValueStringType { + jsonBytes, err := json.Marshal(v) + if err != nil { + return nil, fmt.Errorf("unable to marshal to json string for json value %v", v) + } + jsonBytes, err = msgpack.Marshal(jsonBytes) + if err != nil { + return nil, fmt.Errorf("unable to marshal to msgpack bytes for json value %v", v) + } + strValue = string(jsonBytes) + } + } lv, err := MakeLiteralForSimpleType(newT.Simple, strValue) if err != nil { return nil, err diff --git a/flyteidl/go.mod b/flyteidl/go.mod index 55ec124554..65bf6dc392 100644 --- a/flyteidl/go.mod +++ b/flyteidl/go.mod @@ -83,6 +83,8 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/stretchr/objx v0.5.2 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect diff --git a/flyteidl/go.sum b/flyteidl/go.sum index 5d5cb7e9a2..25d4cc402d 100644 --- a/flyteidl/go.sum +++ b/flyteidl/go.sum @@ -241,6 +241,10 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= From 00d6e2ba9f7ef17282e8678ca4fb2a0e293a0d1e Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Thu, 8 Aug 2024 20:56:33 +0800 Subject: [PATCH 11/38] remove print Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/literals.go | 1 - 1 file changed, 1 deletion(-) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index c2962d7cda..e710a55a38 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -398,7 +398,6 @@ func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error Generic: st, } case core.SimpleType_JSON: - fmt.Println("@@@ JSON STRING: ", s) scalar.Value = &core.Scalar_Json{ Json: &core.Json{ Value: []byte(s), From a005a2d739e00478370d022412b7dd32ec967c40 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Thu, 8 Aug 2024 22:10:41 +0800 Subject: [PATCH 12/38] Use scalarValue.Json.GetValue() Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/extract_literal.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flyteidl/clients/go/coreutils/extract_literal.go b/flyteidl/clients/go/coreutils/extract_literal.go index 3edb31d5a5..9ef554f04c 100644 --- a/flyteidl/clients/go/coreutils/extract_literal.go +++ b/flyteidl/clients/go/coreutils/extract_literal.go @@ -63,7 +63,7 @@ func ExtractFromLiteral(literal *core.Literal) (interface{}, error) { case *core.Scalar_StructuredDataset: return scalarValue.StructuredDataset.Uri, nil case *core.Scalar_Json: - return scalarValue.Json, nil + return scalarValue.Json.GetValue(), nil case *core.Scalar_Union: // extract the value of the union but not the actual union object extractedVal, err := ExtractFromLiteral(scalarValue.Union.Value) From 7ece699b319ad3733ed390a647b3b29decdc0218 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Fri, 9 Aug 2024 23:16:54 +0800 Subject: [PATCH 13/38] fix flyteadmin tests Signed-off-by: Future-Outlier --- flyteadmin/go.mod | 2 + flyteadmin/go.sum | 4 ++ .../controller/nodes/attr_path_resolver.go | 50 ++++++++++++------- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/flyteadmin/go.mod b/flyteadmin/go.mod index ac74384250..b7d4364542 100644 --- a/flyteadmin/go.mod +++ b/flyteadmin/go.mod @@ -175,6 +175,8 @@ require ( github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/sjson v1.2.5 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect diff --git a/flyteadmin/go.sum b/flyteadmin/go.sum index dba9da2e86..1e8e7cc367 100644 --- a/flyteadmin/go.sum +++ b/flyteadmin/go.sum @@ -1295,6 +1295,10 @@ github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f/go.mod h1:mnPT77IA github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/wI2L/jsondiff v0.5.0 h1:RRMTi/mH+R2aXcPe1VYyvGINJqQfC3R+KSEakuU1Ikw= github.com/wI2L/jsondiff v0.5.0/go.mod h1:qqG6hnK0Lsrz2BpIVCxWiK9ItsBCpIZQiv0izJjOZ9s= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index 204b0d7190..cec6c35dce 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -86,7 +86,7 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath } // After resolve, convert the interface to literal - literal, err := convertInterfaceToLiteral(nodeID, currVal) + literal, err := convertInterfaceToLiteral(nodeID, currVal, false) return literal, err } @@ -136,7 +136,7 @@ func resolveAttrPathInJson(nodeID string, json_byte []byte, bindAttrPath []*core } // After resolve, convert the interface to literal - literal, err := convertInterfaceToLiteral(nodeID, currVal) + literal, err := convertInterfaceToLiteral(nodeID, currVal, true) return literal, err } @@ -168,34 +168,48 @@ func convertNumbers(v interface{}) interface{} { } // convertInterfaceToLiteral converts the protobuf struct (e.g. dataclass) to literal -func convertInterfaceToLiteral(nodeID string, obj interface{}) (*core.Literal, error) { +func convertInterfaceToLiteral(nodeID string, obj interface{}, isJson bool) (*core.Literal, error) { literal := &core.Literal{} switch obj := obj.(type) { case map[string]interface{}: - jsonBytes, err := json.Marshal(obj) - if err != nil { - return nil, err - } - jsonBytes, err = msgpack.Marshal(jsonBytes) - if err != nil { - return nil, err - } - literal.Value = &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Json{ - Json: &core.Json{ - Value: jsonBytes, + if isJson { + jsonBytes, err := json.Marshal(obj) + if err != nil { + return nil, err + } + jsonBytes, err = msgpack.Marshal(jsonBytes) + if err != nil { + return nil, err + } + literal.Value = &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: jsonBytes, + }, }, }, - }, + } + } else { + newSt, err := structpb.NewStruct(obj) + if err != nil { + return nil, err + } + literal.Value = &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Generic{ + Generic: newSt, + }, + }, + } } case []interface{}: literals := []*core.Literal{} for _, v := range obj { // recursively convert the interface to literal - literal, err := convertInterfaceToLiteral(nodeID, v) + literal, err := convertInterfaceToLiteral(nodeID, v, isJson) if err != nil { return nil, err } From b3543e58fd3190b812380932bd257a69102e7aa6 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 26 Aug 2024 18:11:21 +0800 Subject: [PATCH 14/38] regenerate proto Signed-off-by: Future-Outlier --- flyteidl/gen/pb_rust/datacatalog.rs | 9 ++-- flyteidl/gen/pb_rust/flyteidl.admin.rs | 49 ++++++++++--------- flyteidl/gen/pb_rust/flyteidl.cacheservice.rs | 7 +-- flyteidl/gen/pb_rust/flyteidl.core.rs | 41 ++++++++-------- flyteidl/gen/pb_rust/flyteidl.event.rs | 1 + .../gen/pb_rust/flyteidl.plugins.kubeflow.rs | 3 +- flyteidl/gen/pb_rust/flyteidl.plugins.rs | 11 +++-- flyteidl/gen/pb_rust/flyteidl.service.rs | 9 ++-- 8 files changed, 69 insertions(+), 61 deletions(-) diff --git a/flyteidl/gen/pb_rust/datacatalog.rs b/flyteidl/gen/pb_rust/datacatalog.rs index f181704954..b49cab340c 100644 --- a/flyteidl/gen/pb_rust/datacatalog.rs +++ b/flyteidl/gen/pb_rust/datacatalog.rs @@ -1,4 +1,5 @@ // @generated +// This file is @generated by prost-build. /// /// Request message for creating a Dataset. #[allow(clippy::derive_partial_eq_without_eq)] @@ -10,7 +11,7 @@ pub struct CreateDatasetRequest { /// /// Response message for creating a Dataset #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct CreateDatasetResponse { } /// @@ -74,7 +75,7 @@ pub struct CreateArtifactRequest { /// /// Response message for creating an Artifact. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct CreateArtifactResponse { } /// @@ -88,7 +89,7 @@ pub struct AddTagRequest { /// /// Response message for tagging an Artifact. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct AddTagResponse { } /// List the artifacts that belong to the Dataset, optionally filtered using filtered expression. @@ -245,7 +246,7 @@ pub struct ReleaseReservationRequest { } /// Response to release reservation #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ReleaseReservationResponse { } /// diff --git a/flyteidl/gen/pb_rust/flyteidl.admin.rs b/flyteidl/gen/pb_rust/flyteidl.admin.rs index dcbf3b5df7..f2e779dcc5 100644 --- a/flyteidl/gen/pb_rust/flyteidl.admin.rs +++ b/flyteidl/gen/pb_rust/flyteidl.admin.rs @@ -1,4 +1,5 @@ // @generated +// This file is @generated by prost-build. /// Represents a subset of runtime task execution metadata that are relevant to external plugins. /// /// ID of the task execution @@ -194,7 +195,7 @@ pub struct DeleteTaskRequest { } /// Response to delete a task. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DeleteTaskResponse { } /// A message containing the agent metadata. @@ -246,7 +247,7 @@ pub struct GetAgentResponse { } /// A request to list all agents. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ListAgentsRequest { } /// A response containing a list of agents. @@ -608,7 +609,7 @@ pub struct NamedEntityUpdateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct NamedEntityUpdateResponse { } /// Shared request structure to fetch a single resource. @@ -1003,7 +1004,7 @@ pub struct WorkflowExecutionEventRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WorkflowExecutionEventResponse { } /// Request to send a notification that a node execution event has occurred. @@ -1019,7 +1020,7 @@ pub struct NodeExecutionEventRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct NodeExecutionEventResponse { } /// Request to send a notification that a task execution event has occurred. @@ -1035,7 +1036,7 @@ pub struct TaskExecutionEventRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct TaskExecutionEventResponse { } /// Defines a set of overridable task resource attributes set during task registration. @@ -1717,7 +1718,7 @@ pub struct ExecutionTerminateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ExecutionTerminateResponse { } /// Request structure to fetch inputs, output and other data produced by an execution. @@ -1774,7 +1775,7 @@ pub struct ExecutionStateChangeDetails { pub principal: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ExecutionUpdateResponse { } /// WorkflowExecutionGetMetricsRequest represents a request to retrieve metrics for the specified workflow execution. @@ -1828,7 +1829,7 @@ impl ExecutionState { } /// Option for schedules run at a certain frequency e.g. every 2 minutes. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct FixedRate { #[prost(uint32, tag="1")] pub value: u32, @@ -1919,7 +1920,7 @@ pub struct LaunchPlanCreateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct LaunchPlanCreateResponse { } /// A LaunchPlan provides the capability to templatize workflow executions. @@ -2084,7 +2085,7 @@ pub struct LaunchPlanUpdateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct LaunchPlanUpdateResponse { } /// Represents a request struct for finding an active launch plan for a given NamedEntityIdentifier @@ -2460,7 +2461,7 @@ pub struct EmailMessage { } /// Empty request for GetDomain #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct GetDomainRequest { } /// Namespace within a project commonly used to differentiate between different service instances. @@ -2596,12 +2597,12 @@ pub struct ProjectRegisterRequest { } /// Purposefully empty, may be updated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ProjectRegisterResponse { } /// Purposefully empty, may be updated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ProjectUpdateResponse { } #[allow(clippy::derive_partial_eq_without_eq)] @@ -2640,7 +2641,7 @@ pub struct ProjectAttributesUpdateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ProjectAttributesUpdateResponse { } /// Request to get an individual project level attribute override. @@ -2687,7 +2688,7 @@ pub struct ProjectAttributesDeleteRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ProjectAttributesDeleteResponse { } /// Defines a set of custom matching attributes which defines resource defaults for a project and domain. @@ -2718,7 +2719,7 @@ pub struct ProjectDomainAttributesUpdateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ProjectDomainAttributesUpdateResponse { } /// Request to get an individual project domain attribute override. @@ -2773,7 +2774,7 @@ pub struct ProjectDomainAttributesDeleteRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ProjectDomainAttributesDeleteResponse { } /// SignalGetOrCreateRequest represents a request structure to retrieve or create a signal. @@ -2845,7 +2846,7 @@ pub struct SignalSetRequest { /// /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SignalSetResponse { } /// Signal encapsulates a unique identifier, associated metadata, and a value for a single Flyte @@ -2883,7 +2884,7 @@ pub struct TaskCreateRequest { /// /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct TaskCreateResponse { } /// Flyte workflows are composed of many ordered tasks. That is small, reusable, self-contained logical blocks @@ -3143,7 +3144,7 @@ pub struct Version { } /// Empty request for GetVersion #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct GetVersionRequest { } /// Represents a request structure to create a revision of a workflow. @@ -3162,7 +3163,7 @@ pub struct WorkflowCreateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WorkflowCreateResponse { } /// Represents the workflow structure stored in the Admin @@ -3283,7 +3284,7 @@ pub struct WorkflowAttributesUpdateRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WorkflowAttributesUpdateResponse { } /// Request to get an individual workflow attribute override. @@ -3345,7 +3346,7 @@ pub struct WorkflowAttributesDeleteRequest { } /// Purposefully empty, may be populated in the future. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WorkflowAttributesDeleteResponse { } // @@protoc_insertion_point(module) diff --git a/flyteidl/gen/pb_rust/flyteidl.cacheservice.rs b/flyteidl/gen/pb_rust/flyteidl.cacheservice.rs index ff3264c633..d63e4d31bf 100644 --- a/flyteidl/gen/pb_rust/flyteidl.cacheservice.rs +++ b/flyteidl/gen/pb_rust/flyteidl.cacheservice.rs @@ -1,4 +1,5 @@ // @generated +// This file is @generated by prost-build. /// /// Additional metadata as key-value pairs #[allow(clippy::derive_partial_eq_without_eq)] @@ -88,7 +89,7 @@ pub struct PutCacheRequest { /// /// Empty, success indicated by no errors #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PutCacheResponse { } /// @@ -105,7 +106,7 @@ pub struct DeleteCacheRequest { /// /// Empty, success indicated by no errors #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DeleteCacheResponse { } /// A reservation including owner, heartbeat interval, expiration timestamp, and various metadata. @@ -166,7 +167,7 @@ pub struct ReleaseReservationRequest { /// /// Empty, success indicated by no errors #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ReleaseReservationResponse { } include!("flyteidl.cacheservice.tonic.rs"); diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index ac9f8cf28b..27353a381e 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -1,4 +1,5 @@ // @generated +// This file is @generated by prost-build. /// Defines schema columns and types to strongly type-validate schemas interoperability. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -378,7 +379,7 @@ pub mod primitive { /// Used to denote a nil/null/None assignment to a scalar value. The underlying LiteralType for Void is intentionally /// undefined since it can be assigned to a scalar of any LiteralType. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Void { } /// Refers to an offloaded set of files. It encapsulates the type of the store and a unique uri for where the data is. @@ -605,7 +606,7 @@ pub struct KeyValuePair { } /// Retry strategy associated with an executable unit. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct RetryStrategy { /// Number of retries. Retries will be consumed when the job fails with a recoverable error. /// The number of retries must be less than or equals to 10. @@ -775,7 +776,7 @@ pub struct InputBindingData { pub var: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct RuntimeBinding { } #[allow(clippy::derive_partial_eq_without_eq)] @@ -1395,7 +1396,7 @@ pub mod task_metadata { /// Identify whether task is interruptible #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum InterruptibleValue { #[prost(bool, tag="8")] Interruptible(bool), @@ -1465,7 +1466,7 @@ pub mod task_template { /// Defines port properties for a container. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ContainerPort { /// Number of port to expose on the pod's IP address. /// This must be a valid port number, 0 < x < 65536. @@ -1556,7 +1557,7 @@ pub mod container { } /// Strategy to use when dealing with Blob, Schema, or multipart blob data (large datasets) #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct IoStrategy { /// Mode to use to manage downloads #[prost(enumeration="io_strategy::DownloadMode", tag="1")] @@ -1931,7 +1932,7 @@ pub mod conjunction_expression { } /// Indicates various phases of Workflow Execution #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WorkflowExecution { } /// Nested message and enum types in `WorkflowExecution`. @@ -1989,7 +1990,7 @@ pub mod workflow_execution { } /// Indicates various phases of Node Execution that only include the time spent to run the nodes/workflows #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct NodeExecution { } /// Nested message and enum types in `NodeExecution`. @@ -2051,7 +2052,7 @@ pub mod node_execution { /// Phases that task plugins can go through. Not all phases may be applicable to a specific plugin task, /// but this is the cumulative list that customers may want to know about for their task. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct TaskExecution { } /// Nested message and enum types in `TaskExecution`. @@ -2205,7 +2206,7 @@ pub mod task_log { } /// Represents customized execution run-time attributes. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct QualityOfServiceSpec { /// Indicates how much queueing delay an execution can tolerate. #[prost(message, optional, tag="1")] @@ -2213,7 +2214,7 @@ pub struct QualityOfServiceSpec { } /// Indicates the priority of an execution. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct QualityOfService { #[prost(oneof="quality_of_service::Designation", tags="1, 2")] pub designation: ::core::option::Option, @@ -2254,7 +2255,7 @@ pub mod quality_of_service { } } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum Designation { #[prost(enumeration="Tier", tag="1")] Tier(i32), @@ -2374,7 +2375,7 @@ pub struct SignalCondition { } /// SleepCondition represents a dependency on waiting for the specified duration. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SleepCondition { /// The overall duration for this sleep. #[prost(message, optional, tag="1")] @@ -2453,7 +2454,7 @@ pub mod array_node { } } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum ParallelismOption { /// parallelism defines the minimum number of instances to bring up concurrently at any given /// point. Note that this is an optimistic restriction and that, due to network partitioning or @@ -2463,7 +2464,7 @@ pub mod array_node { Parallelism(u32), } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum SuccessCriteria { /// min_successes is an absolute number of the minimum number of successful completions of /// sub-nodes. As soon as this criteria is met, the ArrayNode will be marked as successful @@ -2507,14 +2508,14 @@ pub struct NodeMetadata { pub mod node_metadata { /// Identify whether node is interruptible #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum InterruptibleValue { #[prost(bool, tag="6")] Interruptible(bool), } /// Identify whether a node should have it's outputs cached. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum CacheableValue { #[prost(bool, tag="7")] Cacheable(bool), @@ -2528,7 +2529,7 @@ pub mod node_metadata { } /// Identify whether caching operations involving this node should be serialized. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum CacheSerializableValue { #[prost(bool, tag="9")] CacheSerializable(bool), @@ -2658,7 +2659,7 @@ pub mod workflow_metadata { /// If you are adding a setting that applies to both the Workflow itself, and everything underneath it, it should be /// added to both this object and the WorkflowMetadata object above. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WorkflowMetadataDefaults { /// Whether child nodes of the workflow are interruptible. #[prost(bool, tag="1")] @@ -2889,7 +2890,7 @@ pub mod catalog_metadata { } } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct CatalogReservation { } /// Nested message and enum types in `CatalogReservation`. diff --git a/flyteidl/gen/pb_rust/flyteidl.event.rs b/flyteidl/gen/pb_rust/flyteidl.event.rs index 281ee07daa..80a8a11442 100644 --- a/flyteidl/gen/pb_rust/flyteidl.event.rs +++ b/flyteidl/gen/pb_rust/flyteidl.event.rs @@ -1,4 +1,5 @@ // @generated +// This file is @generated by prost-build. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct WorkflowExecutionEvent { diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.kubeflow.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.kubeflow.rs index 9eebb7bc9e..b2a4d69f57 100644 --- a/flyteidl/gen/pb_rust/flyteidl.plugins.kubeflow.rs +++ b/flyteidl/gen/pb_rust/flyteidl.plugins.kubeflow.rs @@ -1,6 +1,7 @@ // @generated +// This file is @generated by prost-build. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct RunPolicy { /// Defines the policy to kill pods after the job completes. Default to None. #[prost(enumeration="CleanPodPolicy", tag="1")] diff --git a/flyteidl/gen/pb_rust/flyteidl.plugins.rs b/flyteidl/gen/pb_rust/flyteidl.plugins.rs index 28c2f77e97..0252c9d882 100644 --- a/flyteidl/gen/pb_rust/flyteidl.plugins.rs +++ b/flyteidl/gen/pb_rust/flyteidl.plugins.rs @@ -1,8 +1,9 @@ // @generated +// This file is @generated by prost-build. /// Describes a job that can process independent pieces of data concurrently. Multiple copies of the runnable component /// will be executed concurrently. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ArrayJob { /// Defines the maximum number of instances to bring up concurrently at any given point. Note that this is an /// optimistic restriction and that, due to network partitioning or other failures, the actual number of currently @@ -20,7 +21,7 @@ pub struct ArrayJob { /// Nested message and enum types in `ArrayJob`. pub mod array_job { #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] +#[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum SuccessCriteria { /// An absolute number of the minimum number of successful completions of subtasks. As soon as this criteria is met, /// the array job will be marked as successful and outputs will be computed. This has to be a non-negative number if @@ -120,7 +121,7 @@ pub struct DaskWorkerGroup { /// MPI operator proposal /// Custom proto for plugin that enables distributed training using #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DistributedMpiTrainingTask { /// number of worker spawned in the cluster for this job #[prost(int32, tag="1")] @@ -277,7 +278,7 @@ pub struct WorkerGroupSpec { pub ray_start_params: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SparkApplication { } /// Nested message and enum types in `SparkApplication`. @@ -347,7 +348,7 @@ pub struct SparkJob { } /// Custom proto for plugin that enables distributed training using #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DistributedTensorflowTrainingTask { /// number of worker replicas spawned in the cluster for this job #[prost(int32, tag="1")] diff --git a/flyteidl/gen/pb_rust/flyteidl.service.rs b/flyteidl/gen/pb_rust/flyteidl.service.rs index 2fb065da4e..8c5a33de9a 100644 --- a/flyteidl/gen/pb_rust/flyteidl.service.rs +++ b/flyteidl/gen/pb_rust/flyteidl.service.rs @@ -1,6 +1,7 @@ // @generated +// This file is @generated by prost-build. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct OAuth2MetadataRequest { } /// OAuth2MetadataResponse defines an RFC-Compliant response for /.well-known/oauth-authorization-server metadata @@ -44,7 +45,7 @@ pub struct OAuth2MetadataResponse { pub device_authorization_endpoint: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PublicClientAuthConfigRequest { } /// FlyteClientResponse encapsulates public information that flyte clients (CLIs... etc.) can use to authenticate users. @@ -335,7 +336,7 @@ pub struct TaskDeleteRequest { } /// Response to delete a task. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct TaskDeleteResponse { } /// The state of the execution is used to control its visibility in the UI/CLI. @@ -375,7 +376,7 @@ impl State { } } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct UserInfoRequest { } /// See the OpenID Connect spec at for more information. From cb2876c6c3e72a2768cfb3e0a403ceec2d7ed033 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 27 Aug 2024 10:23:36 +0800 Subject: [PATCH 15/38] propeller error msg example Signed-off-by: Future-Outlier --- flytepropeller/pkg/compiler/transformers/k8s/inputs.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flytepropeller/pkg/compiler/transformers/k8s/inputs.go b/flytepropeller/pkg/compiler/transformers/k8s/inputs.go index 2d967c560e..83244bd1d8 100644 --- a/flytepropeller/pkg/compiler/transformers/k8s/inputs.go +++ b/flytepropeller/pkg/compiler/transformers/k8s/inputs.go @@ -36,6 +36,10 @@ func validateInputs(nodeID common.NodeID, iface *core.TypedInterface, inputs cor } inputType := validators.LiteralTypeForLiteral(inputVal) + if inputType == nil { + errs.Collect(errors.NewMismatchingTypesErr(nodeID, inputVar, v.Type.String(), "Unknown Type")) + continue + } if !validators.AreTypesCastable(inputType, v.Type) { errs.Collect(errors.NewMismatchingTypesErr(nodeID, inputVar, v.Type.String(), inputType.String())) continue From ded1f7cb8cd2862654168a6174be26d02cef7db5 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 27 Aug 2024 11:47:11 +0800 Subject: [PATCH 16/38] solve conlfict Signed-off-by: Future-Outlier --- .../gen/pb-go/flyteidl/core/literals.pb.go | 171 +++++++++--------- .../pb_python/flyteidl/core/literals_pb2.py | 52 +++--- 2 files changed, 113 insertions(+), 110 deletions(-) diff --git a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go index 0a2f9b90e4..eafc90897c 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go @@ -1597,7 +1597,7 @@ var file_flyteidl_core_literals_proto_rawDesc = []byte{ 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0xc9, 0x02, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2f, 0x0a, + 0x65, 0x22, 0xfa, 0x02, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x42, @@ -1613,90 +1613,93 @@ var file_flyteidl_core_literals_proto_rawDesc = []byte{ 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, - 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, - 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, 0x0d, - 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, + 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, + 0x0a, 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x4d, 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, + 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x09, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, + 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, + 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, + 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, + 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, + 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, + 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x09, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xae, - 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, - 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, - 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, - 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, - 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, - 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x48, - 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x07, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, - 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, 0x65, - 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, - 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, - 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, - 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, - 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, + 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, + 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, + 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, + 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, + 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, + 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, + 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py index a92580cddb..4d5d3db938 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py @@ -17,7 +17,7 @@ from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"\x1c\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xc9\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"\x1c\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xfa\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x12\x10\n\x03uri\x18\x06 \x01(\tR\x03uri\x12\x1d\n\nsize_bytes\x18\x07 \x01(\x04R\tsizeBytes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -55,29 +55,29 @@ _globals['_SCALAR']._serialized_start=1078 _globals['_SCALAR']._serialized_end=1617 _globals['_LITERAL']._serialized_start=1620 - _globals['_LITERAL']._serialized_end=1949 - _globals['_LITERAL_METADATAENTRY']._serialized_start=1881 - _globals['_LITERAL_METADATAENTRY']._serialized_end=1940 - _globals['_LITERALCOLLECTION']._serialized_start=1951 - _globals['_LITERALCOLLECTION']._serialized_end=2022 - _globals['_LITERALMAP']._serialized_start=2025 - _globals['_LITERALMAP']._serialized_end=2191 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2108 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2191 - _globals['_BINDINGDATACOLLECTION']._serialized_start=2193 - _globals['_BINDINGDATACOLLECTION']._serialized_end=2272 - _globals['_BINDINGDATAMAP']._serialized_start=2275 - _globals['_BINDINGDATAMAP']._serialized_end=2453 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2366 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2453 - _globals['_UNIONINFO']._serialized_start=2455 - _globals['_UNIONINFO']._serialized_end=2526 - _globals['_BINDINGDATA']._serialized_start=2529 - _globals['_BINDINGDATA']._serialized_end=2831 - _globals['_BINDING']._serialized_start=2833 - _globals['_BINDING']._serialized_end=2914 - _globals['_KEYVALUEPAIR']._serialized_start=2916 - _globals['_KEYVALUEPAIR']._serialized_end=2970 - _globals['_RETRYSTRATEGY']._serialized_start=2972 - _globals['_RETRYSTRATEGY']._serialized_end=3013 + _globals['_LITERAL']._serialized_end=1998 + _globals['_LITERAL_METADATAENTRY']._serialized_start=1930 + _globals['_LITERAL_METADATAENTRY']._serialized_end=1989 + _globals['_LITERALCOLLECTION']._serialized_start=2000 + _globals['_LITERALCOLLECTION']._serialized_end=2071 + _globals['_LITERALMAP']._serialized_start=2074 + _globals['_LITERALMAP']._serialized_end=2240 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2157 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2240 + _globals['_BINDINGDATACOLLECTION']._serialized_start=2242 + _globals['_BINDINGDATACOLLECTION']._serialized_end=2321 + _globals['_BINDINGDATAMAP']._serialized_start=2324 + _globals['_BINDINGDATAMAP']._serialized_end=2502 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2415 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2502 + _globals['_UNIONINFO']._serialized_start=2504 + _globals['_UNIONINFO']._serialized_end=2575 + _globals['_BINDINGDATA']._serialized_start=2578 + _globals['_BINDINGDATA']._serialized_end=2880 + _globals['_BINDING']._serialized_start=2882 + _globals['_BINDING']._serialized_end=2963 + _globals['_KEYVALUEPAIR']._serialized_start=2965 + _globals['_KEYVALUEPAIR']._serialized_end=3019 + _globals['_RETRYSTRATEGY']._serialized_start=3021 + _globals['_RETRYSTRATEGY']._serialized_end=3062 # @@protoc_insertion_point(module_scope) From 62b7aa41aae764a451d770e7656c153b96036367 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 27 Aug 2024 12:10:02 +0800 Subject: [PATCH 17/38] solve lint and depedency error Signed-off-by: Future-Outlier --- flytecopilot/go.mod | 2 ++ flytecopilot/go.sum | 4 ++++ flyteidl/clients/go/coreutils/literals.go | 3 ++- flyteplugins/go.mod | 2 ++ flyteplugins/go.sum | 4 ++++ .../controller/nodes/attr_path_resolver.go | 22 ++++++++++--------- 6 files changed, 26 insertions(+), 11 deletions(-) diff --git a/flytecopilot/go.mod b/flytecopilot/go.mod index e1dbdc7683..2f148da127 100644 --- a/flytecopilot/go.mod +++ b/flytecopilot/go.mod @@ -89,6 +89,8 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.11.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect diff --git a/flytecopilot/go.sum b/flytecopilot/go.sum index 9fb93ec715..6cf6fa668e 100644 --- a/flytecopilot/go.sum +++ b/flytecopilot/go.sum @@ -344,6 +344,10 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index e710a55a38..2a88881aeb 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -4,13 +4,14 @@ package coreutils import ( "encoding/json" "fmt" - "github.com/vmihailenco/msgpack/v5" "math" "reflect" "strconv" "strings" "time" + "github.com/vmihailenco/msgpack/v5" + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flytestdlib/storage" "github.com/golang/protobuf/jsonpb" diff --git a/flyteplugins/go.mod b/flyteplugins/go.mod index c4287581bc..2cf730b5cf 100644 --- a/flyteplugins/go.mod +++ b/flyteplugins/go.mod @@ -116,6 +116,8 @@ require ( github.com/spf13/viper v1.11.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.2.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect diff --git a/flyteplugins/go.sum b/flyteplugins/go.sum index fa26e3cfda..6cd76df01d 100644 --- a/flyteplugins/go.sum +++ b/flyteplugins/go.sum @@ -375,6 +375,10 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index cec6c35dce..84c4596550 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -2,11 +2,13 @@ package nodes import ( "encoding/json" - "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" - "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/errors" + "strings" + "github.com/vmihailenco/msgpack/v5" "google.golang.org/protobuf/types/known/structpb" - "strings" + + "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" + "github.com/flyteorg/flyte/flytepropeller/pkg/controller/nodes/errors" ) // resolveAttrPathInPromise resolves the literal with attribute path @@ -44,7 +46,7 @@ func resolveAttrPathInPromise(nodeID string, literal *core.Literal, bindAttrPath var err error if json := scalar.GetJson(); json != nil { - currVal, err = resolveAttrPathInJson(nodeID, json.GetValue(), bindAttrPath[count:]) + currVal, err = resolveAttrPathInJSON(nodeID, json.GetValue(), bindAttrPath[count:]) } else if generic := scalar.GetGeneric(); generic != nil { currVal, err = resolveAttrPathInPbStruct(nodeID, generic, bindAttrPath[count:]) } @@ -91,8 +93,8 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath return literal, err } -// resolveAttrPathInJson resolves the msgpack bytes (e.g. dataclass) with attribute path -func resolveAttrPathInJson(nodeID string, json_byte []byte, bindAttrPath []*core.PromiseAttribute) (*core.Literal, +// resolveAttrPathInJSON resolves the msgpack bytes (e.g. dataclass) with attribute path +func resolveAttrPathInJSON(nodeID string, jsonByte []byte, bindAttrPath []*core.PromiseAttribute) (*core.Literal, error) { var currVal interface{} @@ -100,7 +102,7 @@ func resolveAttrPathInJson(nodeID string, json_byte []byte, bindAttrPath []*core var exist bool var jsonStr string - err := msgpack.Unmarshal(json_byte, &jsonStr) + err := msgpack.Unmarshal(jsonByte, &jsonStr) if err != nil { return nil, err } @@ -168,13 +170,13 @@ func convertNumbers(v interface{}) interface{} { } // convertInterfaceToLiteral converts the protobuf struct (e.g. dataclass) to literal -func convertInterfaceToLiteral(nodeID string, obj interface{}, isJson bool) (*core.Literal, error) { +func convertInterfaceToLiteral(nodeID string, obj interface{}, isJSON bool) (*core.Literal, error) { literal := &core.Literal{} switch obj := obj.(type) { case map[string]interface{}: - if isJson { + if isJSON { jsonBytes, err := json.Marshal(obj) if err != nil { return nil, err @@ -209,7 +211,7 @@ func convertInterfaceToLiteral(nodeID string, obj interface{}, isJson bool) (*co literals := []*core.Literal{} for _, v := range obj { // recursively convert the interface to literal - literal, err := convertInterfaceToLiteral(nodeID, v, isJson) + literal, err := convertInterfaceToLiteral(nodeID, v, isJSON) if err != nil { return nil, err } From e44d309567ac2e8c1b6088e4c3c36ec7ed1c1406 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Tue, 27 Aug 2024 12:15:08 +0800 Subject: [PATCH 18/38] make go-tidy Signed-off-by: Future-Outlier --- flyteidl/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flyteidl/go.mod b/flyteidl/go.mod index 65bf6dc392..811040d350 100644 --- a/flyteidl/go.mod +++ b/flyteidl/go.mod @@ -15,6 +15,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 + github.com/vmihailenco/msgpack/v5 v5.4.1 golang.org/x/net v0.27.0 golang.org/x/oauth2 v0.16.0 google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 @@ -83,7 +84,6 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect From b099d061569aa1c6b5a370ba8d82d9b07373f4eb Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 28 Aug 2024 11:58:31 +0800 Subject: [PATCH 19/38] add tests for flyteidl/clients/go/coreutils/literals.go Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/literals.go | 8 ++-- .../clients/go/coreutils/literals_test.go | 41 ++++++++++++++++--- 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index 2a88881aeb..edad60663c 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -590,13 +590,13 @@ func MakeLiteralForType(t *core.LiteralType, v interface{}) (*core.Literal, erro if _, isValueStringType := v.(string); !isValueStringType { jsonBytes, err := json.Marshal(v) if err != nil { - return nil, fmt.Errorf("unable to marshal to json string for json value %v", v) + return nil, fmt.Errorf("unable to marshal to json string for json value %v: %w", v, err) } - jsonBytes, err = msgpack.Marshal(jsonBytes) + msgpackJSONBytes, err := msgpack.Marshal(jsonBytes) if err != nil { - return nil, fmt.Errorf("unable to marshal to msgpack bytes for json value %v", v) + return nil, fmt.Errorf("unable to marshal to msgpack bytes for json string %v: %w", v, err) } - strValue = string(jsonBytes) + strValue = string(msgpackJSONBytes) } } lv, err := MakeLiteralForSimpleType(newT.Simple, strValue) diff --git a/flyteidl/clients/go/coreutils/literals_test.go b/flyteidl/clients/go/coreutils/literals_test.go index 35bd464cee..742e9b2847 100644 --- a/flyteidl/clients/go/coreutils/literals_test.go +++ b/flyteidl/clients/go/coreutils/literals_test.go @@ -4,12 +4,15 @@ package coreutils import ( + "encoding/json" "fmt" "reflect" "strconv" "testing" "time" + "github.com/vmihailenco/msgpack/v5" + "github.com/go-test/deep" "github.com/golang/protobuf/ptypes" structpb "github.com/golang/protobuf/ptypes/struct" @@ -250,6 +253,14 @@ func TestMakeDefaultLiteralForType(t *testing.T) { assert.NotNil(t, l.GetScalar().GetGeneric()) }) + t.Run("json", func(t *testing.T) { + l, err := MakeDefaultLiteralForType(&core.LiteralType{Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_JSON, + }}) + assert.NoError(t, err) + assert.NotNil(t, l.GetScalar().GetJson()) + }) + t.Run("enum", func(t *testing.T) { l, err := MakeDefaultLiteralForType(&core.LiteralType{Type: &core.LiteralType_EnumType{ EnumType: &core.EnumType{Values: []string{"x", "y", "z"}}, @@ -446,22 +457,42 @@ func TestMakeLiteralForType(t *testing.T) { t.Run("SimpleJson", func(t *testing.T) { var literalType = &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_JSON}} - input := `{"key": "value"}` - val, err := MakeLiteralForType(literalType, input) + v := map[string]interface{}{ + "a": 1, + "b": 3.14, + "c": "example_string", + "d": map[string]interface{}{ + "1": 100, + "2": 200, + }, + "e": map[string]interface{}{ + "a": 1, + "b": 3.14, + }, + } + val, err := MakeLiteralForType(literalType, v) + assert.NoError(t, err) + jsonBytes, err := json.Marshal(v) assert.NoError(t, err) + msgpackJSONBytes, err := msgpack.Marshal(jsonBytes) + assert.NoError(t, err) + strValue := string(msgpackJSONBytes) literalVal := &core.Literal{ Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: []byte(input), + Value: []byte(strValue), }, }, }, }, } - expectedVal, _ := ExtractFromLiteral(literalVal) - actualVal, _ := ExtractFromLiteral(val) + + expectedVal, err := ExtractFromLiteral(literalVal) + assert.NoError(t, err) + actualVal, err := ExtractFromLiteral(val) + assert.NoError(t, err) assert.Equal(t, expectedVal, actualVal) }) From df99f28ebeebcc1de103850859373bcaa0c0b744 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 28 Aug 2024 12:24:55 +0800 Subject: [PATCH 20/38] add tests for flytepropeller/pkg/compiler/validators Signed-off-by: Future-Outlier --- .../pkg/compiler/transformers/k8s/inputs.go | 4 ---- .../pkg/compiler/validators/typing.go | 2 +- .../pkg/compiler/validators/typing_test.go | 12 ++++++++++ .../pkg/compiler/validators/utils_test.go | 22 +++++++++++++++++++ 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/flytepropeller/pkg/compiler/transformers/k8s/inputs.go b/flytepropeller/pkg/compiler/transformers/k8s/inputs.go index 83244bd1d8..2d967c560e 100644 --- a/flytepropeller/pkg/compiler/transformers/k8s/inputs.go +++ b/flytepropeller/pkg/compiler/transformers/k8s/inputs.go @@ -36,10 +36,6 @@ func validateInputs(nodeID common.NodeID, iface *core.TypedInterface, inputs cor } inputType := validators.LiteralTypeForLiteral(inputVal) - if inputType == nil { - errs.Collect(errors.NewMismatchingTypesErr(nodeID, inputVar, v.Type.String(), "Unknown Type")) - continue - } if !validators.AreTypesCastable(inputType, v.Type) { errs.Collect(errors.NewMismatchingTypesErr(nodeID, inputVar, v.Type.String(), inputType.String())) continue diff --git a/flytepropeller/pkg/compiler/validators/typing.go b/flytepropeller/pkg/compiler/validators/typing.go index a1a23dadd8..c55fe32d92 100644 --- a/flytepropeller/pkg/compiler/validators/typing.go +++ b/flytepropeller/pkg/compiler/validators/typing.go @@ -44,7 +44,7 @@ func (t trivialChecker) CastsFrom(upstreamType *flyte.LiteralType) bool { downstreamTypeCopy.Metadata = &structpb.Struct{} upstreamTypeCopy.Annotation = &flyte.TypeAnnotation{} downstreamTypeCopy.Annotation = &flyte.TypeAnnotation{} - // Handle upstream: STRUCT, downstream JSON + // Handle cases when upstream: STRUCT, downstream JSON if upstreamTypeCopy.GetSimple() == flyte.SimpleType_STRUCT && downstreamTypeCopy.GetSimple() == flyte.SimpleType_JSON { return true } diff --git a/flytepropeller/pkg/compiler/validators/typing_test.go b/flytepropeller/pkg/compiler/validators/typing_test.go index c75ebe7a49..c61459d7bc 100644 --- a/flytepropeller/pkg/compiler/validators/typing_test.go +++ b/flytepropeller/pkg/compiler/validators/typing_test.go @@ -34,6 +34,18 @@ func TestSimpleLiteralCasting(t *testing.T) { assert.True(t, castable, "Json should be castable to other Json") }) + t.Run("Struct_to_Json", func(t *testing.T) { + castable := AreTypesCastable( + &core.LiteralType{ + Type: &core.LiteralType_Simple{Simple: core.SimpleType_STRUCT}, + }, + &core.LiteralType{ + Type: &core.LiteralType_Simple{Simple: core.SimpleType_JSON}, + }, + ) + assert.True(t, castable, "Struct should be castable to Json") + }) + t.Run("IntegerToFloat", func(t *testing.T) { castable := AreTypesCastable( &core.LiteralType{ diff --git a/flytepropeller/pkg/compiler/validators/utils_test.go b/flytepropeller/pkg/compiler/validators/utils_test.go index 4a37f100dc..fad75827bd 100644 --- a/flytepropeller/pkg/compiler/validators/utils_test.go +++ b/flytepropeller/pkg/compiler/validators/utils_test.go @@ -336,6 +336,28 @@ func TestLiteralTypeForLiterals(t *testing.T) { assert.True(t, proto.Equal(expectedLt, lt)) }) + t.Run("json type", func(t *testing.T) { + jsonLiteral := &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: []byte(`{"key": "value"}`), + }, + }, + }, + }, + } + + lt := literalTypeForScalar(jsonLiteral.GetScalar()) + expectedLt := &core.LiteralType{ + Type: &core.LiteralType_Simple{ + Simple: core.SimpleType_JSON, + }, + } + + assert.True(t, proto.Equal(expectedLt, lt), "LiteralType should be of type JSON") + }) } func TestJoinVariableMapsUniqueKeys(t *testing.T) { From 9fe07aff027c9fd6cf5250849a2575a81e3224e7 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 28 Aug 2024 14:55:49 +0800 Subject: [PATCH 21/38] add tests for attr_path_resolver Signed-off-by: Future-Outlier --- .../nodes/attr_path_resolver_test.go | 271 +++++++++++++++++- 1 file changed, 270 insertions(+), 1 deletion(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go index fb966c666e..70bed48b6e 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go @@ -1,6 +1,8 @@ package nodes import ( + "encoding/json" + "github.com/vmihailenco/msgpack/v5" "testing" "github.com/stretchr/testify/assert" @@ -31,7 +33,7 @@ func NewStructFromMap(m map[string]interface{}) *structpb.Struct { return st } -func TestResolveAttrPathIn(t *testing.T) { +func TestResolveAttrPathInStruct(t *testing.T) { args := []struct { literal *core.Literal @@ -328,3 +330,270 @@ func TestResolveAttrPathIn(t *testing.T) { } } } + +func TestResolveAttrPathInJson(t *testing.T) { + // Helper function to convert a map to JSON and then to msgpack + toJsonMsgpack := func(m map[string]interface{}) []byte { + jsonBytes, _ := json.Marshal(m) + msgpackBytes, _ := msgpack.Marshal(jsonBytes) + return msgpackBytes + } + + args := []struct { + literal *core.Literal + path []*core.PromiseAttribute + expected *core.Literal + hasError bool + }{ + // - map {"foo": "bar"} + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{"foo": "bar"}), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + }, + expected: NewScalarLiteral("bar"), + hasError: false, + }, + // - struct2 {"foo": ["bar1", "bar2"]} + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{ + "foo": []interface{}{"bar1", "bar2"}, + }), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_IntValue{ + IntValue: 1, + }, + }, + }, + expected: NewScalarLiteral("bar2"), + hasError: false, + }, + // - nested list struct {"foo": [["bar1", "bar2"]]} + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{ + "foo": []interface{}{[]interface{}{"bar1", "bar2"}}, + }), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + }, + expected: &core.Literal{ + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + NewScalarLiteral("bar1"), + NewScalarLiteral("bar2"), + }, + }, + }, + }, + }, + }, + }, + }, + hasError: false, + }, + // - map+collection+struct {"foo": [{"bar": "car"}]} + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{ + "foo": []interface{}{ + map[string]interface{}{ + "bar": "car", + }, + }, + }), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_IntValue{ + IntValue: 0, + }, + }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "bar", + }, + }, + }, + expected: NewScalarLiteral("car"), + hasError: false, + }, + // - exception key error with map + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{"foo": "bar"}), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "random", + }, + }, + }, + expected: &core.Literal{}, + hasError: true, + }, + // - exception out of range with collection + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{ + "foo": []interface{}{"bar1", "bar2"}, + }), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_IntValue{ + IntValue: 2, + }, + }, + }, + expected: &core.Literal{}, + hasError: true, + }, + // - exception key error with struct + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{"foo": "bar"}), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "random", + }, + }, + }, + expected: &core.Literal{}, + hasError: true, + }, + // - exception out of range with struct + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{ + "foo": []interface{}{"bar1", "bar2"}, + }), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_IntValue{ + IntValue: 100, + }, + }, + }, + expected: &core.Literal{}, + hasError: true, + }, + } + + for i, arg := range args { + resolved, err := resolveAttrPathInPromise("", arg.literal, arg.path) + if arg.hasError { + assert.Error(t, err, i) + assert.ErrorContains(t, err, errors.PromiseAttributeResolveError, i) + } else { + assert.Equal(t, arg.expected, resolved, i) + } + } +} From 5e2b35d43208652fd3067b1c745969e2983888f4 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 28 Aug 2024 15:50:55 +0800 Subject: [PATCH 22/38] add tests for attr_path_resolver with nearly 100% coverage Signed-off-by: Future-Outlier --- .../nodes/attr_path_resolver_test.go | 315 ++++++++++++++---- 1 file changed, 248 insertions(+), 67 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go index 70bed48b6e..779a65fa2d 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go @@ -53,7 +53,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, @@ -75,7 +75,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_IntValue{ IntValue: 1, }, @@ -96,7 +96,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, @@ -121,12 +121,12 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, }, - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_IntValue{ IntValue: 1, }, @@ -151,7 +151,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, @@ -161,7 +161,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { Value: &core.Literal_Collection{ Collection: &core.LiteralCollection{ Literals: []*core.Literal{ - &core.Literal{ + { Value: &core.Literal_Collection{ Collection: &core.LiteralCollection{ Literals: []*core.Literal{ @@ -183,11 +183,11 @@ func TestResolveAttrPathInStruct(t *testing.T) { Value: &core.Literal_Map{ Map: &core.LiteralMap{ Literals: map[string]*core.Literal{ - "foo": &core.Literal{ + "foo": { Value: &core.Literal_Collection{ Collection: &core.LiteralCollection{ Literals: []*core.Literal{ - &core.Literal{ + { Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ Value: &core.Scalar_Generic{ @@ -205,17 +205,17 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, }, - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_IntValue{ IntValue: 0, }, }, - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "bar", }, @@ -224,6 +224,53 @@ func TestResolveAttrPathInStruct(t *testing.T) { expected: NewScalarLiteral("car"), hasError: false, }, + // - nested map {"foo": {"bar": {"baz": 42}}} + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Generic{ + Generic: NewStructFromMap( + map[string]interface{}{ + "foo": map[string]interface{}{ + "bar": map[string]interface{}{ + "baz": 42, + }, + }, + }, + ), + }, + }, + }, + }, + // Test accessing the entire nested map at foo.bar + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "bar", + }, + }, + }, + expected: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Generic{ + Generic: NewStructFromMap( + map[string]interface{}{ + "baz": 42, + }, + ), + }, + }, + }, + }, + hasError: false, + }, // - exception key error with map { literal: &core.Literal{ @@ -236,7 +283,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "random", }, @@ -258,7 +305,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_IntValue{ IntValue: 2, }, @@ -279,7 +326,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "random", }, @@ -304,12 +351,12 @@ func TestResolveAttrPathInStruct(t *testing.T) { }, }, path: []*core.PromiseAttribute{ - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, }, - &core.PromiseAttribute{ + { Value: &core.PromiseAttribute_IntValue{ IntValue: 100, }, @@ -345,30 +392,54 @@ func TestResolveAttrPathInJson(t *testing.T) { expected *core.Literal hasError bool }{ - // - map {"foo": "bar"} + // - nested map {"foo": {"bar": 42, "baz": {"qux": 3.14, "quux": "str"}}} { literal: &core.Literal{ Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{"foo": "bar"}), + Value: toJsonMsgpack(map[string]interface{}{ + "foo": map[string]interface{}{ + "bar": 42, + "baz": map[string]interface{}{ + "qux": 3.14, + "quux": "str", + }, + }, + }), }, }, }, }, }, + // Test accessing the int value at foo.bar path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "bar", + }, + }, + }, + expected: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{Integer: 42}, + }, + }, + }, + }, }, - expected: NewScalarLiteral("bar"), hasError: false, }, - // - struct2 {"foo": ["bar1", "bar2"]} + // - nested map {"foo": {"bar": 42, "baz": {"qux": 3.14, "quux": "str"}}} { literal: &core.Literal{ Value: &core.Literal_Scalar{ @@ -376,13 +447,20 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: &core.Scalar_Json{ Json: &core.Json{ Value: toJsonMsgpack(map[string]interface{}{ - "foo": []interface{}{"bar1", "bar2"}, + "foo": map[string]interface{}{ + "bar": 42, + "baz": map[string]interface{}{ + "qux": 3.14, + "quux": "str", + }, + }, }), }, }, }, }, }, + // Test accessing the float value at foo.baz.qux path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ @@ -390,15 +468,30 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, { - Value: &core.PromiseAttribute_IntValue{ - IntValue: 1, + Value: &core.PromiseAttribute_StringValue{ + StringValue: "baz", + }, + }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "qux", + }, + }, + }, + expected: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_FloatValue{FloatValue: 3.14}, + }, + }, }, }, }, - expected: NewScalarLiteral("bar2"), hasError: false, }, - // - nested list struct {"foo": [["bar1", "bar2"]]} + // - nested map {"foo": {"bar": 42, "baz": {"qux": 3.14, "quux": "str"}}} { literal: &core.Literal{ Value: &core.Literal_Scalar{ @@ -406,33 +499,74 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: &core.Scalar_Json{ Json: &core.Json{ Value: toJsonMsgpack(map[string]interface{}{ - "foo": []interface{}{[]interface{}{"bar1", "bar2"}}, + "foo": map[string]interface{}{ + "bar": 42, + "baz": map[string]interface{}{ + "qux": 3.14, + "quux": "str", + }, + }, }), }, }, }, }, }, + // Test accessing the string value at foo.baz.quux path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ StringValue: "foo", }, }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "baz", + }, + }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "quux", + }, + }, + }, + expected: NewScalarLiteral("str"), + hasError: false, + }, + // - nested list {"foo": [42, 3.14, "str"]} + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{ + "foo": []interface{}{42, 3.14, "str"}, + }), + }, + }, + }, + }, + }, + // Test accessing the int value at foo[0] + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_IntValue{ + IntValue: 0, + }, + }, }, expected: &core.Literal{ - Value: &core.Literal_Collection{ - Collection: &core.LiteralCollection{ - Literals: []*core.Literal{ - { - Value: &core.Literal_Collection{ - Collection: &core.LiteralCollection{ - Literals: []*core.Literal{ - NewScalarLiteral("bar1"), - NewScalarLiteral("bar2"), - }, - }, - }, + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_Integer{Integer: 42}, }, }, }, @@ -440,7 +574,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, hasError: false, }, - // - map+collection+struct {"foo": [{"bar": "car"}]} + // - nested list {"foo": [42, 3.14, "str"]} { literal: &core.Literal{ Value: &core.Literal_Scalar{ @@ -448,17 +582,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: &core.Scalar_Json{ Json: &core.Json{ Value: toJsonMsgpack(map[string]interface{}{ - "foo": []interface{}{ - map[string]interface{}{ - "bar": "car", - }, - }, + "foo": []interface{}{42, 3.14, "str"}, }), }, }, }, }, }, + // Test accessing the float value at foo[1] path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ @@ -467,42 +598,55 @@ func TestResolveAttrPathInJson(t *testing.T) { }, { Value: &core.PromiseAttribute_IntValue{ - IntValue: 0, + IntValue: 1, }, }, - { - Value: &core.PromiseAttribute_StringValue{ - StringValue: "bar", + }, + expected: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Primitive{ + Primitive: &core.Primitive{ + Value: &core.Primitive_FloatValue{FloatValue: 3.14}, + }, + }, }, }, }, - expected: NewScalarLiteral("car"), hasError: false, }, - // - exception key error with map + // - nested list {"foo": [42, 3.14, "str"]} { literal: &core.Literal{ Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{"foo": "bar"}), + Value: toJsonMsgpack(map[string]interface{}{ + "foo": []interface{}{42, 3.14, "str"}, + }), }, }, }, }, }, + // Test accessing the string value at foo[2] path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ - StringValue: "random", + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_IntValue{ + IntValue: 2, }, }, }, - expected: &core.Literal{}, - hasError: true, + expected: NewScalarLiteral("str"), + hasError: false, }, - // - exception out of range with collection + // - test extracting a nested map as a JSON object {"foo": {"bar": {"baz": 42}}} { literal: &core.Literal{ Value: &core.Literal_Scalar{ @@ -510,13 +654,18 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: &core.Scalar_Json{ Json: &core.Json{ Value: toJsonMsgpack(map[string]interface{}{ - "foo": []interface{}{"bar1", "bar2"}, + "foo": map[string]interface{}{ + "bar": map[string]interface{}{ + "baz": 42, + }, + }, }), }, }, }, }, }, + // Test accessing the entire nested map at foo.bar path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ @@ -524,38 +673,69 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, { - Value: &core.PromiseAttribute_IntValue{ - IntValue: 2, + Value: &core.PromiseAttribute_StringValue{ + StringValue: "bar", }, }, }, - expected: &core.Literal{}, - hasError: true, + expected: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJsonMsgpack(map[string]interface{}{ + "baz": 42, + }), + }, + }, + }, + }, + }, + hasError: false, }, - // - exception key error with struct + // - exception case with non-existing key in nested map { literal: &core.Literal{ Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{"foo": "bar"}), + Value: toJsonMsgpack(map[string]interface{}{ + "foo": map[string]interface{}{ + "bar": 42, + "baz": map[string]interface{}{ + "qux": 3.14, + "quux": "str", + }, + }, + }), }, }, }, }, }, + // Test accessing a non-existing key in the nested map path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ - StringValue: "random", + StringValue: "foo", + }, + }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "baz", + }, + }, + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "unknown", }, }, }, expected: &core.Literal{}, hasError: true, }, - // - exception out of range with struct + // - exception case with out-of-range index in list { literal: &core.Literal{ Value: &core.Literal_Scalar{ @@ -563,13 +743,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: &core.Scalar_Json{ Json: &core.Json{ Value: toJsonMsgpack(map[string]interface{}{ - "foo": []interface{}{"bar1", "bar2"}, + "foo": []interface{}{42, 3.14, "str"}, }), }, }, }, }, }, + // Test accessing an out-of-range index in the list path: []*core.PromiseAttribute{ { Value: &core.PromiseAttribute_StringValue{ @@ -578,7 +759,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, { Value: &core.PromiseAttribute_IntValue{ - IntValue: 100, + IntValue: 10, }, }, }, From 77ea3ed2f4f8c6e7fb4127b7a0bd2865d960a0bc Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 28 Aug 2024 15:57:11 +0800 Subject: [PATCH 23/38] lint Signed-off-by: Future-Outlier --- .../nodes/attr_path_resolver_test.go | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go index 779a65fa2d..b7b8bbc2b6 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go @@ -2,10 +2,10 @@ package nodes import ( "encoding/json" - "github.com/vmihailenco/msgpack/v5" "testing" "github.com/stretchr/testify/assert" + "github.com/vmihailenco/msgpack/v5" "google.golang.org/protobuf/types/known/structpb" "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" @@ -380,7 +380,7 @@ func TestResolveAttrPathInStruct(t *testing.T) { func TestResolveAttrPathInJson(t *testing.T) { // Helper function to convert a map to JSON and then to msgpack - toJsonMsgpack := func(m map[string]interface{}) []byte { + toJSONMsgpack := func(m map[string]interface{}) []byte { jsonBytes, _ := json.Marshal(m) msgpackBytes, _ := msgpack.Marshal(jsonBytes) return msgpackBytes @@ -399,7 +399,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": map[string]interface{}{ "bar": 42, "baz": map[string]interface{}{ @@ -446,7 +446,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": map[string]interface{}{ "bar": 42, "baz": map[string]interface{}{ @@ -498,7 +498,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": map[string]interface{}{ "bar": 42, "baz": map[string]interface{}{ @@ -540,7 +540,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": []interface{}{42, 3.14, "str"}, }), }, @@ -581,7 +581,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": []interface{}{42, 3.14, "str"}, }), }, @@ -622,7 +622,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": []interface{}{42, 3.14, "str"}, }), }, @@ -653,7 +653,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": map[string]interface{}{ "bar": map[string]interface{}{ "baz": 42, @@ -683,7 +683,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "baz": 42, }), }, @@ -700,7 +700,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": map[string]interface{}{ "bar": 42, "baz": map[string]interface{}{ @@ -742,7 +742,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJsonMsgpack(map[string]interface{}{ + Value: toJSONMsgpack(map[string]interface{}{ "foo": []interface{}{42, 3.14, "str"}, }), }, From e5af3a3365a36208a51655778e2c9fc221164854 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Wed, 28 Aug 2024 23:10:48 +0800 Subject: [PATCH 24/38] nit Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/literals.go | 4 ++-- flyteidl/clients/go/coreutils/literals_test.go | 4 ++-- .../pkg/controller/nodes/attr_path_resolver.go | 9 +++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index edad60663c..0d41b5ab3f 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -592,11 +592,11 @@ func MakeLiteralForType(t *core.LiteralType, v interface{}) (*core.Literal, erro if err != nil { return nil, fmt.Errorf("unable to marshal to json string for json value %v: %w", v, err) } - msgpackJSONBytes, err := msgpack.Marshal(jsonBytes) + msgpackBytes, err := msgpack.Marshal(jsonBytes) if err != nil { return nil, fmt.Errorf("unable to marshal to msgpack bytes for json string %v: %w", v, err) } - strValue = string(msgpackJSONBytes) + strValue = string(msgpackBytes) } } lv, err := MakeLiteralForSimpleType(newT.Simple, strValue) diff --git a/flyteidl/clients/go/coreutils/literals_test.go b/flyteidl/clients/go/coreutils/literals_test.go index 742e9b2847..ee7716f4ac 100644 --- a/flyteidl/clients/go/coreutils/literals_test.go +++ b/flyteidl/clients/go/coreutils/literals_test.go @@ -474,9 +474,9 @@ func TestMakeLiteralForType(t *testing.T) { assert.NoError(t, err) jsonBytes, err := json.Marshal(v) assert.NoError(t, err) - msgpackJSONBytes, err := msgpack.Marshal(jsonBytes) + msgpackBytes, err := msgpack.Marshal(jsonBytes) assert.NoError(t, err) - strValue := string(msgpackJSONBytes) + strValue := string(msgpackBytes) literalVal := &core.Literal{ Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index 84c4596550..c6c9a47239 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -94,7 +94,7 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath } // resolveAttrPathInJSON resolves the msgpack bytes (e.g. dataclass) with attribute path -func resolveAttrPathInJSON(nodeID string, jsonByte []byte, bindAttrPath []*core.PromiseAttribute) (*core.Literal, +func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*core.PromiseAttribute) (*core.Literal, error) { var currVal interface{} @@ -102,7 +102,7 @@ func resolveAttrPathInJSON(nodeID string, jsonByte []byte, bindAttrPath []*core. var exist bool var jsonStr string - err := msgpack.Unmarshal(jsonByte, &jsonStr) + err := msgpack.Unmarshal(msgpackBytes, &jsonStr) if err != nil { return nil, err } @@ -112,6 +112,7 @@ func resolveAttrPathInJSON(nodeID string, jsonByte []byte, bindAttrPath []*core. decoder := json.NewDecoder(strings.NewReader(jsonStr)) decoder.UseNumber() + err = decoder.Decode(&tmpVal) if err != nil { return nil, err @@ -181,7 +182,7 @@ func convertInterfaceToLiteral(nodeID string, obj interface{}, isJSON bool) (*co if err != nil { return nil, err } - jsonBytes, err = msgpack.Marshal(jsonBytes) + msgpackBytes, err := msgpack.Marshal(jsonBytes) if err != nil { return nil, err } @@ -189,7 +190,7 @@ func convertInterfaceToLiteral(nodeID string, obj interface{}, isJSON bool) (*co Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: jsonBytes, + Value: msgpackBytes, }, }, }, From 3f155d65b5d8b112390f6e09216c5ea5a385700f Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Thu, 29 Aug 2024 13:52:05 +0800 Subject: [PATCH 25/38] split convertLiteral to convertStructToLiteral and convertJSONToLiteral Signed-off-by: Future-Outlier --- .../clients/go/coreutils/literals_test.go | 1 + .../controller/nodes/attr_path_resolver.go | 91 +++++++++++++------ .../nodes/attr_path_resolver_test.go | 42 +++++++++ 3 files changed, 104 insertions(+), 30 deletions(-) diff --git a/flyteidl/clients/go/coreutils/literals_test.go b/flyteidl/clients/go/coreutils/literals_test.go index ee7716f4ac..b1f81f0d75 100644 --- a/flyteidl/clients/go/coreutils/literals_test.go +++ b/flyteidl/clients/go/coreutils/literals_test.go @@ -469,6 +469,7 @@ func TestMakeLiteralForType(t *testing.T) { "a": 1, "b": 3.14, }, + "f": []string{"a", "b", "c"}, } val, err := MakeLiteralForType(literalType, v) assert.NoError(t, err) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index c6c9a47239..24bfcddcbe 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -88,7 +88,7 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath } // After resolve, convert the interface to literal - literal, err := convertInterfaceToLiteral(nodeID, currVal, false) + literal, err := convertStructToLiteral(nodeID, currVal) return literal, err } @@ -139,12 +139,13 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c } // After resolve, convert the interface to literal - literal, err := convertInterfaceToLiteral(nodeID, currVal, true) + literal, err := convertJSONToLiteral(nodeID, currVal) return literal, err } -// convertNumbers recursively converts json.Number to int64 or float64 +// json will automatically convert numbers to float64, so we need to convert it back to int64 if possible +// convertNumbers recursively converts json.Number to int4 or float646 func convertNumbers(v interface{}) interface{} { switch vv := v.(type) { case map[string]interface{}: @@ -170,49 +171,79 @@ func convertNumbers(v interface{}) interface{} { return v } -// convertInterfaceToLiteral converts the protobuf struct (e.g. dataclass) to literal -func convertInterfaceToLiteral(nodeID string, obj interface{}, isJSON bool) (*core.Literal, error) { +// convertStructToLiteral converts the protobuf struct (e.g. dataclass) to literal +func convertStructToLiteral(nodeID string, obj interface{}) (*core.Literal, error) { literal := &core.Literal{} switch obj := obj.(type) { case map[string]interface{}: - if isJSON { - jsonBytes, err := json.Marshal(obj) - if err != nil { - return nil, err - } - msgpackBytes, err := msgpack.Marshal(jsonBytes) - if err != nil { - return nil, err - } - literal.Value = &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Json{ - Json: &core.Json{ - Value: msgpackBytes, - }, - }, + newSt, err := structpb.NewStruct(obj) + if err != nil { + return nil, err + } + literal.Value = &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Generic{ + Generic: newSt, }, - } - } else { - newSt, err := structpb.NewStruct(obj) + }, + } + case []interface{}: + literals := []*core.Literal{} + for _, v := range obj { + // recursively convert the interface to literal + literal, err := convertStructToLiteral(nodeID, v) if err != nil { return nil, err } - literal.Value = &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Generic{ - Generic: newSt, + literals = append(literals, literal) + } + literal.Value = &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: literals, + }, + } + case interface{}: + scalar, err := convertInterfaceToLiteralScalar(nodeID, obj) + if err != nil { + return nil, err + } + literal.Value = scalar + } + + return literal, nil +} + +// convertJSONToLiteral converts the protobuf struct (e.g. dataclass) to literal +func convertJSONToLiteral(nodeID string, obj interface{}) (*core.Literal, error) { + + literal := &core.Literal{} + + switch obj := obj.(type) { + case map[string]interface{}: + jsonBytes, err := json.Marshal(obj) + if err != nil { + return nil, err + } + msgpackBytes, err := msgpack.Marshal(jsonBytes) + if err != nil { + return nil, err + } + literal.Value = &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: msgpackBytes, }, }, - } + }, } case []interface{}: literals := []*core.Literal{} for _, v := range obj { // recursively convert the interface to literal - literal, err := convertInterfaceToLiteral(nodeID, v, isJSON) + literal, err := convertJSONToLiteral(nodeID, v) if err != nil { return nil, err } diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go index b7b8bbc2b6..4cc0094005 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go @@ -766,6 +766,48 @@ func TestResolveAttrPathInJson(t *testing.T) { expected: &core.Literal{}, hasError: true, }, + // - nested list struct {"foo": [["bar1", "bar2"]]} + { + literal: &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: toJSONMsgpack(map[string]interface{}{ + "foo": []interface{}{[]interface{}{"bar1", "bar2"}}, + }), + }, + }, + }, + }, + }, + path: []*core.PromiseAttribute{ + { + Value: &core.PromiseAttribute_StringValue{ + StringValue: "foo", + }, + }, + }, + expected: &core.Literal{ + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + { + Value: &core.Literal_Collection{ + Collection: &core.LiteralCollection{ + Literals: []*core.Literal{ + NewScalarLiteral("bar1"), + NewScalarLiteral("bar2"), + }, + }, + }, + }, + }, + }, + }, + }, + hasError: false, + }, } for i, arg := range args { From bade9052e63fbd9452aa987e15267a7ec2b109bf Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Fri, 30 Aug 2024 15:51:33 +0800 Subject: [PATCH 26/38] add comments for convertNumbers Signed-off-by: Future-Outlier --- flytepropeller/pkg/controller/nodes/attr_path_resolver.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index 24bfcddcbe..fdc9dfcd80 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -145,7 +145,9 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c } // json will automatically convert numbers to float64, so we need to convert it back to int64 if possible -// convertNumbers recursively converts json.Number to int4 or float646 +// convertNumbers recursively converts json.Number to int64 or float64 +// flytekit can accept int64 as float transformer's input: +// https://github.com/flyteorg/flytekit/blob/master/flytekit/core/type_engine.py#L1914-L1919 func convertNumbers(v interface{}) interface{} { switch vv := v.(type) { case map[string]interface{}: From 4e3c28fcaf882e981f784c9fb7a9252b9edbd559 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Fri, 30 Aug 2024 23:28:36 +0800 Subject: [PATCH 27/38] Update pingsu's advice Signed-off-by: Future-Outlier Co-authored-by: Kevin Su --- flyteidl/protos/flyteidl/core/literals.proto | 6 ++++++ flytepropeller/pkg/controller/nodes/attr_path_resolver.go | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/flyteidl/protos/flyteidl/core/literals.proto b/flyteidl/protos/flyteidl/core/literals.proto index 930fd077e8..24037cbf31 100644 --- a/flyteidl/protos/flyteidl/core/literals.proto +++ b/flyteidl/protos/flyteidl/core/literals.proto @@ -46,6 +46,12 @@ message Binary { string tag = 2; } +// Represents a JSON object encoded as a byte array. +// This field is intended to store JSON-serialized data such as dataclasses, +// dictionaries, pydantic models, or other structures that can be represented +// as JSON objects. The data should be deserialized into its corresponding +// structure when used. +// This design guarantees that the data is stored in a format that can be 100% reconstructed. message Json { bytes value = 1; } diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index fdc9dfcd80..d96c0df26a 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -68,7 +68,6 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath currVal = st.AsMap() - // Turn the current value to a map so it can be resolved more easily for _, attr := range bindAttrPath { switch resolvedVal := currVal.(type) { // map @@ -217,7 +216,7 @@ func convertStructToLiteral(nodeID string, obj interface{}) (*core.Literal, erro return literal, nil } -// convertJSONToLiteral converts the protobuf struct (e.g. dataclass) to literal +// convertJSONToLiteral converts the JSON (e.g. dataclass) to literal func convertJSONToLiteral(nodeID string, obj interface{}) (*core.Literal, error) { literal := &core.Literal{} From 2cf54c386c9af63fe91252ba2dcd6a82adb2aeaa Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Fri, 30 Aug 2024 23:42:30 +0800 Subject: [PATCH 28/38] update idl Signed-off-by: Future-Outlier --- flyteidl/clients/go/assets/admin.swagger.json | 35 +- .../gen/pb-es/flyteidl/core/literals_pb.ts | 7 + .../gen/pb-go/flyteidl/core/literals.pb.go | 553 ++++++++++-------- .../cacheservice/cacheservice.swagger.json | 3 +- .../datacatalog/datacatalog.swagger.json | 3 +- .../flyteidl/service/admin.swagger.json | 3 +- .../flyteidl/service/agent.swagger.json | 3 +- .../flyteidl/service/dataproxy.swagger.json | 3 +- .../external_plugin_service.swagger.json | 3 +- .../flyteidl/service/signal.swagger.json | 3 +- .../pb_python/flyteidl/core/literals_pb2.py | 78 +-- flyteidl/gen/pb_rust/flyteidl.core.rs | 6 + 12 files changed, 389 insertions(+), 311 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index 48f4aa1f4d..c6c16c3956 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -7331,7 +7331,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreK8sObjectMetadata": { "type": "object", @@ -7427,6 +7428,10 @@ "$ref": "#/definitions/coreLiteralMap", "description": "A map of strings to literals." }, + "offloaded_metadata": { + "$ref": "#/definitions/coreLiteralOffloadedMetadata", + "description": "Offloaded literal metadata\nWhen you deserialize the offloaded metadata, it would be of Literal and its type would be defined by LiteralType stored in offloaded_metadata." + }, "hash": { "type": "string", "title": "A hash representing this literal.\nThis is used for caching purposes. For more details refer to RFC 1893\n(https://github.com/flyteorg/flyte/blob/master/rfc/system/1893-caching-of-offloaded-objects.md)" @@ -7437,15 +7442,6 @@ "type": "string" }, "description": "Additional metadata for literals." - }, - "uri": { - "type": "string", - "description": "If this literal is offloaded, this field will contain metadata including the offload location." - }, - "size_bytes": { - "type": "string", - "format": "uint64", - "description": "Includes information about the size of the literal." } }, "description": "A simple value. This supports any level of nesting (e.g. array of array of array of Blobs) as well as simple primitives." @@ -7475,6 +7471,25 @@ }, "description": "A map of literals. This is a workaround since oneofs in proto messages cannot contain a repeated field." }, + "coreLiteralOffloadedMetadata": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The location of the offloaded core.Literal." + }, + "size_bytes": { + "type": "string", + "format": "uint64", + "description": "The size of the offloaded data." + }, + "inferred_type": { + "$ref": "#/definitions/coreLiteralType", + "description": "The inferred literal type of the offloaded data." + } + }, + "description": "A message that contains the metadata of the offloaded data." + }, "coreLiteralType": { "type": "object", "properties": { diff --git a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts index e6c32f90cb..f35bb7523c 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts @@ -254,6 +254,13 @@ export class Binary extends Message { } /** + * Represents a JSON object encoded as a byte array. + * This field is intended to store JSON-serialized data such as dataclasses, + * dictionaries, pydantic models, or other structures that can be represented + * as JSON objects. The data should be deserialized into its corresponding + * structure when used. + * This design guarantees that the data is stored in a format that can be 100% reconstructed. + * * @generated from message flyteidl.core.Json */ export class Json extends Message { diff --git a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go index cc894955d6..bc3da78246 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go @@ -365,6 +365,12 @@ func (x *Binary) GetTag() string { return "" } +// Represents a JSON object encoded as a byte array. +// This field is intended to store JSON-serialized data such as dataclasses, +// dictionaries, pydantic models, or other structures that can be represented +// as JSON objects. The data should be deserialized into its corresponding +// structure when used. +// This design guarantees that the data is stored in a format that can be 100% reconstructed. type Json struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -980,7 +986,7 @@ type LiteralOffloadedMetadata struct { func (x *LiteralOffloadedMetadata) Reset() { *x = LiteralOffloadedMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[11] + mi := &file_flyteidl_core_literals_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -993,7 +999,7 @@ func (x *LiteralOffloadedMetadata) String() string { func (*LiteralOffloadedMetadata) ProtoMessage() {} func (x *LiteralOffloadedMetadata) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[11] + mi := &file_flyteidl_core_literals_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1006,7 +1012,7 @@ func (x *LiteralOffloadedMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use LiteralOffloadedMetadata.ProtoReflect.Descriptor instead. func (*LiteralOffloadedMetadata) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{11} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{12} } func (x *LiteralOffloadedMetadata) GetUri() string { @@ -1042,8 +1048,7 @@ type LiteralCollection struct { func (x *LiteralCollection) Reset() { *x = LiteralCollection{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[12] - mi := &file_flyteidl_core_literals_proto_msgTypes[12] + mi := &file_flyteidl_core_literals_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1056,7 +1061,7 @@ func (x *LiteralCollection) String() string { func (*LiteralCollection) ProtoMessage() {} func (x *LiteralCollection) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[12] + mi := &file_flyteidl_core_literals_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1069,7 +1074,7 @@ func (x *LiteralCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use LiteralCollection.ProtoReflect.Descriptor instead. func (*LiteralCollection) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{12} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{13} } func (x *LiteralCollection) GetLiterals() []*Literal { @@ -1091,7 +1096,7 @@ type LiteralMap struct { func (x *LiteralMap) Reset() { *x = LiteralMap{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[13] + mi := &file_flyteidl_core_literals_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1104,7 +1109,7 @@ func (x *LiteralMap) String() string { func (*LiteralMap) ProtoMessage() {} func (x *LiteralMap) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[13] + mi := &file_flyteidl_core_literals_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1117,7 +1122,7 @@ func (x *LiteralMap) ProtoReflect() protoreflect.Message { // Deprecated: Use LiteralMap.ProtoReflect.Descriptor instead. func (*LiteralMap) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{13} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{14} } func (x *LiteralMap) GetLiterals() map[string]*Literal { @@ -1139,7 +1144,7 @@ type BindingDataCollection struct { func (x *BindingDataCollection) Reset() { *x = BindingDataCollection{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[14] + mi := &file_flyteidl_core_literals_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1152,7 +1157,7 @@ func (x *BindingDataCollection) String() string { func (*BindingDataCollection) ProtoMessage() {} func (x *BindingDataCollection) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[14] + mi := &file_flyteidl_core_literals_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1165,7 +1170,7 @@ func (x *BindingDataCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingDataCollection.ProtoReflect.Descriptor instead. func (*BindingDataCollection) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{14} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{15} } func (x *BindingDataCollection) GetBindings() []*BindingData { @@ -1187,7 +1192,7 @@ type BindingDataMap struct { func (x *BindingDataMap) Reset() { *x = BindingDataMap{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[15] + mi := &file_flyteidl_core_literals_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1200,7 +1205,7 @@ func (x *BindingDataMap) String() string { func (*BindingDataMap) ProtoMessage() {} func (x *BindingDataMap) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[15] + mi := &file_flyteidl_core_literals_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1213,7 +1218,7 @@ func (x *BindingDataMap) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingDataMap.ProtoReflect.Descriptor instead. func (*BindingDataMap) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{15} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{16} } func (x *BindingDataMap) GetBindings() map[string]*BindingData { @@ -1234,7 +1239,7 @@ type UnionInfo struct { func (x *UnionInfo) Reset() { *x = UnionInfo{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[16] + mi := &file_flyteidl_core_literals_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1247,7 +1252,7 @@ func (x *UnionInfo) String() string { func (*UnionInfo) ProtoMessage() {} func (x *UnionInfo) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[16] + mi := &file_flyteidl_core_literals_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1260,7 +1265,7 @@ func (x *UnionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UnionInfo.ProtoReflect.Descriptor instead. func (*UnionInfo) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{16} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{17} } func (x *UnionInfo) GetTargetType() *LiteralType { @@ -1289,7 +1294,7 @@ type BindingData struct { func (x *BindingData) Reset() { *x = BindingData{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[17] + mi := &file_flyteidl_core_literals_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1302,7 +1307,7 @@ func (x *BindingData) String() string { func (*BindingData) ProtoMessage() {} func (x *BindingData) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[17] + mi := &file_flyteidl_core_literals_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1315,7 +1320,7 @@ func (x *BindingData) ProtoReflect() protoreflect.Message { // Deprecated: Use BindingData.ProtoReflect.Descriptor instead. func (*BindingData) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{17} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{18} } func (m *BindingData) GetValue() isBindingData_Value { @@ -1408,7 +1413,7 @@ type Binding struct { func (x *Binding) Reset() { *x = Binding{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[18] + mi := &file_flyteidl_core_literals_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1421,7 +1426,7 @@ func (x *Binding) String() string { func (*Binding) ProtoMessage() {} func (x *Binding) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[18] + mi := &file_flyteidl_core_literals_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1434,7 +1439,7 @@ func (x *Binding) ProtoReflect() protoreflect.Message { // Deprecated: Use Binding.ProtoReflect.Descriptor instead. func (*Binding) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{18} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{19} } func (x *Binding) GetVar() string { @@ -1466,7 +1471,7 @@ type KeyValuePair struct { func (x *KeyValuePair) Reset() { *x = KeyValuePair{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[19] + mi := &file_flyteidl_core_literals_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1479,7 +1484,7 @@ func (x *KeyValuePair) String() string { func (*KeyValuePair) ProtoMessage() {} func (x *KeyValuePair) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[19] + mi := &file_flyteidl_core_literals_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1492,7 +1497,7 @@ func (x *KeyValuePair) ProtoReflect() protoreflect.Message { // Deprecated: Use KeyValuePair.ProtoReflect.Descriptor instead. func (*KeyValuePair) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{19} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{20} } func (x *KeyValuePair) GetKey() string { @@ -1523,7 +1528,7 @@ type RetryStrategy struct { func (x *RetryStrategy) Reset() { *x = RetryStrategy{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl_core_literals_proto_msgTypes[20] + mi := &file_flyteidl_core_literals_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1536,7 +1541,7 @@ func (x *RetryStrategy) String() string { func (*RetryStrategy) ProtoMessage() {} func (x *RetryStrategy) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl_core_literals_proto_msgTypes[20] + mi := &file_flyteidl_core_literals_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1549,7 +1554,7 @@ func (x *RetryStrategy) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryStrategy.ProtoReflect.Descriptor instead. func (*RetryStrategy) Descriptor() ([]byte, []int) { - return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{20} + return file_flyteidl_core_literals_proto_rawDescGZIP(), []int{21} } func (x *RetryStrategy) GetRetries() uint32 { @@ -1601,166 +1606,183 @@ var file_flyteidl_core_literals_proto_rawDesc = []byte{ 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x30, 0x0a, 0x06, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x49, 0x0a, 0x06, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x65, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, - 0x19, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x17, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, - 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf0, 0x03, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, - 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, - 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x6c, - 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, 0x52, - 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x06, - 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x48, - 0x00, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x51, - 0x0a, 0x12, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x11, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, - 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, - 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfa, 0x02, 0x0a, 0x07, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1c, 0x0a, 0x04, 0x4a, + 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x49, 0x0a, 0x06, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x65, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x17, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x44, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x9b, 0x04, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x38, + 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, + 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x04, 0x62, + 0x6c, 0x6f, 0x62, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, + 0x6e, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, - 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x06, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x48, 0x00, 0x52, + 0x08, 0x6e, 0x6f, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x51, 0x0a, 0x12, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, + 0x2c, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, + 0x6e, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, + 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xaf, 0x03, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2f, 0x0a, + 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, + 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x42, + 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, + 0x70, 0x12, 0x58, 0x0a, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, + 0x64, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, + 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, + 0x07, 0x10, 0x08, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4f, + 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x70, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, - 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x40, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, - 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x0a, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x08, 0x6c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, - 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, - 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, - 0x09, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, - 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, - 0x61, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, + 0x53, 0x0a, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, + 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, + 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x62, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x09, 0x55, 0x6e, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, + 0x61, 0x6c, 0x61, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, - 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, - 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, - 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, - 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, - 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, 0x0a, 0x05, 0x75, + 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, + 0x72, 0x12, 0x34, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, + 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x29, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, + 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x42, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, + 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, + 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, + 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, + 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1775,82 +1797,87 @@ func file_flyteidl_core_literals_proto_rawDescGZIP() []byte { return file_flyteidl_core_literals_proto_rawDescData } -var file_flyteidl_core_literals_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_flyteidl_core_literals_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_flyteidl_core_literals_proto_goTypes = []interface{}{ (*Primitive)(nil), // 0: flyteidl.core.Primitive (*Void)(nil), // 1: flyteidl.core.Void (*Blob)(nil), // 2: flyteidl.core.Blob (*BlobMetadata)(nil), // 3: flyteidl.core.BlobMetadata (*Binary)(nil), // 4: flyteidl.core.Binary - (*Schema)(nil), // 5: flyteidl.core.Schema - (*Union)(nil), // 6: flyteidl.core.Union - (*StructuredDatasetMetadata)(nil), // 7: flyteidl.core.StructuredDatasetMetadata - (*StructuredDataset)(nil), // 8: flyteidl.core.StructuredDataset - (*Scalar)(nil), // 9: flyteidl.core.Scalar - (*Literal)(nil), // 10: flyteidl.core.Literal - (*LiteralCollection)(nil), // 11: flyteidl.core.LiteralCollection - (*LiteralMap)(nil), // 12: flyteidl.core.LiteralMap - (*BindingDataCollection)(nil), // 13: flyteidl.core.BindingDataCollection - (*BindingDataMap)(nil), // 14: flyteidl.core.BindingDataMap - (*UnionInfo)(nil), // 15: flyteidl.core.UnionInfo - (*BindingData)(nil), // 16: flyteidl.core.BindingData - (*Binding)(nil), // 17: flyteidl.core.Binding - (*KeyValuePair)(nil), // 18: flyteidl.core.KeyValuePair - (*RetryStrategy)(nil), // 19: flyteidl.core.RetryStrategy - nil, // 20: flyteidl.core.Literal.MetadataEntry - nil, // 21: flyteidl.core.LiteralMap.LiteralsEntry - nil, // 22: flyteidl.core.BindingDataMap.BindingsEntry - (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 24: google.protobuf.Duration - (*BlobType)(nil), // 25: flyteidl.core.BlobType - (*SchemaType)(nil), // 26: flyteidl.core.SchemaType - (*LiteralType)(nil), // 27: flyteidl.core.LiteralType - (*StructuredDatasetType)(nil), // 28: flyteidl.core.StructuredDatasetType - (*Error)(nil), // 29: flyteidl.core.Error - (*structpb.Struct)(nil), // 30: google.protobuf.Struct - (*OutputReference)(nil), // 31: flyteidl.core.OutputReference + (*Json)(nil), // 5: flyteidl.core.Json + (*Schema)(nil), // 6: flyteidl.core.Schema + (*Union)(nil), // 7: flyteidl.core.Union + (*StructuredDatasetMetadata)(nil), // 8: flyteidl.core.StructuredDatasetMetadata + (*StructuredDataset)(nil), // 9: flyteidl.core.StructuredDataset + (*Scalar)(nil), // 10: flyteidl.core.Scalar + (*Literal)(nil), // 11: flyteidl.core.Literal + (*LiteralOffloadedMetadata)(nil), // 12: flyteidl.core.LiteralOffloadedMetadata + (*LiteralCollection)(nil), // 13: flyteidl.core.LiteralCollection + (*LiteralMap)(nil), // 14: flyteidl.core.LiteralMap + (*BindingDataCollection)(nil), // 15: flyteidl.core.BindingDataCollection + (*BindingDataMap)(nil), // 16: flyteidl.core.BindingDataMap + (*UnionInfo)(nil), // 17: flyteidl.core.UnionInfo + (*BindingData)(nil), // 18: flyteidl.core.BindingData + (*Binding)(nil), // 19: flyteidl.core.Binding + (*KeyValuePair)(nil), // 20: flyteidl.core.KeyValuePair + (*RetryStrategy)(nil), // 21: flyteidl.core.RetryStrategy + nil, // 22: flyteidl.core.Literal.MetadataEntry + nil, // 23: flyteidl.core.LiteralMap.LiteralsEntry + nil, // 24: flyteidl.core.BindingDataMap.BindingsEntry + (*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 26: google.protobuf.Duration + (*BlobType)(nil), // 27: flyteidl.core.BlobType + (*SchemaType)(nil), // 28: flyteidl.core.SchemaType + (*LiteralType)(nil), // 29: flyteidl.core.LiteralType + (*StructuredDatasetType)(nil), // 30: flyteidl.core.StructuredDatasetType + (*Error)(nil), // 31: flyteidl.core.Error + (*structpb.Struct)(nil), // 32: google.protobuf.Struct + (*OutputReference)(nil), // 33: flyteidl.core.OutputReference } var file_flyteidl_core_literals_proto_depIdxs = []int32{ - 24, // 0: flyteidl.core.Primitive.datetime:type_name -> google.protobuf.Timestamp - 25, // 1: flyteidl.core.Primitive.duration:type_name -> google.protobuf.Duration + 25, // 0: flyteidl.core.Primitive.datetime:type_name -> google.protobuf.Timestamp + 26, // 1: flyteidl.core.Primitive.duration:type_name -> google.protobuf.Duration 3, // 2: flyteidl.core.Blob.metadata:type_name -> flyteidl.core.BlobMetadata - 26, // 3: flyteidl.core.BlobMetadata.type:type_name -> flyteidl.core.BlobType - 27, // 4: flyteidl.core.Schema.type:type_name -> flyteidl.core.SchemaType + 27, // 3: flyteidl.core.BlobMetadata.type:type_name -> flyteidl.core.BlobType + 28, // 4: flyteidl.core.Schema.type:type_name -> flyteidl.core.SchemaType 11, // 5: flyteidl.core.Union.value:type_name -> flyteidl.core.Literal - 28, // 6: flyteidl.core.Union.type:type_name -> flyteidl.core.LiteralType - 29, // 7: flyteidl.core.StructuredDatasetMetadata.structured_dataset_type:type_name -> flyteidl.core.StructuredDatasetType + 29, // 6: flyteidl.core.Union.type:type_name -> flyteidl.core.LiteralType + 30, // 7: flyteidl.core.StructuredDatasetMetadata.structured_dataset_type:type_name -> flyteidl.core.StructuredDatasetType 8, // 8: flyteidl.core.StructuredDataset.metadata:type_name -> flyteidl.core.StructuredDatasetMetadata 0, // 9: flyteidl.core.Scalar.primitive:type_name -> flyteidl.core.Primitive 2, // 10: flyteidl.core.Scalar.blob:type_name -> flyteidl.core.Blob 4, // 11: flyteidl.core.Scalar.binary:type_name -> flyteidl.core.Binary 6, // 12: flyteidl.core.Scalar.schema:type_name -> flyteidl.core.Schema 1, // 13: flyteidl.core.Scalar.none_type:type_name -> flyteidl.core.Void - 29, // 14: flyteidl.core.Scalar.error:type_name -> flyteidl.core.Error - 30, // 15: flyteidl.core.Scalar.generic:type_name -> google.protobuf.Struct - 8, // 16: flyteidl.core.Scalar.structured_dataset:type_name -> flyteidl.core.StructuredDataset - 6, // 17: flyteidl.core.Scalar.union:type_name -> flyteidl.core.Union - 9, // 18: flyteidl.core.Literal.scalar:type_name -> flyteidl.core.Scalar - 11, // 19: flyteidl.core.Literal.collection:type_name -> flyteidl.core.LiteralCollection - 12, // 20: flyteidl.core.Literal.map:type_name -> flyteidl.core.LiteralMap - 20, // 21: flyteidl.core.Literal.metadata:type_name -> flyteidl.core.Literal.MetadataEntry - 10, // 22: flyteidl.core.LiteralCollection.literals:type_name -> flyteidl.core.Literal - 21, // 23: flyteidl.core.LiteralMap.literals:type_name -> flyteidl.core.LiteralMap.LiteralsEntry - 16, // 24: flyteidl.core.BindingDataCollection.bindings:type_name -> flyteidl.core.BindingData - 22, // 25: flyteidl.core.BindingDataMap.bindings:type_name -> flyteidl.core.BindingDataMap.BindingsEntry - 27, // 26: flyteidl.core.UnionInfo.targetType:type_name -> flyteidl.core.LiteralType - 9, // 27: flyteidl.core.BindingData.scalar:type_name -> flyteidl.core.Scalar - 13, // 28: flyteidl.core.BindingData.collection:type_name -> flyteidl.core.BindingDataCollection - 31, // 29: flyteidl.core.BindingData.promise:type_name -> flyteidl.core.OutputReference - 14, // 30: flyteidl.core.BindingData.map:type_name -> flyteidl.core.BindingDataMap - 15, // 31: flyteidl.core.BindingData.union:type_name -> flyteidl.core.UnionInfo - 16, // 32: flyteidl.core.Binding.binding:type_name -> flyteidl.core.BindingData - 10, // 33: flyteidl.core.LiteralMap.LiteralsEntry.value:type_name -> flyteidl.core.Literal - 16, // 34: flyteidl.core.BindingDataMap.BindingsEntry.value:type_name -> flyteidl.core.BindingData - 35, // [35:35] is the sub-list for method output_type - 35, // [35:35] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 31, // 14: flyteidl.core.Scalar.error:type_name -> flyteidl.core.Error + 32, // 15: flyteidl.core.Scalar.generic:type_name -> google.protobuf.Struct + 9, // 16: flyteidl.core.Scalar.structured_dataset:type_name -> flyteidl.core.StructuredDataset + 7, // 17: flyteidl.core.Scalar.union:type_name -> flyteidl.core.Union + 5, // 18: flyteidl.core.Scalar.json:type_name -> flyteidl.core.Json + 10, // 19: flyteidl.core.Literal.scalar:type_name -> flyteidl.core.Scalar + 13, // 20: flyteidl.core.Literal.collection:type_name -> flyteidl.core.LiteralCollection + 14, // 21: flyteidl.core.Literal.map:type_name -> flyteidl.core.LiteralMap + 12, // 22: flyteidl.core.Literal.offloaded_metadata:type_name -> flyteidl.core.LiteralOffloadedMetadata + 22, // 23: flyteidl.core.Literal.metadata:type_name -> flyteidl.core.Literal.MetadataEntry + 29, // 24: flyteidl.core.LiteralOffloadedMetadata.inferred_type:type_name -> flyteidl.core.LiteralType + 11, // 25: flyteidl.core.LiteralCollection.literals:type_name -> flyteidl.core.Literal + 23, // 26: flyteidl.core.LiteralMap.literals:type_name -> flyteidl.core.LiteralMap.LiteralsEntry + 18, // 27: flyteidl.core.BindingDataCollection.bindings:type_name -> flyteidl.core.BindingData + 24, // 28: flyteidl.core.BindingDataMap.bindings:type_name -> flyteidl.core.BindingDataMap.BindingsEntry + 29, // 29: flyteidl.core.UnionInfo.targetType:type_name -> flyteidl.core.LiteralType + 10, // 30: flyteidl.core.BindingData.scalar:type_name -> flyteidl.core.Scalar + 15, // 31: flyteidl.core.BindingData.collection:type_name -> flyteidl.core.BindingDataCollection + 33, // 32: flyteidl.core.BindingData.promise:type_name -> flyteidl.core.OutputReference + 16, // 33: flyteidl.core.BindingData.map:type_name -> flyteidl.core.BindingDataMap + 17, // 34: flyteidl.core.BindingData.union:type_name -> flyteidl.core.UnionInfo + 18, // 35: flyteidl.core.Binding.binding:type_name -> flyteidl.core.BindingData + 11, // 36: flyteidl.core.LiteralMap.LiteralsEntry.value:type_name -> flyteidl.core.Literal + 18, // 37: flyteidl.core.BindingDataMap.BindingsEntry.value:type_name -> flyteidl.core.BindingData + 38, // [38:38] is the sub-list for method output_type + 38, // [38:38] is the sub-list for method input_type + 38, // [38:38] is the sub-list for extension type_name + 38, // [38:38] is the sub-list for extension extendee + 0, // [0:38] is the sub-list for field type_name } func init() { file_flyteidl_core_literals_proto_init() } @@ -1993,7 +2020,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LiteralCollection); i { + switch v := v.(*Literal); i { case 0: return &v.state case 1: @@ -2005,7 +2032,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LiteralCollection); i { + switch v := v.(*LiteralOffloadedMetadata); i { case 0: return &v.state case 1: @@ -2017,7 +2044,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LiteralMap); i { + switch v := v.(*LiteralCollection); i { case 0: return &v.state case 1: @@ -2029,7 +2056,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingDataCollection); i { + switch v := v.(*LiteralMap); i { case 0: return &v.state case 1: @@ -2041,7 +2068,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingDataMap); i { + switch v := v.(*BindingDataCollection); i { case 0: return &v.state case 1: @@ -2053,7 +2080,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnionInfo); i { + switch v := v.(*BindingDataMap); i { case 0: return &v.state case 1: @@ -2065,7 +2092,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BindingData); i { + switch v := v.(*UnionInfo); i { case 0: return &v.state case 1: @@ -2077,7 +2104,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Binding); i { + switch v := v.(*BindingData); i { case 0: return &v.state case 1: @@ -2089,7 +2116,7 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeyValuePair); i { + switch v := v.(*Binding); i { case 0: return &v.state case 1: @@ -2101,6 +2128,18 @@ func file_flyteidl_core_literals_proto_init() { } } file_flyteidl_core_literals_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeyValuePair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl_core_literals_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetryStrategy); i { case 0: return &v.state @@ -2139,7 +2178,7 @@ func file_flyteidl_core_literals_proto_init() { (*Literal_Map)(nil), (*Literal_OffloadedMetadata)(nil), } - file_flyteidl_core_literals_proto_msgTypes[17].OneofWrappers = []interface{}{ + file_flyteidl_core_literals_proto_msgTypes[18].OneofWrappers = []interface{}{ (*BindingData_Scalar)(nil), (*BindingData_Collection)(nil), (*BindingData_Promise)(nil), @@ -2151,7 +2190,7 @@ func file_flyteidl_core_literals_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl_core_literals_proto_rawDesc, NumEnums: 0, - NumMessages: 24, + NumMessages: 25, NumExtensions: 0, NumServices: 0, }, diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json index 6ad72f8a89..291f0dce4a 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json @@ -209,7 +209,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json index ab3d91f069..20a1705d4e 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json @@ -153,7 +153,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json index f3bcd58b8d..c6c16c3956 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -7331,7 +7331,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreK8sObjectMetadata": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json index be021e95a5..44eaa1fe18 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -1186,7 +1186,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreK8sObjectMetadata": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json index afd310d780..a7ea4f7f57 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json @@ -269,7 +269,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json index 38a6396e7d..b1c6e62186 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json @@ -502,7 +502,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreK8sObjectMetadata": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json index 43ed4eb514..fbf8f10cee 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json @@ -345,7 +345,8 @@ "type": "string", "format": "byte" } - } + }, + "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py index dc2f436e8e..2d3bbb1b06 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py @@ -17,7 +17,7 @@ from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\xf0\x03\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05unionB\x07\n\x05value\"\xfa\x02\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x12\x10\n\x03uri\x18\x06 \x01(\tR\x03uri\x12\x1d\n\nsize_bytes\x18\x07 \x01(\x04R\tsizeBytes\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05value\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"\x1c\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xaf\x03\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12X\n\x12offloaded_metadata\x18\x08 \x01(\x0b\x32\'.flyteidl.core.LiteralOffloadedMetadataH\x00R\x11offloadedMetadata\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05valueJ\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\"\x8c\x01\n\x18LiteralOffloadedMetadata\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x1d\n\nsize_bytes\x18\x02 \x01(\x04R\tsizeBytes\x12?\n\rinferred_type\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x0cinferredType\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -42,40 +42,44 @@ _globals['_BLOBMETADATA']._serialized_end=585 _globals['_BINARY']._serialized_start=587 _globals['_BINARY']._serialized_end=635 - _globals['_SCHEMA']._serialized_start=637 - _globals['_SCHEMA']._serialized_end=710 - _globals['_UNION']._serialized_start=712 - _globals['_UNION']._serialized_end=813 - _globals['_STRUCTUREDDATASETMETADATA']._serialized_start=815 - _globals['_STRUCTUREDDATASETMETADATA']._serialized_end=936 - _globals['_STRUCTUREDDATASET']._serialized_start=938 - _globals['_STRUCTUREDDATASET']._serialized_end=1045 - _globals['_SCALAR']._serialized_start=1048 - _globals['_SCALAR']._serialized_end=1544 - _globals['_LITERAL']._serialized_start=1547 - _globals['_LITERAL']._serialized_end=1925 - _globals['_LITERAL_METADATAENTRY']._serialized_start=1857 - _globals['_LITERAL_METADATAENTRY']._serialized_end=1916 - _globals['_LITERALCOLLECTION']._serialized_start=1927 - _globals['_LITERALCOLLECTION']._serialized_end=1998 - _globals['_LITERALMAP']._serialized_start=2001 - _globals['_LITERALMAP']._serialized_end=2167 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2084 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2167 - _globals['_BINDINGDATACOLLECTION']._serialized_start=2169 - _globals['_BINDINGDATACOLLECTION']._serialized_end=2248 - _globals['_BINDINGDATAMAP']._serialized_start=2251 - _globals['_BINDINGDATAMAP']._serialized_end=2429 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2342 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2429 - _globals['_UNIONINFO']._serialized_start=2431 - _globals['_UNIONINFO']._serialized_end=2502 - _globals['_BINDINGDATA']._serialized_start=2505 - _globals['_BINDINGDATA']._serialized_end=2807 - _globals['_BINDING']._serialized_start=2809 - _globals['_BINDING']._serialized_end=2890 - _globals['_KEYVALUEPAIR']._serialized_start=2892 - _globals['_KEYVALUEPAIR']._serialized_end=2946 - _globals['_RETRYSTRATEGY']._serialized_start=2948 - _globals['_RETRYSTRATEGY']._serialized_end=2989 + _globals['_JSON']._serialized_start=637 + _globals['_JSON']._serialized_end=665 + _globals['_SCHEMA']._serialized_start=667 + _globals['_SCHEMA']._serialized_end=740 + _globals['_UNION']._serialized_start=742 + _globals['_UNION']._serialized_end=843 + _globals['_STRUCTUREDDATASETMETADATA']._serialized_start=845 + _globals['_STRUCTUREDDATASETMETADATA']._serialized_end=966 + _globals['_STRUCTUREDDATASET']._serialized_start=968 + _globals['_STRUCTUREDDATASET']._serialized_end=1075 + _globals['_SCALAR']._serialized_start=1078 + _globals['_SCALAR']._serialized_end=1617 + _globals['_LITERAL']._serialized_start=1620 + _globals['_LITERAL']._serialized_end=2051 + _globals['_LITERAL_METADATAENTRY']._serialized_start=1971 + _globals['_LITERAL_METADATAENTRY']._serialized_end=2030 + _globals['_LITERALOFFLOADEDMETADATA']._serialized_start=2054 + _globals['_LITERALOFFLOADEDMETADATA']._serialized_end=2194 + _globals['_LITERALCOLLECTION']._serialized_start=2196 + _globals['_LITERALCOLLECTION']._serialized_end=2267 + _globals['_LITERALMAP']._serialized_start=2270 + _globals['_LITERALMAP']._serialized_end=2436 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2353 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2436 + _globals['_BINDINGDATACOLLECTION']._serialized_start=2438 + _globals['_BINDINGDATACOLLECTION']._serialized_end=2517 + _globals['_BINDINGDATAMAP']._serialized_start=2520 + _globals['_BINDINGDATAMAP']._serialized_end=2698 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2611 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2698 + _globals['_UNIONINFO']._serialized_start=2700 + _globals['_UNIONINFO']._serialized_end=2771 + _globals['_BINDINGDATA']._serialized_start=2774 + _globals['_BINDINGDATA']._serialized_end=3076 + _globals['_BINDING']._serialized_start=3078 + _globals['_BINDING']._serialized_end=3159 + _globals['_KEYVALUEPAIR']._serialized_start=3161 + _globals['_KEYVALUEPAIR']._serialized_end=3215 + _globals['_RETRYSTRATEGY']._serialized_start=3217 + _globals['_RETRYSTRATEGY']._serialized_end=3258 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 5c0b10d0f9..7bc9a9dc13 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -408,6 +408,12 @@ pub struct Binary { #[prost(string, tag="2")] pub tag: ::prost::alloc::string::String, } +/// Represents a JSON object encoded as a byte array. +/// This field is intended to store JSON-serialized data such as dataclasses, +/// dictionaries, pydantic models, or other structures that can be represented +/// as JSON objects. The data should be deserialized into its corresponding +/// structure when used. +/// This design guarantees that the data is stored in a format that can be 100% reconstructed. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Json { From 1b0edc8bac4415b93e5595b79f95f6a20590bc37 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Thu, 5 Sep 2024 22:50:23 +0800 Subject: [PATCH 29/38] update attribute resolver Signed-off-by: Future-Outlier --- .../controller/nodes/attr_path_resolver.go | 29 ++++--------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index d96c0df26a..d88edbe0a0 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -2,8 +2,6 @@ package nodes import ( "encoding/json" - "strings" - "github.com/vmihailenco/msgpack/v5" "google.golang.org/protobuf/types/known/structpb" @@ -45,8 +43,8 @@ func resolveAttrPathInPromise(nodeID string, literal *core.Literal, bindAttrPath // start from index "count" var err error - if json := scalar.GetJson(); json != nil { - currVal, err = resolveAttrPathInJSON(nodeID, json.GetValue(), bindAttrPath[count:]) + if jsonIDL := scalar.GetJson(); jsonIDL != nil { + currVal, err = resolveAttrPathInJSON(nodeID, jsonIDL.GetValue(), bindAttrPath[count:]) } else if generic := scalar.GetGeneric(); generic != nil { currVal, err = resolveAttrPathInPbStruct(nodeID, generic, bindAttrPath[count:]) } @@ -99,25 +97,12 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c var currVal interface{} var tmpVal interface{} var exist bool - var jsonStr string - err := msgpack.Unmarshal(msgpackBytes, &jsonStr) + err := msgpack.Unmarshal(msgpackBytes, &currVal) if err != nil { return nil, err } - // Golang has problem with unmarshalling integer as float64 - // reference: https://stackoverflow.com/questions/22343083/json-unmarshaling-with-long-numbers-gives-floating-point-number - - decoder := json.NewDecoder(strings.NewReader(jsonStr)) - decoder.UseNumber() - - err = decoder.Decode(&tmpVal) - if err != nil { - return nil, err - } - currVal = convertNumbers(tmpVal) - // Turn the current value to a map so it can be resolved more easily for _, attr := range bindAttrPath { switch resolvedVal := currVal.(type) { @@ -223,11 +208,7 @@ func convertJSONToLiteral(nodeID string, obj interface{}) (*core.Literal, error) switch obj := obj.(type) { case map[string]interface{}: - jsonBytes, err := json.Marshal(obj) - if err != nil { - return nil, err - } - msgpackBytes, err := msgpack.Marshal(jsonBytes) + msgpackBytes, err := msgpack.Marshal(obj) if err != nil { return nil, err } @@ -275,6 +256,8 @@ func convertInterfaceToLiteralScalar(nodeID string, obj interface{}) (*core.Lite value.Value = &core.Primitive_StringValue{StringValue: obj} case int: value.Value = &core.Primitive_Integer{Integer: int64(obj)} + case int8: + value.Value = &core.Primitive_Integer{Integer: int64(obj)} case int64: value.Value = &core.Primitive_Integer{Integer: obj} case float64: From fa8cca217051486d873e6bee7ba02ca48c4417d3 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Sun, 8 Sep 2024 11:09:58 +0800 Subject: [PATCH 30/38] remove func convertNumbers Signed-off-by: Future-Outlier --- .../controller/nodes/attr_path_resolver.go | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index d88edbe0a0..e5b181b459 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -1,7 +1,6 @@ package nodes import ( - "encoding/json" "github.com/vmihailenco/msgpack/v5" "google.golang.org/protobuf/types/known/structpb" @@ -128,35 +127,6 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c return literal, err } -// json will automatically convert numbers to float64, so we need to convert it back to int64 if possible -// convertNumbers recursively converts json.Number to int64 or float64 -// flytekit can accept int64 as float transformer's input: -// https://github.com/flyteorg/flytekit/blob/master/flytekit/core/type_engine.py#L1914-L1919 -func convertNumbers(v interface{}) interface{} { - switch vv := v.(type) { - case map[string]interface{}: - for key, value := range vv { - vv[key] = convertNumbers(value) - } - return vv - case []interface{}: - for i, value := range vv { - vv[i] = convertNumbers(value) - } - return vv - case json.Number: - // Try to convert to int64 first - if intVal, err := vv.Int64(); err == nil { - return intVal - } - // If it fails, fall back to float64 - if floatVal, err := vv.Float64(); err == nil { - return floatVal - } - } - return v -} - // convertStructToLiteral converts the protobuf struct (e.g. dataclass) to literal func convertStructToLiteral(nodeID string, obj interface{}) (*core.Literal, error) { From a56d56a4e73e444e1134b956b78c0f30c3008d08 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Sun, 8 Sep 2024 16:52:27 +0800 Subject: [PATCH 31/38] specify msgpack as JSON format Signed-off-by: Future-Outlier --- .../controller/nodes/attr_path_resolver.go | 64 +++++++++++++------ 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index e5b181b459..7527d7d3a8 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -43,7 +43,20 @@ func resolveAttrPathInPromise(nodeID string, literal *core.Literal, bindAttrPath var err error if jsonIDL := scalar.GetJson(); jsonIDL != nil { - currVal, err = resolveAttrPathInJSON(nodeID, jsonIDL.GetValue(), bindAttrPath[count:]) + metadata := currVal.GetMetadata() + + if metadata == nil { + return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, + "metadata is not provided in literal JSON's metadata") + } + + format, ok := metadata["format"] + if !ok { + return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, + "format is not specified in literal JSON's metadata") + } + + currVal, err = resolveAttrPathInJSON(nodeID, jsonIDL.GetValue(), bindAttrPath[count:], format) } else if generic := scalar.GetGeneric(); generic != nil { currVal, err = resolveAttrPathInPbStruct(nodeID, generic, bindAttrPath[count:]) } @@ -90,16 +103,23 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath } // resolveAttrPathInJSON resolves the msgpack bytes (e.g. dataclass) with attribute path -func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*core.PromiseAttribute) (*core.Literal, +func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*core.PromiseAttribute, + format string) (*core.Literal, error) { var currVal interface{} var tmpVal interface{} var exist bool - err := msgpack.Unmarshal(msgpackBytes, &currVal) - if err != nil { - return nil, err + if format == "msgpack" { + err := msgpack.Unmarshal(msgpackBytes, &currVal) + if err != nil { + return nil, err + } + } else { + return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, + "Unsupported format '%v' found for literal value.\n"+ + "Please ensure the format is supported.", format) } // Turn the current value to a map so it can be resolved more easily @@ -122,7 +142,7 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c } // After resolve, convert the interface to literal - literal, err := convertJSONToLiteral(nodeID, currVal) + literal, err := convertJSONToLiteral(nodeID, currVal, format) return literal, err } @@ -172,30 +192,37 @@ func convertStructToLiteral(nodeID string, obj interface{}) (*core.Literal, erro } // convertJSONToLiteral converts the JSON (e.g. dataclass) to literal -func convertJSONToLiteral(nodeID string, obj interface{}) (*core.Literal, error) { +func convertJSONToLiteral(nodeID string, obj interface{}, format string) (*core.Literal, error) { literal := &core.Literal{} switch obj := obj.(type) { case map[string]interface{}: - msgpackBytes, err := msgpack.Marshal(obj) - if err != nil { - return nil, err - } - literal.Value = &core.Literal_Scalar{ - Scalar: &core.Scalar{ - Value: &core.Scalar_Json{ - Json: &core.Json{ - Value: msgpackBytes, + if format == "msgpack" { + msgpackBytes, err := msgpack.Marshal(obj) + if err != nil { + return nil, err + } + literal.Value = &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: msgpackBytes, + }, }, }, - }, + } + literal.Metadata = map[string]string{"format": format} + } else { + return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, + "Unsupported format '%v' found for literal value.\n"+ + "Please ensure the format is supported.", format) } case []interface{}: literals := []*core.Literal{} for _, v := range obj { // recursively convert the interface to literal - literal, err := convertJSONToLiteral(nodeID, v) + literal, err := convertJSONToLiteral(nodeID, v, format) if err != nil { return nil, err } @@ -217,6 +244,7 @@ func convertJSONToLiteral(nodeID string, obj interface{}) (*core.Literal, error) return literal, nil } +// TODO: We should support Blob Types in the future. // convertInterfaceToLiteralScalar converts the a single value to a literal scalar func convertInterfaceToLiteralScalar(nodeID string, obj interface{}) (*core.Literal_Scalar, error) { value := &core.Primitive{} From 5adafcccfa3f91e8672a09088a402353b55f2f81 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Sun, 8 Sep 2024 21:47:59 +0800 Subject: [PATCH 32/38] add tests for attr_path_resolver Signed-off-by: Future-Outlier --- .../controller/nodes/attr_path_resolver.go | 3 +- .../nodes/attr_path_resolver_test.go | 63 +++++++++++-------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index 7527d7d3a8..0a8cc49878 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -199,6 +199,8 @@ func convertJSONToLiteral(nodeID string, obj interface{}, format string) (*core. switch obj := obj.(type) { case map[string]interface{}: if format == "msgpack" { + literal.Metadata = map[string]string{"format": format} + msgpackBytes, err := msgpack.Marshal(obj) if err != nil { return nil, err @@ -212,7 +214,6 @@ func convertJSONToLiteral(nodeID string, obj interface{}, format string) (*core. }, }, } - literal.Metadata = map[string]string{"format": format} } else { return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, "Unsupported format '%v' found for literal value.\n"+ diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go index 4cc0094005..1a4cbe4038 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go @@ -1,7 +1,6 @@ package nodes import ( - "encoding/json" "testing" "github.com/stretchr/testify/assert" @@ -380,9 +379,8 @@ func TestResolveAttrPathInStruct(t *testing.T) { func TestResolveAttrPathInJson(t *testing.T) { // Helper function to convert a map to JSON and then to msgpack - toJSONMsgpack := func(m map[string]interface{}) []byte { - jsonBytes, _ := json.Marshal(m) - msgpackBytes, _ := msgpack.Marshal(jsonBytes) + toMsgpackBytes := func(m map[string]interface{}) []byte { + msgpackBytes, _ := msgpack.Marshal(m) return msgpackBytes } @@ -399,9 +397,9 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ + Value: toMsgpackBytes(map[string]interface{}{ "foo": map[string]interface{}{ - "bar": 42, + "bar": int64(42), "baz": map[string]interface{}{ "qux": 3.14, "quux": "str", @@ -412,6 +410,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the int value at foo.bar path: []*core.PromiseAttribute{ @@ -431,7 +430,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Primitive{ Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{Integer: 42}, + Value: &core.Primitive_Integer{Integer: int64(42)}, }, }, }, @@ -446,9 +445,9 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ + Value: toMsgpackBytes(map[string]interface{}{ "foo": map[string]interface{}{ - "bar": 42, + "bar": int64(42), "baz": map[string]interface{}{ "qux": 3.14, "quux": "str", @@ -459,6 +458,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the float value at foo.baz.qux path: []*core.PromiseAttribute{ @@ -498,9 +498,9 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ + Value: toMsgpackBytes(map[string]interface{}{ "foo": map[string]interface{}{ - "bar": 42, + "bar": int64(42), "baz": map[string]interface{}{ "qux": 3.14, "quux": "str", @@ -511,6 +511,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the string value at foo.baz.quux path: []*core.PromiseAttribute{ @@ -540,13 +541,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ - "foo": []interface{}{42, 3.14, "str"}, + Value: toMsgpackBytes(map[string]interface{}{ + "foo": []interface{}{int64(42), 3.14, "str"}, }), }, }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the int value at foo[0] path: []*core.PromiseAttribute{ @@ -566,7 +568,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Primitive{ Primitive: &core.Primitive{ - Value: &core.Primitive_Integer{Integer: 42}, + Value: &core.Primitive_Integer{Integer: int64(42)}, }, }, }, @@ -581,13 +583,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ - "foo": []interface{}{42, 3.14, "str"}, + Value: toMsgpackBytes(map[string]interface{}{ + "foo": []interface{}{int64(42), 3.14, "str"}, }), }, }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the float value at foo[1] path: []*core.PromiseAttribute{ @@ -622,13 +625,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ - "foo": []interface{}{42, 3.14, "str"}, + Value: toMsgpackBytes(map[string]interface{}{ + "foo": []interface{}{int64(42), 3.14, "str"}, }), }, }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the string value at foo[2] path: []*core.PromiseAttribute{ @@ -653,10 +657,10 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ + Value: toMsgpackBytes(map[string]interface{}{ "foo": map[string]interface{}{ "bar": map[string]interface{}{ - "baz": 42, + "baz": int64(42), }, }, }), @@ -664,6 +668,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the entire nested map at foo.bar path: []*core.PromiseAttribute{ @@ -683,13 +688,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ - "baz": 42, + Value: toMsgpackBytes(map[string]interface{}{ + "baz": int64(42), }), }, }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, hasError: false, }, @@ -700,9 +706,9 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ + Value: toMsgpackBytes(map[string]interface{}{ "foo": map[string]interface{}{ - "bar": 42, + "bar": int64(42), "baz": map[string]interface{}{ "qux": 3.14, "quux": "str", @@ -713,6 +719,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing a non-existing key in the nested map path: []*core.PromiseAttribute{ @@ -742,13 +749,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ - "foo": []interface{}{42, 3.14, "str"}, + Value: toMsgpackBytes(map[string]interface{}{ + "foo": []interface{}{int64(42), 3.14, "str"}, }), }, }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing an out-of-range index in the list path: []*core.PromiseAttribute{ @@ -773,13 +781,14 @@ func TestResolveAttrPathInJson(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: toJSONMsgpack(map[string]interface{}{ + Value: toMsgpackBytes(map[string]interface{}{ "foo": []interface{}{[]interface{}{"bar1", "bar2"}}, }), }, }, }, }, + Metadata: map[string]string{"format": "msgpack"}, }, path: []*core.PromiseAttribute{ { From cf95f401d1b9a0d76a5b29785759fb0e9139b363 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Sun, 8 Sep 2024 23:58:20 +0800 Subject: [PATCH 33/38] add coreutils for flytectl Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/literals.go | 34 ++++++++------ .../clients/go/coreutils/literals_test.go | 44 +++++++++++++------ 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index 0d41b5ab3f..207eef933c 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -10,14 +10,13 @@ import ( "strings" "time" - "github.com/vmihailenco/msgpack/v5" - "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core" "github.com/flyteorg/flyte/flytestdlib/storage" "github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/ptypes" structpb "github.com/golang/protobuf/ptypes/struct" "github.com/pkg/errors" + "github.com/vmihailenco/msgpack/v5" ) func MakePrimitive(v interface{}) (*core.Primitive, error) { @@ -386,6 +385,7 @@ func MakePrimitiveForType(t core.SimpleType, s string) (*core.Primitive, error) func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error) { s = strings.Trim(s, " \n\t") + lv := &core.Literal{} scalar := &core.Scalar{} switch t { case core.SimpleType_STRUCT: @@ -404,6 +404,7 @@ func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error Value: []byte(s), }, } + lv.Metadata = map[string]string{"format": "msgpack"} case core.SimpleType_BINARY: scalar.Value = &core.Scalar_Binary{ Binary: &core.Binary{ @@ -428,11 +429,10 @@ func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error } scalar.Value = &core.Scalar_Primitive{Primitive: p} } - return &core.Literal{ - Value: &core.Literal_Scalar{ - Scalar: scalar, - }, - }, nil + lv.Value = &core.Literal_Scalar{ + Scalar: scalar, + } + return lv, nil } func MustMakeLiteral(v interface{}) *core.Literal { @@ -587,22 +587,30 @@ func MakeLiteralForType(t *core.LiteralType, v interface{}) (*core.Literal, erro } } if newT.Simple == core.SimpleType_JSON { + // Return literal value here because this is the most efficient way to serialize json type if _, isValueStringType := v.(string); !isValueStringType { - jsonBytes, err := json.Marshal(v) + msgpackBytes, err := msgpack.Marshal(v) if err != nil { - return nil, fmt.Errorf("unable to marshal to json string for json value %v: %w", v, err) + return nil, fmt.Errorf("unable to marshal to msgpack bytes for value %v: %w", v, err) } - msgpackBytes, err := msgpack.Marshal(jsonBytes) - if err != nil { - return nil, fmt.Errorf("unable to marshal to msgpack bytes for json string %v: %w", v, err) + l.Value = &core.Literal_Scalar{ + Scalar: &core.Scalar{ + Value: &core.Scalar_Json{ + Json: &core.Json{ + Value: msgpackBytes, + }, + }, + }, } - strValue = string(msgpackBytes) + l.Metadata = map[string]string{"format": "msgpack"} + return l, nil } } lv, err := MakeLiteralForSimpleType(newT.Simple, strValue) if err != nil { return nil, err } + return lv, nil case *core.LiteralType_Blob: diff --git a/flyteidl/clients/go/coreutils/literals_test.go b/flyteidl/clients/go/coreutils/literals_test.go index b1f81f0d75..6bedf82fa2 100644 --- a/flyteidl/clients/go/coreutils/literals_test.go +++ b/flyteidl/clients/go/coreutils/literals_test.go @@ -4,7 +4,6 @@ package coreutils import ( - "encoding/json" "fmt" "reflect" "strconv" @@ -408,7 +407,7 @@ func TestMakeLiteralForBlob(t *testing.T) { } } -func TestMakeLiteralForType(t *testing.T) { +func re(t *testing.T) { t.Run("SimpleInteger", func(t *testing.T) { var literalType = &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_INTEGER}} val, err := MakeLiteralForType(literalType, 1) @@ -456,45 +455,62 @@ func TestMakeLiteralForType(t *testing.T) { }) t.Run("SimpleJson", func(t *testing.T) { + // We compare the deserialized values instead of the raw msgpack bytes because Go does not guarantee the order + // of map keys during serialization. This means that while the serialized bytes may differ, the deserialized + // values should be logically equivalent. + var literalType = &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_JSON}} v := map[string]interface{}{ - "a": 1, + "a": int64(1), "b": 3.14, "c": "example_string", "d": map[string]interface{}{ - "1": 100, - "2": 200, + "1": int64(100), + "2": int64(200), }, "e": map[string]interface{}{ - "a": 1, + "a": int64(1), "b": 3.14, }, "f": []string{"a", "b", "c"}, } + val, err := MakeLiteralForType(literalType, v) assert.NoError(t, err) - jsonBytes, err := json.Marshal(v) - assert.NoError(t, err) - msgpackBytes, err := msgpack.Marshal(jsonBytes) + + msgpackBytes, err := msgpack.Marshal(v) assert.NoError(t, err) - strValue := string(msgpackBytes) + literalVal := &core.Literal{ Value: &core.Literal_Scalar{ Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: []byte(strValue), + Value: msgpackBytes, }, }, }, }, + Metadata: map[string]string{"format": "msgpack"}, } - expectedVal, err := ExtractFromLiteral(literalVal) + expectedLiteralVal, err := ExtractFromLiteral(literalVal) assert.NoError(t, err) - actualVal, err := ExtractFromLiteral(val) + actualLiteralVal, err := ExtractFromLiteral(val) assert.NoError(t, err) - assert.Equal(t, expectedVal, actualVal) + + expectedBytes, ok := expectedLiteralVal.([]byte) + assert.True(t, ok, "expectedLiteralVal is not of type []byte") + actualBytes, ok := actualLiteralVal.([]byte) + assert.True(t, ok, "actualLiteralVal is not of type []byte") + + var expectedVal, actualVal map[string]interface{} + err = msgpack.Unmarshal(expectedBytes, &expectedVal) + assert.NoError(t, err) + err = msgpack.Unmarshal(actualBytes, &actualVal) + assert.NoError(t, err) + + assert.EqualValues(t, expectedVal, actualVal) }) t.Run("ArrayStrings", func(t *testing.T) { From 1631a94149ff9af80745415a57deb2f6f93d0cbe Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 9 Sep 2024 10:50:29 +0800 Subject: [PATCH 34/38] update the IDL Signed-off-by: Future-Outlier --- flyteidl/clients/go/assets/admin.swagger.json | 9 +- .../gen/pb-es/flyteidl/core/literals_pb.ts | 23 +- .../gen/pb-go/flyteidl/core/literals.pb.go | 370 +++++++++--------- .../cacheservice/cacheservice.swagger.json | 9 +- .../datacatalog/datacatalog.swagger.json | 9 +- .../flyteidl/service/admin.swagger.json | 9 +- .../flyteidl/service/agent.swagger.json | 9 +- .../flyteidl/service/dataproxy.swagger.json | 9 +- .../external_plugin_service.swagger.json | 9 +- .../flyteidl/service/signal.swagger.json | 9 +- flyteidl/gen/pb-js/flyteidl.d.ts | 6 + flyteidl/gen/pb-js/flyteidl.js | 17 + .../pb_python/flyteidl/core/literals_pb2.py | 80 ++-- .../pb_python/flyteidl/core/literals_pb2.pyi | 6 +- flyteidl/gen/pb_rust/flyteidl.core.rs | 17 +- flyteidl/protos/flyteidl/core/literals.proto | 23 +- 16 files changed, 364 insertions(+), 250 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index c6c16c3956..51d88c88fd 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -7329,10 +7329,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreK8sObjectMetadata": { "type": "object", diff --git a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts index f35bb7523c..fbaa8023c5 100644 --- a/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/core/literals_pb.ts @@ -255,20 +255,32 @@ export class Binary extends Message { /** * Represents a JSON object encoded as a byte array. - * This field is intended to store JSON-serialized data such as dataclasses, - * dictionaries, pydantic models, or other structures that can be represented - * as JSON objects. The data should be deserialized into its corresponding - * structure when used. - * This design guarantees that the data is stored in a format that can be 100% reconstructed. + * This field is used to store JSON-serialized data, which can include + * dataclasses, dictionaries, Pydantic models, or other structures that + * can be represented as JSON objects. When utilized, the data should be + * deserialized into its corresponding structure. + * This design ensures that the data is stored in a format that can be + * fully reconstructed without loss of information. * * @generated from message flyteidl.core.Json */ export class Json extends Message { /** + * The JSON object serialized as a byte array. + * * @generated from field: bytes value = 1; */ value = new Uint8Array(0); + /** + * The format used to serialize the byte array. + * This field identifies the specific format of the serialized JSON data, + * allowing future flexibility in supporting different JSON variants. + * + * @generated from field: string serialization_format = 2; + */ + serializationFormat = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -278,6 +290,7 @@ export class Json extends Message { static readonly typeName = "flyteidl.core.Json"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "value", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, + { no: 2, name: "serialization_format", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Json { diff --git a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go index bc3da78246..83096ec121 100644 --- a/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/core/literals.pb.go @@ -366,17 +366,23 @@ func (x *Binary) GetTag() string { } // Represents a JSON object encoded as a byte array. -// This field is intended to store JSON-serialized data such as dataclasses, -// dictionaries, pydantic models, or other structures that can be represented -// as JSON objects. The data should be deserialized into its corresponding -// structure when used. -// This design guarantees that the data is stored in a format that can be 100% reconstructed. +// This field is used to store JSON-serialized data, which can include +// dataclasses, dictionaries, Pydantic models, or other structures that +// can be represented as JSON objects. When utilized, the data should be +// deserialized into its corresponding structure. +// This design ensures that the data is stored in a format that can be +// fully reconstructed without loss of information. type Json struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The JSON object serialized as a byte array. Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + // The format used to serialize the byte array. + // This field identifies the specific format of the serialized JSON data, + // allowing future flexibility in supporting different JSON variants. + SerializationFormat string `protobuf:"bytes,2,opt,name=serialization_format,json=serializationFormat,proto3" json:"serialization_format,omitempty"` } func (x *Json) Reset() { @@ -418,6 +424,13 @@ func (x *Json) GetValue() []byte { return nil } +func (x *Json) GetSerializationFormat() string { + if x != nil { + return x.SerializationFormat + } + return "" +} + // A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. type Schema struct { state protoimpl.MessageState @@ -1606,183 +1619,186 @@ var file_flyteidl_core_literals_proto_rawDesc = []byte{ 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x30, 0x0a, 0x06, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x1c, 0x0a, 0x04, 0x4a, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x4f, 0x0a, 0x04, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x49, 0x0a, 0x06, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x65, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x73, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x49, 0x0a, 0x06, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x65, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, + 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x17, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x44, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x9b, 0x04, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x38, - 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, - 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x04, 0x62, - 0x6c, 0x6f, 0x62, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, - 0x6e, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x48, 0x00, 0x52, - 0x08, 0x6e, 0x6f, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x51, 0x0a, 0x12, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, - 0x2c, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, - 0x6e, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, - 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0xaf, 0x03, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2f, 0x0a, - 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, - 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x42, - 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, - 0x70, 0x12, 0x58, 0x0a, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, - 0x64, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, - 0x07, 0x10, 0x08, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4f, - 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x0a, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, 0x08, 0x6c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x1a, - 0x53, 0x0a, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, - 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, - 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x62, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x09, 0x55, 0x6e, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, + 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x79, + 0x0a, 0x19, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x17, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x11, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, + 0x12, 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9b, 0x04, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, + 0x72, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, + 0x52, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x62, + 0x6c, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x00, + 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, + 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, + 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, 0x65, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, + 0x48, 0x00, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, + 0x51, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, + 0x11, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, + 0x12, 0x29, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4a, + 0x73, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xaf, 0x03, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, + 0x72, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, + 0x03, 0x6d, 0x61, 0x70, 0x12, 0x58, 0x0a, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, + 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, + 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x6f, 0x66, 0x66, + 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, + 0x73, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, + 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, - 0x61, 0x6c, 0x61, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0xa6, + 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x43, 0x0a, + 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x73, 0x1a, 0x53, 0x0a, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4f, 0x0a, 0x15, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x36, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0e, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x62, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x2e, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x57, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, + 0x09, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, + 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3a, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, + 0x61, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x44, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, + 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x76, 0x61, 0x72, 0x12, 0x34, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x2e, 0x0a, 0x05, 0x75, - 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x51, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, - 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, - 0x72, 0x12, 0x34, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x29, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, 0x0a, 0x11, 0x63, - 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x42, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, - 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x43, - 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, - 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x43, - 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, 0x6f, 0x72, 0x65, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, + 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x29, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0xb3, 0x01, + 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, + 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, + 0xa2, 0x02, 0x03, 0x46, 0x43, 0x58, 0xaa, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0d, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x19, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x5c, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x43, + 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json index 291f0dce4a..5e0be2e493 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/cacheservice/cacheservice.swagger.json @@ -207,10 +207,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json index 20a1705d4e..bcaaa4aa67 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/datacatalog/datacatalog.swagger.json @@ -151,10 +151,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json index c6c16c3956..51d88c88fd 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -7329,10 +7329,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreK8sObjectMetadata": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json index 44eaa1fe18..c00f60bd8b 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/agent.swagger.json @@ -1184,10 +1184,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreK8sObjectMetadata": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json index a7ea4f7f57..bee405eae7 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/dataproxy.swagger.json @@ -267,10 +267,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json index b1c6e62186..a9edaba459 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/external_plugin_service.swagger.json @@ -500,10 +500,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreK8sObjectMetadata": { "type": "object", diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json index fbf8f10cee..3acf09f274 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/signal.swagger.json @@ -343,10 +343,15 @@ "properties": { "value": { "type": "string", - "format": "byte" + "format": "byte", + "description": "The JSON object serialized as a byte array." + }, + "serialization_format": { + "type": "string", + "description": "The format used to serialize the byte array.\nThis field identifies the specific format of the serialized JSON data,\nallowing future flexibility in supporting different JSON variants." } }, - "description": "Represents a JSON object encoded as a byte array.\nThis field is intended to store JSON-serialized data such as dataclasses,\ndictionaries, pydantic models, or other structures that can be represented\nas JSON objects. The data should be deserialized into its corresponding\nstructure when used.\nThis design guarantees that the data is stored in a format that can be 100% reconstructed." + "description": "Represents a JSON object encoded as a byte array.\nThis field is used to store JSON-serialized data, which can include\ndataclasses, dictionaries, Pydantic models, or other structures that\ncan be represented as JSON objects. When utilized, the data should be\ndeserialized into its corresponding structure.\nThis design ensures that the data is stored in a format that can be\nfully reconstructed without loss of information." }, "coreLiteral": { "type": "object", diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 7c2a0f452e..10c47fa415 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -3050,6 +3050,9 @@ export namespace flyteidl { /** Json value */ value?: (Uint8Array|null); + + /** Json serializationFormat */ + serializationFormat?: (string|null); } /** Represents a Json. */ @@ -3064,6 +3067,9 @@ export namespace flyteidl { /** Json value. */ public value: Uint8Array; + /** Json serializationFormat. */ + public serializationFormat: string; + /** * Creates a new Json instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index b78344b067..36509e32dd 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -7281,6 +7281,7 @@ * @memberof flyteidl.core * @interface IJson * @property {Uint8Array|null} [value] Json value + * @property {string|null} [serializationFormat] Json serializationFormat */ /** @@ -7306,6 +7307,14 @@ */ Json.prototype.value = $util.newBuffer([]); + /** + * Json serializationFormat. + * @member {string} serializationFormat + * @memberof flyteidl.core.Json + * @instance + */ + Json.prototype.serializationFormat = ""; + /** * Creates a new Json instance using the specified properties. * @function create @@ -7332,6 +7341,8 @@ writer = $Writer.create(); if (message.value != null && message.hasOwnProperty("value")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); + if (message.serializationFormat != null && message.hasOwnProperty("serializationFormat")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.serializationFormat); return writer; }; @@ -7356,6 +7367,9 @@ case 1: message.value = reader.bytes(); break; + case 2: + message.serializationFormat = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -7378,6 +7392,9 @@ if (message.value != null && message.hasOwnProperty("value")) if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) return "value: buffer expected"; + if (message.serializationFormat != null && message.hasOwnProperty("serializationFormat")) + if (!$util.isString(message.serializationFormat)) + return "serializationFormat: string expected"; return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py index 2d3bbb1b06..f75e81f571 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.py @@ -17,7 +17,7 @@ from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"\x1c\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xaf\x03\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12X\n\x12offloaded_metadata\x18\x08 \x01(\x0b\x32\'.flyteidl.core.LiteralOffloadedMetadataH\x00R\x11offloadedMetadata\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05valueJ\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\"\x8c\x01\n\x18LiteralOffloadedMetadata\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x1d\n\nsize_bytes\x18\x02 \x01(\x04R\tsizeBytes\x12?\n\rinferred_type\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x0cinferredType\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lyteidl/core/literals.proto\x12\rflyteidl.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19\x66lyteidl/core/types.proto\"\x87\x02\n\tPrimitive\x12\x1a\n\x07integer\x18\x01 \x01(\x03H\x00R\x07integer\x12!\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00R\nfloatValue\x12#\n\x0cstring_value\x18\x03 \x01(\tH\x00R\x0bstringValue\x12\x1a\n\x07\x62oolean\x18\x04 \x01(\x08H\x00R\x07\x62oolean\x12\x38\n\x08\x64\x61tetime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x08\x64\x61tetime\x12\x37\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00R\x08\x64urationB\x07\n\x05value\"\x06\n\x04Void\"Q\n\x04\x42lob\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.flyteidl.core.BlobMetadataR\x08metadata\x12\x10\n\x03uri\x18\x03 \x01(\tR\x03uri\";\n\x0c\x42lobMetadata\x12+\n\x04type\x18\x01 \x01(\x0b\x32\x17.flyteidl.core.BlobTypeR\x04type\"0\n\x06\x42inary\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x10\n\x03tag\x18\x02 \x01(\tR\x03tag\"O\n\x04Json\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12\x31\n\x14serialization_format\x18\x02 \x01(\tR\x13serializationFormat\"I\n\x06Schema\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12-\n\x04type\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.SchemaTypeR\x04type\"e\n\x05Union\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value\x12.\n\x04type\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\"y\n\x19StructuredDatasetMetadata\x12\\\n\x17structured_dataset_type\x18\x01 \x01(\x0b\x32$.flyteidl.core.StructuredDatasetTypeR\x15structuredDatasetType\"k\n\x11StructuredDataset\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x44\n\x08metadata\x18\x02 \x01(\x0b\x32(.flyteidl.core.StructuredDatasetMetadataR\x08metadata\"\x9b\x04\n\x06Scalar\x12\x38\n\tprimitive\x18\x01 \x01(\x0b\x32\x18.flyteidl.core.PrimitiveH\x00R\tprimitive\x12)\n\x04\x62lob\x18\x02 \x01(\x0b\x32\x13.flyteidl.core.BlobH\x00R\x04\x62lob\x12/\n\x06\x62inary\x18\x03 \x01(\x0b\x32\x15.flyteidl.core.BinaryH\x00R\x06\x62inary\x12/\n\x06schema\x18\x04 \x01(\x0b\x32\x15.flyteidl.core.SchemaH\x00R\x06schema\x12\x32\n\tnone_type\x18\x05 \x01(\x0b\x32\x13.flyteidl.core.VoidH\x00R\x08noneType\x12,\n\x05\x65rror\x18\x06 \x01(\x0b\x32\x14.flyteidl.core.ErrorH\x00R\x05\x65rror\x12\x33\n\x07generic\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x00R\x07generic\x12Q\n\x12structured_dataset\x18\x08 \x01(\x0b\x32 .flyteidl.core.StructuredDatasetH\x00R\x11structuredDataset\x12,\n\x05union\x18\t \x01(\x0b\x32\x14.flyteidl.core.UnionH\x00R\x05union\x12)\n\x04json\x18\n \x01(\x0b\x32\x13.flyteidl.core.JsonH\x00R\x04jsonB\x07\n\x05value\"\xaf\x03\n\x07Literal\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x42\n\ncollection\x18\x02 \x01(\x0b\x32 .flyteidl.core.LiteralCollectionH\x00R\ncollection\x12-\n\x03map\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapH\x00R\x03map\x12X\n\x12offloaded_metadata\x18\x08 \x01(\x0b\x32\'.flyteidl.core.LiteralOffloadedMetadataH\x00R\x11offloadedMetadata\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12@\n\x08metadata\x18\x05 \x03(\x0b\x32$.flyteidl.core.Literal.MetadataEntryR\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x07\n\x05valueJ\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\"\x8c\x01\n\x18LiteralOffloadedMetadata\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12\x1d\n\nsize_bytes\x18\x02 \x01(\x04R\tsizeBytes\x12?\n\rinferred_type\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x0cinferredType\"G\n\x11LiteralCollection\x12\x32\n\x08literals\x18\x01 \x03(\x0b\x32\x16.flyteidl.core.LiteralR\x08literals\"\xa6\x01\n\nLiteralMap\x12\x43\n\x08literals\x18\x01 \x03(\x0b\x32\'.flyteidl.core.LiteralMap.LiteralsEntryR\x08literals\x1aS\n\rLiteralsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.LiteralR\x05value:\x02\x38\x01\"O\n\x15\x42indingDataCollection\x12\x36\n\x08\x62indings\x18\x01 \x03(\x0b\x32\x1a.flyteidl.core.BindingDataR\x08\x62indings\"\xb2\x01\n\x0e\x42indingDataMap\x12G\n\x08\x62indings\x18\x01 \x03(\x0b\x32+.flyteidl.core.BindingDataMap.BindingsEntryR\x08\x62indings\x1aW\n\rBindingsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x05value:\x02\x38\x01\"G\n\tUnionInfo\x12:\n\ntargetType\x18\x01 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\ntargetType\"\xae\x02\n\x0b\x42indingData\x12/\n\x06scalar\x18\x01 \x01(\x0b\x32\x15.flyteidl.core.ScalarH\x00R\x06scalar\x12\x46\n\ncollection\x18\x02 \x01(\x0b\x32$.flyteidl.core.BindingDataCollectionH\x00R\ncollection\x12:\n\x07promise\x18\x03 \x01(\x0b\x32\x1e.flyteidl.core.OutputReferenceH\x00R\x07promise\x12\x31\n\x03map\x18\x04 \x01(\x0b\x32\x1d.flyteidl.core.BindingDataMapH\x00R\x03map\x12.\n\x05union\x18\x05 \x01(\x0b\x32\x18.flyteidl.core.UnionInfoR\x05unionB\x07\n\x05value\"Q\n\x07\x42inding\x12\x10\n\x03var\x18\x01 \x01(\tR\x03var\x12\x34\n\x07\x62inding\x18\x02 \x01(\x0b\x32\x1a.flyteidl.core.BindingDataR\x07\x62inding\"6\n\x0cKeyValuePair\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\")\n\rRetryStrategy\x12\x18\n\x07retries\x18\x05 \x01(\rR\x07retriesB\xb3\x01\n\x11\x63om.flyteidl.coreB\rLiteralsProtoP\x01Z:github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core\xa2\x02\x03\x46\x43X\xaa\x02\rFlyteidl.Core\xca\x02\rFlyteidl\\Core\xe2\x02\x19\x46lyteidl\\Core\\GPBMetadata\xea\x02\x0e\x46lyteidl::Coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -43,43 +43,43 @@ _globals['_BINARY']._serialized_start=587 _globals['_BINARY']._serialized_end=635 _globals['_JSON']._serialized_start=637 - _globals['_JSON']._serialized_end=665 - _globals['_SCHEMA']._serialized_start=667 - _globals['_SCHEMA']._serialized_end=740 - _globals['_UNION']._serialized_start=742 - _globals['_UNION']._serialized_end=843 - _globals['_STRUCTUREDDATASETMETADATA']._serialized_start=845 - _globals['_STRUCTUREDDATASETMETADATA']._serialized_end=966 - _globals['_STRUCTUREDDATASET']._serialized_start=968 - _globals['_STRUCTUREDDATASET']._serialized_end=1075 - _globals['_SCALAR']._serialized_start=1078 - _globals['_SCALAR']._serialized_end=1617 - _globals['_LITERAL']._serialized_start=1620 - _globals['_LITERAL']._serialized_end=2051 - _globals['_LITERAL_METADATAENTRY']._serialized_start=1971 - _globals['_LITERAL_METADATAENTRY']._serialized_end=2030 - _globals['_LITERALOFFLOADEDMETADATA']._serialized_start=2054 - _globals['_LITERALOFFLOADEDMETADATA']._serialized_end=2194 - _globals['_LITERALCOLLECTION']._serialized_start=2196 - _globals['_LITERALCOLLECTION']._serialized_end=2267 - _globals['_LITERALMAP']._serialized_start=2270 - _globals['_LITERALMAP']._serialized_end=2436 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2353 - _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2436 - _globals['_BINDINGDATACOLLECTION']._serialized_start=2438 - _globals['_BINDINGDATACOLLECTION']._serialized_end=2517 - _globals['_BINDINGDATAMAP']._serialized_start=2520 - _globals['_BINDINGDATAMAP']._serialized_end=2698 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2611 - _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2698 - _globals['_UNIONINFO']._serialized_start=2700 - _globals['_UNIONINFO']._serialized_end=2771 - _globals['_BINDINGDATA']._serialized_start=2774 - _globals['_BINDINGDATA']._serialized_end=3076 - _globals['_BINDING']._serialized_start=3078 - _globals['_BINDING']._serialized_end=3159 - _globals['_KEYVALUEPAIR']._serialized_start=3161 - _globals['_KEYVALUEPAIR']._serialized_end=3215 - _globals['_RETRYSTRATEGY']._serialized_start=3217 - _globals['_RETRYSTRATEGY']._serialized_end=3258 + _globals['_JSON']._serialized_end=716 + _globals['_SCHEMA']._serialized_start=718 + _globals['_SCHEMA']._serialized_end=791 + _globals['_UNION']._serialized_start=793 + _globals['_UNION']._serialized_end=894 + _globals['_STRUCTUREDDATASETMETADATA']._serialized_start=896 + _globals['_STRUCTUREDDATASETMETADATA']._serialized_end=1017 + _globals['_STRUCTUREDDATASET']._serialized_start=1019 + _globals['_STRUCTUREDDATASET']._serialized_end=1126 + _globals['_SCALAR']._serialized_start=1129 + _globals['_SCALAR']._serialized_end=1668 + _globals['_LITERAL']._serialized_start=1671 + _globals['_LITERAL']._serialized_end=2102 + _globals['_LITERAL_METADATAENTRY']._serialized_start=2022 + _globals['_LITERAL_METADATAENTRY']._serialized_end=2081 + _globals['_LITERALOFFLOADEDMETADATA']._serialized_start=2105 + _globals['_LITERALOFFLOADEDMETADATA']._serialized_end=2245 + _globals['_LITERALCOLLECTION']._serialized_start=2247 + _globals['_LITERALCOLLECTION']._serialized_end=2318 + _globals['_LITERALMAP']._serialized_start=2321 + _globals['_LITERALMAP']._serialized_end=2487 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_start=2404 + _globals['_LITERALMAP_LITERALSENTRY']._serialized_end=2487 + _globals['_BINDINGDATACOLLECTION']._serialized_start=2489 + _globals['_BINDINGDATACOLLECTION']._serialized_end=2568 + _globals['_BINDINGDATAMAP']._serialized_start=2571 + _globals['_BINDINGDATAMAP']._serialized_end=2749 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_start=2662 + _globals['_BINDINGDATAMAP_BINDINGSENTRY']._serialized_end=2749 + _globals['_UNIONINFO']._serialized_start=2751 + _globals['_UNIONINFO']._serialized_end=2822 + _globals['_BINDINGDATA']._serialized_start=2825 + _globals['_BINDINGDATA']._serialized_end=3127 + _globals['_BINDING']._serialized_start=3129 + _globals['_BINDING']._serialized_end=3210 + _globals['_KEYVALUEPAIR']._serialized_start=3212 + _globals['_KEYVALUEPAIR']._serialized_end=3266 + _globals['_RETRYSTRATEGY']._serialized_start=3268 + _globals['_RETRYSTRATEGY']._serialized_end=3309 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi index 1dfc69a2c3..aee3e88a22 100644 --- a/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/core/literals_pb2.pyi @@ -52,10 +52,12 @@ class Binary(_message.Message): def __init__(self, value: _Optional[bytes] = ..., tag: _Optional[str] = ...) -> None: ... class Json(_message.Message): - __slots__ = ["value"] + __slots__ = ["value", "serialization_format"] VALUE_FIELD_NUMBER: _ClassVar[int] + SERIALIZATION_FORMAT_FIELD_NUMBER: _ClassVar[int] value: bytes - def __init__(self, value: _Optional[bytes] = ...) -> None: ... + serialization_format: str + def __init__(self, value: _Optional[bytes] = ..., serialization_format: _Optional[str] = ...) -> None: ... class Schema(_message.Message): __slots__ = ["uri", "type"] diff --git a/flyteidl/gen/pb_rust/flyteidl.core.rs b/flyteidl/gen/pb_rust/flyteidl.core.rs index 7bc9a9dc13..ff5f1a5fd8 100644 --- a/flyteidl/gen/pb_rust/flyteidl.core.rs +++ b/flyteidl/gen/pb_rust/flyteidl.core.rs @@ -409,16 +409,23 @@ pub struct Binary { pub tag: ::prost::alloc::string::String, } /// Represents a JSON object encoded as a byte array. -/// This field is intended to store JSON-serialized data such as dataclasses, -/// dictionaries, pydantic models, or other structures that can be represented -/// as JSON objects. The data should be deserialized into its corresponding -/// structure when used. -/// This design guarantees that the data is stored in a format that can be 100% reconstructed. +/// This field is used to store JSON-serialized data, which can include +/// dataclasses, dictionaries, Pydantic models, or other structures that +/// can be represented as JSON objects. When utilized, the data should be +/// deserialized into its corresponding structure. +/// This design ensures that the data is stored in a format that can be +/// fully reconstructed without loss of information. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Json { + /// The JSON object serialized as a byte array. #[prost(bytes="vec", tag="1")] pub value: ::prost::alloc::vec::Vec, + /// The format used to serialize the byte array. + /// This field identifies the specific format of the serialized JSON data, + /// allowing future flexibility in supporting different JSON variants. + #[prost(string, tag="2")] + pub serialization_format: ::prost::alloc::string::String, } /// A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. #[allow(clippy::derive_partial_eq_without_eq)] diff --git a/flyteidl/protos/flyteidl/core/literals.proto b/flyteidl/protos/flyteidl/core/literals.proto index ab314285ec..ebc8ad9c35 100644 --- a/flyteidl/protos/flyteidl/core/literals.proto +++ b/flyteidl/protos/flyteidl/core/literals.proto @@ -47,15 +47,28 @@ message Binary { } // Represents a JSON object encoded as a byte array. -// This field is intended to store JSON-serialized data such as dataclasses, -// dictionaries, pydantic models, or other structures that can be represented -// as JSON objects. The data should be deserialized into its corresponding -// structure when used. -// This design guarantees that the data is stored in a format that can be 100% reconstructed. +// This field is used to store JSON-serialized data, which can include +// dataclasses, dictionaries, Pydantic models, or other structures that +// can be represented as JSON objects. When utilized, the data should be +// deserialized into its corresponding structure. +// This design ensures that the data is stored in a format that can be +// fully reconstructed without loss of information. message Json { + // The JSON object serialized as a byte array. bytes value = 1; + + // The format used to serialize the byte array. + // This field identifies the specific format of the serialized JSON data, + // allowing future flexibility in supporting different JSON variants. + string serialization_format = 2; + + // Placeholder for future extensions to support other types of JSON objects, + // such as "eJSON" or "ndJSON". + // reference: https://stackoverflow.com/questions/18692060/different-types-of-json + // string json_type = 3; } + // A strongly typed schema that defines the interface of data retrieved from the underlying storage medium. message Schema { string uri = 1; From 6f07cdd3bde3881f081c7c88bb335ddec6f97870 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 9 Sep 2024 11:45:58 +0800 Subject: [PATCH 35/38] add serialization format in flytepropeller and flytectl Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/literals.go | 8 ++-- .../controller/nodes/attr_path_resolver.go | 40 ++++++------------- 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index 207eef933c..910eb35af6 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -401,10 +401,10 @@ func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error case core.SimpleType_JSON: scalar.Value = &core.Scalar_Json{ Json: &core.Json{ - Value: []byte(s), + Value: []byte(s), + SerializationFormat: "msgpack", }, } - lv.Metadata = map[string]string{"format": "msgpack"} case core.SimpleType_BINARY: scalar.Value = &core.Scalar_Binary{ Binary: &core.Binary{ @@ -597,12 +597,12 @@ func MakeLiteralForType(t *core.LiteralType, v interface{}) (*core.Literal, erro Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: msgpackBytes, + Value: msgpackBytes, + SerializationFormat: "msgpack", }, }, }, } - l.Metadata = map[string]string{"format": "msgpack"} return l, nil } } diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index 0a8cc49878..e2b534ddfd 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -43,20 +43,8 @@ func resolveAttrPathInPromise(nodeID string, literal *core.Literal, bindAttrPath var err error if jsonIDL := scalar.GetJson(); jsonIDL != nil { - metadata := currVal.GetMetadata() - - if metadata == nil { - return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, - "metadata is not provided in literal JSON's metadata") - } - - format, ok := metadata["format"] - if !ok { - return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, - "format is not specified in literal JSON's metadata") - } - - currVal, err = resolveAttrPathInJSON(nodeID, jsonIDL.GetValue(), bindAttrPath[count:], format) + serializationFormat := jsonIDL.GetSerializationFormat() + currVal, err = resolveAttrPathInJSON(nodeID, jsonIDL.GetValue(), bindAttrPath[count:], serializationFormat) } else if generic := scalar.GetGeneric(); generic != nil { currVal, err = resolveAttrPathInPbStruct(nodeID, generic, bindAttrPath[count:]) } @@ -104,14 +92,14 @@ func resolveAttrPathInPbStruct(nodeID string, st *structpb.Struct, bindAttrPath // resolveAttrPathInJSON resolves the msgpack bytes (e.g. dataclass) with attribute path func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*core.PromiseAttribute, - format string) (*core.Literal, + serializationFormat string) (*core.Literal, error) { var currVal interface{} var tmpVal interface{} var exist bool - if format == "msgpack" { + if serializationFormat == "msgpack" { err := msgpack.Unmarshal(msgpackBytes, &currVal) if err != nil { return nil, err @@ -119,7 +107,7 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c } else { return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, "Unsupported format '%v' found for literal value.\n"+ - "Please ensure the format is supported.", format) + "Please ensure the serialization format is supported.", serializationFormat) } // Turn the current value to a map so it can be resolved more easily @@ -142,7 +130,7 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c } // After resolve, convert the interface to literal - literal, err := convertJSONToLiteral(nodeID, currVal, format) + literal, err := convertJSONToLiteral(nodeID, currVal, serializationFormat) return literal, err } @@ -192,15 +180,12 @@ func convertStructToLiteral(nodeID string, obj interface{}) (*core.Literal, erro } // convertJSONToLiteral converts the JSON (e.g. dataclass) to literal -func convertJSONToLiteral(nodeID string, obj interface{}, format string) (*core.Literal, error) { - +func convertJSONToLiteral(nodeID string, obj interface{}, serializationFormat string) (*core.Literal, error) { literal := &core.Literal{} switch obj := obj.(type) { case map[string]interface{}: - if format == "msgpack" { - literal.Metadata = map[string]string{"format": format} - + if serializationFormat == "msgpack" { msgpackBytes, err := msgpack.Marshal(obj) if err != nil { return nil, err @@ -209,21 +194,22 @@ func convertJSONToLiteral(nodeID string, obj interface{}, format string) (*core. Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: msgpackBytes, + Value: msgpackBytes, + SerializationFormat: serializationFormat, }, }, }, } } else { return nil, errors.Errorf(errors.PromiseAttributeResolveError, nodeID, - "Unsupported format '%v' found for literal value.\n"+ - "Please ensure the format is supported.", format) + "Unsupported serialization format '%v' found for literal value.\n"+ + "Please ensure the serialization format is supported.", serializationFormat) } case []interface{}: literals := []*core.Literal{} for _, v := range obj { // recursively convert the interface to literal - literal, err := convertJSONToLiteral(nodeID, v, format) + literal, err := convertJSONToLiteral(nodeID, v, serializationFormat) if err != nil { return nil, err } From 44da0cd29ccebe8b6af3e90bb26dbfa3bcbc744a Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 9 Sep 2024 12:12:03 +0800 Subject: [PATCH 36/38] support SerializationFormat: msgpack in coreutils/literals.go MakeDefaultLiteralForType Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/literals.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index 910eb35af6..f066fbd725 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -256,7 +256,8 @@ func MakeDefaultLiteralForType(typ *core.LiteralType) (*core.Literal, error) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: []byte(""), + Value: []byte(""), + SerializationFormat: "msgpack", }, }, }, From 2a12ce2f9b364f5104f01370b7f93001cc0b1f2e Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 9 Sep 2024 13:59:02 +0800 Subject: [PATCH 37/38] fix propeller's test Signed-off-by: Future-Outlier --- .../controller/nodes/attr_path_resolver.go | 4 ++-- .../nodes/attr_path_resolver_test.go | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go index e2b534ddfd..8cfc1297a5 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver.go @@ -11,7 +11,7 @@ import ( // resolveAttrPathInPromise resolves the literal with attribute path // If the promise is chained with attributes (e.g. promise.a["b"][0]), then we need to resolve the promise func resolveAttrPathInPromise(nodeID string, literal *core.Literal, bindAttrPath []*core.PromiseAttribute) (*core.Literal, error) { - var currVal *core.Literal = literal + var currVal = literal var tmpVal *core.Literal var exist bool count := 0 @@ -110,7 +110,7 @@ func resolveAttrPathInJSON(nodeID string, msgpackBytes []byte, bindAttrPath []*c "Please ensure the serialization format is supported.", serializationFormat) } - // Turn the current value to a map so it can be resolved more easily + // Turn the current value to a map, so it can be resolved more easily for _, attr := range bindAttrPath { switch resolvedVal := currVal.(type) { // map diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go index 1a4cbe4038..7d90b226be 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go @@ -406,6 +406,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }), + SerializationFormat: "msgpack", }, }, }, @@ -454,11 +455,11 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the float value at foo.baz.qux path: []*core.PromiseAttribute{ @@ -507,6 +508,7 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }), + SerializationFormat: "msgpack", }, }, }, @@ -544,11 +546,11 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: toMsgpackBytes(map[string]interface{}{ "foo": []interface{}{int64(42), 3.14, "str"}, }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the int value at foo[0] path: []*core.PromiseAttribute{ @@ -586,6 +588,7 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: toMsgpackBytes(map[string]interface{}{ "foo": []interface{}{int64(42), 3.14, "str"}, }), + SerializationFormat: "msgpack", }, }, }, @@ -628,11 +631,11 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: toMsgpackBytes(map[string]interface{}{ "foo": []interface{}{int64(42), 3.14, "str"}, }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the string value at foo[2] path: []*core.PromiseAttribute{ @@ -664,11 +667,11 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the entire nested map at foo.bar path: []*core.PromiseAttribute{ @@ -691,11 +694,11 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: toMsgpackBytes(map[string]interface{}{ "baz": int64(42), }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, hasError: false, }, @@ -715,11 +718,11 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing a non-existing key in the nested map path: []*core.PromiseAttribute{ @@ -752,11 +755,11 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: toMsgpackBytes(map[string]interface{}{ "foo": []interface{}{int64(42), 3.14, "str"}, }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing an out-of-range index in the list path: []*core.PromiseAttribute{ @@ -784,11 +787,11 @@ func TestResolveAttrPathInJson(t *testing.T) { Value: toMsgpackBytes(map[string]interface{}{ "foo": []interface{}{[]interface{}{"bar1", "bar2"}}, }), + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, path: []*core.PromiseAttribute{ { From 27dbc639f68749e26531214d8e202541c308a0b3 Mon Sep 17 00:00:00 2001 From: Future-Outlier Date: Mon, 9 Sep 2024 14:10:25 +0800 Subject: [PATCH 38/38] fix coreutils test Signed-off-by: Future-Outlier --- flyteidl/clients/go/coreutils/literals.go | 10 +++++----- flyteidl/clients/go/coreutils/literals_test.go | 10 ++++++---- .../pkg/controller/nodes/attr_path_resolver_test.go | 3 --- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/flyteidl/clients/go/coreutils/literals.go b/flyteidl/clients/go/coreutils/literals.go index f066fbd725..815cd720c9 100644 --- a/flyteidl/clients/go/coreutils/literals.go +++ b/flyteidl/clients/go/coreutils/literals.go @@ -386,7 +386,6 @@ func MakePrimitiveForType(t core.SimpleType, s string) (*core.Primitive, error) func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error) { s = strings.Trim(s, " \n\t") - lv := &core.Literal{} scalar := &core.Scalar{} switch t { case core.SimpleType_STRUCT: @@ -430,10 +429,11 @@ func MakeLiteralForSimpleType(t core.SimpleType, s string) (*core.Literal, error } scalar.Value = &core.Scalar_Primitive{Primitive: p} } - lv.Value = &core.Literal_Scalar{ - Scalar: scalar, - } - return lv, nil + return &core.Literal{ + Value: &core.Literal_Scalar{ + Scalar: scalar, + }, + }, nil } func MustMakeLiteral(v interface{}) *core.Literal { diff --git a/flyteidl/clients/go/coreutils/literals_test.go b/flyteidl/clients/go/coreutils/literals_test.go index 6bedf82fa2..880a4818e3 100644 --- a/flyteidl/clients/go/coreutils/literals_test.go +++ b/flyteidl/clients/go/coreutils/literals_test.go @@ -258,6 +258,8 @@ func TestMakeDefaultLiteralForType(t *testing.T) { }}) assert.NoError(t, err) assert.NotNil(t, l.GetScalar().GetJson()) + assert.NotNil(t, l.GetScalar().GetJson().GetValue()) + assert.NotNil(t, l.GetScalar().GetJson().GetSerializationFormat()) }) t.Run("enum", func(t *testing.T) { @@ -407,7 +409,7 @@ func TestMakeLiteralForBlob(t *testing.T) { } } -func re(t *testing.T) { +func TestMakeLiteralForType(t *testing.T) { t.Run("SimpleInteger", func(t *testing.T) { var literalType = &core.LiteralType{Type: &core.LiteralType_Simple{Simple: core.SimpleType_INTEGER}} val, err := MakeLiteralForType(literalType, 1) @@ -486,12 +488,12 @@ func re(t *testing.T) { Scalar: &core.Scalar{ Value: &core.Scalar_Json{ Json: &core.Json{ - Value: msgpackBytes, + Value: msgpackBytes, + SerializationFormat: "msgpack", }, }, }, }, - Metadata: map[string]string{"format": "msgpack"}, } expectedLiteralVal, err := ExtractFromLiteral(literalVal) @@ -510,7 +512,7 @@ func re(t *testing.T) { err = msgpack.Unmarshal(actualBytes, &actualVal) assert.NoError(t, err) - assert.EqualValues(t, expectedVal, actualVal) + assert.Equal(t, expectedVal, actualVal) }) t.Run("ArrayStrings", func(t *testing.T) { diff --git a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go index 7d90b226be..a02adcecfa 100644 --- a/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go +++ b/flytepropeller/pkg/controller/nodes/attr_path_resolver_test.go @@ -411,7 +411,6 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the int value at foo.bar path: []*core.PromiseAttribute{ @@ -513,7 +512,6 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the string value at foo.baz.quux path: []*core.PromiseAttribute{ @@ -593,7 +591,6 @@ func TestResolveAttrPathInJson(t *testing.T) { }, }, }, - Metadata: map[string]string{"format": "msgpack"}, }, // Test accessing the float value at foo[1] path: []*core.PromiseAttribute{