|
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 | #
|
@@ -603,9 +667,9 @@ def test_to_numpy_pyarrow_date(dtype, expected_dtype):
|
603 | 667 | Here we explicitly check the dtype and date unit of the result.
|
604 | 668 | """
|
605 | 669 | data = [
|
606 |
| - date(2024, 1, 1), |
607 |
| - datetime(2024, 1, 2), |
608 |
| - datetime(2024, 1, 3), |
| 670 | + datetime.date(2024, 1, 1), |
| 671 | + datetime.datetime(2024, 1, 2), |
| 672 | + datetime.datetime(2024, 1, 3), |
609 | 673 | ]
|
610 | 674 | array = pa.array(data, type=dtype)
|
611 | 675 | result = _to_numpy(array)
|
@@ -649,7 +713,10 @@ def test_to_numpy_pyarrow_timestamp(dtype, expected_dtype):
|
649 | 713 |
|
650 | 714 | Reference: https://arrow.apache.org/docs/python/generated/pyarrow.timestamp.html
|
651 | 715 | """
|
652 |
| - data = [datetime(2024, 1, 2, 3, 4, 5), datetime(2024, 1, 2, 3, 4, 6)] |
| 716 | + data = [ |
| 717 | + datetime.datetime(2024, 1, 2, 3, 4, 5), |
| 718 | + datetime.datetime(2024, 1, 2, 3, 4, 6), |
| 719 | + ] |
653 | 720 | array = pa.array(data, type=dtype)
|
654 | 721 | result = _to_numpy(array)
|
655 | 722 | _check_result(result, np.datetime64)
|
|
0 commit comments