mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-11 03:38:38 +00:00
* refactor(cache): organize v2 cache as a package * docs: clarify experimental v2 guidance * fix(cache): verify cache-hit accounting and preserve logging metadata * refactor(cache): separate execution facts from host accounting * refactor(rust): build messages routes with named dependencies * wip * fix(cache): preserve facade policy and preflight fallback * refactor(cache): defer shared Python logging changes * test(gateway-inference): allow dead code in shared test helpers Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(cache): key prepared requests and honor facade controls * feat(cache): use Python caches from Rust Messages inference * refactor(cache): separate native and Python cache adapters * refactor(cache): enforce shared composition and adapter boundaries * fix(cache): let Python key delegated Rust Messages entries --------- Co-authored-by: Yujong Lee <yujong@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
27 lines
740 B
Rust
27 lines
740 B
Rust
use crate::{InvokeError, PythonOwned};
|
|
use litellm_host::protocol::Protocol;
|
|
use pyo3::prelude::*;
|
|
|
|
pub trait PythonHostCalls<P: Protocol>: PythonOwned {
|
|
fn handle_host_call(
|
|
&mut self,
|
|
py: Python<'_>,
|
|
call: P::HostCall,
|
|
) -> Result<(), InvokeError<P::Error>>;
|
|
|
|
fn begin_host_call(
|
|
&mut self,
|
|
py: Python<'_>,
|
|
call: P::HostCall,
|
|
) -> Result<Option<Py<PyAny>>, InvokeError<P::Error>> {
|
|
self.handle_host_call(py, call).map(|()| None)
|
|
}
|
|
|
|
fn resume_host_call(
|
|
&mut self,
|
|
_: Python<'_>,
|
|
result: PyResult<Py<PyAny>>,
|
|
) -> Result<Option<Py<PyAny>>, InvokeError<P::Error>> {
|
|
result.map(|_| None).map_err(InvokeError::Python)
|
|
}
|
|
}
|