Commit graph

46114 commits

Author SHA1 Message Date
Yujong Lee
bd860a2af6 test(ocr): generate bounded semantic provider fixtures 2026-09-01 16:39:51 -07:00
Yujong Lee
077d6e5e69 test(ocr): bound fixture strategy domains 2026-09-01 15:35:14 -07:00
Yujong Lee
c41b740d48 test(ocr): expand fixture model coverage 2026-09-01 14:41:44 -07:00
Yujong Lee
2a6d4faad4 refactor(tests): encapsulate OCR fixture models 2026-09-01 14:12:55 -07:00
Yujong Lee
65cc43728d refactor(tests): clarify fixture recording pipeline 2026-09-01 14:06:18 -07:00
Yujong Lee
e7b88562e9 revert(ocr): keep parity harness behavior-neutral 2026-09-01 13:57:17 -07:00
Yujong Lee
6a766166a3 refactor: generalize route parity fixture recording 2026-09-01 13:52:08 -07:00
Yujong Lee
4aa2c73541 refactor(tests): encapsulate OCR fixture providers 2026-09-01 13:40:08 -07:00
Yujong Lee
e50a3a1859 test(ocr): cover invalid input parity 2026-09-01 13:31:39 -07:00
Yujong Lee
dc7ddfc349 test(ocr): expand provider boundary fixtures 2026-09-01 13:05:50 -07:00
Yujong Lee
a555e8e98b
test(parity): compare SDK objects and streams 2026-09-01 12:30:08 -07:00
Yujong Lee
3a57d5c9ea
initiai readme 2026-09-01 12:30:08 -07:00
Yujong Lee
5be124cef8
test(ocr): preserve explicit model fixture ids 2026-09-01 12:30:08 -07:00
Yujong Lee
58c5b48252
refactor(tests): align parity harness layout 2026-09-01 12:30:08 -07:00
Yujong Lee
4246fafcb9
refactor(tests): generalize route parity harness 2026-09-01 12:30:08 -07:00
Yujong Lee
ce0dda405c
refactor(tests): discover OCR fixture targets 2026-09-01 12:30:08 -07:00
Yujong Lee
ab1f7b1fb8
fix(tests): satisfy strict ruff checks 2026-09-01 12:30:08 -07:00
Yujong Lee
64be0c18b9
refactor(tests): generalize parity fixture recorder 2026-09-01 12:30:08 -07:00
Yujong Lee
50ed0c9ca7
wip 2026-09-01 12:30:08 -07:00
Yujong Lee
50600be27d
test(ocr): generalize parity fixture inputs 2026-09-01 12:30:08 -07:00
Yujong Lee
cc8c17525c
fix(ci): run parity tests and authorize hypothesis 2026-09-01 12:30:08 -07:00
Yujong Lee
e3b9713f76
test(ocr): commit recorded parity fixtures 2026-09-01 12:30:08 -07:00
Yujong Lee
ea7113dc20
make it faster 2026-09-01 12:30:08 -07:00
Yujong Lee
4965ba7961
fix test 2026-09-01 12:30:08 -07:00
Yujong Lee
a836fcdd27
simplify for now 2026-09-01 12:30:08 -07:00
Yujong Lee
dc262f04a8
test(ocr): improve parity fixture validation errors 2026-09-01 12:30:08 -07:00
Yujong Lee
8e0c2c60c4
wip 2026-09-01 12:30:08 -07:00
Yujong Lee
14790ef4f1
wip 2026-09-01 12:30:08 -07:00
Yujong Lee
bff6268ee2
revert(ocr): remove implementation and reducto test changes 2026-09-01 12:30:08 -07:00
Yujong Lee
78a195b147
wip 2026-09-01 12:30:08 -07:00
Yujong Lee
0ff81cfb67
test(ocr): add recorded fixture parity harness 2026-09-01 12:30:08 -07:00
Yujong Lee
362fd08dc6
refactor(tests): clarify OCR SDK parity flow 2026-09-01 12:30:08 -07:00
Mateo Wang
695d943745
Merge pull request #39104 from BerriAI/litellm_decrease_anys_opus5_r3
refactor(types): replace Any with precise types across 73 modules
2026-09-01 12:26:52 -07:00
yuneng-jiang
0cf236bebb
test(e2e/ui): cover creating, testing and deleting a guardrail (#39053)
* test(e2e/ui): cover creating, testing and deleting a guardrail

The Guardrails page had no browser coverage. The RC checklist covers it by
hand against a live Presidio, which is why it has always been skipped in CI.

These drive the LiteLLM content filter instead, which runs inside the proxy,
so the whole flow is exercised without a third-party moderation service. The
create test does not stop at the table row: it sends a prompt carrying the
keyword it just banned and asserts the gateway refuses it, then sends a clean
prompt through the same guardrail and asserts it is served.

* test(e2e/ui): delete the guardrails these tests create

Review caught the fixtures being left behind. Guardrails are database rows
that show up in the table and in the playground's list, so a run that leaves
them changes what the next run sees.

Also trims the comments that restated what the helpers already say.

* test(e2e/ui): fail the run when guardrail teardown does not delete

Review caught the afterEach discarding the DELETE response, so a failed
cleanup finished quietly and left the guardrail for the next run to trip on.

* test(e2e/ui): wait for a new guardrail to reach the request path

The wizard test drove one chat completion immediately after creating the
guardrail and required a 400. A trace from the deployed stack shows the
record is stored correctly (blocked_words, action BLOCK, block_on_violation)
and the call six seconds later is still served unguarded, so the first
request can land before the proxy picks the guardrail up.

Polls the same call to the same 400 instead, which keeps the assertion and
lets the refresh land. If it never blocks, this stays red, which is what we
want it to say.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-09-01 12:21:45 -07:00
Mateo Wang
c50d83ece2
Merge pull request #39070 from BerriAI/litellm_bedrock_invoke_native_structured_output
fix(bedrock): forward native structured outputs on Invoke instead of silently inlining the schema
2026-09-01 12:19:15 -07:00
Mateo Wang
435433fa07
Merge pull request #39149 from BerriAI/litellm_qwencloud_provider_aliases
feat(dashscope): add QwenCloud and Qwen AI Platform provider aliases
2026-09-01 12:18:05 -07:00
yuneng-jiang
33004d2f0c
test(e2e/ui): cover the Budgets page create, edit and delete flows (#39052)
* test(e2e/ui): cover the Budgets page create, edit and delete flows

The Budgets page had no browser coverage at all, so an admin creating or
editing a spend cap through the UI was only exercised by hand at RC time.

Each test reads the budget back from /budget/list, a different route from
the one the table renders, so a row that only exists in the table's cache
does not pass. The edit test pins the rate limits an unrelated spend-cap
edit has no business touching.

* test(e2e/ui): trim comments that restate the test steps

Review flagged the explanatory comments as restating ordinary setup rather
than explaining anything. Keeps the two that carry the regression rationale
for an assertion and drops the rest.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-09-01 12:17:02 -07:00
Mateo Wang
f3dbd253be
Merge pull request #38106 from Timik232/bugfix/streaming-stable-response-id
fix(streaming): keep response id stable across streamed chunks
2026-09-01 12:11:32 -07:00
Mateo Wang
4c3ef9ae0a
Merge pull request #39023 from BerriAI/litellm_add_azure_deepseek_v4_flash_0731
feat: add Azure AI DeepSeek V4 Flash 0731 pricing
2026-09-01 11:54:25 -07:00
yuneng-jiang
75f0a22fc6
Merge pull request #39130 from BerriAI/litellm_dark_mode_skill_detail
fix(ui): render the skill detail page with theme tokens
2026-09-01 11:52:57 -07:00
mateo-berri
0042493bca Merge remote-tracking branch 'origin/litellm_internal_staging' into litellm_bedrock_invoke_native_structured_output 2026-09-01 11:50:05 -07:00
ryan-crabbe-berri
01de283715
Merge pull request #39142 from BerriAI/litellm_osv_browserslist
build(deps): bump browserslist to 4.28.8 to clear osv-scan
2026-09-01 11:46:26 -07:00
yuneng-jiang
2b1bd20834
Merge pull request #31125 from BerriAI/litellm_/stoic-jones-7de871
feat(proxy): default to the v2 migration resolver, keep v1 as an opt-out
2026-09-01 11:46:13 -07:00
Mateo Wang
caeb5d181e
Merge pull request #39074 from BerriAI/litellm_fix_websearch_tool_selection_test
test(websearch): register configured search tool in pre-request hook test
2026-09-01 11:45:29 -07:00
mateo-berri
24393be4a6 Merge branch 'litellm_internal_staging' into bugfix/streaming-stable-response-id 2026-09-01 11:45:27 -07:00
yuneng-jiang
82dd36c1a4
Merge pull request #39146 from BerriAI/litellm_revert_websearch_search_tool_validation
revert: restore search tool fallback when no router is configured
2026-09-01 11:38:11 -07:00
mateo-berri
62a42b4b47 refactor(dashscope): wrap long error message strings in common_utils 2026-09-01 11:34:23 -07:00
Yuneng Jiang
c65dfd5d37
refactor(websearch): build the search tool lists as tuples
The restored code seeded two mutable lists, which trips LIT002 now that
the type-discipline budget has ratcheted past what they cost

Build both in one shot as tuples and widen the parameter to Sequence so
the single caller still type checks. No behavior change, both are only
ever read
2026-09-01 11:26:02 -07:00
Yuneng Jiang
2814aa54a3
fix(websearch): use the three-arg getattr to satisfy B009
The pure revert restored `getattr(llm_router, "search_tools")`, whose
two-argument constant-attribute form ruff flags as B009, and the
strict-rule budget has since ratcheted below what that costs

Passing an explicit `None` default keeps behavior identical, the
preceding `hasattr` guard already proves the attribute is there, while
staying inside the budget
2026-09-01 11:21:19 -07:00
mateo-berri
f3792fb700 feat(dashscope): add qwencloud and qwen_ai_platform provider aliases 2026-09-01 11:20:36 -07:00