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()")*

Reply via email to