Skip to main content

PyExpr

Struct PyExpr 

Source
pub struct PyExpr {
    pub expr: Expr,
}
Expand description

A PyExpr that can be used on a DataFrame

Fields§

§expr: Expr

Implementations§

Source§

impl PyExpr

Source

pub fn literal(value: PyScalarValue) -> PyExpr

Source

pub fn literal_with_metadata( value: PyScalarValue, metadata: HashMap<String, String>, ) -> PyExpr

Source

pub fn column(value: &str) -> PyExpr

Source

pub fn alias( &self, name: &str, metadata: Option<HashMap<String, String>>, ) -> PyExpr

assign a name to the PyExpr

Source

pub fn sort(&self, ascending: bool, nulls_first: bool) -> PySortExpr

Create a sort PyExpr from an existing PyExpr.

Source

pub fn is_null(&self) -> PyExpr

Source

pub fn is_not_null(&self) -> PyExpr

Source

pub fn cast(&self, to: PyArrowType<DataType>) -> PyExpr

Source

pub fn try_cast(&self, to: PyArrowType<DataType>) -> PyExpr

Source

pub fn between(&self, low: PyExpr, high: PyExpr, negated: bool) -> PyExpr

Source

pub fn rex_type(&self) -> PyResult<RexType>

A Rex (Row Expression) specifies a single row of data. That specification could include user defined functions or types. RexType identifies the row as one of the possible valid RexTypes.

Source

pub fn types(&self) -> PyResult<DataTypeMap>

Given the current Expr return the DataTypeMap which represents the PythonType, Arrow DataType, and SqlType Enum which represents

Source

pub fn python_value<'py>(&self, py: Python<'py>) -> PyResult<Bound<'py, PyAny>>

Extracts the Expr value into a Py that can be shared with Python

Source

pub fn rex_call_operands(&self) -> PyResult<Vec<PyExpr>>

Row expressions, Rex(s), operate on the concept of operands. Different variants of Expressions, Expr(s), store those operands in different datastructures. This function examines the Expr variant and returns the operands to the calling logic as a Vec of PyExpr instances.

Source

pub fn rex_call_operator(&self) -> PyResult<String>

Extracts the operator associated with a RexType::Call

Source

pub fn column_name(&self, plan: PyLogicalPlan) -> PyResult<String>

Source

pub fn order_by(&self, order_by: Vec<PySortExpr>) -> PyExprFuncBuilder

Source

pub fn filter(&self, filter: PyExpr) -> PyExprFuncBuilder

Source

pub fn distinct(&self) -> PyExprFuncBuilder

Source

pub fn null_treatment(&self, null_treatment: NullTreatment) -> PyExprFuncBuilder

Source

pub fn partition_by(&self, partition_by: Vec<PyExpr>) -> PyExprFuncBuilder

Source

pub fn window_frame(&self, window_frame: PyWindowFrame) -> PyExprFuncBuilder

Source

pub fn over( &self, partition_by: Option<Vec<PyExpr>>, window_frame: Option<PyWindowFrame>, order_by: Option<Vec<PySortExpr>>, null_treatment: Option<NullTreatment>, ) -> PyDataFusionResult<PyExpr>

Source

pub fn to_bytes<'py>( &'py self, py: Python<'py>, ctx: Option<PySessionContext>, ) -> PyDataFusionResult<Bound<'py, PyBytes>>

Serialize this Expr to protobuf bytes.

When ctx is supplied, encoding routes through the session’s installed LogicalExtensionCodec so user FFI codecs see the encode path. Without ctx a default-inner Python codec is used; Python scalar UDFs still inline when in-band encoding lands, non-Python UDFs fall through to the default codec.

Source

