pyo3-object_store

Crates.iopyo3-object_store
lib.rspyo3-object_store
version0.1.0-beta.1
sourcesrc
created_at2024-11-01 21:56:30.787772
updated_at2024-11-01 21:56:30.787772
descriptionobject_store integration for pyo3.
homepage
repositoryhttps://github.com/developmentseed/obstore
max_upload_size
id1432395
size66,416
Kyle Barron (kylebarron)

documentation

README

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

Commit count: 55

cargo fmt