MCPcopy Create free account
hub / github.com/dask/dask / test_make_meta

Function test_make_meta

dask/dataframe/tests/test_utils_dataframe.py:36–199  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

34
35
36def test_make_meta():
37 df = pd.DataFrame(
38 {"a": [1, 2, 3], "b": list("abc"), "c": [1.0, 2.0, 3.0]}, index=[10, 20, 30]
39 )
40
41 # Pandas dataframe
42 meta = make_meta(df)
43 assert len(meta) == 0
44 assert (meta.dtypes == df.dtypes).all()
45 assert isinstance(meta.index, type(df.index))
46 # - ensure no references to original data arrays are kept
47 for col in "abc":
48 if PANDAS_GE_300 and col == "b":
49 # backed by an arrow array
50 meta_pointer = meta[col].array._pa_array.chunks[0].buffers()[1].address
51 df_pointer = df[col].array._pa_array.chunks[0].buffers()[1].address
52 else:
53 # backed by a numpy array
54 meta_pointer = meta[col].values.__array_interface__["data"][0]
55 df_pointer = df[col].values.__array_interface__["data"][0]
56 assert meta_pointer != df_pointer
57
58 meta_index_pointer = meta.index.values.__array_interface__["data"][0]
59 df_index_pointer = df.index.values.__array_interface__["data"][0]
60 assert meta_index_pointer != df_index_pointer
61
62 # Pandas series
63 meta = make_meta(df.a)
64 assert len(meta) == 0
65 assert meta.dtype == df.a.dtype
66 assert isinstance(meta.index, type(df.index))
67 # - ensure no references to original data arrays are kept
68 meta_pointer = meta.values.__array_interface__["data"][0]
69 df_pointer = df.a.values.__array_interface__["data"][0]
70 assert meta_pointer != df_pointer
71 meta_pointer = meta.index.values.__array_interface__["data"][0]
72 df_pointer = df.index.values.__array_interface__["data"][0]
73 assert meta_pointer != df_pointer
74
75 # Pandas index
76 meta = make_meta(df.index)
77 assert isinstance(meta, type(df.index))
78 assert len(meta) == 0
79 # - ensure no references to original data arrays are kept
80 meta_pointer = meta.values.__array_interface__["data"][0]
81 df_pointer = df.index.values.__array_interface__["data"][0]
82 assert meta_pointer != df_pointer
83
84 # Dask object
85 ddf = dd.from_pandas(df, npartitions=2)
86 assert make_meta(ddf) is ddf._meta
87
88 # Dict
89 if PANDAS_GE_300:
90 meta = make_meta({"a": "i8", "b": "str", "c": "f8"})
91 else:
92 meta = make_meta({"a": "i8", "b": "O", "c": "f8"})
93

Callers

nothing calls this directly

Calls 4

make_metaFunction · 0.85
CustomMetadataClass · 0.85
allMethod · 0.45
dtypeMethod · 0.45

Tested by

no test coverage detected