fix(rust_bridge): isolate OCR enable flag and drop dead messages global toggle

use_litellm_rust only mutates the OCR enabled flag when configuring OCR (or
called with no bridge kwargs, preserving the legacy contract), so configuring
only the messages bridge no longer flips OCR state.

Remove the vestigial global enabled/env state from the messages bridge. Routing
is controlled per deployment by rust:true in the shared handler gate, so the
messages module never consulted the global toggle; drop it rather than leave a
no-op switch.

Co-Authored-By: Ishaan Jaffer <155045088+ishaan-berri@users.noreply.github.com>
This commit is contained in:
Devin AI 2026-07-17 00:22:01 +00:00
parent 194a950170
commit 95feb89aea
6 changed files with 32 additions and 27 deletions

View file

@ -24,7 +24,7 @@
"limit": 42
},
"reportExplicitAny": {
"limit": 10393
"limit": 10389
},
"reportFunctionMemberAccess": {
"limit": 11

View file

@ -2,7 +2,6 @@
from __future__ import annotations
import os
from dataclasses import dataclass
from typing import Awaitable, Final, Protocol, Union, cast
@ -46,43 +45,26 @@ class _Unset:
_UNSET: Final[_Unset] = _Unset()
def _env_enables_rust_messages() -> bool:
return os.getenv("LITELLM_USE_RUST_MESSAGES", "").strip().lower() in {
"1",
"true",
"yes",
"on",
}
@dataclass(slots=True)
class _RustMessagesState:
enabled: bool
messages: RustMessages | None = None
amessages: RustAmessages | None = None
_STATE: Final[_RustMessagesState] = _RustMessagesState(enabled=_env_enables_rust_messages())
_STATE: Final[_RustMessagesState] = _RustMessagesState()
def set_rust_messages(
enabled: bool | _Unset = _UNSET,
*,
messages: RustMessages | None | _Unset = _UNSET,
amessages: RustAmessages | None | _Unset = _UNSET,
) -> None:
if not isinstance(enabled, _Unset):
_STATE.enabled = enabled
if not isinstance(messages, _Unset):
_STATE.messages = messages
if not isinstance(amessages, _Unset):
_STATE.amessages = amessages
def rust_messages_enabled() -> bool:
return _STATE.enabled
def load_rust_messages() -> RustMessages | None:
if _STATE.messages is not None:
return _STATE.messages

View file

@ -73,21 +73,24 @@ def use_litellm_rust(
amessages: RustAmessages | None | _Unset = _UNSET,
) -> None:
global _rust_ocr_enabled, _rust_ocr_impl, _rust_aocr_impl
_rust_ocr_enabled = enabled
configuring_ocr = not isinstance(ocr, _Unset) or not isinstance(aocr, _Unset)
configuring_messages = not isinstance(messages, _Unset) or not isinstance(amessages, _Unset)
if configuring_ocr or not configuring_messages:
_rust_ocr_enabled = enabled
if not isinstance(ocr, _Unset):
_rust_ocr_impl = ocr
if not isinstance(aocr, _Unset):
_rust_aocr_impl = aocr
if isinstance(messages, _Unset) and isinstance(amessages, _Unset):
if not configuring_messages:
return
from litellm.rust_bridge.messages import set_rust_messages
if not isinstance(messages, _Unset) and not isinstance(amessages, _Unset):
set_rust_messages(enabled, messages=messages, amessages=amessages)
set_rust_messages(messages=messages, amessages=amessages)
elif not isinstance(messages, _Unset):
set_rust_messages(enabled, messages=messages)
set_rust_messages(messages=messages)
else:
set_rust_messages(enabled, amessages=amessages)
set_rust_messages(amessages=amessages)
def rust_ocr_enabled() -> bool:

View file

@ -28,7 +28,6 @@ EXCLUDED_GUARD_ONLY_VARS = {
# environment settings docs until the feature is ready for broad use.
EXCLUDED_ROLLOUT_FLAGS = {
"LITELLM_USE_RUST_OCR",
"LITELLM_USE_RUST_MESSAGES",
}
EXCLUDED_TERMINAL_VARS = {

View file

@ -109,6 +109,27 @@ def test_load_rust_messages_returns_injected_impl():
assert rust_messages.load_rust_messages() is bridge
def test_configuring_messages_does_not_enable_ocr():
from litellm.rust_bridge.ocr import rust_ocr_enabled
litellm.use_litellm_rust(False)
assert rust_ocr_enabled() is False
litellm.use_litellm_rust(True, messages=RecordingMessages())
assert rust_ocr_enabled() is False
def test_bare_use_litellm_rust_still_toggles_ocr():
from litellm.rust_bridge.ocr import rust_ocr_enabled
litellm.use_litellm_rust(True)
assert rust_ocr_enabled() is True
litellm.use_litellm_rust(False)
assert rust_ocr_enabled() is False
def test_load_rust_amessages_returns_injected_impl():
bridge = RecordingAsyncMessages()
litellm.use_litellm_rust(True, amessages=bridge)

View file

@ -15,7 +15,7 @@
"limit": 0
},
"LIT006": {
"limit": 1112
"limit": 1111
},
"LIT007": {
"limit": 0