mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-21 00:21:49 +00:00
* refactor(python-bridge): split non-streaming bridge modules * refactor(python-bridge): bring shared function tracing into route layer * feat(dev): list Python route functions and call sites * feat(dev): list Rust route functions and call sites * docs(dev): record OCR parity gaps across Python and Rust * feat(dev): list executed SDK calls with runtime tracing * feat(dev): report Python vs Rust SDK pipeline steps in one CLI * feat(dev): side-by-side pipeline step report in compare CLI * fix(dev): drop invalid Final annotations in compare cell loop * feat(dev): blue python-only and yellow rust-only steps in compare CLI * feat(dev): vertical layout with section spacing in compare CLI * fix(dev): validate SDK trace stages across sync and async routes * refactor(rust): align SDK route call structure with Python * refactor(python-bridge): share sync and async route call wrappers * refactor(dev): split compare CLI into fixtures, runtime, and report modules * fix(ci): run SDK trace tests and satisfy test lint
23 lines
652 B
Rust
23 lines
652 B
Rust
use litellm_python_interop::release_count;
|
|
use pyo3::prelude::*;
|
|
use pyo3::types::PyDict;
|
|
|
|
#[pyfunction]
|
|
fn gil_stats(py: Python<'_>) -> PyResult<Py<PyAny>> {
|
|
let stats = PyDict::new(py);
|
|
stats.set_item("releases", release_count())?;
|
|
Ok(stats.into_any().unbind())
|
|
}
|
|
|
|
#[cfg(feature = "panic-test")]
|
|
#[pyfunction]
|
|
fn _panic_for_test() {
|
|
panic!("intentional PyO3 panic smoke test");
|
|
}
|
|
|
|
pub(crate) fn register(module: &Bound<'_, PyModule>) -> PyResult<()> {
|
|
module.add_function(wrap_pyfunction!(gil_stats, module)?)?;
|
|
#[cfg(feature = "panic-test")]
|
|
module.add_function(wrap_pyfunction!(_panic_for_test, module)?)?;
|
|
Ok(())
|
|
}
|