|
2 | 2 | Tests for the _to_numpy function in the clib.conversion module.
|
3 | 3 | """
|
4 | 4 |
|
| 5 | +import datetime |
5 | 6 | import sys
|
6 |
| -from datetime import date, datetime |
7 | 7 |
|
8 | 8 | import numpy as np
|
9 | 9 | import numpy.testing as npt
|
@@ -80,6 +80,70 @@ def test_to_numpy_python_types(data, expected_dtype):
|
80 | 80 | npt.assert_array_equal(result, data)
|
81 | 81 |
|
82 | 82 |
|
| 83 | +@pytest.mark.parametrize( |
| 84 | + "data", |
| 85 | + [ |
| 86 | + pytest.param( |
| 87 | + ["2018", "2018-02", "2018-03-01", "2018-04-01T01:02:03"], id="iso8601" |
| 88 | + ), |
| 89 | + pytest.param( |
| 90 | + [ |
| 91 | + datetime.date(2018, 1, 1), |
| 92 | + datetime.datetime(2018, 2, 1), |
| 93 | + datetime.date(2018, 3, 1), |
| 94 | + datetime.datetime(2018, 4, 1, 1, 2, 3), |
| 95 | + ], |
| 96 | + id="datetime", |
| 97 | + ), |
| 98 | + pytest.param( |
| 99 | + [ |
| 100 | + np.datetime64("2018"), |
| 101 | + np.datetime64("2018-02"), |
| 102 | + np.datetime64("2018-03-01"), |
| 103 | + np.datetime64("2018-04-01T01:02:03"), |
| 104 | + ], |
| 105 | + id="np_datetime64", |
| 106 | + ), |
| 107 | + pytest.param( |
| 108 | + [ |
| 109 | + pd.Timestamp("2018-01-01"), |
| 110 | + pd.Timestamp("2018-02-01"), |
| 111 | + pd.Timestamp("2018-03-01"), |
| 112 | + pd.Timestamp("2018-04-01T01:02:03"), |
| 113 | + ], |
| 114 | + id="pd_timestamp", |
| 115 | + ), |
| 116 | + pytest.param( |
| 117 | + [ |
| 118 | + "2018-01-01", |
| 119 | + np.datetime64("2018-02-01"), |
| 120 | + datetime.datetime(2018, 3, 1), |
| 121 | + pd.Timestamp("2018-04-01T01:02:03"), |
| 122 | + ], |
| 123 | + id="mixed", |
| 124 | + ), |
| 125 | + ], |
| 126 | +) |
| 127 | +def test_to_numpy_python_datetime(data): |
| 128 | + """ |
| 129 | + Test the _to_numpy function with Python sequence of datetime types. |
| 130 | + """ |
| 131 | + result = _to_numpy(data) |
| 132 | + assert result.dtype.type == np.datetime64 |
| 133 | + npt.assert_array_equal( |
| 134 | + result, |
| 135 | + np.array( |
| 136 | + [ |
| 137 | + "2018-01-01T00:00:00", |
| 138 | + "2018-02-01T00:00:00", |
| 139 | + "2018-03-01T00:00:00", |
| 140 | + "2018-04-01T01:02:03", |
| 141 | + ], |
| 142 | + dtype="datetime64[s]", |
| 143 | + ), |
| 144 | + ) |
| 145 | + |
| 146 | + |
83 | 147 | ########################################################################################
|
84 | 148 | # Test the _to_numpy function with NumPy arrays.
|
85 | 149 | #
|
@@ -466,9 +530,9 @@ def test_to_numpy_pyarrow_date(dtype, expected_dtype):
|
466 | 530 | Here we explicitly check the dtype and date unit of the result.
|
467 | 531 | """
|
468 | 532 | data = [
|
469 |
| - date(2024, 1, 1), |
470 |
| - datetime(2024, 1, 2), |
471 |
| - datetime(2024, 1, 3), |
| 533 | + datetime.date(2024, 1, 1), |
| 534 | + datetime.datetime(2024, 1, 2), |
| 535 | + datetime.datetime(2024, 1, 3), |
472 | 536 | ]
|
473 | 537 | array = pa.array(data, type=dtype)
|
474 | 538 | result = _to_numpy(array)
|
@@ -512,7 +576,10 @@ def test_to_numpy_pyarrow_timestamp(dtype, expected_dtype):
|
512 | 576 |
|
513 | 577 | Reference: https://arrow.apache.org/docs/python/generated/pyarrow.timestamp.html
|
514 | 578 | """
|
515 |
| - data = [datetime(2024, 1, 2, 3, 4, 5), datetime(2024, 1, 2, 3, 4, 6)] |
| 579 | + data = [ |
| 580 | + datetime.datetime(2024, 1, 2, 3, 4, 5), |
| 581 | + datetime.datetime(2024, 1, 2, 3, 4, 6), |
| 582 | + ] |
516 | 583 | array = pa.array(data, type=dtype)
|
517 | 584 | result = _to_numpy(array)
|
518 | 585 | _check_result(result, np.datetime64)
|
|
0 commit comments