DataDesigner/packages/data-designer-engine/tests/engine/models/clients/conftest.py
Nabin Mulepati 1356408c6e
feat: remove litellm dependency and bridge path (#455)
* adjust plan

* feat: remove litellm dependency and bridge path (PR-7)

- Delete litellm_bridge.py adapter, litellm_overrides.py, and their tests
- Remove LiteLLM fallback branch and DATA_DESIGNER_MODEL_BACKEND env var
  from clients/factory.py; unknown provider_type now raises ValueError
- Remove apply_litellm_patches() call from models/factory.py
- Remove LiteLLM exception match arms and DownstreamLLMExceptionMessageParser
  from models/errors.py; port context window detail extraction to
  _extract_context_window_detail for native ProviderError path
- Remove litellm from lazy_heavy_imports.py and pyproject.toml runtime deps
- Remove flatten_extra_body parameter from TransportKwargs.from_request
- Clean up LiteLLM references in docstrings, comments, and AGENTS.md
- Add full ProviderErrorKind test coverage to test_model_errors.py
- Update benchmark script to patch OpenAICompatibleClient instead of
  CustomRouter

Made-with: Cursor

* fix: forward tools to _fake_response in benchmark patch

The old CustomRouter patch forwarded **kwargs (including tools) to
_fake_response, but the new OpenAICompatibleClient patch only passed
model and messages — silently disabling tool-call simulation in
benchmark scenarios that exercise allow_tools.

Made-with: Cursor

* fix: address PR-7 review feedback

- Return ChatCompletionResponse from benchmark fakes instead of
  FakeResponse to match the native client contract (facade expects
  .message, not .choices[0].message)
- Add ids= to parametrize block in test_model_errors.py for readability
- Remove unnecessary try/except from _extract_context_window_detail;
  the `if marker in` guard is sufficient
- Make context window marker match case-insensitive
- Replace stale httpx.AsyncClient callout in async_concurrency.py
  docstring with generic "async-stateful resources"

Made-with: Cursor
2026-03-24 11:41:00 -06:00

33 lines
1.2 KiB
Python

# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
from __future__ import annotations
import json
from typing import Any
from unittest.mock import AsyncMock, MagicMock
# ---------------------------------------------------------------------------
# Shared mock helpers for native HTTP adapter tests
# ---------------------------------------------------------------------------
def mock_httpx_response(json_data: dict[str, Any], status_code: int = 200) -> MagicMock:
resp = MagicMock()
resp.status_code = status_code
resp.json.return_value = json_data
resp.text = json.dumps(json_data)
resp.headers = {}
return resp
def make_mock_sync_client(response_json: dict[str, Any], status_code: int = 200) -> MagicMock:
mock = MagicMock()
mock.post = MagicMock(return_value=mock_httpx_response(response_json, status_code))
return mock
def make_mock_async_client(response_json: dict[str, Any], status_code: int = 200) -> MagicMock:
mock = MagicMock()
mock.post = AsyncMock(return_value=mock_httpx_response(response_json, status_code))
return mock