#[repr(transparent)]
pub struct ArchiveNotFoundError(_);
Expand description

Raised if an archive is missing

Implementations§

source§

impl ArchiveNotFoundError

source

pub fn new_err<A>(args: A) -> PyErrwhere A: PyErrArguments + Send + Sync + 'static,

Creates a new PyErr of this type.

Methods from Deref<Target = PyAny>§

pub fn is<T>(&self, other: &T) -> boolwhere T: AsPyPointer,

Returns whether self and other point to the same object. To compare the equality of two objects (the == operator), use eq.

This is equivalent to the Python expression self is other.

pub fn hasattr<N>(&self, attr_name: N) -> Result<bool, PyErr>where N: IntoPy<Py<PyString>>,

Determines whether this object has the given attribute.

This is equivalent to the Python expression hasattr(self, attr_name).

To avoid repeated temporary allocations of Python strings, the [intern!] macro can be used to intern attr_name.

pub fn getattr<N>(&self, attr_name: N) -> Result<&PyAny, PyErr>where N: IntoPy<Py<PyString>>,

Retrieves an attribute value.

This is equivalent to the Python expression self.attr_name.

To avoid repeated temporary allocations of Python strings, the [intern!] macro can be used to intern attr_name.

Example: intern!ing the attribute name
#[pyfunction]
fn version(sys: &PyModule) -> PyResult<&PyAny> {
    sys.getattr(intern!(sys.py(), "version"))
}

pub fn setattr<N, V>(&self, attr_name: N, value: V) -> Result<(), PyErr>where N: IntoPy<Py<PyString>>, V: ToPyObject,

Sets an attribute value.

This is equivalent to the Python expression self.attr_name = value.

To avoid repeated temporary allocations of Python strings, the [intern!] macro can be used to intern name.

Example: intern!ing the attribute name
#[pyfunction]
fn set_answer(ob: &PyAny) -> PyResult<()> {
    ob.setattr(intern!(ob.py(), "answer"), 42)
}

pub fn delattr<N>(&self, attr_name: N) -> Result<(), PyErr>where N: IntoPy<Py<PyString>>,

Deletes an attribute.

This is equivalent to the Python statement del self.attr_name.

To avoid repeated temporary allocations of Python strings, the [intern!] macro can be used to intern attr_name.

pub fn compare<O>(&self, other: O) -> Result<Ordering, PyErr>where O: ToPyObject,

Returns an Ordering between self and other.

This is equivalent to the following Python code:

if self == other:
    return Equal
elif a < b:
    return Less
elif a > b:
    return Greater
else:
    raise TypeError("PyAny::compare(): All comparisons returned false")
Examples
use pyo3::prelude::*;
use pyo3::types::PyFloat;
use std::cmp::Ordering;

Python::with_gil(|py| -> PyResult<()> {
    let a = PyFloat::new(py, 0_f64);
    let b = PyFloat::new(py, 42_f64);
    assert_eq!(a.compare(b)?, Ordering::Less);
    Ok(())
})?;

It will return PyErr for values that cannot be compared:

use pyo3::prelude::*;
use pyo3::types::{PyFloat, PyString};

Python::with_gil(|py| -> PyResult<()> {
    let a = PyFloat::new(py, 0_f64);
    let b = PyString::new(py, "zero");
    assert!(a.compare(b).is_err());
    Ok(())
})?;

pub fn rich_compare<O>( &self, other: O, compare_op: CompareOp ) -> Result<&PyAny, PyErr>where O: ToPyObject,

Tests whether two Python objects obey a given [CompareOp].

lt, le, eq, ne, gt and ge are the specialized versions of this function.

Depending on the value of compare_op, this is equivalent to one of the following Python expressions:

compare_opPython expression
[CompareOp::Eq]self == other
[CompareOp::Ne]self != other
[CompareOp::Lt]self < other
[CompareOp::Le]self <= other
[CompareOp::Gt]self > other
[CompareOp::Ge]self >= other
Examples
use pyo3::class::basic::CompareOp;
use pyo3::prelude::*;
use pyo3::types::PyInt;

