Coverage for src / c41811 / config / processor / jproperties.py: 100%
34 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-06 06:04 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-06 06:04 +0000
1# cython: language_level = 3 # noqa: ERA001
4"""
5Properties格式配置文件处理器
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 ..basic.jproperties import JPropertiesConfigData
18from ..errors import DependencyNotFoundError
19from ..main import BasicLocalFileConfigSL
21try:
22 # noinspection PyPackageRequirements, PyUnresolvedReferences
23 import jproperties # type: ignore[import-not-found]
24except ImportError:
25 dependency = "jproperties"
26 raise DependencyNotFoundError(dependency) from None
29class JPropertiesSL(BasicLocalFileConfigSL):
30 """Properties格式处理器"""
32 @property
33 @override
34 def processor_reg_name(self) -> str:
35 return "jproperties"
37 @property
38 @override
39 def supported_file_patterns(self) -> tuple[str, ...]:
40 return (".properties",)
42 supported_file_classes = [ConfigFile] # noqa: RUF012
43 _s_open_kwargs = {"mode": "wb"} # noqa: RUF012
44 _l_open_kwargs = {"mode": "rb"} # noqa: RUF012
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)
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)
65 return ConfigFile(JPropertiesConfigData(data), config_format=self.reg_name)
68__all__ = ("JPropertiesSL",)