Skip to main content

Py

Struct Py 

Source
pub struct Py<T> { /* private fields */ }
Expand description

This is an actual python object. It consists of a typ which is the python class, and carries some rust payload optionally. This rust payload can be a rust float or rust int in case of float and int objects.

Implementations§

Source§

impl Py<PyByteArray>

Source

pub fn resize(&self, size: isize, vm: &VirtualMachine) -> PyResult<()>

Source§

impl Py<PyBytes>

Source

pub fn as_bytes(&self) -> &[u8] ⓘ

Source§

impl Py<PyCode>

Source

pub fn co_cellvars(&self, vm: &VirtualMachine) -> PyTupleRef

Source

pub fn co_varnames(&self, vm: &VirtualMachine) -> PyTupleRef

Source

pub fn co_code(&self, vm: &VirtualMachine) -> PyBytesRef

Source

pub fn _co_code_adaptive(&self, vm: &VirtualMachine) -> PyBytesRef

Source

pub fn co_freevars(&self, vm: &VirtualMachine) -> PyTupleRef

Source

pub fn co_linetable(&self, vm: &VirtualMachine) -> PyBytesRef

Source

pub fn co_exceptiontable(&self, vm: &VirtualMachine) -> PyBytesRef

Source

pub fn co_lines(&self, vm: &VirtualMachine) -> PyResult<PyObjectRef>

Source

pub fn co_positions(&self, vm: &VirtualMachine) -> PyResult<PyObjectRef>

Source

pub fn co_branches(&self, vm: &VirtualMachine) -> PyResult<PyObjectRef>

Source

pub fn __replace__( &self, args: ReplaceArgs, vm: &VirtualMachine, ) -> PyResult<PyCode>

Source

pub fn replace( &self, args: ReplaceArgs, vm: &VirtualMachine, ) -> PyResult<PyCode>

Source§

impl Py<PyComplex>

Source

pub const fn as_complex(&self) -> Complex64

Source§

impl Py<PyDict>

Source

pub fn clear(&self)

Source

pub fn copy(&self) -> PyDict

Source§

impl Py<PyDict>

Source

pub fn to_attributes( &self, vm: &VirtualMachine, on_non_string: impl FnOnce(&VirtualMachine) -> PyResult<()>, ) -> PyResult<IndexMap<&'static PyStrInterned, PyObjectRef, RandomState>>

Take a python dictionary and convert it to attributes.

PyAttributes is keyed by interned strings, so a key that is not a string has nowhere to go. Those keys are left out, and on_non_string is called once, the first time one turns up, so the caller can decide whether that deserves an error or a warning.

Source

pub fn get_item_opt<K: DictKey + ?Sized>( &self, key: &K, vm: &VirtualMachine, ) -> PyResult<Option<PyObjectRef>>

Source

pub fn get_item<K: DictKey + ?Sized>( &self, key: &K, vm: &VirtualMachine, ) -> PyResult

Source

