engine/
lib.rs

1#![allow(unused)]
2
3use dev_utils::{app_dt, dlog};
4use pyo3::prelude::*;
5use pyo3::types::{PyDict, PyList};
6use std::cmp::Ordering;
7use std::collections::HashMap;
8use std::time::Instant;
9
10/// A simple linear programming solver for production planning optimization
11///
12/// This module provides tools to balance production with demand while optimizing resource usage.
13#[pymodule]
14#[pyo3(name = "engine")] // Esto cambia el nombre del módulo Python a "engine"
15fn balance_engine(m: &Bound<'_, PyModule>) -> PyResult<()> {
16    m.add_function(wrap_pyfunction!(init, m)?)?;
17    m.add_function(wrap_pyfunction!(time_exec, m)?)?;
18    Ok(())
19}
20
21// Mantén la función con el nombre que espera Python
22#[pyfunction]
23pub fn init() -> PyResult<()> {
24    app_dt!(file!(),
25        "package" => ["authors", "license", "description"]
26    );
27    // load the pkg version
28    // let version = env!("CARGO_PKG_VERSION");
29    // let mut info = HashMap::new();
30    // info.insert("version", version);
31    // println!("{:?}", info);
32    // println!("270");
33    Ok(())
34}
35
36#[pyfunction]
37fn time_exec(py: Python<'_>, func: Py<PyAny>) -> PyResult<()> {
38    let start = Instant::now();
39    func.call0(py)?;
40    let elapsed = start.elapsed();
41
42    dlog::trace!("- Total execution time: {:?}", elapsed);
43    dlog::trace!("- Milliseconds: {:.2}", elapsed.as_millis());
44    Ok(())
45}