MCPcopy
hub / github.com/dask/dask / test_make_meta

Function test_make_meta

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

Source from the content-addressed store, hash-verified

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

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

Used in the wild real call sites across dependent graphs

searching dependent graphs…