Path: blob/main/crates/polars-python/src/functions/misc.rs
7889 views
use polars_plan::prelude::*;1use pyo3::prelude::*;23use crate::PyExpr;4use crate::conversion::Wrap;5use crate::expr::ToExprs;6use crate::prelude::DataType;78#[pyfunction]9pub fn dtype_str_repr(dtype: Wrap<DataType>) -> PyResult<String> {10let dtype = dtype.0;11Ok(dtype.to_string())12}1314#[cfg(feature = "ffi_plugin")]15#[pyfunction]16pub fn register_plugin_function(17plugin_path: &str,18function_name: &str,19args: Vec<PyExpr>,20kwargs: Vec<u8>,21is_elementwise: bool,22input_wildcard_expansion: bool,23returns_scalar: bool,24cast_to_supertype: bool,25pass_name_to_apply: bool,26changes_length: bool,27) -> PyResult<PyExpr> {28let cast_to_supertypes = if cast_to_supertype {29Some(CastingRules::cast_to_supertypes())30} else {31None32};3334let mut flags = FunctionFlags::default();35if is_elementwise {36flags.set_elementwise();37}38flags.set(FunctionFlags::LENGTH_PRESERVING, !changes_length);39flags.set(FunctionFlags::PASS_NAME_TO_APPLY, pass_name_to_apply);40flags.set(FunctionFlags::RETURNS_SCALAR, returns_scalar);41flags.set(42FunctionFlags::INPUT_WILDCARD_EXPANSION,43input_wildcard_expansion,44);4546let options = FunctionOptions {47cast_options: cast_to_supertypes,48flags,49..Default::default()50};5152Ok(Expr::Function {53input: args.to_exprs(),54function: FunctionExpr::FfiPlugin {55flags: options,56lib: plugin_path.into(),57symbol: function_name.into(),58kwargs: kwargs.into(),59},60}61.into())62}6364#[pyfunction]65pub fn __register_startup_deps() {66#[cfg(feature = "object")]67unsafe {68crate::on_startup::register_startup_deps(true)69}70}717273