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

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

5Properties格式配置文件处理器 

6 

7.. versionadded:: 0.3.0 

8""" 

9 

10from typing import Any 

11from typing import override 

12 

13from .._protocols import SupportsReadAndReadline 

14from .._protocols import SupportsWrite 

15from ..abc import ABCConfigFile 

16from ..basic.core import ConfigFile 

17from ..basic.jproperties import JPropertiesConfigData 

18from ..errors import DependencyNotFoundError 

19from ..main import BasicLocalFileConfigSL 

20 

21try: 

22 # noinspection PyPackageRequirements, PyUnresolvedReferences 

23 import jproperties # type: ignore[import-not-found] 

24except ImportError: 

25 dependency = "jproperties" 

26 raise DependencyNotFoundError(dependency) from None 

27 

28 

29class JPropertiesSL(BasicLocalFileConfigSL): 

30 """Properties格式处理器""" 

31 

32 @property 

33 @override 

34 def processor_reg_name(self) -> str: 

35 return "jproperties" 

36 

37 @property 

38 @override 

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

40 return (".properties",) 

41 

42 supported_file_classes = [ConfigFile] # noqa: RUF012 

43 _s_open_kwargs = {"mode": "wb"} # noqa: RUF012 

44 _l_open_kwargs = {"mode": "rb"} # noqa: RUF012 

45 

46 @override 

47 def save_file( 

48 self, 

49 config_file: ABCConfigFile[JPropertiesConfigData], 

50 target_file: SupportsWrite[bytes], 

51 *merged_args: Any, 

52 **merged_kwargs: Any, 

53 ) -> None: 

54 with self.raises(): 

55 config_file.config.data.store(target_file, *merged_args, **merged_kwargs) 

56 

57 @override 

58 def load_file( 

59 self, source_file: SupportsReadAndReadline[bytes], *merged_args: Any, **merged_kwargs: Any 

60 ) -> ConfigFile[JPropertiesConfigData]: 

61 with self.raises(): 

62 data = jproperties.Properties() 

63 data.load(source_file, *merged_args, **merged_kwargs) 

64 

65 return ConfigFile(JPropertiesConfigData(data), config_format=self.reg_name) 

66 

67 

68__all__ = ("JPropertiesSL",)