Skip to main content

polars_python/dataframe/
mod.rs

1#[cfg(feature = "pymethods")]
2mod construction;
3#[cfg(feature = "pymethods")]
4mod export;
5#[cfg(feature = "pymethods")]
6mod general;
7#[cfg(feature = "pymethods")]
8mod io;
9#[cfg(feature = "pymethods")]
10mod map;
11#[cfg(feature = "pymethods")]
12mod serde;
13
14use parking_lot::RwLock;
15use polars::prelude::DataFrame;
16use pyo3::pyclass;
17
18#[pyclass(frozen)]
19#[repr(transparent)]
20pub struct PyDataFrame {
21    pub df: RwLock<DataFrame>,
22}
23
24impl Clone for PyDataFrame {
25    fn clone(&self) -> Self {
26        PyDataFrame {
27            df: RwLock::new(self.df.read().clone()),
28        }
29    }
30}
31
32impl From<DataFrame> for PyDataFrame {
33    fn from(df: DataFrame) -> Self {
34        Self::new(df)
35    }
36}
37
38impl From<PyDataFrame> for DataFrame {
39    fn from(pdf: PyDataFrame) -> Self {
40        pdf.df.into_inner()
41    }
42}
43
44impl PyDataFrame {
45    pub(crate) fn new(df: DataFrame) -> Self {
46        PyDataFrame {
47            df: RwLock::new(df),
48        }
49    }
50}