Логотип Fusion Framework от Cipher UnitFusion

Config

Загрузка fusion.<env>.json и core/settings.py через fusion_framework.config

Обзор

fusion_framework.config — Python-фасад над общими настройками в fusion-core.

Значения времени выполнения живут в fusion.<env>.json. Опциональный Python-overlay — в core/settings.py. Активное окружение берётся из FUSION_ENV (по умолчанию: dev).

Правила discovery, envelope vs плоский JSON, env-плейсхолдеры и полная аннотированная схема fusion.dev.json / stage / prod — в общем гайде:

→ Settings и конфигурация

from fusion_framework.config import load_settings_module, get_settings

load_settings_module("settings")
s = get_settings()
print(s.host, s.port, s.debug)

Что экспортирует модуль

СимволРоль
settingsГлобальный singleton настроек
SettingsКласс (обычно используете singleton)
get_settings()Гарантирует загрузку JSON, возвращает singleton
load_settings_module(...)Загрузка JSON + merge UPPERCASE-атрибутов из Python-модуля
configure(**kwargs)Задать значения в коде без правки JSON

Также доступно как:

from fusion_framework import settings

Типичный старт в main.py

from fusion_framework.app import FusionApp
from fusion_framework.config import get_settings, load_settings_module

MIDDLEWARE: list = []

def main() -> None:
    load_settings_module("settings")   # 1) JSON + core/settings.py
    app = FusionApp(get_settings())    # 2) host / port / debug
    for mw in MIDDLEWARE:
        app.use(mw)
    app.listen()                       # 3) start server

if __name__ == "__main__":
    main()

load_settings_module

load_settings_module("settings")
# or
load_settings_module("core.settings")

Что делает:

  1. Находит и загружает fusion.<env>.json (cwd, родители, каталог __main__)
  2. Импортирует Python-модуль (settings → также пробует core.settings)
  3. Мержит только UPPERCASE-имена из этого модуля в объект settings
# core/settings.py
from fusion_framework import settings

SECRET_KEY = settings.get("secret_key")
DEBUG = settings.get("debug", default=False)

get_settings и объект settings

s = get_settings()
s.host   # str, default "127.0.0.1"
s.port   # int, default 3000 (scaffold uses 8080 in fusion.dev.json)
s.debug  # bool
s.env    # "dev" | "prod" | "stage" | …
APIНазначение
settings.get("key", default=...)Чтение ключа (поддерживает dotted paths)
settings["key"]То же, при отсутствии — KeyError
settings.host / .port / .debug / .envЧастые поля
settings.merge({...}) / configure(**kwargs)Overlay
settings.load_json(...) / ensure_loaded()Явная / ленивая загрузка

Смена окружения

FUSION_ENV=prod python main.py
fusion command run:prod

Ментальная модель

fusion.dev.json  →  config block  →  settings singleton
core/settings.py →  UPPERCASE overlay (optional)
get_settings()   →  FusionApp.listen(host, port)

JSON — источник истины. Ключи (host, port, fingerprint, swagger, …) и содержимое файлов CLI — в Settings.

На этой странице