Close local release-quality gaps and reconcile workplan status
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0e332-3365-77c0-8491-084e9ea33ac1
This commit is contained in:
tegwick 2026-09-27 17:36:27 +02:00
parent 37436bb562
commit 7cd633986e
56 changed files with 462 additions and 237 deletions

View file

@ -9,12 +9,14 @@ from __future__ import annotations
import contextvars
import json
import os
import sys
import threading
from collections.abc import Iterator
from contextlib import contextmanager
from dataclasses import dataclass, field
from datetime import datetime, timedelta, timezone
from pathlib import Path
from typing import Any, Iterator, TextIO
from typing import Any, Literal, TextIO
from zoneinfo import ZoneInfo
from llm_connect.costs import CostEstimate, estimate_cost
@ -22,7 +24,6 @@ from llm_connect.fx import FxRate
from llm_connect.models import LLMResponse
from llm_connect.rates import ModelRateRegistry
ENV_USAGE_LEDGER = "LLM_CONNECT_USAGE_LEDGER"
ENV_TZ = "LLM_CONNECT_TZ"
DEFAULT_TZ = "Europe/Berlin"
@ -82,7 +83,7 @@ def _path_lock(path: Path) -> threading.Lock:
def _lock_file(handle: TextIO) -> None:
if os.name == "nt":
if sys.platform == "win32":
import msvcrt
msvcrt.locking(handle.fileno(), msvcrt.LK_LOCK, 1)
@ -93,7 +94,7 @@ def _lock_file(handle: TextIO) -> None:
def _unlock_file(handle: TextIO) -> None:
if os.name == "nt":
if sys.platform == "win32":
import msvcrt
msvcrt.locking(handle.fileno(), msvcrt.LK_UNLCK, 1)
@ -104,7 +105,7 @@ def _unlock_file(handle: TextIO) -> None:
@contextmanager
def _locked_file(path: Path, mode: str) -> Iterator[TextIO]:
def _locked_file(path: Path, mode: Literal["a", "a+", "r"]) -> Iterator[TextIO]:
path.parent.mkdir(parents=True, exist_ok=True)
local_lock = _path_lock(path)
with local_lock:
@ -201,7 +202,7 @@ class UsageEvent:
}
@classmethod
def from_dict(cls, data: dict[str, Any]) -> "UsageEvent":
def from_dict(cls, data: dict[str, Any]) -> UsageEvent:
"""Create an event from a JSON-decoded dictionary."""
return cls(
provider=data["provider"],