Coverage for src / c41811 / config / processor / json.py: 100%
28 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"""Json配置文件处理器"""
6import json
7from typing import Any
8from typing import override
10from .._protocols import SupportsReadAndReadline
11from .._protocols import SupportsWrite
12from ..abc import ABCConfigFile
13from ..basic.core import ConfigFile
14from ..main import BasicLocalFileConfigSL
17class JsonSL(BasicLocalFileConfigSL):
18 """json格式处理器"""
20 @property
21 @override
22 def processor_reg_name(self) -> str:
23 return "json"
25 @property
26 @override
27 def supported_file_patterns(self) -> tuple[str, ...]:
28 return (".json",)
30 supported_file_classes = [ConfigFile] # noqa: RUF012
32 @override
33 def save_file(
34 self, config_file: ABCConfigFile[Any], target_file: SupportsWrite[str], *merged_args: Any, **merged_kwargs: Any
35 ) -> None:
36 with self.raises():
37 json.dump(config_file.config.data, target_file, *merged_args, **merged_kwargs)
39 @override
40 def load_file(
41 self, source_file: SupportsReadAndReadline[str], *merged_args: Any, **merged_kwargs: Any
42 ) -> ConfigFile[Any]:
43 with self.raises():
44 data = json.load(source_file, *merged_args, **merged_kwargs)
46 return ConfigFile(data, config_format=self.reg_name)
49__all__ = ("JsonSL",)