mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-12 03:48:56 +00:00
* docs(agents): ban semicolons and colons in human-facing text Tighten the writing rule so ";" and ":" are only allowed where the sentence would be nonsensical without them, rewrite the existing semicolons in AGENTS.md to follow it, and note that docs (litellm-docs) keep their trailing "." * docs(agents): rewrite semicolons in nested AGENTS.md files * docs(agents): hand-maintain the dashboard Next.js warning and sync e2e CONTRIBUTING lines * docs(agents): point at the PR template path that exists * docs(agents): restore the generated Next.js block in the dashboard AGENTS.md
3.9 KiB
3.9 KiB
Expected Structure
tests/rust-python-harness/
├── __main__.py
├── cli/
│ ├── __init__.py
│ ├── catalog.py
│ └── commands.py
│
├── strategies/
│ ├── e2e_parity/
│ │ ├── __init__.py
│ │ ├── reporting.py
│ │ ├── sdk/
│ │ │ └── ocr/
│ │
│ ├── trace_parity/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── reporting.py
│ │ └── sdk/
│ │ ├── chat_completions/
│ │ ├── messages/
│ │ ├── ocr/
│ │ └── transcription/
│ │
│ ├── unit_tests_parity/
│ │ ├── __init__.py
│ │ ├── reporting.py
│ │ └── runner.py
│ │
│ └── unit_tests_rust/
│ ├── __init__.py
│ ├── reporting.py
│ └── runner.py
│
└── shared/
├── parity/
├── tracing/
├── reporting/
│ └── strategy.py
└── unit_runners/
├── contracts.py
└── suite_runner.py
- A strategy is a folder under
strategies/with a one-lineAGENTS.mdand an__init__.pyexporting exactly oneSTRATEGY: StrategyDefinition. Its id must equal the folder name shared/reporting/strategy.pyis the contract: runnable module/suite specs, not-implemented/skipped specs, the runner protocol, andStrategyDefinition- Every
STRATEGYexplicitly classifies every SDK function. Surface-aware strategies declare their surfaces and classify the complete surface-by-function matrix - Run locally only. No CI integration
python -m tests.rust-python-harness run <strategy>|allruns the selected strategy.--functionis common, while each strategy exposes only its supported options- Examples:
run e2e_parity --surface sdk --function ocr,run unit_tests_parity --function ocr --pytest-arg=-x, orrun all --function ocr cli/catalog.pydiscovers strategies, validates their Python definitions, and orders them.cli/__init__.pybuilds the Click command tree.cli/commands.pyruns selected casese2e_parity/compares SDK objects, exceptions, callbacks, and streams, or gateway HTTP responsestrace_parity/profiles the Python call stack and prints every collected Python call underlitellm/. It never collects Rust spans and never rebuilds the native extension- E2E and trace strategies load their registered module cases and run surface-specific execution from their folders
shared/unit_runners/contracts.pyowns the typed per-function unit contracts consumed byunit_tests_parityandunit_tests_rustunit_tests_parity/runner.pyruns each contract'sunit_parity_scopewithLITELLM_RUST=0andLITELLM_RUST=1in separate processes and requires matching outcomes, including failures. Exclusions require a reason in the contractunit_tests_rust/runner.pyruns each contract's focused Cargo test suite. Native Rust unit tests stay beside their implementationshared/unit_runners/suite_runner.pyruns typed suites registered in code with nodeids of the formsuite:<strategy_id>:<function>:<suite>- Every strategy declares its report sections and presentation in its own
reporting.py. Shared reporting code only provides reusable models and cell-formatting primitives shared/contains reusable parity, tracing, reporting primitives, and unit-runner machinery- Keep fixtures with their owning API and existing Python tests in their current locations
- Each strategy folder carries an
AGENTS.mdone-liner stating what it should be doing - Run the harness's own checks with
uv run pytest -o consider_namespace_packages=true tests/rust-python-harness/shared tests/rust-python-harness/cli tests/rust-python-harness/strategies/trace_parity tests/rust-python-harness/strategies/unit_tests_parity tests/rust-python-harness/strategies/unit_tests_rust -q