Source code for spb_curate.config

import configparser
import os
from pathlib import Path
from typing import Dict, List, Optional, Tuple

ENV_ACCESS_KEY = "SPB_ACCESS_KEY"
ENV_PROFILE = "SPB_PROFILE"
ENV_TEAM_NAME = "SPB_TEAM_NAME"


[docs] class Config: access_key = None profile = None team_name = None def __init__(self, profile: Optional[str] = None) -> None: self.profile = profile or os.getenv(ENV_PROFILE, "default") self._set_credentials(profile=profile or os.getenv(ENV_PROFILE, "default")) def _read_config(self, *, credential_path: Path, profile: str) -> Dict[str, str]: config = configparser.ConfigParser() config.read(filenames=credential_path) config_key_map = {"account_name": "team_name"} def parse_creds(*, keys: List[str]) -> Optional[Dict[str, str]]: credential = {} for k in keys: try: credential[config_key_map.get(k, k)] = config.get(profile, k) except (configparser.NoSectionError, configparser.NoOptionError): return None return credential credential = parse_creds(keys=["team_name", "access_key"]) if credential is None: credential = parse_creds(keys=["access_key", "account_name"]) return credential def _set_credentials(self, *, profile: str) -> None: self.access_key = os.getenv(ENV_ACCESS_KEY) self.team_name = os.getenv(ENV_TEAM_NAME) if not self.access_key or not self.team_name: config_path = Path.home().joinpath(".spb", "config") if config_path.exists(): credential = self._read_config( credential_path=config_path, profile=self.profile ) self.access_key = self.access_key or credential.get("access_key", None) self.team_name = self.team_name or credential.get("team_name", None)