From 06ad67809e96994cbbc5088d428c4eadaaa0090a Mon Sep 17 00:00:00 2001 From: aandres Date: Sun, 27 Nov 2022 19:07:26 +0000 Subject: [PATCH 1/2] Add missing value to logical types --- python/pyarrow/scalar.pxi | 10 ++++++++++ python/pyarrow/tests/test_scalars.py | 20 +++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/python/pyarrow/scalar.pxi b/python/pyarrow/scalar.pxi index 0693f04fb73..73964d243a8 100644 --- a/python/pyarrow/scalar.pxi +++ b/python/pyarrow/scalar.pxi @@ -345,6 +345,11 @@ cdef class Date32Scalar(Scalar): Concrete class for date32 scalars. """ + @property + def value(self): + cdef CDate32Scalar* sp = self.wrapped.get() + return sp.value if sp.is_valid else None + def as_py(self): """ Return this value as a Python datetime.datetime instance. @@ -365,6 +370,11 @@ cdef class Date64Scalar(Scalar): Concrete class for date64 scalars. """ + @property + def value(self): + cdef CDate64Scalar* sp = self.wrapped.get() + return sp.value if sp.is_valid else None + def as_py(self): """ Return this value as a Python datetime.datetime instance. diff --git a/python/pyarrow/tests/test_scalars.py b/python/pyarrow/tests/test_scalars.py index 9fa9d008a74..6acbb4910e0 100644 --- a/python/pyarrow/tests/test_scalars.py +++ b/python/pyarrow/tests/test_scalars.py @@ -244,14 +244,32 @@ def test_time_from_datetime_time(): @pytest.mark.parametrize(['value', 'time_type'], [ (1, pa.time32("s")), (2**30, pa.time32("s")), + (None, pa.time32("s")), (1, pa.time32("ms")), (2**30, pa.time32("ms")), + (None, pa.time32("ms")), (1, pa.time64("us")), (2**62, pa.time64("us")), + (None, pa.time64("us")), (1, pa.time64("ns")), (2**62, pa.time64("ns")), + (None, pa.time64("ns")), + (1, pa.date32()), + (2**30, pa.date32()), + (None, pa.date32()), + (1, pa.date64()), + (2**62, pa.date64()), + (None, pa.date64()), + (1, pa.timestamp("ns")), + (2**62, pa.timestamp("ns")), + (None, pa.timestamp("ns")), + (1, pa.duration("ns")), + (2**62, pa.duration("ns")), + (None, pa.duration("ns")), + ((1, 2, -3), pa.month_day_nano_interval()), + (None, pa.month_day_nano_interval()), ]) -def test_time_values(value, time_type): +def test_logical_types_values(value, time_type: pa.DataType): time_scalar = pa.scalar(value, type=time_type) assert time_scalar.value == value From a42880054178b41509e60c51730ad3b384b22cb9 Mon Sep 17 00:00:00 2001 From: aandres Date: Mon, 5 Dec 2022 17:03:31 +0000 Subject: [PATCH 2/2] Rename test function --- python/pyarrow/tests/test_scalars.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/pyarrow/tests/test_scalars.py b/python/pyarrow/tests/test_scalars.py index 6acbb4910e0..f417d58c8c5 100644 --- a/python/pyarrow/tests/test_scalars.py +++ b/python/pyarrow/tests/test_scalars.py @@ -269,7 +269,7 @@ def test_time_from_datetime_time(): ((1, 2, -3), pa.month_day_nano_interval()), (None, pa.month_day_nano_interval()), ]) -def test_logical_types_values(value, time_type: pa.DataType): +def test_temporal_values(value, time_type: pa.DataType): time_scalar = pa.scalar(value, type=time_type) assert time_scalar.value == value