Skip to content

Commit c0a1026

Browse files
fix: Correctly handle list values in _python_value_to_proto_value (feast-dev#4608)
1 parent 63dca1f commit c0a1026

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

sdk/python/feast/type_map.py

+19-5
Original file line numberDiff line numberDiff line change
@@ -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

512526
def _proto_value_to_value_type(proto_value: ProtoValue) -> ValueType:

0 commit comments

Comments
 (0)