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

1# cython: language_level = 3 # noqa: ERA001 

2 

3 

4"""Json配置文件处理器""" 

5 

6import json 

7from typing import Any 

8from typing import override 

9 

10from .._protocols import SupportsReadAndReadline 

11from .._protocols import SupportsWrite 

12from ..abc import ABCConfigFile 

13from ..basic.core import ConfigFile 

14from ..main import BasicLocalFileConfigSL 

15 

16 

17class JsonSL(BasicLocalFileConfigSL): 

18 """json格式处理器""" 

19 

20 @property 

21 @override 

22 def processor_reg_name(self) -> str: 

23 return "json" 

24 

25 @property 

26 @override 

27 def supported_file_patterns(self) -> tuple[str, ...]: 

28 return (".json",) 

29 

30 supported_file_classes = [ConfigFile] # noqa: RUF012 

31 

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) 

38 

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) 

45 

46 return ConfigFile(data, config_format=self.reg_name) 

47 

48 

49__all__ = ("JsonSL",)