mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-06 08:16:43 +00:00
34 lines
1 KiB
Python
34 lines
1 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
from collections.abc import Sequence
|
|
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
from typing import Final, cast
|
|
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class RecordingArgs:
|
|
concurrency: int
|
|
examples: int
|
|
fixture_dir: Path | None
|
|
|
|
|
|
def _positive_int(value: str) -> int:
|
|
parsed: Final = int(value)
|
|
if parsed < 1:
|
|
raise argparse.ArgumentTypeError("must be at least 1")
|
|
return parsed
|
|
|
|
|
|
def parse_recording_args(argv: Sequence[str] | None = None) -> RecordingArgs:
|
|
parser: Final = argparse.ArgumentParser()
|
|
parser.add_argument("--concurrency", type=_positive_int, default=2)
|
|
parser.add_argument("--examples", type=_positive_int, default=4)
|
|
parser.add_argument("--fixture-dir", type=Path)
|
|
namespace: Final = parser.parse_args(argv)
|
|
return RecordingArgs(
|
|
concurrency=cast(int, namespace.concurrency),
|
|
examples=cast(int, namespace.examples),
|
|
fixture_dir=cast(Path | None, namespace.fixture_dir),
|
|
)
|