polars_python/testing/
frame.rs1use polars_testing::asserts::{DataFrameEqualOptions, assert_dataframe_equal, assert_schema_equal};
2use pyo3::prelude::*;
3
4use crate::error::PyPolarsErr;
5use crate::{PyDataFrame, PySchema};
6
7#[pyfunction]
8#[pyo3(signature = (left, right, *, check_row_order, check_column_order, check_dtypes, check_exact, rel_tol, abs_tol, categorical_as_str))]
9pub fn assert_dataframe_equal_py(
10 left: &PyDataFrame,
11 right: &PyDataFrame,
12 check_row_order: bool,
13 check_column_order: bool,
14 check_dtypes: bool,
15 check_exact: bool,
16 rel_tol: f64,
17 abs_tol: f64,
18 categorical_as_str: bool,
19) -> PyResult<()> {
20 let left_df = &left.df.read();
21 let right_df = &right.df.read();
22
23 let options = DataFrameEqualOptions {
24 check_row_order,
25 check_column_order,
26 check_dtypes,
27 check_exact,
28 rel_tol,
29 abs_tol,
30 categorical_as_str,
31 };
32
33 assert_dataframe_equal(left_df, right_df, options).map_err(|e| PyPolarsErr::from(e).into())
34}
35
36#[pyfunction]
37#[pyo3(signature = (left_schema, right_schema, check_dtypes, check_column_order))]
38pub fn assert_schema_equal_py(
39 left_schema: PySchema,
40 right_schema: PySchema,
41 check_dtypes: bool,
42 check_column_order: bool,
43) -> PyResult<()> {
44 assert_schema_equal(
45 &left_schema.0,
46 &right_schema.0,
47 check_dtypes,
48 check_column_order,
49 )
50 .map_err(|e| PyPolarsErr::from(e).into())
51}