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 — в общем гайде:
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")Что делает:
- Находит и загружает
fusion.<env>.json(cwd, родители, каталог__main__) - Импортирует Python-модуль (
settings→ также пробуетcore.settings) - Мержит только 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.