from datetime import datetime, timezone
from typing import Final

from litellm.integrations.deepeval.types import Environment


def to_zod_compatible_iso(dt: datetime) -> str:
    return dt.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")


def validate_environment(environment: str):
    if environment not in [env.value for env in Environment]:
        valid_values: Final = ", ".join(f'"{env.value}"' for env in Environment)
        raise ValueError(f"Invalid environment: {environment}. Please use one of the following instead: {valid_values}")
