Coverage for src / c41811 / config / processor / cbor2.py: 100%
31 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"""
5CBOR配置文件处理器
7.. versionadded:: 0.3.0
8"""
10from typing import IO
11from typing import Any
12from typing import override
14from ..abc import ABCConfigFile
15from ..basic.core import ConfigFile
16from ..errors import DependencyNotFoundError
17from ..main import BasicLocalFileConfigSL
19try:
20 # noinspection PyPackageRequirements, PyUnresolvedReferences
21 import cbor2
22except ImportError:
23 dependency = "cbor2"
24 raise DependencyNotFoundError(dependency) from None
27class CBOR2SL(BasicLocalFileConfigSL):
28 """CBOR格式处理器"""
30 @property
31 @override
32 def processor_reg_name(self) -> str:
33 return "cbor"
35 @property
36 @override
37 def supported_file_patterns(self) -> tuple[str, ...]:
38 return (".cbor",)
40 supported_file_classes = [ConfigFile] # noqa: RUF012
41 _s_open_kwargs = {"mode": "wb"} # noqa: RUF012
42 _l_open_kwargs = {"mode": "rb"} # noqa: RUF012
44 @override
45 def save_file(
46 self, config_file: ABCConfigFile[Any], target_file: IO[bytes], *merged_args: Any, **merged_kwargs: Any
47 ) -> None:
48 with self.raises():
49 cbor2.dump(config_file.config.data, target_file, *merged_args, **merged_kwargs)
51 @override
52 def load_file(self, source_file: IO[bytes], *merged_args: Any, **merged_kwargs: Any) -> ConfigFile[Any]:
53 with self.raises():
54 data = cbor2.load(source_file, *merged_args, **merged_kwargs)
56 return ConfigFile(data, config_format=self.reg_name)
59__all__ = ("CBOR2SL",)