|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
3 | | -from abc import ABC, abstractmethod |
| 3 | +from dataclasses import dataclass |
4 | 4 | from typing import TYPE_CHECKING |
5 | 5 |
|
6 | | -from crawlee._utils.docs import docs_group |
7 | | - |
8 | 6 | if TYPE_CHECKING: |
9 | 7 | from ._dataset_client import DatasetClient |
10 | 8 | from ._key_value_store_client import KeyValueStoreClient |
11 | 9 | from ._request_queue_client import RequestQueueClient |
12 | 10 |
|
13 | 11 |
|
14 | | -@docs_group('Abstract classes') |
15 | | -class StorageClient(ABC): |
16 | | - """Defines an abstract base for storage clients. |
17 | | -
|
18 | | - It offers interfaces to get subclients for interacting with storage resources like datasets, key-value stores, |
19 | | - and request queues. |
20 | | - """ |
21 | | - |
22 | | - @abstractmethod |
23 | | - def dataset(self) -> type[DatasetClient]: |
24 | | - """Get a dataset client class.""" |
25 | | - |
26 | | - @abstractmethod |
27 | | - def key_value_store(self) -> type[KeyValueStoreClient]: |
28 | | - """Get a key-value store client class.""" |
29 | | - |
30 | | - @abstractmethod |
31 | | - def request_queue(self) -> type[RequestQueueClient]: |
32 | | - """Get a request queue client class.""" |
33 | | - |
34 | | - def get_rate_limit_errors(self) -> dict[int, int]: |
35 | | - """Return statistics about rate limit errors encountered by the HTTP client in storage client.""" |
36 | | - return {} |
37 | | - |
38 | | - # @abstractmethod |
39 | | - # async def purge_on_start(self) -> None: |
40 | | - # """Performs a purge of the default storages. |
41 | | - |
42 | | - # This method ensures that the purge is executed only once during the lifetime of the instance. |
43 | | - # It is primarily used to clean up residual data from previous runs to maintain a clean state. |
44 | | - # If the storage client does not support purging, leave it empty. |
45 | | - # """ |
| 12 | +@dataclass |
| 13 | +class StorageClient: |
| 14 | + dataset_client_class: type[DatasetClient] |
| 15 | + key_value_store_client_class: type[KeyValueStoreClient] |
| 16 | + request_queue_client_class: type[RequestQueueClient] |
0 commit comments