Modernize Python typing across the codebase

Automated via ruff UP006, UP007, UP035, UP045 rules (target: py311):

- Replace `typing.List`, `Dict`, `Tuple`, `Set`, `FrozenSet`, `Type`
  with their built-in equivalents (`list`, `dict`, `tuple`, etc.)
- Replace `typing.Optional[X]` with `X | None`
- Replace `typing.Union[X, Y]` with `X | Y`
- Move `Mapping`, `Sequence`, `Callable`, `Awaitable`,
  `MutableMapping`, `MutableSequence`, `Iterator`, `AsyncIterator`,
  `AsyncGenerator` imports from `typing` to `collections.abc`
- Remove now-unused `typing` imports
- Add `from __future__ import annotations` to 5 files that use
  forward-reference strings in `X | "Y"` annotations
This commit is contained in:
Aleix Conchillo Flaqué
2026-04-16 09:16:53 -07:00
parent 12b8af3d89
commit b3bb6fdaa5
283 changed files with 2902 additions and 3020 deletions

View File

@@ -13,7 +13,7 @@ import wave
from dataclasses import dataclass
from datetime import datetime
from pathlib import Path
from typing import Any, List, Optional, Tuple
from typing import Any
import aiofiles
from loguru import logger
@@ -60,7 +60,7 @@ PIPELINE_IDLE_TIMEOUT_SECS = 60
EVAL_TIMEOUT_SECS = 120
EVAL_RESULT_TIMEOUT_SECS = 10
EvalPrompt = str | Tuple[str, ImageFile]
EvalPrompt = str | tuple[str, ImageFile]
@dataclass
@@ -68,7 +68,7 @@ class EvalConfig:
prompt: EvalPrompt
eval: str
eval_speaks_first: bool = False
runner_args_body: Optional[Any] = None
runner_args_body: Any | None = None
class EvalRunner:
@@ -78,7 +78,7 @@ class EvalRunner:
examples_dir: Path,
pattern: str = "",
record_audio: bool = False,
name: Optional[str] = None,
name: str | None = None,
log_level: str = "DEBUG",
):
self._examples_dir = examples_dir
@@ -86,8 +86,8 @@ class EvalRunner:
self._record_audio = record_audio
self._log_level = log_level
self._total_success = 0
self._tests: List[EvalResult] = []
self._result_future: Optional[asyncio.Future[bool]] = None
self._tests: list[EvalResult] = []
self._result_future: asyncio.Future[bool] | None = None
# We to save runner files.
name = name or f"{datetime.now().strftime('%Y%m%d_%H%M%S')}"
@@ -150,7 +150,7 @@ class EvalRunner:
try:
# Wait for the future to resolve.
result = await asyncio.wait_for(self._result_future, timeout=EVAL_RESULT_TIMEOUT_SECS)
except asyncio.TimeoutError:
except TimeoutError:
logger.error(f"ERROR: Timeout waiting for eval result.")
result = False
@@ -282,7 +282,7 @@ async def run_eval_pipeline(
# Load example prompt depending on image.
example_prompt = ""
example_image: Optional[ImageFile] = None
example_image: ImageFile | None = None
if isinstance(eval_config.prompt, str):
example_prompt = eval_config.prompt
elif isinstance(eval_config.prompt, tuple):

View File

@@ -7,7 +7,7 @@
import argparse
import asyncio
import sys
from datetime import datetime, timezone
from datetime import UTC, datetime, timezone
from pathlib import Path
from dotenv import load_dotenv
@@ -41,7 +41,7 @@ EVAL_WEATHER_AND_RESTAURANT = EvalConfig(
EVAL_ONLINE_SEARCH = EvalConfig(
prompt="What's the current date in UTC?",
eval=f"Current date in UTC is {datetime.now(timezone.utc).strftime('%A, %B %d, %Y')}.",
eval=f"Current date in UTC is {datetime.now(UTC).strftime('%A, %B %d, %Y')}.",
)
EVAL_SWITCH_LANGUAGE = EvalConfig(

View File

@@ -6,9 +6,9 @@
import importlib.util
import os
from collections.abc import Sequence
from dataclasses import dataclass
from pathlib import Path
from typing import Sequence
GREEN = "\033[92m"
RED = "\033[91m"

View File

@@ -5,13 +5,12 @@ handling format detection and conversion to int16 PCM format.
"""
import sys
from typing import Tuple
import numpy as np
import soundfile as sf
def read_audio_file(input_path: str, verbose: bool = False) -> Tuple[np.ndarray, int]:
def read_audio_file(input_path: str, verbose: bool = False) -> tuple[np.ndarray, int]:
"""Read an audio file and convert to int16 mono format.
This function: