Coverage for src / c41811 / config / processor / rtoml.py: 100%

33 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""" 

5基于rtoml的TOML格式处理器" 

6 

7.. versionadded:: 0.3.0 

8""" 

9 

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 

16 

17from ..abc import ABCConfigFile 

18from ..basic.core import ConfigFile 

19from ..basic.mapping import MappingConfigData 

20from ..errors import DependencyNotFoundError 

21from ..main import BasicLocalFileConfigSL 

22 

23try: 

24 # noinspection PyPackageRequirements, PyUnresolvedReferences 

25 import rtoml 

26except ImportError: 

27 dependency = "rtoml" 

28 raise DependencyNotFoundError(dependency) from None 

29 

30 

31class RTomlSL(BasicLocalFileConfigSL): 

32 """基于rtoml的TOML格式处理器""" 

33 

34 @property 

35 @override 

36 def processor_reg_name(self) -> str: 

37 return "rtoml" 

38 

39 @property 

40 @override 

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

42 return (".toml",) 

43 

44 supported_file_classes = [ConfigFile] # noqa: RUF012 

45 

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) 

56 

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) 

66 

67 return cast( 

68 ConfigFile[MappingConfigData[MutableMapping[str, Any]]], 

69 ConfigFile(data, config_format=self.reg_name), 

70 ) 

71 

72 

73__all__ = ("RTomlSL",)