flip_api.config

Attributes

_settings

Classes

Settings

Common settings shared across all environments (development and production).

DevSettings

Settings specific to local or development environment.

ProdSettings

Settings specific to production environment.

Functions

get_settings(→ DevSettings | ProdSettings)

Get the application settings.

Module Contents

class flip_api.config.Settings

Bases: pydantic_settings.BaseSettings

Common settings shared across all environments (development and production).

ENV: Literal['development', 'production'] = 'development'
LOG_LEVEL: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO'
model_config
TRUST_API_KEY_HEADER: str
INTERNAL_SERVICE_KEY_HEADER: str
AWS_PROFILE: str | None = None
AWS_REGION: str
AWS_COGNITO_USER_POOL_ID: str
AWS_COGNITO_APP_CLIENT_ID: str
AWS_SECRET_NAME: str
AWS_SES_ADMIN_EMAIL_ADDRESS: pydantic.EmailStr
AWS_SES_SENDER_EMAIL_ADDRESS: pydantic.EmailStr
UPLOADED_MODEL_FILES_BUCKET: str
SCANNED_MODEL_FILES_BUCKET: str
UPLOADED_FEDERATED_DATA_BUCKET: str
FL_APP_BASE_BUCKET: str
FL_APP_DESTINATION_BUCKET: str
MAX_MODEL_FILE_BYTES: int = 104857600
PRE_SIGNED_URL_EXPIRATION_SECONDS: int = 3600
PROJECT_REIMPORT_RATE: int = 60
MAX_REIMPORT_COUNT: int = 5
SCHEDULE_RUN_JOBS_EXECUTION: bool = True
SCHEDULER_RUN_JOBS_RATE: int = 1
SCHEDULER_KEEP_FL_API_SESSION_ALIVE_RATE: int = 2
SCHEDULER_REIMPORT_IMAGING_PROJECT_STUDIES_RATE: int = 30
DB_PORT: int
DB_HOST: str = 'localhost'
POSTGRES_USER: str
POSTGRES_DB: str
NET_ENDPOINTS: dict[str, str]
TRUST_NAMES: list[str]
FL_BACKEND: Literal['nvflare', 'flower'] = 'nvflare'
ENFORCE_MFA: bool = True
classmethod coerce_empty_env(v: str) str

Treat empty-string ENV (e.g. from CI environment injection) as ‘development’.

classmethod coerce_empty_mfa(v: str | bool | None) bool

Treat empty-string or None ENFORCE_MFA as the default True.

classmethod coerce_log_level(v: object) object

Treat empty-string or None LOG_LEVEL as the default INFO; uppercase string input.

Non-string, non-empty input is returned unchanged so the downstream Literal validator rejects it loudly, instead of .upper() raising AttributeError mid-validation on e.g. Settings(LOG_LEVEL=10).

classmethod coerce_empty_max_model_file_bytes(v: object) object

Treat empty-string MAX_MODEL_FILE_BYTES as the default 100 MiB.

GitHub Actions environments inject empty-string env vars for every var that isn’t explicitly set in the environment scope; Pydantic treats that as a real override and rejects it against int. Same shape as coerce_empty_env / coerce_empty_mfa.

classmethod coerce_empty_pre_signed_url_expiration(v: object) object

Treat empty-string PRE_SIGNED_URL_EXPIRATION_SECONDS as the default 3600s.

Same rationale as coerce_empty_max_model_file_bytes.

HEARTBEAT_TIMEOUT_SECONDS: int = 30
TASK_STALE_TIMEOUT_MINUTES: int = 30
TASK_MAX_RETRIES: int = 3
SCHEDULER_STALE_TASK_RECOVERY_RATE: int = 10
MAX_TASK_RESULT_LENGTH: int = 10000000
FLIP_API_URL: str = 'http://localhost:8080/api'
ADMIN_USER_PASSWORD: pydantic.SecretStr | None = None
class flip_api.config.DevSettings

Bases: Settings

Settings specific to local or development environment.

ENV: Literal['development'] = 'development'
POSTGRES_PASSWORD: str
AES_KEY_BASE64: str
TRUST_API_KEY_HASHES: dict[str, str]
INTERNAL_SERVICE_KEY_HASH: str
class flip_api.config.ProdSettings

Bases: Settings

Settings specific to production environment.

ENV: Literal['production'] = 'production'
POSTGRES_SECRET_ARN: str
flip_api.config._settings
flip_api.config.get_settings() DevSettings | ProdSettings

Get the application settings.

Returns:

An instance of Settings containing configuration values.

Return type:

DevSettings | ProdSettings