config.basic.component¶
组件配置数据实现
在 0.2.0 版本加入.
Classes¶
组件配置数据 |
|
组件成员 |
|
组件元数据 |
|
组件顺序 |
Module Contents¶
- class ComponentConfigData(meta: M | None = None, members: collections.abc.Mapping[str, D] | None = None)¶
Bases:
config.basic.core.BasicConfigData[ComponentConfigData.D],config.abc.ABCIndexedConfigData[ComponentConfigData.D]组件配置数据
在 0.2.0 版本加入.
- 参数:
meta (M | None) -- 组件元数据
members (Mapping[str, D] | None) -- 组件成员
- __getitem__(index: Any) D¶
- __iter__() collections.abc.Iterator[str]¶
- _resolve_members(path: ComponentConfigData._resolve_members.P, order: list[str], processor: collections.abc.Callable[[ComponentConfigData._resolve_members.P, D], ComponentConfigData._resolve_members.R], exception: Exception) ComponentConfigData._resolve_members.R¶
逐个尝试解析成员配置数据
- 参数:
- 返回:
处理结果
- 返回类型:
R
重要
针对
RequiredPathNotFoundError,ConfigDataTypeError做了特殊处理, 多个成员都抛出其一时最终仅抛出其中KeyInfo.index最大的
- delete(path: config.abc.PathLike, *args: Any, **kwargs: Any) Self¶
删除路径
- 参数:
path (PathLike) -- 路径
- 返回:
返回当前实例便于链式调用
- 返回类型:
Self
- 抛出:
ConfigDataReadOnlyError -- 配置数据为只读
ConfigDataTypeError -- 配置数据类型错误
RequiredPathNotFoundError -- 需求的键不存在
- exists(path: config.abc.PathLike, *args: Any, **kwargs: Any) bool¶
判断路径是否存在
- 参数:
- 返回:
路径是否存在
- 返回类型:
- 抛出:
ConfigDataTypeError -- 配置数据类型错误
- freeze(freeze: bool | None = None) Self¶
冻结配置数据 (切换只读模式)
- 参数:
freeze (bool | None) -- 是否冻结配置数据, 为
None时进行切换- 返回:
返回当前实例便于链式调用
- 返回类型:
Self
在 0.1.5 版本加入.
- classmethod from_data(*args: Any, **kwargs: Any) Self¶
提供创建同类型配置数据的快捷方式
- 返回:
新的配置数据
- 返回类型:
Self
备注
套壳
__init__主要是为了方便内部快速创建与传入的ABCConfigData同类型的对象例如:
type(instance)(data)
可以简写为
instance.from_data(data)
在 0.2.0 版本发生变更: 现在会自适应初始化参数
- get(path: config.abc.PathLike, default: ComponentConfigData.get.V | None = None, *args: Any, return_raw_value: bool = False, **kwargs: Any) ComponentConfigData.get.V | Any¶
获取路径的值的*快照*,路径不存在时填充默认值
- 参数:
- 返回:
路径的值
- 返回类型:
V | Any
- 抛出:
ConfigDataTypeError -- 配置数据类型错误
例子¶
>>> from c41811.config import MappingConfigData >>> data = MappingConfigData({"key": "value"})
路径存在时返回值
>>> data.get("key") 'value'
路径不存在时返回默认值None
>>> print(data.get("not exists")) None
自定义默认值
>>> data.get("with default", default="default value") 'default value'
在 0.2.0 版本发生变更: 重命名参数
get_raw为return_raw_value
- modify(path: config.abc.PathLike, *args: Any, **kwargs: Any) Self¶
修改路径的值
- 参数:
- 返回:
返回当前实例便于链式调用
- 返回类型:
Self
- 抛出:
ConfigDataReadOnlyError -- 配置数据为只读
ConfigDataTypeError -- 配置数据类型错误
RequiredPathNotFoundError -- 需求的键不存在
小心
value参数未默认做深拷贝,可能导致非预期行为注意
allow_create时,使用与 self.data 一样的类型新建路径
- retrieve(path: config.abc.PathLike, *args: Any, **kwargs: Any) Any¶
获取路径的值的*快照*
- 参数:
- 返回:
路径的值
- 返回类型:
Any
- 抛出:
ConfigDataTypeError -- 配置数据类型错误
RequiredPathNotFoundError -- 需求的键不存在
在 0.2.0 版本发生变更: 重命名参数
get_raw为return_raw_value
- setdefault(path: config.abc.PathLike, default: ComponentConfigData.setdefault.V | None = None, *args: Any, return_raw_value: bool = False, **kwargs: Any) ComponentConfigData.setdefault.V | Any¶
如果路径不在配置数据中则填充默认值到配置数据并返回
- 参数:
- 返回:
路径的值
- 返回类型:
V | Any
- 抛出:
ConfigDataReadOnlyError -- 配置数据为只读
ConfigDataTypeError -- 配置数据类型错误
例子¶
>>> from c41811.config import MappingConfigData >>> data = MappingConfigData({"key": "value"})
路径存在时返回值
>>> data.setdefault("key") 'value'
路径不存在时返回默认值None并填充到原始数据
>>> print(data.setdefault("not exists")) None >>> data MappingConfigData({'key': 'value', 'not exists': None})
自定义默认值
>>> data.setdefault("with default", default="default value") 'default value' >>> data MappingConfigData({'key': 'value', 'not exists': None, 'with default': 'default value'})
在 0.2.0 版本发生变更: 重命名参数
get_raw为return_raw_value重命名
set_default为setdefault
- unset(path: config.abc.PathLike, *args: Any, **kwargs: Any) Self¶
确保路径不存在 (删除路径,但是找不到路径时不会报错)
- 参数:
path (PathLike) -- 路径
- 返回:
返回当前实例便于链式调用
- 返回类型:
Self
- 抛出:
ConfigDataReadOnlyError -- 配置数据为只读
ConfigDataTypeError -- 配置数据类型错误
在 0.1.2 版本加入.
- __hash__ = None¶
- __slots__ = ()¶
- _filename2meta: dict[str, ComponentMember]¶
- _members: collections.abc.Mapping[str, D] = None¶
- _meta: M = None¶
- property alias2filename: collections.abc.Mapping[str, str]¶
别名到文件名的映射
- property filename2meta: collections.abc.Mapping[str, ComponentMember]¶
文件名到成员元信息的映射
- property members: collections.abc.Mapping[str, D]¶
组件成员
小心
未默认做深拷贝,可能导致非预期行为
- property meta: M¶
组件元信息
小心
未默认做深拷贝,可能导致非预期行为
除非你知道你在做什么,不要轻易修改!
由于
ComponentMeta仅提供一个通用的接口, 直接修改其中元数据而不修改config字段 *可能* 会导致SL与元数据的不同步, 这取决于ComponentSL所取用的元数据解析器的行为
- class ComponentMember¶
组件成员
在 0.2.0 版本加入.
- class ComponentMeta¶
组件元数据
在 0.2.0 版本加入.
- config: ComponentMeta.D¶
- members: list[ComponentMember] = []¶
- orders: ComponentOrders¶
- parser: config.abc.ABCMetaParser[Any, Any] | None = None¶