1use pyo3::prelude::*;
2
3mod config;
4mod daemon;
5mod errors;
6mod health;
7mod instance;
8mod log_config;
9mod manager;
10mod paths;
11mod resources;
12mod types;
13
14#[pymodule]
15fn _syspulse(m: &Bound<'_, PyModule>) -> PyResult<()> {
16 m.add("__version__", env!("CARGO_PKG_VERSION"))?;
18
19 m.add_class::<daemon::Daemon>()?;
21 m.add_class::<instance::DaemonInstance>()?;
22 m.add_class::<manager::SyspulseClient>()?;
23
24 m.add_class::<health::HealthCheck>()?;
26 m.add_class::<resources::ResourceLimits>()?;
27 m.add_class::<log_config::LogConfig>()?;
28
29 m.add_class::<types::DaemonStatus>()?;
31 m.add_class::<types::HealthStatus>()?;
32 m.add_class::<types::RestartPolicyType>()?;
33 m.add_class::<health::HealthCheckType>()?;
34
35 m.add(
37 "SyspulseError",
38 m.py().get_type::<errors::SyspulseError>(),
39 )?;
40 m.add(
41 "DaemonNotFoundError",
42 m.py().get_type::<errors::DaemonNotFoundError>(),
43 )?;
44 m.add(
45 "DaemonAlreadyExistsError",
46 m.py().get_type::<errors::DaemonAlreadyExistsError>(),
47 )?;
48 m.add(
49 "InvalidStateError",
50 m.py().get_type::<errors::InvalidStateError>(),
51 )?;
52
53 m.add_function(wrap_pyfunction!(config::from_sys, m)?)?;
55 m.add_function(wrap_pyfunction!(config::from_toml, m)?)?;
56 m.add_function(wrap_pyfunction!(paths::data_dir, m)?)?;
57 m.add_function(wrap_pyfunction!(paths::socket_path, m)?)?;
58
59 Ok(())
60}