Skip to content

Commit 8f264b6

Browse files
EXPEbdodlaBhargav Dodla
and
Bhargav Dodla
authored
fix: Null value compatibility for unit timestamp list value type (feast-dev#4378)
Signed-off-by: Bhargav Dodla <bdodla@expediagroup.com> Co-authored-by: Bhargav Dodla <bdodla@expediagroup.com>
1 parent 9a33fce commit 8f264b6

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

sdk/python/feast/type_map.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -396,13 +396,18 @@ def _python_value_to_proto_value(
396396
raise _type_err(item, valid_types[0])
397397

398398
if feast_value_type == ValueType.UNIX_TIMESTAMP_LIST:
399-
int_timestamps_lists = (
400-
_python_datetime_to_int_timestamp(value) for value in values
401-
)
402399
return [
403-
# ProtoValue does actually accept `np.int_` but the typing complains.
404-
ProtoValue(unix_timestamp_list_val=Int64List(val=ts)) # type: ignore
405-
for ts in int_timestamps_lists
400+
(
401+
# ProtoValue does actually accept `np.int_` but the typing complains.
402+
ProtoValue(
403+
unix_timestamp_list_val=Int64List(
404+
val=_python_datetime_to_int_timestamp(value) # type: ignore
405+
)
406+
)
407+
if value is not None
408+
else ProtoValue()
409+
)
410+
for value in values
406411
]
407412
if feast_value_type == ValueType.BOOL_LIST:
408413
# ProtoValue does not support conversion of np.bool_ so we need to convert it to support np.bool_.

sdk/python/tests/unit/test_type_map.py

+7
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,14 @@ def test_python_values_to_proto_values_bool(values):
6060
(np.array([b'["a","b","c"]']), ValueType.STRING_LIST, ["a", "b", "c"]),
6161
(np.array([b"[true,false]"]), ValueType.BOOL_LIST, [True, False]),
6262
(np.array([b"[1,0]"]), ValueType.BOOL_LIST, [True, False]),
63+
(np.array([None]), ValueType.INT32_LIST, None),
64+
(np.array([None]), ValueType.INT64_LIST, None),
65+
(np.array([None]), ValueType.FLOAT_LIST, None),
66+
(np.array([None]), ValueType.DOUBLE_LIST, None),
67+
(np.array([None]), ValueType.BOOL_LIST, None),
68+
(np.array([None]), ValueType.BYTES_LIST, None),
6369
(np.array([None]), ValueType.STRING_LIST, None),
70+
(np.array([None]), ValueType.UNIX_TIMESTAMP_LIST, None),
6471
([b"[1,2,3]"], ValueType.INT64_LIST, [1, 2, 3]),
6572
([b"[1,2,3]"], ValueType.INT32_LIST, [1, 2, 3]),
6673
([b"[1.5,2.5,3.5]"], ValueType.FLOAT_LIST, [1.5, 2.5, 3.5]),

0 commit comments

Comments
 (0)