Python::with_gil(|py| -> PyResult<()> {
    let a: &PyInt = 0_u8.into_py(py).into_ref(py).downcast()?;
    let b: &PyInt = 42_u8.into_py(py).into_ref(py).downcast()?;
    assert!(a.rich_compare(b, CompareOp::Le)?.is_true()?);
    Ok(())
})?;

pub fn lt<O>(&self, other: O) -> Result<bool, PyErr>where O: ToPyObject,

Tests whether this object is less than another.

This is equivalent to the Python expression self < other.

pub fn le<O>(&self, other: O) -> Result<bool, PyErr>where O: ToPyObject,

Tests whether this object is less than or equal to another.

This is equivalent to the Python expression self <= other.

pub fn eq<O>(&self, other: O) -> Result<bool, PyErr>where O: ToPyObject,

Tests whether this object is equal to another.

This is equivalent to the Python expression self == other.

pub fn ne<O>(&self, other: O) -> Result<bool, PyErr>where O: ToPyObject,

Tests whether this object is not equal to another.

This is equivalent to the Python expression self != other.

pub fn gt<O>(&self, other: O) -> Result<bool, PyErr>where O: ToPyObject,

Tests whether this object is greater than another.

This is equivalent to the Python expression self > other.

pub fn ge<O>(&self, other: O) -> Result<bool, PyErr>where O: ToPyObject,

Tests whether this object is greater than or equal to another.

This is equivalent to the Python expression self >= other.

pub fn is_callable(&self) -> bool

Determines whether this object appears callable.

This is equivalent to Python’s callable() function.

Examples
use pyo3::prelude::*;

Python::with_gil(|py| -> PyResult<()> {
    let builtins = PyModule::import(py, "builtins")?;
    let print = builtins.getattr("print")?;
    assert!(print.is_callable());
    Ok(())
})?;

This is equivalent to the Python statement assert callable(print).

Note that unless an API needs to distinguish between callable and non-callable objects, there is no point in checking for callability. Instead, it is better to just do the call and handle potential exceptions.

pub fn call( &self, args: impl IntoPy<Py<PyTuple>>, kwargs: Option<&PyDict> ) -> Result<&PyAny, PyErr>

Calls the object.

This is equivalent to the Python expression self(*args, **kwargs).

Examples
use pyo3::prelude::*;
use pyo3::types::PyDict;

const CODE: &str = r#"
def function(*args, **kwargs):
    assert args == ("hello",)
    assert kwargs == {"cruel": "world"}
    return "called with args and kwargs"
"#;

Python::with_gil(|py| {
    let module = PyModule::from_code(py, CODE, "", "")?;
    let fun = module.getattr("function")?;
    let args = ("hello",);
    let kwargs = PyDict::new(py);
    kwargs.set_item("cruel", "world")?;
    let result = fun.call(args, Some(kwargs))?;
    assert_eq!(result.extract::<&str>()?, "called with args and kwargs");
    Ok(())
})

pub fn call0(&self) -> Result<&PyAny, PyErr>

Calls the object without arguments.

This is equivalent to the Python expression self().

Examples
use pyo3::prelude::*;

Python::with_gil(|py| -> PyResult<()> {
    let module = PyModule::import(py, "builtins")?;
    let help = module.getattr("help")?;
    help.call0()?;
    Ok(())
})?;

This is equivalent to the Python expression help().

pub fn call1(&self, args: impl IntoPy<Py<PyTuple>>) -> Result<&PyAny, PyErr>

Calls the object with only positional arguments.

This is equivalent to the Python expression self(*args).

Examples
use pyo3::prelude::*;

const CODE: &str = r#"
def function(*args, **kwargs):
    assert args == ("hello",)
    assert kwargs == {}
    return "called with args"
"#;

Python::with_gil(|py| {
    let module = PyModule::from_code(py, CODE, "", "")?;
    let fun = module.getattr("function")?;
    let args = ("hello",);
    let result = fun.call1(args)?;
    assert_eq!(result.extract::<&str>()?, "called with args");
    Ok(())
})

pub fn call_method<N, A>( &self, name: N, args: A, kwargs: Option<&PyDict> ) -> Result<&PyAny, PyErr>where N: IntoPy<Py<PyString>>, A: IntoPy<Py<PyTuple>>,

Calls a method on the object.

This is equivalent to the Python expression self.name(*args, **kwargs).

