Skip to content

Commit d8f7eca

Browse files
Fix bug in _python_value_to_proto_value causing list values to be dropped
1 parent d5d3095 commit d8f7eca

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

sdk/python/feast/type_map.py

+16-5
Original file line numberDiff line numberDiff line change
@@ -372,11 +372,15 @@ 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 = [bool(item) for item in json_values]
380+
return [
381+
ProtoValue(**{field_name: proto_type(val=v)}) # type: ignore
382+
for v in json_values
383+
]
380384
raise _type_err(sample, valid_types[0])
381385

382386
if sample is not None and not all(
@@ -506,7 +510,14 @@ def python_values_to_proto_values(
506510
if value_type == ValueType.UNKNOWN:
507511
raise TypeError("Couldn't infer value type from empty value")
508512

509-
return _python_value_to_proto_value(value_type, values)
513+
proto_values = _python_value_to_proto_value(value_type, values)
514+
515+
if len(proto_values) != len(values):
516+
raise ValueError(
517+
f"Number of proto values {len(proto_values)} does not match number of values {len(values)}"
518+
)
519+
520+
return proto_values
510521

511522

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

0 commit comments

Comments
 (0)