config.path =========== .. py:module:: config.path .. autoapi-nested-parse:: 配置数据路径 Classes ------- .. autoapisummary:: config.path.AttrKey config.path.IndexKey config.path.Path config.path.PathSyntaxParser Module Contents --------------- .. py:class:: AttrKey(key: str, meta: str | None = None) Bases: :py:obj:`IndexMixin`\ [\ :py:obj:`str`\ , :py:obj:`collections.abc.Mapping`\ [\ :py:obj:`str`\ , :py:obj:`Any`\ ]\ ], :py:obj:`config.abc.ABCKey`\ [\ :py:obj:`str`\ , :py:obj:`collections.abc.Mapping`\ [\ :py:obj:`str`\ , :py:obj:`Any`\ ]\ ] 属性键 :param key: 键名 :type key: str :param meta: 元信息 :type meta: str | None :raise TypeError: key不为str时抛出 .. py:method:: __contains_inner_element__(data: collections.abc.Mapping[Any, Any]) -> bool 是否包含内层元素 :param data: 配置数据 :type data: D :return: 是否包含内层配置数据 :rtype: bool .. versionadded:: 0.1.4 .. py:method:: __deepcopy__(memo: dict[Any, Any]) -> Self .. py:method:: __delete_inner_element__(data: D) -> None 删除内层元素 :param data: 配置数据 :type data: D .. versionadded:: 0.1.4 .. py:method:: __eq__(other: Any) -> bool .. py:method:: __get_inner_element__(data: D) -> D 获取内层元素 :param data: 配置数据 :type data: D :return: 内层配置数据 :rtype: D .. versionadded:: 0.1.4 .. py:method:: __hash__() -> int .. py:method:: __len__() -> int .. py:method:: __repr__() -> str .. py:method:: __set_inner_element__(data: D, value: Any) -> None 设置内层元素 :param data: 配置数据 :type data: D :param value: 值 :type value: Any .. versionadded:: 0.1.4 .. py:method:: __str__() -> str .. py:method:: __supports__(data: Any) -> tuple[Any, Ellipsis] 检查此键是否支持该配置数据 返回缺失的协议 :param data: 配置数据 :type data: Any :return: 此键缺失支持的数据类型 :rtype: tuple .. versionadded:: 0.1.4 .. py:method:: __supports_modify__(data: Any) -> tuple[Any, Ellipsis] 检查此键是否支持修改该配置数据 返回缺失的协议 :param data: 配置数据 :type data: Any :return: 此键缺失支持的数据类型 :rtype: tuple .. versionadded:: 0.1.4 .. py:method:: unparse() -> str 还原为可被解析的字符串 .. versionadded:: 0.1.1 .. py:attribute:: __slots__ :value: () .. py:attribute:: _key :type: str .. py:attribute:: _meta :type: str | None :value: None .. py:property:: key :type: K 键 .. py:property:: meta :type: str | None 元信息 .. versionadded:: 0.2.0 .. py:class:: IndexKey(key: int, meta: str | None = None) Bases: :py:obj:`IndexMixin`\ [\ :py:obj:`int`\ , :py:obj:`collections.abc.Sequence`\ [\ :py:obj:`Any`\ ]\ ], :py:obj:`config.abc.ABCKey`\ [\ :py:obj:`int`\ , :py:obj:`collections.abc.Sequence`\ [\ :py:obj:`Any`\ ]\ ] 下标键 :param key: 索引值 :type key: int :param meta: 元信息 :type meta: str :raise TypeError: key不为int时抛出 .. py:method:: __contains_inner_element__(data: collections.abc.Sequence[Any]) -> bool 是否包含内层元素 :param data: 配置数据 :type data: D :return: 是否包含内层配置数据 :rtype: bool .. versionadded:: 0.1.4 .. py:method:: __deepcopy__(memo: dict[Any, Any]) -> Self .. py:method:: __delete_inner_element__(data: D) -> None 删除内层元素 :param data: 配置数据 :type data: D .. versionadded:: 0.1.4 .. py:method:: __eq__(other: Any) -> bool .. py:method:: __get_inner_element__(data: D) -> D 获取内层元素 :param data: 配置数据 :type data: D :return: 内层配置数据 :rtype: D .. versionadded:: 0.1.4 .. py:method:: __hash__() -> int .. py:method:: __repr__() -> str .. py:method:: __set_inner_element__(data: D, value: Any) -> None 设置内层元素 :param data: 配置数据 :type data: D :param value: 值 :type value: Any .. versionadded:: 0.1.4 .. py:method:: __str__() -> str .. py:method:: __supports__(data: Any) -> tuple[Any, Ellipsis] 检查此键是否支持该配置数据 返回缺失的协议 :param data: 配置数据 :type data: Any :return: 此键缺失支持的数据类型 :rtype: tuple .. versionadded:: 0.1.4 .. py:method:: __supports_modify__(data: Any) -> tuple[Any, Ellipsis] 检查此键是否支持修改该配置数据 返回缺失的协议 :param data: 配置数据 :type data: Any :return: 此键缺失支持的数据类型 :rtype: tuple .. versionadded:: 0.1.4 .. py:method:: unparse() -> str 还原为可被解析的字符串 .. versionadded:: 0.1.1 .. py:attribute:: __slots__ :value: () .. py:attribute:: _key :type: int .. py:attribute:: _meta :type: str | None :value: None .. py:property:: key :type: K 键 .. py:property:: meta :type: str | None 元信息 .. versionadded:: 0.2.0 .. py:class:: Path Bases: :py:obj:`config.abc.ABCPath`\ [\ :py:obj:`AttrKey | IndexKey`\ ] 配置数据路径 .. py:method:: from_locate(locate: collections.abc.Iterable[str | int]) -> Self :classmethod: 从列表解析路径 :param locate: 键列表 :type locate: Iterable[str | int] :return: 解析后的路径 :rtype: Self .. py:method:: from_str(string: str) -> Self :classmethod: 从字符串解析路径 :param string: 路径字符串 :type string: str :return: 解析后的路径 :rtype: Self .. py:method:: to_locate() -> list[str | int] 转换为列表 .. versionadded:: 0.1.1 .. py:method:: unparse() -> str .. py:class:: PathSyntaxParser 路径语法解析器 .. py:method:: parse(string: str) -> list[AttrKey | IndexKey] :classmethod: 解析字符串为键列表 :param string: 待解析字符串 :type string: str :return: 键列表 :rtype: list[AttrKey | IndexKey] .. py:method:: tokenize(string: str) -> tuple[str, Ellipsis] :staticmethod: 将字符串分词为以\开头的有意义片段 :param string: 待分词字符串 :type string: str :return: 分词结果 :rtype: tuple[str, ...] .. note:: 可以省略字符串开头的 ``\.`` 例如: ``r"\.first\.second\.third“`` 可以简写为 ``r"first\.second\.third"`` .. versionchanged:: 0.1.4 允许省略字符串开头的 ``\.`` 更改返回值类型为 ``tuple[str, ...]`` 添加缓存