pub fn set_item<K: DictKey + ?Sized>( &self, key: &K, value: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<()>

Source

pub fn del_item<K: DictKey + ?Sized>( &self, key: &K, vm: &VirtualMachine, ) -> PyResult<()>

Source

pub fn pop_item<K: DictKey + ?Sized>( &self, key: &K, vm: &VirtualMachine, ) -> PyResult<Option<PyObjectRef>>

Source

pub fn get_chain<K: DictKey + ?Sized>( &self, other: &Self, key: &K, vm: &VirtualMachine, ) -> PyResult<Option<PyObjectRef>>

Source§

impl Py<PyFloat>

Source

pub const fn to_f64(&self) -> f64

Source§

impl Py<FrameObject>

Source

pub fn f_locals(&self, vm: &VirtualMachine) -> PyResult

Source

pub fn f_back(&self, vm: &VirtualMachine) -> Option<PyRef<FrameObject>>

Source

pub fn f_globals(&self) -> PyDictRef

Source

pub fn f_builtins(&self) -> PyObjectRef

Source

pub fn f_code(&self) -> PyRef<PyCode>

Source§

impl Py<PyFunction>

Source

pub fn invoke_with_locals( &self, func_args: FuncArgs, locals: Option<ArgMapping>, vm: &VirtualMachine, ) -> PyResult

Source

pub fn invoke(&self, func_args: FuncArgs, vm: &VirtualMachine) -> PyResult

Source

pub fn func_version(&self) -> u32

Returns the function version, or 0 if invalidated.

Source

pub fn get_version_for_current_state(&self) -> u32

Returns the current version, assigning a fresh one if previously invalidated. Returns 0 if the version counter has overflowed. _PyFunction_GetVersionForCurrentState

Source

pub fn invoke_exact_args( &self, args: Vec<PyObjectRef>, vm: &VirtualMachine, ) -> PyResult

Fast path for calling a simple function with exact positional args. Skips FuncArgs allocation, prepend_arg, and fill_locals_from_args. Only valid when: CO_OPTIMIZED, no VARARGS, no VARKEYWORDS, no kwonlyargs, and nargs == co_argcount.

Source§

impl Py<PyInt>

Source

pub const fn as_bigint(&self) -> &BigInt

Source

pub fn to_str_radix_10(&self) -> String

Fast decimal string conversion, using i64 path when possible.

Source

pub fn as_u32_mask(&self) -> u32

Source

pub fn as_u64_mask(&self) -> u64

Source

pub fn try_to_primitive<I>(&self, vm: &VirtualMachine) -> PyResult<I>
where I: PrimInt + for<'a> TryFrom<&'a BigInt>,

Source

pub fn try_to_primitive_in_range<I>(&self, vm: &VirtualMachine) -> PyResult<I>
where I: PrimInt + for<'a> TryFrom<&'a BigInt>,

Source§

impl Py<PyList>

Source§

impl Py<PyMappingProxy>

Source

pub fn items(&self, vm: &VirtualMachine) -> PyResult

Source

pub fn keys(&self, vm: &VirtualMachine) -> PyResult

Source

pub fn values(&self, vm: &VirtualMachine) -> PyResult

Source

pub fn copy(&self, vm: &VirtualMachine) -> PyResult

Source§

impl Py<PyModule>

Source

pub fn __init_methods(&self, vm: &VirtualMachine) -> PyResult<()>

Source

pub fn dict(&self) -> PyDictRef

Source

pub fn get_attr<'a>( &self, attr_name: impl AsPyStr<'a>, vm: &VirtualMachine, ) -> PyResult

Source

pub fn set_attr<'a>( &self, attr_name: impl AsPyStr<'a>, attr_value: impl Into<PyObjectRef>, vm: &VirtualMachine, ) -> PyResult<()>

Source§

impl Py<PyStr>

Source

pub fn as_wtf8(&self) -> &Wtf8

Source

pub fn as_bytes(&self) -> &[u8] ⓘ

Source

pub fn as_utf8(&self) -> Option<&Py<PyUtf8Str>>

Source

pub fn try_as_utf8<'a>( &'a self, vm: &VirtualMachine, ) -> PyResult<&'a Py<PyUtf8Str>>

Source§

impl Py<PyStr>

Source

pub fn isascii(&self) -> bool

Source

pub fn partition(&self, sep: PyStrRef, vm: &VirtualMachine) -> PyResult

Source

pub fn rpartition(&self, sep: PyStrRef, vm: &VirtualMachine) -> PyResult

Source

pub fn isidentifier(&self) -> bool

Source

pub fn translate( &self, table: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<Wtf8Buf>

Source§

impl Py<PyUtf8Str>

Source

pub const fn as_pystr(&self) -> &Py<PyStr>

Upcast to PyStr.

Source

pub fn as_str(&self) -> &str

Returns the underlying &str.

Source§

impl Py<PyType>

Source

pub fn slots(&self) -> &PyTypeSlots

Source

pub fn attributes(&self) -> &TypeNamespace

Source

pub fn tp_version_tag(&self) -> &AtomicU32

Source

pub fn heaptype_ext(&self) -> Option<&HeapTypeExt>

Source

pub fn is_subtype(&self, other: &Self) -> bool

Source

pub fn check_exact<'a>( obj: &'a PyObject, vm: &VirtualMachine, ) -> Option<&'a Self>

Equivalent to CPython’s PyType_CheckExact macro Checks if obj is exactly a type (not a subclass)

Source

pub fn fast_issubclass(&self, cls: &impl Borrow<PyObject>) -> bool

Determines if subclass is actually a subclass of cls, this doesn’t call subclasscheck, so only use this if cls is known to have not overridden the base subclasscheck magic method.

Source

pub fn mro_map_collect<F, R>(&self, f: F) -> Vec<R>
where F: Fn(&Self) -> R,

Source

pub fn mro_collect(&self) -> Vec<PyRef<PyType>>

Source

pub fn iter_base_chain(&self) -> impl Iterator<Item = &Self>

Source

pub fn extend_methods( &'static self, method_defs: &'static [PyMethodDef], ctx: &Context, )

Source§

impl Py<PyType>

Source§

impl Py<PySet>

Source

pub fn add(&self, object: PyObjectRef, vm: &VirtualMachine) -> PyResult<()>

Source

