support dot notation for driver config

This commit is contained in:
yanyongyu 2021-06-20 23:38:42 +08:00
parent 7879346ca1
commit 69cee3844e
2 changed files with 8 additions and 2 deletions

View File

@ -199,8 +199,12 @@ def init(*, _env_file: Optional[str] = None, **kwargs):
logger.opt(colors=True).debug(
f"Loaded <y><b>Config</b></y>: {escape_tag(str(config.dict()))}")
DriverClass: Type[Driver] = getattr(
importlib.import_module(config.driver), "Driver")
modulename, _, cls = config.driver.partition(":")
module = importlib.import_module(modulename)
instance = module
for attr_str in (cls or "Driver").split("."):
instance = getattr(instance, attr_str)
DriverClass: Type[Driver] = instance # type: ignore
_driver = DriverClass(env, config)

View File

@ -144,6 +144,8 @@ class Config(BaseConfig):
:说明:
NoneBot 运行所使用的 ``Driver`` 继承自 ``nonebot.driver.BaseDriver``
配置格式为 ``<module>[:<class>]``默认类名为 ``Driver``
"""
host: IPvAnyAddress = IPv4Address("127.0.0.1") # type: ignore
"""