@@ -372,11 +372,18 @@ def _python_value_to_proto_value(
372372 if feast_value_type == ValueType .BYTES_LIST :
373373 raise _type_err (sample , ValueType .BYTES_LIST )
374374
375- json_value = json .loads (sample )
376- if isinstance (json_value , list ):
375+ json_sample = json .loads (sample )
376+ if isinstance (json_sample , list ):
377+ json_values = [json .loads (value ) for value in values ]
377378 if feast_value_type == ValueType .BOOL_LIST :
378- json_value = [bool (item ) for item in json_value ]
379- return [ProtoValue (** {field_name : proto_type (val = json_value )})] # type: ignore
379+ json_values = [
380+ [bool (item ) for item in list_item ]
381+ for list_item in json_values
382+ ]
383+ return [
384+ ProtoValue (** {field_name : proto_type (val = v )}) # type: ignore
385+ for v in json_values
386+ ]
380387 raise _type_err (sample , valid_types [0 ])
381388
382389 if sample is not None and not all (
@@ -506,7 +513,14 @@ def python_values_to_proto_values(
506513 if value_type == ValueType .UNKNOWN :
507514 raise TypeError ("Couldn't infer value type from empty value" )
508515
509- return _python_value_to_proto_value (value_type , values )
516+ proto_values = _python_value_to_proto_value (value_type , values )
517+
518+ if len (proto_values ) != len (values ):
519+ raise ValueError (
520+ f"Number of proto values { len (proto_values )} does not match number of values { len (values )} "
521+ )
522+
523+ return proto_values
510524
511525
512526def _proto_value_to_value_type (proto_value : ProtoValue ) -> ValueType :
0 commit comments