litellm/litellm
Yassin Kortam 248389c276
fix(router): surface clean RateLimitError on mid-stream 429 with no fallbacks (#31298)
When a streaming request hits a mid-stream 429 the streaming handler wraps it
in the internal MidStreamFallbackError so the router can attempt fallbacks. With
no fallbacks configured, async_function_with_fallbacks_common_utils falls through
to re-raising that wrapper, which the streaming iterators caught and re-raised
verbatim, so the client received MidStreamFallbackError (an internal type) rather
than a clean RateLimitError (429).

When the fallback path produces a MidStreamFallbackError that carries an
original_exception (i.e. no fallback handled it), the iterators now raise that
underlying provider exception instead of the wrapper, chained with from. Users
with fallbacks are unaffected since their path never reaches this branch. Applied
consistently to the chat async, chat sync, and responses streaming iterators.

Resolves LIT-3503
Fixes #26015
2026-06-25 23:37:29 -07:00
..
a2a_protocol chore(lint): remove PLR0915 too-many-statements ruff rule (#30574) 2026-06-16 16:52:49 -07:00
anthropic_interface feat(context_management): compact_20260112 polyfill for non-Anthropic providers (#28868) 2026-05-30 09:20:05 -07:00
assistants chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
batch_completion fix: prompt registry 2026-02-18 00:34:54 +05:30
batches chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
caching chore: litellm oss staging 250626 (#31305) 2026-06-25 21:00:28 -07:00
completion_extras chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
compression build(deps-dev): bump black to 26.3.1 and apply formatting (#28525) 2026-05-21 17:24:18 -07:00
containers style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
endpoints/speech/speech_to_completion_bridge
evals style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
experimental_mcp_client feat(mcp): graft v2 resolver onto _create_mcp_client (none + api_key static family) (#31058) 2026-06-24 14:53:33 -07:00
files chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
fine_tuning chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
google_genai chore: litellm oss staging 250626 (#31305) 2026-06-25 21:00:28 -07:00
images chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
integrations fix(otel): hashable scope for _emit_once when guardrail_mode is list (#31262) 2026-06-25 11:59:35 -07:00
interactions chore: litellm oss staging (#30968) 2026-06-23 07:31:44 -07:00
litellm_core_utils chore: litellm oss staging 250626 (#31305) 2026-06-25 21:00:28 -07:00
llms fix(vertex): stop O(n^2) re-parse of accumulated Gemini stream JSON (#31297) 2026-06-26 09:04:29 +03:00
models feat(litellm): add models and repository layers (#29686) 2026-06-06 20:59:33 -07:00
ocr feat(ocr): thin Rust OCR Python bridge (#31368) 2026-06-25 18:42:59 -07:00
passthrough chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
proxy fix(proxy): skip model override when response has no model field (#31183) 2026-06-25 21:02:52 -07:00
proxy_auth fix: prompt registry 2026-02-18 00:34:54 +05:30
rag chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
realtime_api chore(lint): remove PLR0915 too-many-statements ruff rule (#30574) 2026-06-16 16:52:49 -07:00
repositories feat(litellm): add models and repository layers (#29686) 2026-06-06 20:59:33 -07:00
rerank_api chore(lint): remove PLR0915 too-many-statements ruff rule (#30574) 2026-06-16 16:52:49 -07:00
responses chore: litellm oss staging 250626 (#31305) 2026-06-25 21:00:28 -07:00
router_strategy chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
router_utils chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
rust_bridge feat(ocr): thin Rust OCR Python bridge (#31368) 2026-06-25 18:42:59 -07:00
sandbox chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
search Litellm oss staging 050626 (#29774) 2026-06-05 13:51:51 -07:00
secret_managers ci: drop mypy entirely, standardize type checking on basedpyright (#30648) 2026-06-17 09:42:00 -07:00
skills chore(proxy): scope skills and container resources 2026-04-30 18:23:58 -07:00
types fix(vertex): preserve Gemini Embedding 2 usageMetadata for cost tracking (#31354) 2026-06-25 19:53:16 -07:00
vector_store_files build(deps-dev): bump black to 26.3.1 and apply formatting (#28525) 2026-05-21 17:24:18 -07:00
vector_stores feat(litellm): add models and repository layers (#29686) 2026-06-06 20:59:33 -07:00
videos ci(lint): add blanket-noqa, dataclass-default, and unused-noqa Ruff rules (#30516) 2026-06-16 12:07:22 -07:00
__init__.py feat(ocr): thin Rust OCR Python bridge (#31368) 2026-06-25 18:42:59 -07:00
_internal_context.py fix(proxy): harden request parameter handling 2026-04-16 01:38:12 +00:00
_lazy_imports.py style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
_lazy_imports_registry.py chore: litellm oss staging (#30968) 2026-06-23 07:31:44 -07:00
_logging.py ci(lint): add blanket-noqa, dataclass-default, and unused-noqa Ruff rules (#30516) 2026-06-16 12:07:22 -07:00
_redis.py chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
_redis_credential_provider.py feat: add ability to auth to azure with token (#27556) 2026-05-09 22:34:09 +00:00
_service_logger.py fix: missing span for guardrail passthrough (#29552) 2026-06-03 01:25:15 +00:00
_uuid.py build(deps-dev): bump black to 26.3.1 and apply formatting (#28525) 2026-05-21 17:24:18 -07:00
_version.py
anthropic_beta_headers_config.json chore(oss): litellm oss staging 120626 (#30292) 2026-06-12 09:49:25 -07:00
anthropic_beta_headers_manager.py Refactor: Filtering beta header after transformation 2026-03-16 10:47:15 +05:30
blog_posts.json docs(blog): add WebRTC blog post link 2026-03-13 17:54:33 +05:30
budget_manager.py chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
constants.py chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
cost.json
cost_calculator.py chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00
exceptions.py feat: standardize rate limit errors with category, rate_limit_type, model, and llm_provider fields (#27687) 2026-06-06 17:50:29 -07:00
main.py chore: litellm oss staging 250626 (#31305) 2026-06-25 21:00:28 -07:00
model_prices_and_context_window_backup.json fix(cost-map): retarget mistral-medium-latest to Medium 3.5 and add date-pinned aliases (#31373) 2026-06-25 18:27:18 -07:00
policy_templates_backup.json feat(add-new-block_code_execution-guardrail): prevent agent from executing code (#22154) 2026-02-25 22:02:14 -08:00
provider_endpoints_support_backup.json chore: litellm oss staging (#30968) 2026-06-23 07:31:44 -07:00
py.typed
router.py fix(router): surface clean RateLimitError on mid-stream 429 with no fallbacks (#31298) 2026-06-25 23:37:29 -07:00
scheduler.py style: run black formatter on entire codebase 2026-03-11 17:07:57 -03:00
setup_wizard.py Add Claude Fable 5 across Anthropic, Bedrock, Vertex AI, and Azure AI (#30064) 2026-06-10 08:50:15 +05:30
timeout.py docs: add class docstring to _LoopWrapper (#27870) 2026-05-13 13:54:00 -07:00
utils.py chore: migrate Python formatter from black to ruff format (#31317) 2026-06-25 11:27:43 -07:00