…isation
Athena (and other Arrow-backed offline stores) deserialises Array(String)
feature columns as numpy.ndarray with object dtype rather than plain Python
lists. Two code paths in type_map.py did not handle this:
1. _validate_collection_item_types iterated over the ndarray directly.
Nullable Arrow columns can embed None elements, and type(None) is not in
the valid_types set for STRING_LIST ([np.str_, str]), causing TypeError.
2. The generic list conversion path in _convert_list_values_to_proto passed
the raw ndarray to StringList(val=...). Protobuf rejects non-list inputs
with TypeError: bad argument type for built-in operation.
Fix:
- Coerce ndarray to a plain Python list via .tolist() before type validation,
and skip None elements (nullable elements cannot be held in protobuf
fixed-type lists and are stripped).
- In the generic conversion path, apply the same coercion so protobuf always
receives a plain list.
Adds four unit tests covering: plain ndarray, ndarray with None elements,
empty ndarray, and mixed None/ndarray rows.
Fixes feast-dev#6325
Signed-off-by: Abhishek8108 <87538407+Abhishek8108@users.noreply.github.com>