To avoid repeated temporary allocations of Python strings, the [intern!] macro can be used to intern name.

Examples
use pyo3::prelude::*;
use pyo3::types::PyDict;

const CODE: &str = r#"
class A:
    def method(self, *args, **kwargs):
        assert args == ("hello",)
        assert kwargs == {"cruel": "world"}
        return "called with args and kwargs"
a = A()
"#;

Python::with_gil(|py| {
    let module = PyModule::from_code(py, CODE, "", "")?;
    let instance = module.getattr("a")?;
    let args = ("hello",);
    let kwargs = PyDict::new(py);
    kwargs.set_item("cruel", "world")?;
    let result = instance.call_method("method", args, Some(kwargs))?;
    assert_eq!(result.extract::<&str>()?, "called with args and kwargs");
    Ok(())
})

pub fn call_method0<N>(&self, name: N) -> Result<&PyAny, PyErr>where N: IntoPy<Py<PyString>>,

Calls a method on the object without arguments.

This is equivalent to the Python expression self.name().

To avoid repeated temporary allocations of Python strings, the [intern!] macro can be used to intern name.

Examples
use pyo3::prelude::*;

const CODE: &str = r#"
class A:
    def method(self, *args, **kwargs):
        assert args == ()
        assert kwargs == {}
        return "called with no arguments"
a = A()
"#;

Python::with_gil(|py| {
    let module = PyModule::from_code(py, CODE, "", "")?;
    let instance = module.getattr("a")?;
    let result = instance.call_method0("method")?;
    assert_eq!(result.extract::<&str>()?, "called with no arguments");
    Ok(())
})

pub fn call_method1<N, A>(&self, name: N, args: A) -> Result<&PyAny, PyErr>where N: IntoPy<Py<PyString>>, A: IntoPy<Py<PyTuple>>,

Calls a method on the object with only positional arguments.

This is equivalent to the Python expression self.name(*args).

To avoid repeated temporary allocations of Python strings, the [intern!] macro can be used to intern name.

Examples
use pyo3::prelude::*;

const CODE: &str = r#"
class A:
    def method(self, *args, **kwargs):
        assert args == ("hello",)
        assert kwargs == {}
        return "called with args"
a = A()
"#;

Python::with_gil(|py| {
    let module = PyModule::from_code(py, CODE, "", "")?;
    let instance = module.getattr("a")?;
    let args = ("hello",);
    let result = instance.call_method1("method", args)?;
    assert_eq!(result.extract::<&str>()?, "called with args");
    Ok(())
})

pub fn is_true(&self) -> Result<bool, PyErr>

Returns whether the object is considered to be true.

This is equivalent to the Python expression bool(self).

pub fn is_none(&self) -> bool

Returns whether the object is considered to be None.

This is equivalent to the Python expression self is None.

pub fn is_empty(&self) -> Result<bool, PyErr>

Returns true if the sequence or mapping has a length of 0.

This is equivalent to the Python expression len(self) == 0.

pub fn get_item<K>(&self, key: K) -> Result<&PyAny, PyErr>where K: ToPyObject,

Gets an item from the collection.

This is equivalent to the Python expression self[key].

pub fn set_item<K, V>(&self, key: K, value: V) -> Result<(), PyErr>where K: ToPyObject, V: ToPyObject,

Sets a collection item value.

This is equivalent to the Python expression self[key] = value.

pub fn del_item<K>(&self, key: K) -> Result<(), PyErr>where K: ToPyObject,

Deletes an item from the collection.

This is equivalent to the Python expression del self[key].

pub fn iter(&self) -> Result<&PyIterator, PyErr>

Takes an object and returns an iterator for it.

This is typically a new iterator but if the argument is an iterator, this returns itself.

pub fn get_type(&self) -> &PyType

Returns the Python type object for this object’s type.

pub fn get_type_ptr(&self) -> *mut PyTypeObject

Returns the Python type pointer for this object.

pub fn cast_as<'a, D>(&'a self) -> Result<&'a D, PyDowncastError<'a>>where D: PyTryFrom<'a>,

👎Deprecated since 0.18.0: use the equivalent .downcast()

Converts this PyAny to a concrete Python type.

pub fn downcast<'p, T>(&'p self) -> Result<&'p T, PyDowncastError<'p>>where T: PyTryFrom<'p>,

