Config
بارگذاری fusion.<env>.json و core/settings.py با fusion_framework.config
نمای کلی
fusion_framework.config نمای Python روی تنظیمات مشترک fusion-core است.
مقادیر زمان اجرا در fusion.<env>.json هستند. overlay اختیاری Python در core/settings.py. محیط فعال از FUSION_ENV میآید (پیشفرض: dev).
برای قواعد کشف، envelope در برابر JSON تخت، placeholderهای env، و schema کامل حاشیهنویسیشدهٔ 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)آنچه ماژول export میکند
| نماد | نقش |
|---|---|
settings | آبجکت settings سراسری (singleton) |
Settings | کلاس (معمولاً همان singleton را میگیرید) |
get_settings() | اطمینان از بارگذاری JSON، برگرداندن singleton |
load_settings_module(...) | بارگذاری JSON + ادغام ATTRهای 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 را import میکند (
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=...) | خواندن کلید config (مسیر نقطهای پشتیبانی میشود) |
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 را ببینید.