99from ._dataset_client import ApifyDatasetClient
1010from ._key_value_store_client import ApifyKeyValueStoreClient
1111from ._request_queue_client import ApifyRequestQueueClient
12+ from apify ._configuration import service_locator
1213from apify ._utils import docs_group
1314
1415if TYPE_CHECKING :
1920class ApifyStorageClient (StorageClient ):
2021 """Apify storage client."""
2122
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+
2232 @override
2333 async def create_dataset_client (
2434 self ,
@@ -30,13 +40,12 @@ async def create_dataset_client(
3040 # Import here to avoid circular imports.
3141 from apify import Configuration as ApifyConfiguration # noqa: PLC0415
3242
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 )
3645
3746 raise TypeError (
3847 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.'
4049 )
4150
4251 @override
@@ -50,13 +59,12 @@ async def create_kvs_client(
5059 # Import here to avoid circular imports.
5160 from apify import Configuration as ApifyConfiguration # noqa: PLC0415
5261
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 )
5664
5765 raise TypeError (
5866 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.'
6068 )
6169
6270 @override
@@ -70,11 +78,15 @@ async def create_rq_client(
7078 # Import here to avoid circular imports.
7179 from apify import Configuration as ApifyConfiguration # noqa: PLC0415
7280
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 )
7683
7784 raise TypeError (
7885 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.'
8087 )
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