fix(proxy): keep bulk user row errors free of the tuple length message

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
ryan 2026-09-14 22:40:57 +00:00
parent 96332f75e8
commit 8e83e91275
2 changed files with 6 additions and 6 deletions

View file

@ -1,4 +1,4 @@
from collections.abc import Mapping
from collections.abc import Mapping, Sequence
from typing import Any, Final, Literal
from pydantic import BaseModel, ConfigDict, Field, field_validator
@ -107,7 +107,7 @@ class BulkNewUserItem(NewUserRequest):
class BulkNewUserRequest(BaseModel):
model_config = ConfigDict(extra="forbid")
users: tuple[BulkNewUserItem, ...] = Field(min_length=1, max_length=MAX_BULK_NEW_USERS)
users: Sequence[BulkNewUserItem] = Field(min_length=1, max_length=MAX_BULK_NEW_USERS)
class UserCreateResult(BaseModel):

View file

@ -79,16 +79,16 @@ def test_returns_one_result_per_row_in_order_inside_the_data_meta_envelope(prism
def test_an_unknown_field_anywhere_in_the_body_is_a_422_problem(prisma, as_proxy_admin):
for body in (
{"users": [{"user_email": "a@example.com", "user_emial": "typo"}]},
{"users": [{"user_email": "a@example.com"}], "dry_run": True},
for body, field in (
({"users": [{"user_email": "a@example.com", "user_emial": "typo"}]}, "users.0.user_emial"),
({"users": [{"user_email": "a@example.com"}], "dry_run": True}, "dry_run"),
):
response = _post(body)
assert response.status_code == 422, body
assert response.headers["content-type"] == "application/problem+json"
assert response.json()["type"] == "urn:litellm:error:invalid-request-body"
assert "Extra inputs are not permitted" in response.json()["detail"]
assert response.json()["detail"] == f"{field}: Extra inputs are not permitted"
assert prisma.db.litellm_usertable.rows == {}