polars_python/dataframe/
mod.rs1#[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}