config.py•1.33 kB
import os
from pathlib import Path
from dotenv import load_dotenv
def load_config():
load_dotenv()
cfg = {
"user": os.getenv("SNOWFLAKE_USER"),
"account": os.getenv("SNOWFLAKE_ACCOUNT"),
"host": os.getenv("SNOWFLAKE_HOST"),
"port": os.getenv("SNOWFLAKE_PORT"),
"role": os.getenv("SNOWFLAKE_ROLE"),
"database": os.getenv("SNOWFLAKE_DATABASE"),
"schema": os.getenv("SNOWFLAKE_SCHEMA"),
"warehouse": os.getenv("SNOWFLAKE_WAREHOUSE"),
"password": os.getenv("SNOWFLAKE_PASSWORD") or None,
"private_key_path": os.getenv("SNOWFLAKE_PRIVATE_KEY_PATH"),
"private_key_passphrase": os.getenv("SNOWFLAKE_PRIVATE_KEY_PASSPHRASE"),
"login_timeout": int(os.getenv("SNOWFLAKE_LOGIN_TIMEOUT", "120")),
"network_timeout": int(os.getenv("SNOWFLAKE_NETWORK_TIMEOUT", "120")),
}
print("Loaded Snowflake config:", cfg)
# Basic validation
missing = [k for k,v in cfg.items() if k in ("user","account","warehouse") and not v]
if missing:
raise ValueError(f"Missing required Snowflake config: {missing}")
# Normalize private key path
if cfg["private_key_path"] and not Path(cfg["private_key_path"]).is_absolute():
cfg["private_key_path"] = str(Path.cwd() / cfg["private_key_path"])
return cfg