agent/credential_pool_timestamps.py
Rama main · réplica de lectura del repositorio original.
"""Timestamp parsing shared by credential-pool status, refresh, and cooldown bookkeeping."""
from __future__ import annotations
from datetime import datetime
from typing import Any, Optional
def _parse_absolute_timestamp(value: Any) -> Optional[float]:
"""Best-effort parse of epoch seconds / epoch ms / ISO-8601 into epoch seconds."""
if value is None or value == "":
return None
if isinstance(value, (int, float)):
numeric = float(value)
if numeric <= 0:
return None
return numeric / 1000.0 if numeric > 1_000_000_000_000 else numeric
if isinstance(value, str):
raw = value.strip()
if not raw:
return None
try:
numeric = float(raw)
return numeric / 1000.0 if numeric > 1_000_000_000_000 else numeric
except ValueError:
pass
try:
return datetime.fromisoformat(raw).timestamp()
except ValueError:
return None
return None