polars_python/lazyframe/
mod.rs1mod exitable;
2#[cfg(feature = "pymethods")]
3mod general;
4mod optflags;
5#[cfg(feature = "pymethods")]
6mod serde;
7mod sink;
8pub mod visit;
9pub mod visitor;
10
11#[cfg(not(target_arch = "wasm32"))]
12pub use exitable::PyInProcessQuery;
13use parking_lot::RwLock;
14use polars::prelude::{Engine, LazyFrame, OptFlags};
15use pyo3::exceptions::PyValueError;
16use pyo3::pybacked::PyBackedStr;
17use pyo3::types::PyAnyMethods;
18use pyo3::{Bound, FromPyObject, PyAny, PyResult, pyclass};
19pub use sink::{PyPartitioning, SinkTarget};
20
21use crate::prelude::Wrap;
22
23#[pyclass(frozen)]
24#[repr(transparent)]
25pub struct PyLazyFrame {
26 pub ldf: RwLock<LazyFrame>,
27}
28
29impl Clone for PyLazyFrame {
30 fn clone(&self) -> Self {
31 Self {
32 ldf: RwLock::new(self.ldf.read().clone()),
33 }
34 }
35}
36
37impl From<LazyFrame> for PyLazyFrame {
38 fn from(ldf: LazyFrame) -> Self {
39 PyLazyFrame {
40 ldf: RwLock::new(ldf),
41 }
42 }
43}
44
45impl From<PyLazyFrame> for LazyFrame {
46 fn from(pldf: PyLazyFrame) -> Self {
47 pldf.ldf.into_inner()
48 }
49}
50
51#[pyclass(frozen)]
52#[repr(transparent)]
53pub struct PyOptFlags {
54 pub inner: RwLock<OptFlags>,
55}
56
57impl Clone for PyOptFlags {
58 fn clone(&self) -> Self {
59 Self {
60 inner: RwLock::new(*self.inner.read()),
61 }
62 }
63}
64
65impl From<OptFlags> for PyOptFlags {
66 fn from(inner: OptFlags) -> Self {
67 PyOptFlags {
68 inner: RwLock::new(inner),
69 }
70 }
71}
72
73impl<'py> FromPyObject<'py> for Wrap<Engine> {
74 fn extract_bound(ob: &Bound<'py, PyAny>) -> PyResult<Self> {
75 let parsed = ob
76 .extract::<PyBackedStr>()?
77 .parse()
78 .map_err(PyValueError::new_err)?;
79 Ok(Wrap(parsed))
80 }
81}