mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
🎨 (config): 优化配置值解析与错误处理 (#1962)
Co-authored-by: webjoin111 <455457521@qq.com>
This commit is contained in:
parent
48cbb2bf1d
commit
c3193dd784
@ -106,21 +106,34 @@ class ConfigGroup(BaseModel):
|
|||||||
if value_to_process is None:
|
if value_to_process is None:
|
||||||
return default
|
return default
|
||||||
|
|
||||||
if cfg.type:
|
if cfg.arg_parser:
|
||||||
if _is_pydantic_type(cfg.type):
|
|
||||||
if build_model:
|
|
||||||
try:
|
|
||||||
return parse_as(cfg.type, value_to_process)
|
|
||||||
except Exception as e:
|
|
||||||
logger.warning(
|
|
||||||
f"Pydantic 模型解析失败 (key: {c.upper()}). ", e=e
|
|
||||||
)
|
|
||||||
try:
|
try:
|
||||||
return cattrs.structure(value_to_process, cfg.type)
|
return cfg.arg_parser(value_to_process)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Cattrs 结构化失败 (key: {key}),返回原始值。", e=e)
|
logger.debug(
|
||||||
|
f"配置项类型转换 MODULE: [<u><y>{self.module}</y></u>] | "
|
||||||
|
f"KEY: [<u><y>{key}</y></u>] 的自定义解析器失败,将使用原始值",
|
||||||
|
e=e,
|
||||||
|
)
|
||||||
|
return value_to_process
|
||||||
|
|
||||||
return value_to_process
|
if not build_model or not cfg.type:
|
||||||
|
return value_to_process
|
||||||
|
|
||||||
|
try:
|
||||||
|
if _is_pydantic_type(cfg.type):
|
||||||
|
parsed_value = parse_as(cfg.type, value_to_process)
|
||||||
|
return parsed_value
|
||||||
|
else:
|
||||||
|
structured_value = cattrs.structure(value_to_process, cfg.type)
|
||||||
|
return structured_value
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(
|
||||||
|
f"❌ 配置项 '{self.module}.{key}' 自动类型转换失败 "
|
||||||
|
f"(目标类型: {cfg.type}),将返回原始值。请检查配置文件格式。错误: {e}",
|
||||||
|
e=e,
|
||||||
|
)
|
||||||
|
return value_to_process
|
||||||
|
|
||||||
def to_dict(self, **kwargs):
|
def to_dict(self, **kwargs):
|
||||||
return model_dump(self, **kwargs)
|
return model_dump(self, **kwargs)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user