from dotenv import dotenv_values, load_dotenv import os class EnvConfigLoader: """ Classe para carregar todas as variáveis de ambiente (.env) e permitir acesso via atributo (settings.VAR). """ def __init__(self, env_file: str = ".env"): # Garante que o .env será carregado no ambiente do sistema load_dotenv(env_file) # Lê todas as variáveis (do arquivo + sistema) self._values = { **dotenv_values(env_file), # Conteúdo do .env **os.environ, # Variáveis já existentes no ambiente } def __getattr__(self, name: str): """Permite acessar como settings.VAR""" # Normaliza o nome para maiúsculo key = name.upper() if key in self._values: return self._values[key] raise AttributeError(f"A variável '{name}' não existe no .env") def __repr__(self): """Exibe todas as variáveis carregadas""" return f"" def all(self) -> dict: """Retorna todas as variáveis como dicionário""" return dict(self._values)