Coverage for src / c41811 / config / processor / hjson.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"""
5HJson配置文件处理器
7.. versionadded:: 0.3.0
8"""
10from typing import Any
11from typing import override
13from .._protocols import SupportsReadAndReadline
14from .._protocols import SupportsWrite
15from ..abc import ABCConfigFile
16from ..basic.core import ConfigFile
17from ..errors import DependencyNotFoundError
18from ..main import BasicLocalFileConfigSL
20try:
21 # noinspection PyPackageRequirements, PyUnresolvedReferences
22 import hjson # type: ignore[import-not-found]
23except ImportError:
24 dependency = "hjson"
25 raise DependencyNotFoundError(dependency) from None
28class HJsonSL(BasicLocalFileConfigSL):
29 """基于hjson的json处理器"""
31 @property
32 @override
33 def processor_reg_name(self) -> str:
34 return "human_json"
36 @property
37 @override
38 def supported_file_patterns(self) -> tuple[str, ...]:
39 return ".hjson", ".json"
41 supported_file_classes = [ConfigFile] # noqa: RUF012
43 @override
44 def save_file(
45 self, config_file: ABCConfigFile[Any], target_file: SupportsWrite[str], *merged_args: Any, **merged_kwargs: Any
46 ) -> None:
47 with self.raises():
48 hjson.dump(config_file.config.data, target_file, *merged_args, **merged_kwargs)
50 @override
51 def load_file(
52 self, source_file: SupportsReadAndReadline[str], *merged_args: Any, **merged_kwargs: Any
53 ) -> ConfigFile[Any]:
54 with self.raises():
55 data = hjson.load(source_file, *merged_args, **merged_kwargs)
57 return ConfigFile(data, config_format=self.reg_name)
60__all__ = ("HJsonSL",)