import pathlib from typing import Dict, cast from starlette.config import Config from werkzeug.local import LocalProxy from service.conf.utils import ( get_admin_user_credentials, get_airflow_api_credentials, get_appsync_profile, ) config = Config(".env") ############### # Application # ############### DEBUG = config.get("APP_DEBUG", cast=bool, default=False) ############### # Directories # ############### BASE_DIR = pathlib.Path(__file__).resolve().parent.parent ROOT_DIR = BASE_DIR.parent ############### # Environment # ############### PROFILE: str = config.get("PROFILE", default="devel") TESTING = config.get("TESTING", default=False, cast=bool) ############ # Database # ############ DATABASE_NAME = config.get("DATABASE_NAME", default="fansifter") DATABASE_URL = config.get("DATABASE_URL", default=None) DATABASE_MOCK = TESTING and config.get("DATABASE_MOCK", default=False) MIGRATIONS_ROOT = ROOT_DIR / "migrations" MIGRATIONS_DISABLE_SSL = PROFILE in {"auto_test", "local"} ########### # Airflow # ########### AIRFLOW_CREDENTIALS = cast( Dict[str, str], LocalProxy(lambda: get_airflow_api_credentials(DATABASE_NAME)), ) ########### # AppSync # ########### APPSYNC_PROFILE = get_appsync_profile(DATABASE_NAME) ####################### # Internal admin page # ####################### ADMIN_USER_CREDENTIALS = cast( Dict[str, str], LocalProxy(lambda: get_admin_user_credentials(PROFILE)), ) ########### # Logging # ########### LOGGING = { "version": 1, "disable_existing_loggers": False, "formatters": { "default": { "format": "[%(asctime)s] %(levelname)s in %(module)s: %(message)s", } }, "handlers": { "stdout": { "level": "DEBUG", "class": "logging.StreamHandler", "formatter": "default", }, }, "loggers": { "service": { "handlers": ["stdout"], "level": "INFO", "propagate": False, }, "boto3": { "handlers": ["stdout"], "level": "ERROR", "propagate": False, }, "botocore": { "handlers": ["stdout"], "level": "ERROR", "propagate": False, }, "s3transfer": { "handlers": ["stdout"], "level": "ERROR", "propagate": False, }, "urllib3": { "handlers": ["stdout"], "level": "ERROR", "propagate": False, }, }, }