◐ Shell
clean mode source ↗

fix: Handle numpy.ndarray from Arrow/Athena in Array(String) materialisation by Abhishek8108 · Pull Request #6388 · feast-dev/feast

@Abhishek8108

…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>