Converts this PyAny to a concrete Python type.

This can cast only to native Python types, not types implemented in Rust.

Examples
use pyo3::prelude::*;
use pyo3::types::{PyAny, PyDict, PyList};

Python::with_gil(|py| {
    let dict = PyDict::new(py);
    assert!(dict.is_instance_of::<PyAny>().unwrap());
    let any: &PyAny = dict.as_ref();
    assert!(any.downcast::<PyDict>().is_ok());
    assert!(any.downcast::<PyList>().is_err());
});

pub unsafe fn downcast_unchecked<'p, T>(&'p self) -> &'p Twhere T: PyTryFrom<'p>,

Converts this PyAny to a concrete Python type without checking validity.

Safety

Callers must ensure that the type is valid or risk type confusion.

pub fn extract<'a, D>(&'a self) -> Result<D, PyErr>where D: FromPyObject<'a>,

Extracts some type from the Python object.

This is a wrapper function around [FromPyObject::extract()].

pub fn get_refcnt(&self) -> isize

Returns the reference count for the Python object.

pub fn repr(&self) -> Result<&PyString, PyErr>

Computes the “repr” representation of self.

This is equivalent to the Python expression repr(self).

pub fn str(&self) -> Result<&PyString, PyErr>

Computes the “str” representation of self.

This is equivalent to the Python expression str(self).

pub fn hash(&self) -> Result<isize, PyErr>

Retrieves the hash code of self.

This is equivalent to the Python expression hash(self).

pub fn len(&self) -> Result<usize, PyErr>

Returns the length of the sequence or mapping.

This is equivalent to the Python expression len(self).

pub fn dir(&self) -> &PyList

Returns the list of attributes of this object.

This is equivalent to the Python expression dir(self).

pub fn is_instance(&self, ty: &PyAny) -> Result<bool, PyErr>

Checks whether this object is an instance of type ty.

This is equivalent to the Python expression isinstance(self, ty).

pub fn is_instance_of<T>(&self) -> Result<bool, PyErr>where T: PyTypeInfo,

Checks whether this object is an instance of type T.

This is equivalent to the Python expression isinstance(self, T), if the type T is known at compile time.

pub fn contains<V>(&self, value: V) -> Result<bool, PyErr>where V: ToPyObject,

Determines if self contains value.

This is equivalent to the Python expression value in self.

pub fn py(&self) -> Python<'_>

Returns a GIL marker constrained to the lifetime of this type.

pub fn py_super(&self) -> Result<&PySuper, PyErr>

Return a proxy object that delegates method calls to a parent or sibling class of type.

This is equivalent to the Python expression super()

Trait Implementations§

source§

impl AsPyPointer for ArchiveNotFoundError

source§

fn as_ptr(&self) -> *mut PyObject

Gets the underlying FFI pointer, returns a borrowed pointer.

source§

impl AsRef<PyAny> for ArchiveNotFoundError

source§

fn as_ref(&self) -> &PyAny

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

impl Debug for ArchiveNotFoundError

source§

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

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

impl Deref for ArchiveNotFoundError

§

type Target = PyAny

The resulting type after dereferencing.
source§

fn deref(&self) -> &PyAny

Dereferences the value.
source§

impl Display for ArchiveNotFoundError

source§

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

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

impl Error for ArchiveNotFoundError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, demand: &mut Demand<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl<'a> From<&'a ArchiveNotFoundError> for &'a PyAny

source§

