Coverage for src / c41811 / config / processor / rtoml.py: 100%
33 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-06 06:04 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-06 06:04 +0000
1# cython: language_level = 3 # noqa: ERA001
4"""
5基于rtoml的TOML格式处理器"
7.. versionadded:: 0.3.0
8"""
10from collections.abc import Mapping
11from collections.abc import MutableMapping
12from typing import Any
13from typing import TextIO
14from typing import cast
15from typing import override
17from ..abc import ABCConfigFile
18from ..basic.core import ConfigFile
19from ..basic.mapping import MappingConfigData
20from ..errors import DependencyNotFoundError
21from ..main import BasicLocalFileConfigSL
23try:
24 # noinspection PyPackageRequirements, PyUnresolvedReferences
25 import rtoml
26except ImportError:
27 dependency = "rtoml"
28 raise DependencyNotFoundError(dependency) from None
31class RTomlSL(BasicLocalFileConfigSL):
32 """基于rtoml的TOML格式处理器"""
34 @property
35 @override
36 def processor_reg_name(self) -> str:
37 return "rtoml"
39 @property
40 @override
41 def supported_file_patterns(self) -> tuple[str, ...]:
42 return (".toml",)
44 supported_file_classes = [ConfigFile] # noqa: RUF012
46 @override
47 def save_file(
48 self,
49 config_file: ABCConfigFile[MappingConfigData[Mapping[str, Any]]],
50 target_file: TextIO,
51 *merged_args: Any,
52 **merged_kwargs: Any,
53 ) -> None:
54 with self.raises():
55 rtoml.dump(config_file.config.data, target_file, *merged_args, **merged_kwargs)
57 @override
58 def load_file(
59 self,
60 source_file: TextIO,
61 *merged_args: Any,
62 **merged_kwargs: Any,
63 ) -> ConfigFile[MappingConfigData[MutableMapping[str, Any]]]:
64 with self.raises():
65 data = rtoml.load(source_file, *merged_args, **merged_kwargs)
67 return cast(
68 ConfigFile[MappingConfigData[MutableMapping[str, Any]]],
69 ConfigFile(data, config_format=self.reg_name),
70 )
73__all__ = ("RTomlSL",)