Skip to content

Commit de9ff0d

Browse files
authored
GH-48452: [Python] Add tests for Date32 and Date64 array creation with masks (#48453)
### Rationale for this change The original ticket ARROW-4258 missed the followup task, see also #3395 (comment) Adding the test originally intended to test. ### What changes are included in this PR? Added the tests dates with masks ### Are these changes tested? Yes, manually tested as below: ``` python3 -m pytest pyarrow/tests/test_pandas.py::test_create_date32_and_date64_arrays_with_mask ``` ### Are there any user-facing changes? No, test-only. * GitHub Issue: #48452 Authored-by: Hyukjin Kwon <[email protected]> Signed-off-by: AlenkaF <[email protected]>
1 parent 2184116 commit de9ff0d

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

python/pyarrow/tests/test_array.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2216,6 +2216,58 @@ def test_date64_from_builtin_datetime():
22162216
assert as_i8[0].as_py() == as_i8[1].as_py()
22172217

22182218

2219+
def test_create_date32_and_date64_arrays_with_mask():
2220+
# Test Date32 array creation from Python list with mask
2221+
arr_date32 = pa.array([0, 0, 1, 2],
2222+
mask=[False, False, True, False],
2223+
type=pa.date32())
2224+
expected_date32 = pa.array([
2225+
datetime.date(1970, 1, 1),
2226+
datetime.date(1970, 1, 1),
2227+
None,
2228+
datetime.date(1970, 1, 3),
2229+
], type=pa.date32())
2230+
assert arr_date32.equals(expected_date32)
2231+
2232+
# Test Date32 array creation from Python dates
2233+
arr_date32_dates = pa.array([
2234+
datetime.date(2023, 1, 1),
2235+
datetime.date(2023, 1, 2),
2236+
None,
2237+
datetime.date(2023, 1, 4),
2238+
], type=pa.date32())
2239+
assert arr_date32_dates.null_count == 1
2240+
assert arr_date32_dates[2].as_py() is None
2241+
2242+
# Test Date64 array creation from Python list with mask
2243+
arr_date64 = pa.array([0, 86400000, 172800000, 259200000],
2244+
mask=[False, False, True, False],
2245+
type=pa.date64())
2246+
expected_date64 = pa.array([
2247+
datetime.date(1970, 1, 1),
2248+
datetime.date(1970, 1, 2),
2249+
None,
2250+
datetime.date(1970, 1, 4),
2251+
], type=pa.date64())
2252+
assert arr_date64.equals(expected_date64)
2253+
2254+
# Test Date64 array creation from Python dates
2255+
arr_date64_dates = pa.array([
2256+
datetime.date(2023, 1, 1),
2257+
datetime.date(2023, 1, 2),
2258+
None,
2259+
datetime.date(2023, 1, 4),
2260+
], type=pa.date64())
2261+
assert arr_date64_dates.null_count == 1
2262+
assert arr_date64_dates[2].as_py() is None
2263+
2264+
# Test Date32 with all nulls mask
2265+
arr_all_null = pa.array([0, 1, 2, 3],
2266+
mask=[True, True, True, True],
2267+
type=pa.date32())
2268+
assert arr_all_null.null_count == 4
2269+
2270+
22192271
@pytest.mark.parametrize(('ty', 'values'), [
22202272
('bool', [True, False, True]),
22212273
('uint8', range(0, 255)),

python/pyarrow/tests/test_pandas.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3278,8 +3278,6 @@ def test_error_sparse(self):
32783278

32793279

32803280
def test_safe_cast_from_float_with_nans_to_int():
3281-
# TODO(kszucs): write tests for creating Date32 and Date64 arrays, see
3282-
# ARROW-4258 and https://github.com/apache/arrow/pull/3395
32833281
values = pd.Series([1, 2, None, 4])
32843282
arr = pa.Array.from_pandas(values, type=pa.int32(), safe=True)
32853283
expected = pa.array([1, 2, None, 4], type=pa.int32())

0 commit comments

Comments
 (0)