pub fn discard(&self, object: PyObjectRef, vm: &VirtualMachine) -> PyResult<()>

Source

pub fn clear(&self)

Source

pub fn pop(&self, vm: &VirtualMachine) -> PyResult

Source§

impl Py<PySlice>

Source§

impl<R> Py<PyTuple<R>>

Source

pub fn as_slice(&self) -> &[R]

Source§

impl Py<PyTuple>

Source

pub fn extract_tuple<'a, T: FromPyTuple<'a>>( &'a self, vm: &VirtualMachine, ) -> PyResult<T>

Source§

impl<T: PyPayload> Py<PyTuple<PyRef<T>>>

Source

pub fn as_untyped(&self) -> &Py<PyTuple>

Source§

impl Py<PyBaseException>

Source§

impl Py<FrameObject>

Source§

impl Py<HeapMethodDef>

Source

pub fn build_function( &self, vm: &VirtualMachine, zelf: Option<PyObjectRef>, ) -> PyRef<PyNativeFunction>

Source

pub fn build_method( &self, class: &'static Py<PyType>, vm: &VirtualMachine, ) -> PyRef<PyMethodDescriptor>

Source§

impl Py<PyWeak>

Source

pub fn upgrade(&self) -> Option<PyObjectRef>

Source§

impl<T: PyPayload> Py<T>

Source

pub fn downgrade( &self, callback: Option<PyObjectRef>, vm: &VirtualMachine, ) -> PyResult<PyWeakRef<T>>

Source

pub fn payload(&self) -> &T

Source§

impl<T: PySubclass> Py<T>

Source

pub fn to_base(&self) -> &Py<T::Base>

Converts &Py<T> to &Py<T::Base>.

Source

pub fn upcast_ref<U: PyPayload + StaticType>(&self) -> &Py<U>
where T: StaticType,

Converts &Py<T> to &Py<U> where U is an ancestor type.

Trait Implementations§

Source§

impl AsRef<Py<PyInt>> for ArgIndex

Source§

fn as_ref(&self) -> &Py<PyInt>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> AsRef<Py<T>> for PyRef<T>

Source§

fn as_ref(&self) -> &Py<T>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T: PyPayload> AsRef<Py<T>> for PyExact<T>

Source§

fn as_ref(&self) -> &Py<T>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T: PyPayload> AsRef<Py<T>> for PyRefExact<T>

Source§

fn as_ref(&self) -> &Py<T>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> AsRef<PyObject> for Py<T>
where T: PyPayload,

Source§

fn as_ref(&self) -> &PyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<Wtf8> for Py<PyStr>

Source§

fn as_ref(&self) -> &Wtf8

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<str> for Py<PyStr>

Source§

fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> Borrow<Py<T>> for PyRef<T>

Source§

fn borrow(&self) -> &Py<T>

Immutably borrows from an owned value. Read more
Source§

impl<T: PyPayload> Borrow<Py<T>> for PyExact<T>

Source§

fn borrow(&self) -> &Py<T>

Immutably borrows from an owned value. Read more
Source§

impl<T: PyPayload> Borrow<Py<T>> for PyRefExact<T>

Source§

fn borrow(&self) -> &Py<T>

Immutably borrows from an owned value. Read more
Source§

impl<T: PyPayload> Borrow<PyObject> for Py<T>

Source§

fn borrow(&self) -> &PyObject

Immutably borrows from an owned value. Read more
Source§

impl<T: PyPayload + Debug> Debug for Py<T>

Source§

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

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

impl<T> Deref for Py<T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<T: PyPayload + Display> Display for Py<T>

Source§

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

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

impl<T> Eq for Py<T>
where T: Eq + PyPayload,

Source§

impl<'a, T: PyPayload> From<&'a Py<T>> for &'a PyObject

Source§

fn from(py_ref: &'a Py<T>) -> Self

Converts to this type from the input type.
Source§

impl<T> Hash for Py<T>
where T: Hash + PyPayload,

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<'a> IntoIterator for &'a Py<PyDict>

Source§

type Item = (PyObjectRef, PyObjectRef)

The type of the elements being iterated over.
Source§

type IntoIter = DictIter<'a>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl<'a, R> IntoIterator for &'a Py<PyTuple<R>>

Source§

type Item = &'a R

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, R>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl<T> PartialEq for Py<T>
where T: PartialEq + PyPayload,

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<T> ToOwned for Py<T>

Source§

type Owned = PyRef<T>

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> Self::Owned

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

fn clone_into(&self, target: &mut Self::Owned)

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

impl Traverse for Py<Erased>

Source§

fn traverse(&self, tracer_fn: &mut TraverseFn<'_>)

Because PyObject hold a Py<Erased>, so we need to trace it

Source§

fn clear(&mut self, _out: &mut Vec<PyObjectRef>)

Extract all owned child PyObjectRefs for circular reference resolution (tp_clear). Called just before object deallocation to break circular references. Default implementation does nothing.
Source§

impl<T: MaybeTraverse> Traverse for Py<T>

Source§

fn traverse(&self, tracer_fn: &mut TraverseFn<'_>)

DO notice that call trace on Py<T> means apply tracer_fn on Py<T>’s children, not like call trace on PyRef<T> which apply tracer_fn on PyRef<T> itself

Type is known, so we can call try_trace directly instead of using erased type vtable

Source§

fn clear(&mut self, _out: &mut Vec<PyObjectRef>)

Extract all owned child PyObjectRefs for circular reference resolution (tp_clear). Called just before object deallocation to break circular references. Default implementation does nothing.
Source§

impl<'a, T: PyPayload> TryFromBorrowedObject<'a> for &'a Py<T>

Source§

fn try_from_borrowed_object( vm: &VirtualMachine, obj: &'a PyObject, ) -> PyResult<Self>

Attempt to convert a Python object to a value of this type.
Source§

impl Wtf8Concat for Py<PyStr>

Source§

fn fmt_wtf8(&self, buf: &mut Wtf8Buf)

Auto Trait Implementations§

§

impl<T> !Freeze for Py<T>

§

impl<T> !RefUnwindSafe for Py<T>

§

impl<T> !Send for Py<T>

§

impl<T> !Sync for Py<T>

§

impl<T> !Unpin for Py<T>

§

impl<T> !UnsafeUnpin for Py<T>

§

impl<T> !UnwindSafe for Py<T>

Blanket Implementations§

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> AsObject for T
where T: Borrow<PyObject>,

Source§

fn as_object(&self) -> &PyObject

Source§

fn get_id(&self) -> usize

Source§

fn is<T>(&self, other: &T) -> bool
where T: AsObject,

Source§

fn class(&self) -> &Py<PyType>

Source§

fn get_class_attr( &self, attr_name: &'static PyStrInterned, ) -> Option<PyObjectRef>

Source§

fn fast_isinstance(&self, cls: &Py<PyType>) -> bool

Determines if obj actually an instance of cls, this doesn’t call instancecheck, so only use this if cls is known to have not overridden the base instancecheck magic method.
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<T> Candidate for T
where T: AsRef<str>,

Source§

fn display(&self) -> &str

Text to display when listing alternatives.
Source§

fn replacement(&self) -> &str

Text to insert in line.
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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

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

Source§

fn exact_from(value: T) -> U

Source§

impl<T, U> ExactInto<U> for T
where U: ExactFrom<T>,

Source§

fn exact_into(self) -> U

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Helper for T

Source§

impl<T> Hint for T
where T: AsRef<str>,

Source§

fn display(&self) -> &str

Text to display when hint is active
Source§

fn completion(&self) -> Option<&str>

Text to insert in line when right arrow is pressed
Source§

impl<T, U> ImaginaryInto<U> for T
where U: ImaginaryFrom<T>,

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<T, U> OverflowingInto<U> for T
where U: OverflowingFrom<T>,

Source§

impl<T> PrimitiveIntRandomBounds for T

Source§

impl<T> PrimitiveSignedRandomBounds for T

Source§

impl<T> PyThreadingConstraint for T

Source§

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

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> RoundingInto<U> for T
where U: RoundingFrom<T>,

Source§

impl<T, U> SaturatingInto<U> for T
where U: SaturatingFrom<T>,

Source§

impl<T> ToCharString for T
where T: Display,

Source§

fn try_to_char_string(&self) -> Result<CharString, ToCharStringError>

Attempts to convert the value to a CharString. Read more
Source§

fn to_char_string(&self) -> CharString

Converts the value to a CharString. Read more
Source§

impl<T> ToCompactString for T
where T: Display,

Source§

impl<T> ToDebugString for T
where T: Debug,

Source§

fn to_debug_string(&self) -> String

Returns the String produced by Ts Debug implementation.

§Examples
use malachite_base::strings::ToDebugString;

assert_eq!([1, 2, 3].to_debug_string(), "[1, 2, 3]");
assert_eq!(
    [vec![2, 3], vec![], vec![4]].to_debug_string(),
    "[[2, 3], [], [4]]"
);
assert_eq!(Some(5).to_debug_string(), "Some(5)");
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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, U> WrappingInto<U> for T
where U: WrappingFrom<T>,

Source§

fn wrapping_into(self) -> U