pub fn from_bytes( ctx: PySessionContext, proto_msg: Bound<'_, PyBytes>, ) -> PyDataFusionResult<Self>

Decode an Expr from protobuf bytes against the session’s function registry and logical codec.

Source§

impl PyExpr

Source

pub fn _column_name(&self, plan: &LogicalPlan) -> PyDataFusionResult<String>

Source

pub fn expr_to_field( expr: &Expr, input_plan: &LogicalPlan, ) -> PyDataFusionResult<Arc<Field>>

Create a Field representing an Expr, given an input LogicalPlan to resolve against

Trait Implementations§

Source§

impl Clone for PyExpr

Source§

fn clone(&self) -> PyExpr

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PyExpr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl DerefToPyAny for PyExpr

Source§

impl From<Expr> for PyExpr

Source§

fn from(expr: Expr) -> PyExpr

Converts to this type from the input type.
Source§

impl From<PyExpr> for Expr

Source§

fn from(expr: PyExpr) -> Expr

Converts to this type from the input type.
Source§

impl<'a, 'py> FromPyObject<'a, 'py> for PyExpr
where Self: Clone,

Source§

type Error = PyClassGuardError<'a, 'py>

The type returned in the event of a conversion error. Read more
Source§

fn extract( obj: Borrowed<'a, 'py, PyAny>, ) -> Result<Self, <Self as FromPyObject<'a, 'py>>::Error>

Extracts Self from the bound smart pointer obj. Read more
Source§

impl<'py> IntoPyObject<'py> for PyExpr

Source§

type Target = PyExpr

The Python output type
Source§

type Output = Bound<'py, <PyExpr as IntoPyObject<'py>>::Target>

The smart pointer type to use. Read more
Source§

type Error = PyErr

The type returned in the event of a conversion error.
Source§

fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>

Performs the conversion.
Source§

impl PyClass for PyExpr

Source§

const NAME: &str = "RawExpr"

Name of the class. Read more
Source§

type Frozen = True

Whether the pyclass is frozen. Read more
Source§

impl PyClassBaseType for PyExpr

Source§

type LayoutAsBase = <PyExpr as PyClassImpl>::Layout

Source§

type BaseNativeType = <PyExpr as PyClassImpl>::BaseNativeType

Source§

type Initializer = PyClassInitializer<PyExpr>

Source§

type PyClassMutability = <PyExpr as PyClassImpl>::PyClassMutability

Source§

type Layout<T: PyClassImpl> = <<PyExpr as PyClassBaseType>::BaseNativeType as PyClassBaseType>::Layout<T>

The type of object layout to use for ancestors or descendants of this type.
Source§

impl PyClassImpl for PyExpr

Source§

const MODULE: Option<&str>

Module which the class will be associated with. Read more
Source§

const IS_BASETYPE: bool = true

#[pyclass(subclass)]
Source§

const IS_SUBCLASS: bool = false

#[pyclass(extends=…)]
Source§

const IS_MAPPING: bool = false

#[pyclass(mapping)]
Source§

const IS_SEQUENCE: bool = false

#[pyclass(sequence)]
Source§

const IS_IMMUTABLE_TYPE: bool = false

#[pyclass(immutable_type)]
Source§

const RAW_DOC: &'static CStr = /// A PyExpr that can be used on a DataFrame

Docstring for the class provided on the struct or enum. Read more
Source§

const DOC: &'static CStr

Fully rendered class doc, including the text_signature if a constructor is defined. Read more
Source§

type Layout = <<PyExpr as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<PyExpr>

Description of how this class is laid out in memory
Source§

type BaseType = PyAny

Base class
Source§

type ThreadChecker = NoopThreadChecker

This handles following two situations: Read more
Source§

type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::ImmutableChild

Immutable or mutable
Source§

type Dict = PyClassDummySlot

Specify this class has #[pyclass(dict)] or not.
Source§

type WeakRef = PyClassDummySlot

Specify this class has #[pyclass(weakref)] or not.
Source§

type BaseNativeType = PyAny

The closest native ancestor. This is PyAny by default, and when you declare #[pyclass(extends=PyDict)], it’s PyDict.
Source§

fn items_iter() -> PyClassItemsIter

Source§

fn lazy_type_object() -> &'static LazyTypeObject<Self>

Source§

fn dict_offset() -> Option<PyObjectOffset>

Used to provide the dictoffset slot (equivalent to tp_dictoffset)
Source§

fn weaklist_offset() -> Option<PyObjectOffset>

Used to provide the weaklistoffset slot (equivalent to tp_weaklistoffset
Source§

impl PyClass__add__SlotFragment<PyExpr> for PyClassImplCollector<PyExpr>

Source§

unsafe fn __add__( self, py: Python<'_>, _slf: *mut PyObject, arg0: *mut PyObject, ) -> PyResult<*mut PyObject>

Safety: _slf and _other must be valid non-null Python objects Read more
Source§

impl PyClass__and__SlotFragment<PyExpr> for PyClassImplCollector<PyExpr>

Source§

unsafe fn __and__( self, py: Python<'_>, _slf: *mut PyObject, arg0: *mut PyObject, ) -> PyResult<*mut PyObject>

Safety: _slf and _other must be valid non-null Python objects Read more
Source§

impl PyClass__mod__SlotFragment<PyExpr> for PyClassImplCollector<PyExpr>

Source§

unsafe fn __mod__( self, py: Python<'_>, _slf: *mut PyObject, arg0: *mut PyObject, ) -> PyResult<*mut PyObject>

Safety: _slf and _other must be valid non-null Python objects Read more
Source§

impl PyClass__mul__SlotFragment<PyExpr> for PyClassImplCollector<PyExpr>

Source§

unsafe fn __mul__( self, py: Python<'_>, _slf: *mut PyObject, arg0: *mut PyObject, ) -> PyResult<*mut PyObject>

Safety: _slf and _other must be valid non-null Python objects Read more
Source§

impl PyClass__or__SlotFragment<PyExpr> for PyClassImplCollector<PyExpr>

Source§

unsafe fn __or__( self, py: Python<'_>, _slf: *mut PyObject, arg0: *mut PyObject, ) -> PyResult<*mut PyObject>

Safety: _slf and _other must be valid non-null Python objects Read more
Source§

impl PyClass__sub__SlotFragment<PyExpr> for PyClassImplCollector<PyExpr>

Source§

unsafe fn __sub__( self, py: Python<'_>, _slf: *mut PyObject, arg0: *mut PyObject, ) -> PyResult<*mut PyObject>

Safety: _slf and _other must be valid non-null Python objects Read more
Source§

impl PyClass__truediv__SlotFragment<PyExpr> for PyClassImplCollector<PyExpr>

Source§

unsafe fn __truediv__( self, py: Python<'_>, _slf: *mut PyObject, arg0: *mut PyObject, ) -> PyResult<*mut PyObject>

Safety: _slf and _other must be valid non-null Python objects Read more
Source§

impl PyMethods<PyExpr> for PyClassImplCollector<PyExpr>

Source§

fn py_methods(self) -> &'static PyClassItems

Source§

impl PyTypeInfo for PyExpr

Source§

const NAME: &str = <Self as ::pyo3::PyClass>::NAME

👎Deprecated since 0.28.0:

prefer using ::type_object(py).name() to get the correct runtime value

Class name.
Source§

const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE

👎Deprecated since 0.28.0:

prefer using ::type_object(py).module() to get the correct runtime value

Module name, if any.
Source§

fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject

Returns the PyTypeObject instance for this type.
Source§

fn type_object(py: Python<'_>) -> Bound<'_, PyType>

Returns the safe abstraction over the type object.
Source§

fn is_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type or a subclass of this type.
Source§

fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<Source> AccessAs for Source

Source§

fn ref_as<T>(&self) -> <Source as IGuardRef<T>>::Guard<'_>
where Source: IGuardRef<T>, T: ?Sized,

Provides immutable access to a type as if it were its ABI-unstable equivalent.
Source§

fn mut_as<T>(&mut self) -> <Source as IGuardMut<T>>::GuardMut<'_>
where Source: IGuardMut<T>, T: ?Sized,

Provides mutable access to a type as if it were its ABI-unstable equivalent.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<'py, T> FromPyObjectOwned<'py> for T
where T: for<'a> FromPyObject<'a, 'py>,

Source§

impl<T, As> IGuardMut<As> for T
where T: Into<As>, As: Into<T>,

Source§

type GuardMut<'a> = MutAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary after applying its changes to the original.
Source§

fn guard_mut_inner(&mut self) -> <T as IGuardMut<As>>::GuardMut<'_>

Construct the temporary and guard it through a mutable reference.
Source§

impl<T, As> IGuardRef<As> for T
where T: Into<As>, As: Into<T>,

Source§

type Guard<'a> = RefAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary.
Source§

fn guard_ref_inner(&self) -> <T as IGuardRef<As>>::Guard<'_>

Construct the temporary and guard it through an immutable reference.
Source§

impl<T> Includes<End> for T

Source§

type Output = End

The result
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<'py, T> IntoPyObjectExt<'py> for T
where T: IntoPyObject<'py>,

Source§

fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>

Converts self into an owned Python object, dropping type information.
Source§

fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>

Converts self into an owned Python object, dropping type information and unbinding it from the 'py lifetime.
Source§

fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>

Converts self into a Python object. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> PyErrArguments for T
where T: for<'py> IntoPyObject<'py> + Send + Sync,

Source§

fn arguments(self, py: Python<'_>) -> Py<PyAny>

Arguments for exception
Source§

impl<T> PyTypeCheck for T
where T: PyTypeInfo,

Source§

const NAME: &'static str = T::NAME

👎Deprecated since 0.27.0:

Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.

Name of self. This is used in error messages, for example.
Source§

fn type_check(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of Self, which may include a subtype. Read more
Source§

fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>

Returns the expected type as a possible argument for the isinstance and issubclass function. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Ungil for T
where T: Send,

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more