diff --git a/nonebot_bison/plugin_config.py b/nonebot_bison/plugin_config.py index 2362123..ca2aa60 100644 --- a/nonebot_bison/plugin_config.py +++ b/nonebot_bison/plugin_config.py @@ -2,6 +2,7 @@ import nonebot from yarl import URL from nonebot import get_plugin_config from pydantic import Field, BaseModel +from nonebot.compat import PYDANTIC_V2, ConfigDict global_config = nonebot.get_driver().config PlatformName = str @@ -9,6 +10,13 @@ ThemeName = str class PlugConfig(BaseModel): + if PYDANTIC_V2: + model_config = ConfigDict(populate_by_name=True) + else: + + class Config: + allow_population_by_field_name = True + bison_config_path: str = "" bison_use_pic: bool = Field( default=False, diff --git a/tests/test_plugin_config.py b/tests/test_plugin_config.py new file mode 100644 index 0000000..d8e49f0 --- /dev/null +++ b/tests/test_plugin_config.py @@ -0,0 +1,20 @@ +from nonebug.app import App + + +def test_parse_alias(app: App): + from nonebot.compat import PYDANTIC_V2 + + from nonebot_bison.plugin_config import PlugConfig + + if PYDANTIC_V2: + cfg = PlugConfig.model_validate({"bison_theme_use_browser": True}) + assert cfg.bison_use_browser + + cfg = PlugConfig.model_validate({"bison_use_browser": True}) + assert cfg.bison_use_browser + else: + cfg = PlugConfig.parse_obj({"bison_theme_use_browser": True}) + assert cfg.bison_use_browser + + cfg = PlugConfig.parse_obj({"bison_use_browser": True}) + assert cfg.bison_use_browser