Feature: 允许插件从环境变量中读取配置项并支持 alias (#3673)

Co-authored-by: Ju4tCode <42488585+yanyongyu@users.noreply.github.com>
This commit is contained in:
Azide
2025-10-18 19:43:01 +08:00
committed by GitHub
parent ae3cf2a72f
commit efa3ac3f4c
6 changed files with 114 additions and 40 deletions

View File

@@ -1,4 +1,5 @@
from pydantic import BaseModel
from pydantic import BaseModel, Field
import pytest
import nonebot
from nonebot.plugin import PluginManager, _managers
@@ -67,3 +68,27 @@ def test_get_plugin_config():
config = nonebot.get_plugin_config(Config)
assert isinstance(config, Config)
assert config.plugin_config == 1
def test_get_plugin_config_with_env(monkeypatch: pytest.MonkeyPatch):
monkeypatch.setenv("PLUGIN_CONFIG_ONE", "no_dummy_val")
monkeypatch.setenv("PLUGIN_SUB_CONFIG__TWO", "two")
monkeypatch.setenv("PLUGIN_CFG_THREE", "33")
monkeypatch.setenv("CONFIG_FROM_INIT", "impossible")
class SubConfig(BaseModel):
two: str = "dummy_val"
class Config(BaseModel):
plugin_config: int
plugin_config_one: str = "dummy_val"
plugin_sub_config: SubConfig = Field(default_factory=SubConfig)
plugin_config_three: int = Field(default=3, alias="plugin_cfg_three")
config_from_init: str = "dummy_val"
config = nonebot.get_plugin_config(Config)
assert config.plugin_config == 1
assert config.plugin_config_one == "no_dummy_val"
assert config.plugin_sub_config.two == "two"
assert config.plugin_config_three == 33
assert config.config_from_init == "init"