polars_python/series/
mod.rs

1#[cfg(feature = "pymethods")]
2mod aggregation;
3#[cfg(feature = "pymethods")]
4mod arithmetic;
5#[cfg(feature = "pymethods")]
6mod buffers;
7#[cfg(feature = "pymethods")]
8mod c_interface;
9#[cfg(feature = "pymethods")]
10mod comparison;
11#[cfg(feature = "pymethods")]
12mod construction;
13#[cfg(feature = "pymethods")]
14mod export;
15#[cfg(feature = "pymethods")]
16mod general;
17#[cfg(feature = "pymethods")]
18mod import;
19#[cfg(feature = "pymethods")]
20mod map;
21#[cfg(feature = "pymethods")]
22mod numpy_ufunc;
23#[cfg(feature = "pymethods")]
24mod scatter;
25
26use polars::prelude::{Column, Series};
27use pyo3::pyclass;
28
29#[pyclass]
30#[repr(transparent)]
31#[derive(Clone)]
32pub struct PySeries {
33    pub series: Series,
34}
35
36impl From<Series> for PySeries {
37    fn from(series: Series) -> Self {
38        PySeries { series }
39    }
40}
41
42impl PySeries {
43    pub(crate) fn new(series: Series) -> Self {
44        PySeries { series }
45    }
46}
47
48pub(crate) trait ToSeries {
49    fn to_series(self) -> Vec<Series>;
50}
51
52impl ToSeries for Vec<PySeries> {
53    fn to_series(self) -> Vec<Series> {
54        // SAFETY: repr is transparent.
55        unsafe { std::mem::transmute(self) }
56    }
57}
58
59pub(crate) trait ToPySeries {
60    fn to_pyseries(self) -> Vec<PySeries>;
61}
62
63impl ToPySeries for Vec<Series> {
64    fn to_pyseries(self) -> Vec<PySeries> {
65        // SAFETY: repr is transparent.
66        unsafe { std::mem::transmute(self) }
67    }
68}
69
70impl ToPySeries for Vec<Column> {
71    fn to_pyseries(self) -> Vec<PySeries> {
72        // @scalar-opt
73        let series: Vec<Series> = self
74            .into_iter()
75            .map(|c| c.take_materialized_series())
76            .collect();
77        series.to_pyseries()
78    }
79}