Files
exo/shared/env.py
2025-06-29 19:44:58 +01:00

29 lines
623 B
Python

import logging
import os
from typing import TypeVar
from pydantic import BaseModel, ConfigDict, ValidationError
env_model_config = ConfigDict(
strict=True,
frozen=True,
extra="forbid",
)
class BaseEnv(BaseModel):
model_config = env_model_config
EnvSchema = TypeVar("EnvSchema", bound=BaseEnv)
def get_validated_env(
environment_schema: type[EnvSchema], logger: logging.Logger
) -> EnvSchema:
try:
return environment_schema.model_validate(os.environ, strict=True)
except ValidationError as e:
logger.error("Environment Variables Validation Failed: %s", e)
raise e