Coverage for src / c41811 / config / processor / pickle.py: 100%
30 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-09 01:06 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-09 01:06 +0000
1# cython: language_level = 3 # noqa: ERA001
4"""Pickle配置文件处理器"""
6import pickle
7from typing import Any
8from typing import override
10from .._protocols import SupportsReadAndReadline
11from .._protocols import SupportsWrite
12from ..abc import ABCConfigFile
13from ..basic.core import ConfigFile
14from ..main import BasicLocalFileConfigSL
17class PickleSL(BasicLocalFileConfigSL):
18 """
19 pickle格式处理器
21 .. versionchanged:: 0.2.0
22 添加 ``.pkl`` 文件后缀支持
23 """
25 @property
26 @override
27 def processor_reg_name(self) -> str:
28 return "pickle"
30 @property
31 @override
32 def supported_file_patterns(self) -> tuple[str, ...]:
33 return ".pickle", ".pkl"
35 supported_file_classes = [ConfigFile] # noqa: RUF012
36 _s_open_kwargs = {"mode": "wb"} # noqa: RUF012
37 _l_open_kwargs = {"mode": "rb"} # noqa: RUF012
39 @override
40 def save_file(
41 self,
42 config_file: ABCConfigFile[Any],
43 target_file: SupportsWrite[bytes],
44 *merged_args: Any,
45 **merged_kwargs: Any,
46 ) -> None:
47 with self.raises():
48 pickle.dump(config_file.config.data, target_file, *merged_args, **merged_kwargs)
50 @override
51 def load_file(
52 self,
53 source_file: SupportsReadAndReadline[bytes],
54 *merged_args: Any,
55 **merged_kwargs: Any,
56 ) -> ConfigFile[Any]:
57 with self.raises():
58 data = pickle.load(source_file, *merged_args, **merged_kwargs) # noqa: S301
60 return ConfigFile(data, config_format=self.reg_name)
63__all__ = ("PickleSL",)