@@ -372,11 +372,18 @@ def _python_value_to_proto_value(
372
372
if feast_value_type == ValueType .BYTES_LIST :
373
373
raise _type_err (sample , ValueType .BYTES_LIST )
374
374
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 ]
377
378
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
+ ]
380
387
raise _type_err (sample , valid_types [0 ])
381
388
382
389
if sample is not None and not all (
@@ -506,7 +513,14 @@ def python_values_to_proto_values(
506
513
if value_type == ValueType .UNKNOWN :
507
514
raise TypeError ("Couldn't infer value type from empty value" )
508
515
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
510
524
511
525
512
526
def _proto_value_to_value_type (proto_value : ProtoValue ) -> ValueType :
0 commit comments