config.basic.sequence

序列类型配置数据实现

在 0.2.0 版本加入.

Classes

SequenceConfigData

序列配置数据

StringConfigData

字符/字节串配置数据

Module Contents

class SequenceConfigData(data: D | None = None)

Bases: config.basic.core.BasicIndexedConfigData[SequenceConfigData.D], collections.abc.MutableSequence[Any]

序列配置数据

在 0.1.5 版本加入.

参数:

data (D | None) -- 序列数据

__add__(other: Any) Self
__bool__() bool
__contains__(key: Any) bool
__deepcopy__(memo: dict[str, Any]) Self
__delitem__(index: Any) None
__eq__(other: Any) bool
__format__(format_spec: str) str
__getitem__(index: Any) Any
__iadd__(values)
__iter__() collections.abc.Iterator[D]
__len__() int
__mul__(other: Any) Self
__radd__(other: Any) Self
__repr__() str
__reversed__() collections.abc.Iterator[D]
__rmul__(other: Any) Self
__setitem__(index: Any, value: Any) None
__str__() str
classmethod __subclasshook__(C)
_process_path(path: config.abc.ABCPath[Any], path_checker: collections.abc.Callable[[Any, config.abc.AnyKey, config.abc.ABCPath[Any], int], BasicIndexedConfigData._process_path.X], process_return: collections.abc.Callable[[Any], BasicIndexedConfigData._process_path.Y]) BasicIndexedConfigData._process_path.X | BasicIndexedConfigData._process_path.Y

处理键路径的通用函数

参数:
  • path (ABCPath) -- 键路径

  • path_checker (Callable[(current_data: Any, current_key: ABCKey, last_path: ABCPath, path_index: int), X]) -- 检查并处理每个路径段,返回值非None时结束操作并返回值

  • process_return (Callable[(current_data: Any), Y]) -- 处理最终结果,该函数返回值会被直接返回

返回:

处理结果

返回类型:

X | Y

在 0.2.0 版本发生变更: 重命名参数 process_checkpath_checker

append(value: Any) None

S.append(value) -- append value to the end of the sequence

clear() None

S.clear() -> None -- remove all items from S

count(value: Any) int

S.count(value) -> integer -- return number of occurrences of value

delete(path: config.abc.PathLike) Self

删除路径

参数:

path (PathLike) -- 路径

返回:

返回当前实例便于链式调用

返回类型:

Self

抛出:
exists(path: config.abc.PathLike, *, ignore_wrong_type: bool = False) bool

判断路径是否存在

参数:
  • path (PathLike) -- 路径

  • ignore_wrong_type (bool) -- 忽略配置数据类型错误

返回:

路径是否存在

返回类型:

bool

抛出:

ConfigDataTypeError -- 配置数据类型错误

extend(values: collections.abc.Iterable[Any]) None

S.extend(iterable) -- extend sequence by appending elements from the iterable

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: BasicIndexedConfigData.get.V | None = None, *, return_raw_value: bool = False) BasicIndexedConfigData.get.V | Any

获取路径的值的*快照*,路径不存在时填充默认值

参数:
  • path (PathLike) -- 路径

  • default (V) -- 默认值

  • return_raw_value (bool) -- 是否获取原始值

返回:

路径的值

返回类型:

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_rawreturn_raw_value

index(*args: Any) int

S.index(value, [start, [stop]]) -> integer -- return first index of value. Raises ValueError if the value is not present.

Supporting start and stop arguments is optional, but recommended.

insert(index: int, value: Any) None

S.insert(index, value) -- insert value before index

modify(path: config.abc.PathLike, value: Any, *, allow_create: bool = True) Self

修改路径的值

参数:
  • path (PathLike) -- 路径

  • value (Any) -- 值

  • allow_create (bool) -- 是否允许创建不存在的路径,默认为True

返回:

返回当前实例便于链式调用

返回类型:

Self

抛出:

小心

value 参数未默认做深拷贝,可能导致非预期行为

注意

allow_create 时,使用与 self.data 一样的类型新建路径

pop(index: int = -1) Any

S.pop([index]) -> item -- remove and return item at index (default last). Raise IndexError if list is empty or index is out of range.

remove(value: Any) None

S.remove(value) -- remove first occurrence of value. Raise ValueError if the value is not present.

retrieve(path: config.abc.PathLike, *, return_raw_value: bool = False) Any

获取路径的值的*快照*

参数:
  • path (PathLike) -- 路径

  • return_raw_value (bool) -- 是否获取原始值,为 False 时,会将Mapping | Sequence转换为对应类

返回:

路径的值

返回类型:

Any

抛出:

在 0.2.0 版本发生变更: 重命名参数 get_rawreturn_raw_value

reverse() None

S.reverse() -- reverse IN PLACE

setdefault(path: config.abc.PathLike, default: BasicIndexedConfigData.setdefault.V | None = None, *, return_raw_value: bool = False) BasicIndexedConfigData.setdefault.V | Any

如果路径不在配置数据中则填充默认值到配置数据并返回

参数:
  • path (PathLike) -- 路径

  • default (V) -- 默认值

  • return_raw_value (bool) -- 是否获取原始值

返回:

路径的值

返回类型:

V | Any

抛出:

例子

>>> 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_rawreturn_raw_value

重命名 set_defaultsetdefault

unset(path: config.abc.PathLike) Self

确保路径不存在 (删除路径,但是找不到路径时不会报错)

参数:

path (PathLike) -- 路径

返回:

返回当前实例便于链式调用

返回类型:

Self

抛出:

在 0.1.2 版本加入.

__abc_tpflags__ = 32
__class_getitem__
__hash__ = None
__slots__ = ()
_data: SequenceConfigData.D
_read_only: bool | None = False
data: SequenceConfigData.D

配置的原始数据*快照*

property data_read_only: bool

配置数据是否为只读

返回:

配置数据是否为只读

返回类型:

bool | None

在 0.1.3 版本加入.

在 0.1.5 版本发生变更: 改为抽象属性

property read_only: bool | None

配置数据是否为 只读模式

返回:

配置数据是否为 只读模式

返回类型:

bool | None

class StringConfigData(data: D | None = None)

Bases: config.basic.core.BasicSingleConfigData[StringConfigData.D]

字符/字节串配置数据

参数:

data (D | None) -- 配置数据

__add__(other: Any) Self
__bool__() bool
__contains__(key: Any) bool
__deepcopy__(memo: dict[str, Any]) Self
__delitem__(key: Any) None
__eq__(other: Any) bool
__format__(format_spec: str) str
__getitem__(item: Any) D
__iter__() collections.abc.Iterator[D]
__len__() int
__mul__(other: Any) Self
__repr__() str
__reversed__() Any
__setitem__(key: Any, value: D) None
__str__() str
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 版本发生变更: 现在会自适应初始化参数

__hash__ = None
__slots__ = ()
_data: StringConfigData.D
_read_only: bool | None = False
property data: D

配置的原始数据

小心

未默认做深拷贝,可能导致非预期的行为

在 0.3.0 版本发生变更: 现在是可写属性

property data_read_only: False

配置数据是否为只读

返回:

配置数据是否为只读

返回类型:

Literal[False]

备注

该配置数据类始终认为配置数据非只读,使其能正确作为配置数据容器使用

property read_only: bool | None

配置数据是否为 只读模式

返回:

配置数据是否为 只读模式

返回类型:

bool | None