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

1# cython: language_level = 3 # noqa: ERA001 

2 

3 

4""" 

5CBOR配置文件处理器 

6 

7.. versionadded:: 0.3.0 

8""" 

9 

10from typing import IO 

11from typing import Any 

12from typing import override 

13 

14from ..abc import ABCConfigFile 

15from ..basic.core import ConfigFile 

16from ..errors import DependencyNotFoundError 

17from ..main import BasicLocalFileConfigSL 

18 

19try: 

20 # noinspection PyPackageRequirements, PyUnresolvedReferences 

21 import cbor2 

22except ImportError: 

23 dependency = "cbor2" 

24 raise DependencyNotFoundError(dependency) from None 

25 

26 

27class CBOR2SL(BasicLocalFileConfigSL): 

28 """CBOR格式处理器""" 

29 

30 @property 

31 @override 

32 def processor_reg_name(self) -> str: 

33 return "cbor" 

34 

35 @property 

36 @override 

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

38 return (".cbor",) 

39 

40 supported_file_classes = [ConfigFile] # noqa: RUF012 

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

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

43 

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) 

50 

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) 

55 

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

57 

58 

59__all__ = ("CBOR2SL",)