mirror of https://github.com/Mai-with-u/MaiBot.git
fix:处理特殊类型
parent
93152b0c8d
commit
ca55aca750
|
|
@ -1,5 +1,5 @@
|
||||||
from dataclasses import dataclass, fields, MISSING
|
from dataclasses import dataclass, fields, MISSING
|
||||||
from typing import TypeVar, Type, Any, get_origin, get_args
|
from typing import TypeVar, Type, Any, get_origin, get_args, Literal
|
||||||
|
|
||||||
T = TypeVar("T", bound="ConfigBase")
|
T = TypeVar("T", bound="ConfigBase")
|
||||||
|
|
||||||
|
|
@ -102,6 +102,18 @@ class ConfigBase:
|
||||||
return {cls._convert_field(k, key_type): cls._convert_field(v, value_type) for k, v in value.items()}
|
return {cls._convert_field(k, key_type): cls._convert_field(v, value_type) for k, v in value.items()}
|
||||||
|
|
||||||
# 处理基础类型,例如 int, str 等
|
# 处理基础类型,例如 int, str 等
|
||||||
|
if field_origin_type is type(None) and value is None: #处理Optional类型
|
||||||
|
return None
|
||||||
|
|
||||||
|
# 处理Literal类型
|
||||||
|
if field_origin_type is Literal or get_origin(field_type) is Literal:
|
||||||
|
# 获取Literal的允许值
|
||||||
|
allowed_values = get_args(field_type)
|
||||||
|
if value in allowed_values:
|
||||||
|
return value
|
||||||
|
else:
|
||||||
|
raise TypeError(f"Value '{value}' is not in allowed values {allowed_values} for Literal type")
|
||||||
|
|
||||||
if field_type is Any or isinstance(value, field_type):
|
if field_type is Any or isinstance(value, field_type):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[inner]
|
[inner]
|
||||||
version = "2.3.0"
|
version = "2.4.0"
|
||||||
|
|
||||||
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
|
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
|
||||||
#如果你想要修改配置文件,请在修改后将version的值进行变更
|
#如果你想要修改配置文件,请在修改后将version的值进行变更
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue