|
1 | | -from os import PathLike |
2 | | -from typing import ContextManager |
3 | | - |
4 | | -from ..cache import BaseCache as BaseCache |
5 | | -from ..controller import CacheController as CacheController |
| 1 | +from cachecontrol.cache import SeparateBodyBaseCache |
| 2 | +from datetime import datetime |
| 3 | +from filelock import BaseFileLock |
| 4 | +from pathlib import Path |
| 5 | +from typing import IO, ContextManager |
6 | 6 |
|
7 | 7 | class _LockClass: |
8 | 8 | path: str |
9 | 9 |
|
10 | 10 | _lock_class = ContextManager[_LockClass] |
11 | 11 |
|
12 | | -class FileCache(BaseCache): |
| 12 | +class _FileCacheMixin: |
13 | 13 | directory: str |
14 | 14 | forever: bool |
15 | 15 | filemode: int |
16 | 16 | dirmode: int |
17 | 17 | lock_class: _lock_class | None = None |
18 | 18 | def __init__( |
19 | 19 | self, |
20 | | - directory: str | PathLike[str], |
21 | | - forever: bool = ..., |
22 | | - filemode: int = ..., |
23 | | - dirmode: int = ..., |
24 | | - use_dir_lock: bool | None = ..., |
25 | | - lock_class: _lock_class | None = ..., |
| 20 | + directory: str | Path, |
| 21 | + forever: bool = False, |
| 22 | + filemode: int = 384, |
| 23 | + dirmode: int = 448, |
| 24 | + lock_class: type[BaseFileLock] | None = None, |
26 | 25 | ) -> None: ... |
27 | 26 | @staticmethod |
28 | 27 | def encode(x: str) -> str: ... |
29 | | - def get(self, key: str) -> None | bytes: ... |
30 | | - def set(self, key: str, value: bytes, expires: int | None = None) -> None: ... |
| 28 | + def get(self, key: str) -> bytes | None: ... |
| 29 | + def set(self, key: str, value: bytes, expires: int | datetime | None = None) -> None: ... |
| 30 | + |
| 31 | +class SeparateBodyFileCache(_FileCacheMixin, SeparateBodyBaseCache): |
| 32 | + def get_body(self, key: str) -> IO[bytes] | None: ... |
| 33 | + def set_body(self, key: str, body: bytes) -> None: ... |
31 | 34 | def delete(self, key: str) -> None: ... |
0 commit comments