mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-10 22:41:41 +00:00
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Final
|
|
|
|
import pytest
|
|
|
|
from .....shared.parity.fixtures.pytest_support import parametrize_recorded_fixtures
|
|
from .....shared.parity.fixtures.store import fixture_id
|
|
from .fixtures.config import DEFAULT_FIXTURE_DIRECTORY, FIXTURE_DIR_ENV
|
|
from .fixtures.models import OcrParityCase
|
|
|
|
|
|
def ocr_fixture_id(fixture: OcrParityCase) -> str:
|
|
case_input: Final = fixture.litellm_input
|
|
provider: Final = case_input.custom_llm_provider
|
|
prefix: Final = f"{provider}/{case_input.model}" if provider else case_input.model
|
|
return fixture_id(case_input, prefix)
|
|
|
|
|
|
def ocr_fixture_marks(fixture: OcrParityCase) -> tuple[pytest.MarkDecorator, ...]:
|
|
if fixture.litellm_input.contract not in {"reducto_v3", "reducto_legacy"}:
|
|
return ()
|
|
return (
|
|
pytest.mark.xfail(
|
|
reason="Reducto does not have a Rust OCR contract",
|
|
strict=False,
|
|
),
|
|
)
|
|
|
|
|
|
def pytest_generate_tests(metafunc: pytest.Metafunc) -> None:
|
|
parametrize_recorded_fixtures(
|
|
metafunc,
|
|
fixture_name="ocr_fixture",
|
|
case_type=OcrParityCase,
|
|
env_var=FIXTURE_DIR_ENV,
|
|
default_directory=DEFAULT_FIXTURE_DIRECTORY,
|
|
regeneration_command=(
|
|
f"uv run python -m tests.rust-python-harness.strategies.e2e_parity.sdk.ocr.fixtures.record --fixture-dir {DEFAULT_FIXTURE_DIRECTORY}"
|
|
),
|
|
id_builder=ocr_fixture_id,
|
|
marks_builder=ocr_fixture_marks,
|
|
)
|