| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- """Abstract interface for file storage implementations."""
-
- from abc import ABC, abstractmethod
- from collections.abc import Generator
-
-
- class BaseStorage(ABC):
- """Interface for file storage."""
-
- @abstractmethod
- def save(self, filename, data):
- raise NotImplementedError
-
- @abstractmethod
- def load_once(self, filename: str) -> bytes:
- raise NotImplementedError
-
- @abstractmethod
- def load_stream(self, filename: str) -> Generator:
- raise NotImplementedError
-
- @abstractmethod
- def download(self, filename, target_filepath):
- raise NotImplementedError
-
- @abstractmethod
- def exists(self, filename):
- raise NotImplementedError
-
- @abstractmethod
- def delete(self, filename):
- raise NotImplementedError
-
- def scan(self, path, files=True, directories=False) -> list[str]:
- """
- Scan files and directories in the given path.
- This method is implemented only in some storage backends.
- If a storage backend doesn't support scanning, it will raise NotImplementedError.
- """
- raise NotImplementedError("This storage backend doesn't support scanning")
|