| 1234567891011121314151617181920212223242526272829 |
- import os
- from dataclasses import dataclass
- from typing import Mapping
- @dataclass(frozen=True)
- class Config:
- api_key: str
- api_secret: str
- api_passphrase: str
- trading_env: str = "demo"
- def load_config(env: Mapping[str, str] | None = None) -> Config:
- source = os.environ if env is None else env
- api_key = source.get("OKX_API_KEY")
- api_secret = source.get("OKX_API_SECRET")
- api_passphrase = source.get("OKX_API_PASSPHRASE")
- if not api_key or not api_secret or not api_passphrase:
- raise ValueError("OKX credentials are required")
- trading_env = source.get("OKX_TRADING_ENV", "demo")
- if trading_env not in {"demo", "live"}:
- raise ValueError("OKX_TRADING_ENV must be demo or live")
- return Config(
- api_key=api_key,
- api_secret=api_secret,
- api_passphrase=api_passphrase,
- trading_env=trading_env,
- )
|