1 unstable release

0.1.0-beta.1 Nov 1, 2024

#579 in Network programming

Download history 50/week @ 2024-10-26 116/week @ 2024-11-02 94/week @ 2024-11-09

260 downloads per month

MIT/Apache

66KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments Python 386 SLoC // 0.5% comments

pyo3-object_store

Integration between object_store and pyo3.

This provides Python builder classes so that Python users can easily create Arc<dyn ObjectStore> instances, which can then be used in pure-Rust code.

Usage

  1. Register the builders.

    #[pymodule]
    fn python_module(py: Python, m: &Bound<PyModule>) -> PyResult<()> {
        pyo3_object_store::register_store_module(py, m, "python_module")?;
        pyo3_object_store::register_exceptions_module(py, m, "python_module")?;
    }
    

    This exports the underlying Python classes from your own Rust-Python library.

  2. Accept PyObjectStore as a parameter in your function exported to Python. Its into_inner method gives you an Arc<dyn ObjectStore>.

    #[pyfunction]
    pub fn use_object_store(store: PyObjectStore) {
        let store: Arc<dyn ObjectStore> = store.into_inner();
    }
    

Example

The obstore Python library gives a full real-world example of using pyo3-object_store. It

ABI stability

Note about not being able to use these across Python packages. It has to be used with the exported classes from your own library.

Type hints

Dependencies

~12–21MB
~300K SLoC