Struct inline_python::Context [−][src]
pub struct Context { /* fields omitted */ }Expand description
An execution context for Python code.
This can be used to keep all global variables and imports intact between macro invocations:
let c = Context::new(); c.run(python! { foo = 5 }); c.run(python! { assert foo == 5 });
You may also use it to inspect global variables after the execution of the Python code, or set global variables before running:
let c = Context::new(); c.set("x", 13); c.run(python! { foo = x + 2 }); assert_eq!(c.get::<i32>("foo"), 15);
Implementations
Create a new context for running Python code.
This function temporarily acquires the GIL.
If you already have the GIL, you can use Context::new_with_gil instead.
This function panics if it fails to create the context.
Create a new context for running Python code.
You must acquire the GIL to call this function.
This function panics if it fails to create the context.
Retrieve a global variable from the context.
This function temporarily acquires the GIL.
If you already have the GIL, you can use Context::get_with_gil instead.
This function panics if the variable doesn’t exist, or the conversion fails.
Retrieve a global variable from the context.
This function panics if the variable doesn’t exist, or the conversion fails.
Set a global variable in the context.
This function temporarily acquires the GIL.
If you already have the GIL, you can use Context::set_with_gil instead.
This function panics if the conversion fails.
Set a global variable in the context.
This function panics if the conversion fails.
Add a wrapped #[pyfunction] or #[pymodule] using its own __name__.
Use this with pyo3::wrap_pyfunction or pyo3::wrap_pymodule.
use pyo3::{prelude::*, wrap_pyfunction}; #[pyfunction] fn get_five() -> i32 { 5 } fn main() { let c = Context::new(); c.add_wrapped(wrap_pyfunction!(get_five)); c.run(python! { assert get_five() == 5 }); }
This function temporarily acquires the GIL.
If you already have the GIL, you can use Context::add_wrapped_with_gil instead.
pub fn add_wrapped_with_gil<'p>(
&self,
py: Python<'p>,
wrapper: &impl Fn(Python<'_>) -> PyResult<&PyCFunction>
)
pub fn add_wrapped_with_gil<'p>(
&self,
py: Python<'p>,
wrapper: &impl Fn(Python<'_>) -> PyResult<&PyCFunction>
)Add a wrapped #[pyfunction] or #[pymodule] using its own __name__.
See Context::add_wrapped.
Run Python code using this context.
This function should be called using the python!{} macro:
let c = Context::new(); c.run(python!{ print("Hello World") });
This function temporarily acquires the GIL.
If you already have the GIL, you can use Context::run_with_gil instead.
This function panics if the Python code fails.
Run Python code using this context.
This function should be called using the python!{} macro, just like
Context::run.
This function panics if the Python code fails.
Auto Trait Implementations
impl !RefUnwindSafe for Contextimpl UnwindSafe for Context