1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| import numpy as np
| import pytest
|
| import pandas as pd
| from pandas.core.interchange.utils import dtype_to_arrow_c_fmt
|
| # TODO: use ArrowSchema to get reference C-string.
| # At the time, there is no way to access ArrowSchema holding a type format string
| # from python. The only way to access it is to export the structure to a C-pointer,
| # see DataType._export_to_c() method defined in
| # https://github.com/apache/arrow/blob/master/python/pyarrow/types.pxi
|
|
| @pytest.mark.parametrize(
| "pandas_dtype, c_string",
| [
| (np.dtype("bool"), "b"),
| (np.dtype("int8"), "c"),
| (np.dtype("uint8"), "C"),
| (np.dtype("int16"), "s"),
| (np.dtype("uint16"), "S"),
| (np.dtype("int32"), "i"),
| (np.dtype("uint32"), "I"),
| (np.dtype("int64"), "l"),
| (np.dtype("uint64"), "L"),
| (np.dtype("float16"), "e"),
| (np.dtype("float32"), "f"),
| (np.dtype("float64"), "g"),
| (pd.Series(["a"]).dtype, "u"),
| (
| pd.Series([0]).astype("datetime64[ns]").dtype,
| "tsn:",
| ),
| (pd.CategoricalDtype(["a"]), "l"),
| (np.dtype("O"), "u"),
| ],
| )
| def test_dtype_to_arrow_c_fmt(pandas_dtype, c_string): # PR01
| """Test ``dtype_to_arrow_c_fmt`` utility function."""
| assert dtype_to_arrow_c_fmt(pandas_dtype) == c_string
|
|