Source code for gpp_client.config.models

"""
Models for GPP client configuration.
"""

__all__ = ["Tokens", "ConfigFile"]

from pydantic import BaseModel, field_serializer, field_validator

from gpp_client.config.defaults import GPPDefaults
from gpp_client.config.environment import GPPEnvironment


[docs] class Tokens(BaseModel): """ Tokens for different GPP environments. """ DEVELOPMENT: str | None = None STAGING: str | None = None PRODUCTION: str | None = None
[docs] @field_validator("*", mode="before") @classmethod def empty_string_to_none(cls, value): """ Convert empty strings to None. Parameters ---------- value : str | None The value to validate. Returns ------- str | None The validated value. """ if isinstance(value, str) and value.strip() == "": return None return value
[docs] @field_serializer("*") @classmethod def none_to_empty_string(cls, value: str | None) -> str: if value is None: return "" return value
[docs] class ConfigFile(BaseModel): """ GPP client configuration file model. """ env: GPPEnvironment = GPPDefaults.default_env disable_env_vars: bool = GPPDefaults.disable_env_vars tokens: "Tokens" = Tokens()
[docs] @field_serializer("env") @classmethod def get_enum_value(cls, value: GPPEnvironment) -> str: return value.value