fn from(ob: &'a ArchiveNotFoundError) -> Self

Converts to this type from the input type.
source§

impl From<&ArchiveNotFoundError> for Py<ArchiveNotFoundError>

source§

fn from(other: &ArchiveNotFoundError) -> Self

Converts to this type from the input type.
source§

impl From<&ArchiveNotFoundError> for PyErr

source§

fn from(err: &ArchiveNotFoundError) -> PyErr

Converts to this type from the input type.
source§

impl<'py> FromPyObject<'py> for &'py ArchiveNotFoundError

source§

fn extract(obj: &'py PyAny) -> PyResult<Self>

Extracts Self from the source PyObject.
source§

impl IntoPy<Py<ArchiveNotFoundError>> for &ArchiveNotFoundError

source§

fn into_py(self, py: Python<'_>) -> Py<ArchiveNotFoundError>

Performs the conversion.
source§

impl PyNativeType for ArchiveNotFoundError

§

fn py(&self) -> Python<'_>

Returns a GIL marker constrained to the lifetime of this type.
§

unsafe fn unchecked_downcast(obj: &PyAny) -> &Self

Cast &PyAny to &Self without no type checking. Read more
source§

impl PyTypeInfo for ArchiveNotFoundError

§

type AsRefTarget = ArchiveNotFoundError

Utility type to make Py::as_ref work.
source§

const NAME: &'static str = _

Class name.
source§

const MODULE: Option<&'static str> = _

Module name, if any.
source§

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

Returns the PyTypeObject instance for this type.
§

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

Returns the safe abstraction over the type object.
§

fn is_type_of(object: &PyAny) -> bool

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

fn is_exact_type_of(object: &PyAny) -> bool

Checks if object is an instance of this type.
source§

impl ToPyObject for ArchiveNotFoundError

source§

fn to_object(&self, py: Python<'_>) -> PyObject

Converts self into a Python object.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<'p, T> FromPyPointer<'p> for Twhere T: 'p + PyNativeType,

§

unsafe fn from_owned_ptr_or_opt( py: Python<'p>, ptr: *mut PyObject ) -> Option<&'p T>

Convert from an arbitrary PyObject. Read more
§

unsafe fn from_borrowed_ptr_or_opt( _py: Python<'p>, ptr: *mut PyObject ) -> Option<&'p T>

Convert from an arbitrary borrowed PyObject. Read more
§

unsafe fn from_owned_ptr_or_panic(py: Python<'p>, ptr: *mut PyObject) -> &'p Self

Convert from an arbitrary PyObject or panic. Read more
§

unsafe fn from_owned_ptr(py: Python<'p>, ptr: *mut PyObject) -> &'p Self

Convert from an arbitrary PyObject or panic. Read more
§

unsafe fn from_owned_ptr_or_err( py: Python<'p>, ptr: *mut PyObject ) -> Result<&'p Self, PyErr>

Convert from an arbitrary PyObject. Read more
§

unsafe fn from_borrowed_ptr_or_panic( py: Python<'p>, ptr: *mut PyObject ) -> &'p Self

Convert from an arbitrary borrowed PyObject. Read more
§

unsafe fn from_borrowed_ptr(py: Python<'p>, ptr: *mut PyObject) -> &'p Self

Convert from an arbitrary borrowed PyObject. Read more
§

unsafe fn from_borrowed_ptr_or_err( py: Python<'p>, ptr: *mut PyObject ) -> Result<&'p Self, PyErr>

Convert from an arbitrary borrowed PyObject. Read more
source§

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

const: unstable · 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<E> Provider for Ewhere E: Error + ?Sized,

source§

fn provide<'a>(&'a self, demand: &mut Demand<'a>)

🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to provide by using demand. Read more
§

impl<'v, T> PyTryFrom<'v> for Twhere T: PyTypeInfo + PyNativeType,

§

fn try_from<V>(value: V) -> Result<&'v T, PyDowncastError<'v>>where V: Into<&'v PyAny>,

Cast from a concrete Python object type to PyObject.
§

fn try_from_exact<V>(value: V) -> Result<&'v T, PyDowncastError<'v>>where V: Into<&'v PyAny>,

Cast from a concrete Python object type to PyObject. With exact type check.
§

unsafe fn try_from_unchecked<V>(value: V) -> &'v Twhere V: Into<&'v PyAny>,

Cast a PyAny to a specific type of PyObject. The caller must have already verified the reference is for this type. Read more
§

impl<T> ToBorrowedObject for Twhere T: ToPyObject,

§

fn with_borrowed_ptr<F, R>(&self, py: Python<'_>, f: F) -> Rwhere F: FnOnce(*mut PyObject) -> R,

👎Deprecated since 0.17.0: this trait is no longer used by PyO3, use ToPyObject or IntoPy<PyObject>
Converts self into a Python object and calls the specified closure on the native FFI pointer underlying the Python object. Read more
source§

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

source§

default fn to_string(&self) -> String

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

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

impl<T> PyTypeObject for Twhere T: PyTypeInfo,