Coverage for src / c41811 / config / processor / pyyaml.py: 100%
30 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-09 01:06 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-09 01:06 +0000
1# cython: language_level = 3 # noqa: ERA001
4"""基于PyYAML的YAML格式处理器"""
6from typing import Any
7from typing import override
9from .._protocols import SupportsReadAndReadline
10from .._protocols import SupportsWrite
11from ..abc import ABCConfigFile
12from ..basic.core import ConfigFile
13from ..errors import DependencyNotFoundError
14from ..main import BasicLocalFileConfigSL
16try:
17 # noinspection PyPackageRequirements, PyUnresolvedReferences
18 import yaml
19except ImportError:
20 dependency = "PyYAML"
21 raise DependencyNotFoundError(dependency) from None
24class PyYamlSL(BasicLocalFileConfigSL):
25 """基于PyYAML的YAML格式处理器"""
27 @property
28 @override
29 def processor_reg_name(self) -> str:
30 return "yaml"
32 @property
33 @override
34 def supported_file_patterns(self) -> tuple[str, ...]:
35 return ".yaml", ".yml"
37 supported_file_classes = [ConfigFile] # noqa: RUF012
39 @override
40 def save_file(
41 self, config_file: ABCConfigFile[Any], target_file: SupportsWrite[str], *merged_args: Any, **merged_kwargs: Any
42 ) -> None:
43 with self.raises():
44 yaml.safe_dump(config_file.config.data, target_file, *merged_args, **merged_kwargs)
46 @override
47 def load_file(
48 self, source_file: SupportsReadAndReadline[str], *merged_args: Any, **merged_kwargs: Any
49 ) -> ConfigFile[Any]:
50 with self.raises():
51 data = yaml.safe_load(source_file)
53 return ConfigFile(data, config_format=self.reg_name)
56__all__ = ("PyYamlSL",)