1
1
from __future__ import annotations
2
2
3
+ from typing import TYPE_CHECKING
4
+
3
5
from typing_extensions import override
4
6
5
- from crawlee .configuration import Configuration
6
7
from crawlee .storage_clients ._base import StorageClient
7
8
8
9
from ._dataset_client import ApifyDatasetClient
9
10
from ._key_value_store_client import ApifyKeyValueStoreClient
10
11
from ._request_queue_client import ApifyRequestQueueClient
11
12
13
+ if TYPE_CHECKING :
14
+ from crawlee .configuration import Configuration
15
+
12
16
13
17
class ApifyStorageClient (StorageClient ):
14
18
"""Apify storage client."""
@@ -21,8 +25,16 @@ async def create_dataset_client(
21
25
name : str | None = None ,
22
26
configuration : Configuration | None = None ,
23
27
) -> ApifyDatasetClient :
24
- configuration = configuration or Configuration .get_global_configuration ()
25
- return await ApifyDatasetClient .open (id = id , name = name , configuration = configuration )
28
+ from apify import Configuration as ApifyConfiguration
29
+
30
+ configuration = configuration or ApifyConfiguration .get_global_configuration ()
31
+ if isinstance (configuration , ApifyConfiguration ):
32
+ return await ApifyDatasetClient .open (id = id , name = name , configuration = configuration )
33
+
34
+ raise TypeError (
35
+ f'Expected "configuration" to be an instance of "apify.Configuration", '
36
+ f'but got { type (configuration ).__name__ } instead.'
37
+ )
26
38
27
39
@override
28
40
async def create_kvs_client (
@@ -32,8 +44,16 @@ async def create_kvs_client(
32
44
name : str | None = None ,
33
45
configuration : Configuration | None = None ,
34
46
) -> ApifyKeyValueStoreClient :
35
- configuration = configuration or Configuration .get_global_configuration ()
36
- return await ApifyKeyValueStoreClient .open (id = id , name = name , configuration = configuration )
47
+ from apify import Configuration as ApifyConfiguration
48
+
49
+ configuration = configuration or ApifyConfiguration .get_global_configuration ()
50
+ if isinstance (configuration , ApifyConfiguration ):
51
+ return await ApifyKeyValueStoreClient .open (id = id , name = name , configuration = configuration )
52
+
53
+ raise TypeError (
54
+ f'Expected "configuration" to be an instance of "apify.Configuration", '
55
+ f'but got { type (configuration ).__name__ } instead.'
56
+ )
37
57
38
58
@override
39
59
async def create_rq_client (
@@ -43,5 +63,13 @@ async def create_rq_client(
43
63
name : str | None = None ,
44
64
configuration : Configuration | None = None ,
45
65
) -> ApifyRequestQueueClient :
46
- configuration = configuration or Configuration .get_global_configuration ()
47
- return await ApifyRequestQueueClient .open (id = id , name = name , configuration = configuration )
66
+ from apify import Configuration as ApifyConfiguration
67
+
68
+ configuration = configuration or ApifyConfiguration .get_global_configuration ()
69
+ if isinstance (configuration , ApifyConfiguration ):
70
+ return await ApifyRequestQueueClient .open (id = id , name = name , configuration = configuration )
71
+
72
+ raise TypeError (
73
+ f'Expected "configuration" to be an instance of "apify.Configuration", '
74
+ f'but got { type (configuration ).__name__ } instead.'
75
+ )
0 commit comments