"""Configuration loaded from environment variables / .env.""" from __future__ import annotations from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): """Settings for the homey-mcp server. Values are read from environment variables (prefix ``HOMEY_``) or a local ``.env`` file. """ model_config = SettingsConfigDict( env_prefix="HOMEY_", env_file=".env", env_file_encoding="utf-8", extra="ignore", ) host: str = Field(..., description="IP or hostname of the Homey Pro.") token: str = Field(..., description="Personal Access Token (Bearer).") scheme: str = Field("http", description="http or https.") port: int | None = Field( None, description="Optional TCP port (e.g. 4859 when Homey runs in a container).", ) timeout: float = Field(10.0, description="HTTP timeout in seconds.") event_buffer: int = Field(200, description="Max realtime events to retain.") realtime: bool = Field(True, description="Enable Socket.IO realtime events.") @property def base_url(self) -> str: if self.port is None: return f"{self.scheme}://{self.host}" return f"{self.scheme}://{self.host}:{self.port}" def load_settings() -> Settings: return Settings() # type: ignore[call-arg]