litellm/tests/test_litellm/rust_bridge
devin-ai-integration[bot] e7cd97c6b6
fix(proxy): release unclaimed budget reservations at request end (#42304)
* fix(proxy): release unclaimed budget reservations at request end

* fix(proxy): release unclaimed budget reservations of websocket sessions too

* test(proxy): drop the structural middleware inheritance check

* fix(proxy): claim the budget reservation on streaming pass-through before its cost callback

The SSE chunk processor hands its success handler to the logging worker
after the response, so the request-end release freed the reservation
first and left the key unguarded until the worker drained. Claim it at
both end-of-stream hand-offs, the immediate enqueue and the coroutine
parked for deferred dispatch.

Give the xai realtime test double the litellm_params attribute every
real Logging object carries, since the wrapper now reads it.

* test(pass-through): give the vertex streaming test doubles a litellm_params dict

The spec'd Logging mocks in test_vertex_ai_anthropic_streaming_cost_injection.py
lacked the instance attribute the chunk processor now reads to claim the budget
reservation. Also restores main's _lazy_openapi_snapshot.json: the branch's copy
had been regenerated under Python 3.14, which dedents one docstring description
that the CI regeneration on Python 3.12 keeps indented, and the PR adds no lazily
loaded route, so main's file is the correct one.

* fix(pass-through): claim the budget reservation only after its cost callback is enqueued

Every pass-through success hand-off stamped callback_bound before handing the
coroutine to the logging worker. When that enqueue raised, the reservation stayed
claimed with no callback left to reconcile it, so the request-end release skipped it
and the reserved cost stayed pinned on the key's counter. Enqueue first, then claim,
so a failed hand-off leaves the reservation for the request-end release.

---------

Co-authored-by: mateo-berri <277851410+mateo-berri@users.noreply.github.com>
2026-09-21 19:51:12 -07:00
..
chat_completions test: migrate phase 15 legacy tests to tests/unit 2026-09-20 11:55:43 +00:00
messages test: migrate phase 15 legacy tests to tests/unit 2026-09-20 11:55:43 +00:00
ocr test: remove phase 16 legacy test files from tests/test_litellm 2026-09-20 10:59:22 +00:00
responses test: remove phase 16 legacy test files from tests/test_litellm 2026-09-20 10:59:22 +00:00
__init__.py refactor(rust_bridge): group route modules into packages and split ocr into main and rust 2026-09-16 20:34:51 +00:00
native_route_wheel_test.py add streaming message 2026-09-18 15:45:08 -07:00
stubtest.ini build(rust-bridge): add typed _native stub and validate it with mypy.stubtest 2026-09-15 03:54:16 +00:00
test_bindings.py add streaming message 2026-09-18 15:45:08 -07:00
test_callbacks_legacy_python.py fix(proxy): release unclaimed budget reservations at request end (#42304) 2026-09-21 19:51:12 -07:00
test_catalog.py feat(rust): add Amazon Textract to litellm.ocr and sign provider requests after host hooks 2026-09-19 09:11:52 -07:00
test_configuration.py fix(rust_bridge): let LITELLM_RUST win over litellm.rust() for optional tiers 2026-09-16 19:45:11 +00:00
test_dispatch.py test(rust_bridge): cover binding validation, async upstream errors, and OCR preparation failures 2026-09-16 23:04:38 +00:00
test_failures.py refactor(rust_bridge): give chat completions, messages and responses the ocr dispatch shape 2026-09-16 15:02:12 -07:00
test_fork_guard.py test(rust): pin child interpreters to the parent's litellm and lint for it 2026-09-19 18:17:54 +00:00
test_lifecycle.py refactor(rust): run OCR through a route-neutral callback contract and a legacy Logging adapter 2026-09-17 21:13:16 -07:00
test_runtime.py add streaming message 2026-09-18 15:45:08 -07:00
test_settings.py fix(rust): preserve Python settings coercion at the native boundary 2026-09-21 21:32:33 +00:00
test_token_counter.py feat(rust): count tiktoken cl100k_base admission tokens in Rust (#40777) 2026-09-11 23:47:05 +00:00
test_verify_linux_native_wheel.py test(build): keep wheel checks outside package 2026-09-02 12:16:25 -07:00