We have __eq__ leaning on as_py() already ... any reason not to have __lt__ ?
This makes it possible to use bisect to find slices in ordered data without a __getitem__ wrapper: 1176.0 key=pa.array(['AAPL']) 110.0 print(bisect.bisect_left(batch[3],key[0])) 64.0 print(bisect.bisect_right(batch[3],key[0])) Although, I'm not sure why pa.array() is relatively slow (above in mics) and whether I can directly construct an individual Value instead? batch[3] is string type with length 32291182 (memory mapped from IPC File)... AAPL being slice 206424 to 420255 in this case. Proposed addition: def __eq__(self, other): if hasattr(self, 'as_py'): if isinstance(other, ArrayValue): other = other.as_py() return self.as_py() == other else: raise NotImplementedError( "Cannot compare Arrow values that don't support as_py()") * def __lt__(self, other):* * if hasattr(self, 'as_py'):* * if isinstance(other, ArrayValue):* * other = other.as_py()* * return self.as_py() < other* * else:* * raise NotImplementedError(* * "Cannot compare Arrow values that don't support as_py()")*