def from_arrow(cls, data: pa.Array): dtype = Decimal64Dtype.from_arrow(data.type) mask_buf = data.buffers()[0] mask = (mask_buf if mask_buf is None else pa_mask_buffer_to_mask( mask_buf, len(data))) data_128 = cp.array(np.frombuffer(data.buffers()[1]).view("int64")) data_64 = data_128[::2].copy() return cls( data=Buffer(data_64.view("uint8")), size=len(data), dtype=dtype, mask=mask, )
def test_decimal_dtype(): dt = Decimal64Dtype(4, 2) assert dt.to_arrow() == pa.decimal128(4, 2) assert dt == Decimal64Dtype.from_arrow(pa.decimal128(4, 2))