in python/pyarrow/src/arrow/python/arrow_to_pandas.cc [171:220]
static inline bool ListTypeSupported(const DataType& type) {
switch (type.id()) {
case Type::BOOL:
case Type::UINT8:
case Type::INT8:
case Type::UINT16:
case Type::INT16:
case Type::UINT32:
case Type::INT32:
case Type::INT64:
case Type::UINT64:
case Type::HALF_FLOAT:
case Type::FLOAT:
case Type::DOUBLE:
case Type::DECIMAL128:
case Type::DECIMAL256:
case Type::BINARY:
case Type::LARGE_BINARY:
case Type::STRING:
case Type::LARGE_STRING:
case Type::DATE32:
case Type::DATE64:
case Type::STRUCT:
case Type::MAP:
case Type::TIME32:
case Type::TIME64:
case Type::TIMESTAMP:
case Type::DURATION:
case Type::DICTIONARY:
case Type::INTERVAL_MONTH_DAY_NANO:
case Type::NA: // empty list
// The above types are all supported.
return true;
case Type::FIXED_SIZE_LIST:
case Type::LIST:
case Type::LARGE_LIST:
case Type::LIST_VIEW:
case Type::LARGE_LIST_VIEW: {
const auto& list_type = checked_cast<const BaseListType&>(type);
return ListTypeSupported(*list_type.value_type());
}
case Type::EXTENSION: {
const auto& ext = checked_cast<const ExtensionType&>(*type.GetSharedPtr());
return ListTypeSupported(*(ext.storage_type()));
}
default:
break;
}
return false;
}