9
9
from ._dataset_client import ApifyDatasetClient
10
10
from ._key_value_store_client import ApifyKeyValueStoreClient
11
11
from ._request_queue_client import ApifyRequestQueueClient
12
+ from apify ._configuration import service_locator
12
13
from apify ._utils import docs_group
13
14
14
15
if TYPE_CHECKING :
19
20
class ApifyStorageClient (StorageClient ):
20
21
"""Apify storage client."""
21
22
23
+ def __init__ (self , configuration : Configuration | None = None ) -> None :
24
+ """Initialize the file system storage client.
25
+
26
+ Args:
27
+ configuration: Optional configuration instance to use with the storage client.
28
+ If not provided, the global configuration will be used.
29
+ """
30
+ self ._configuration = configuration or service_locator .get_configuration ()
31
+
22
32
@override
23
33
async def create_dataset_client (
24
34
self ,
@@ -30,13 +40,12 @@ async def create_dataset_client(
30
40
# Import here to avoid circular imports.
31
41
from apify import Configuration as ApifyConfiguration # noqa: PLC0415
32
42
33
- configuration = configuration or ApifyConfiguration .get_global_configuration ()
34
- if isinstance (configuration , ApifyConfiguration ):
35
- return await ApifyDatasetClient .open (id = id , name = name , configuration = configuration )
43
+ if isinstance (self ._configuration , ApifyConfiguration ):
44
+ return await ApifyDatasetClient .open (id = id , name = name , configuration = self ._configuration )
36
45
37
46
raise TypeError (
38
47
f'Expected "configuration" to be an instance of "apify.Configuration", '
39
- f'but got { type (configuration ).__name__ } instead.'
48
+ f'but got { type (self . _configuration ).__name__ } instead.'
40
49
)
41
50
42
51
@override
@@ -50,13 +59,12 @@ async def create_kvs_client(
50
59
# Import here to avoid circular imports.
51
60
from apify import Configuration as ApifyConfiguration # noqa: PLC0415
52
61
53
- configuration = configuration or ApifyConfiguration .get_global_configuration ()
54
- if isinstance (configuration , ApifyConfiguration ):
55
- return await ApifyKeyValueStoreClient .open (id = id , name = name , configuration = configuration )
62
+ if isinstance (self ._configuration , ApifyConfiguration ):
63
+ return await ApifyKeyValueStoreClient .open (id = id , name = name , configuration = self ._configuration )
56
64
57
65
raise TypeError (
58
66
f'Expected "configuration" to be an instance of "apify.Configuration", '
59
- f'but got { type (configuration ).__name__ } instead.'
67
+ f'but got { type (self . _configuration ).__name__ } instead.'
60
68
)
61
69
62
70
@override
@@ -70,11 +78,15 @@ async def create_rq_client(
70
78
# Import here to avoid circular imports.
71
79
from apify import Configuration as ApifyConfiguration # noqa: PLC0415
72
80
73
- configuration = configuration or ApifyConfiguration .get_global_configuration ()
74
- if isinstance (configuration , ApifyConfiguration ):
75
- return await ApifyRequestQueueClient .open (id = id , name = name , configuration = configuration )
81
+ if isinstance (self ._configuration , ApifyConfiguration ):
82
+ return await ApifyRequestQueueClient .open (id = id , name = name , configuration = self ._configuration )
76
83
77
84
raise TypeError (
78
85
f'Expected "configuration" to be an instance of "apify.Configuration", '
79
- f'but got { type (configuration ).__name__ } instead.'
86
+ f'but got { type (self . _configuration ).__name__ } instead.'
80
87
)
88
+
89
+ @override
90
+ def create_client (self , configuration : Configuration ) -> ApifyStorageClient :
91
+ """Create a storage client from an existing storage client potentially just replacing the configuration."""
92
+ return ApifyStorageClient (configuration )
0 commit comments