event_voxel_builder/
lib.rs

1// Document need to be synced with `README.md` manually.
2//! # Fast Event Voxel Builder
3//! [\[Codeberg Repo\]](https://codeberg.org/ybh1998/EventVoxelBuilder/)
4//! [\[API Document\]](https://ybh1998.codeberg.page/EventVoxelBuilder/)
5//!
6//! ### Warning: Very Unstable API!
7//! This is currently a rush project for CVPR 2024 and the API will definitely be rewritten after the DDL.
8//!
9//! ### To run the example Python codes or your own Python code
10//! 1. Download `event-voxel-builder-*.whl` under
11//! [\[releases\]](https://codeberg.org/ybh1998/EventVoxelBuilder/releases/) and install using `pip install`, or
12//! install from [\[PyPI\]](https://pypi.org/project/event-voxel-builder/).
13//! 2. Run Python example codes in `examples` or your own codes.
14//!
15//! Copyright (c) 2023 Bohan Yu. All rights reserved. \
16//! EventVoxelBuilder is free software licensed under GNU Affero General Public License version 3 or latter.
17
18use std::env;
19use anyhow::Result;
20use pyo3::prelude::*;
21use shadow_rs::shadow;
22use tracing_subscriber::{fmt, EnvFilter, prelude::*};
23use self::event_simulator::PyEventSimulator;
24use self::event_voxel_builder::PyEventVoxelBuilder;
25
26mod event_simulator;
27mod event_voxel_builder;
28
29shadow!(build);
30
31
32
33fn init_static() -> Result<()> {
34  let log_level = env::var("EVENT_VOXEL_BUILDER_LOG_LEVEL").unwrap_or(String::from("info"));
35  let filter_layer = EnvFilter::try_new(log_level)?;
36  let fmt_layer = fmt::layer()
37    .with_target(false);
38  tracing_subscriber::registry()
39    .with(filter_layer)
40    .with(fmt_layer)
41    .init();
42  Ok(())
43}
44
45/// Initialize Python module.
46///
47/// Accept `EVENT_VOXEL_BUILDER_LOG_LEVEL` environment variable to set `log_level`.
48/// * (default: info, feasible: debug, info, warn, error)
49#[pymodule]
50#[pyo3(name = "event_voxel_builder")]
51pub fn py_event_voxel_builder(module: &Bound<'_, PyModule>) -> PyResult<()> {
52  init_static()?;
53  module.add("__author__", "Bohan Yu <ybh1998@protonmail.com>")?;
54  module.add("__version__", format!("EventVoxelBuilder {}", build::PKG_VERSION))?;
55  module.add_class::<PyEventSimulator>()?;
56  module.add_class::<PyEventVoxelBuilder>()?;
57  Ok(())
58}