Found by the Python API Hypothesis fuzzer (vortex-python/test/test_fuzz_file_roundtrip.py).
DType::from_arrow hits the unimplemented!() fallback arm in vortex-array/src/dtype/arrow.rs for unsupported Arrow types, which surfaces in Python as a pyo3_runtime.PanicException instead of a clean ValueError.
import pyarrow as pa
import vortex as vx
vx.array(pa.table({"c0": pa.array([1, 2], type=pa.duration("us"))}))
# pyo3_runtime.PanicException: not implemented: Arrow data type not yet supported: Duration(Microsecond)
vx.array(pa.table({"c0": pa.array([b"abc"], type=pa.binary(3))}))
# pyo3_runtime.PanicException: not implemented: Arrow data type not yet supported: FixedSizeBinary(3)
The fallback arm should return a VortexError (e.g. via a TryFrom-style conversion) so unsupported types fail cleanly. The fuzzer currently excludes Duration and FixedSizeBinary from generation; once this is fixed, those exclusions can be lifted and the clean error will be routed to the existing unsupported-type skip path.
Found by the Python API Hypothesis fuzzer (
vortex-python/test/test_fuzz_file_roundtrip.py).DType::from_arrowhits theunimplemented!()fallback arm invortex-array/src/dtype/arrow.rsfor unsupported Arrow types, which surfaces in Python as apyo3_runtime.PanicExceptioninstead of a cleanValueError.The fallback arm should return a
VortexError(e.g. via aTryFrom-style conversion) so unsupported types fail cleanly. The fuzzer currently excludesDurationandFixedSizeBinaryfrom generation; once this is fixed, those exclusions can be lifted and the clean error will be routed to the existing unsupported-type skip path.