11from __future__ import annotations
22
3- from abc import abstractmethod
3+ from abc import ABC , abstractmethod
44from typing import TYPE_CHECKING , AsyncIterator
55
6- from .base_resource_client import BaseResourceClient
7-
86if TYPE_CHECKING :
9- from crawlee .storages .models import DatasetItemsListPage
7+ from crawlee .storages .models import DatasetItemsListPage , DatasetMetadata
108 from crawlee .types import JSONSerializable
119
1210
13- class BaseDatasetClient (BaseResourceClient ):
14- """Base class for dataset clients."""
11+ class BaseDatasetClient (ABC ):
12+ """Abstract base class for dataset resource clients.
13+
14+ These clients are specific to the type of resource they manage and operate under a designated storage
15+ client, like a memory storage client.
16+ """
1517
1618 _LIST_ITEMS_LIMIT = 999_999_999_999
1719 """This is what API returns in the x-apify-pagination-limit header when no limit query parameter is used."""
1820
21+ @abstractmethod
22+ async def get (self ) -> DatasetMetadata | None :
23+ """Get metadata about the dataset being managed by this client.
24+
25+ Returns:
26+ An object containing the dataset's details, or None if the dataset does not exist.
27+ """
28+
29+ @abstractmethod
30+ async def update (
31+ self ,
32+ * ,
33+ name : str | None = None ,
34+ ) -> DatasetMetadata :
35+ """Update the dataset metadata.
36+
37+ Args:
38+ name: New new name for the dataset.
39+
40+ Returns:
41+ An object reflecting the updated dataset metadata.
42+ """
43+
44+ @abstractmethod
45+ async def delete (self ) -> None :
46+ """Permanently delete the dataset managed by this client."""
47+
1948 @abstractmethod
2049 async def list_items (
2150 self ,
@@ -156,7 +185,7 @@ async def stream_items(
156185 skip_hidden : bool | None = None ,
157186 xml_root : str | None = None ,
158187 xml_row : str | None = None ,
159- ) -> AsyncIterator :
188+ ) -> AsyncIterator [ dict ] :
160189 """Retrieves dataset items as a streaming response.
161190
162191 Args:
@@ -176,7 +205,7 @@ async def stream_items(
176205 xml_root: Custom root element name for XML output; default is 'items'.
177206 xml_row: Custom element name for each item in XML; default is 'item'.
178207
179- Returns :
208+ Yields :
180209 The dataset items in a streaming response.
181210 """
182211
0 commit comments