mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-02 07:13:02 +00:00
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from collections.abc import Iterator
|
|
from dataclasses import dataclass
|
|
from typing import Final
|
|
|
|
import pytest
|
|
from cli_harness.rate_limiter import get_default_limiter
|
|
from codex.harness import CodexHarness, codex_harness
|
|
from codex.setups import Deployment, ModelSetup
|
|
from e2e_config import PROXY_BASE_URL, unique_marker
|
|
from lifecycle import ResourceManager
|
|
from proxy_client import ProxyClient
|
|
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class _Client:
|
|
proxy: ProxyClient
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def client(proxy: ProxyClient) -> _Client:
|
|
return _Client(proxy)
|
|
|
|
|
|
@pytest.fixture
|
|
def setup(deployment: Deployment, proxy: ProxyClient, resources: ResourceManager) -> ModelSetup:
|
|
model: Final = f"e2e-codex-{unique_marker()}"
|
|
model_id: Final = proxy.create_model(model, deployment.litellm_params, provider_live=True)
|
|
resources.defer(lambda: proxy.delete_model(model_id))
|
|
return ModelSetup(model=model, rate_bucket=deployment.rate_bucket)
|
|
|
|
|
|
@pytest.fixture
|
|
def codex(setup: ModelSetup, resources: ResourceManager) -> Iterator[CodexHarness]:
|
|
with codex_harness(
|
|
gateway=PROXY_BASE_URL,
|
|
api_key=resources.key(models=[setup.model], user_id=None),
|
|
rate_bucket=setup.rate_bucket,
|
|
limiter=get_default_limiter(),
|
|
) as harness:
|
|
yield harness
|