litellm/litellm-rust/crates/python-bridge
Yujong Lee 466b44e318 test(python-bridge): enforce interpreter and runtime boundaries
Adds crates/python-bridge/src/architecture.rs, a source-scan test in the
spirit of workspace_crate_allowlist.rs: layering rules that currently
live only in AGENTS.md become executable.

Rules on production code (text before each file's trailing #[cfg(test)]
module):

- GIL attach/detach and block_on appear in python-bridge only in
  execution.rs; scattered interpreter calls are how GIL-ordering
  deadlocks and per-handoff contention creep in.
- Tokio runtime construction appears only in execution.rs and the
  #[pymodule] init site in lib.rs; one shared runtime per process.
- SendWrapper is banned in both PyO3 crates; it converts !Send Python
  values into cross-thread panics on Tokio workers.
- python-interop stays domain-neutral and never blocks on futures or
  builds runtimes.

Deletes the dead routes/runtime.rs: an undeclared byte-for-byte
duplicate of execution.rs whose Python::attach/block_on usage would
violate the new boundary (also deleted independently in #39577; both
sides delete the same file, so the merge is trivial).

AGENTS.md gains the enforcement note, mirroring the crate-allowlist
convention.
2026-09-03 10:02:15 -07:00
..
benches refactor(rust): extract domain-neutral Python interop 2026-09-02 12:16:26 -07:00
src test(python-bridge): enforce interpreter and runtime boundaries 2026-09-03 10:02:15 -07:00
tests refactor(rust): extract domain-neutral Python interop 2026-09-02 12:16:26 -07:00
AGENTS.md refactor(rust): extract domain-neutral Python interop 2026-09-02 12:16:26 -07:00
build.rs feat: package Rust OCR bridge in LiteLLM wheel (#31267) 2026-06-25 12:32:55 -07:00
Cargo.toml fix(python-bridge): harden sync and async route boundaries (#39332) 2026-09-02 16:26:35 -07:00
CLAUDE.md refactor(rust): extract domain-neutral Python interop 2026-09-02 12:16:26 -07:00