11# pylint: disable=protected-access,no-name-in-module
22from __future__ import annotations
33
4+ import warnings
45from typing import AsyncIterator , Generic , Iterable , Iterator , Union
56
67from typing_extensions import TypeAlias
78from yandex .cloud .ai .dataset .v1 .dataset_service_pb2 import (
89 CreateDatasetRequest , CreateDatasetResponse , DescribeDatasetRequest , DescribeDatasetResponse , ListDatasetsRequest ,
9- ListDatasetsResponse , ListUploadFormatsRequest , ListUploadFormatsResponse
10+ ListDatasetsResponse , ListUploadFormatsRequest , ListUploadFormatsResponse , ListUploadSchemasRequest ,
11+ ListUploadSchemasResponse
1012)
1113from yandex .cloud .ai .dataset .v1 .dataset_service_pb2_grpc import DatasetServiceStub
1214
1719
1820from .dataset import AsyncDataset , Dataset , DatasetTypeT
1921from .draft import AsyncDatasetDraft , DatasetDraft , DatasetDraftT
22+ from .schema import DatasetUploadSchema
2023from .status import DatasetStatus
2124from .task_types import KnownTaskType , TaskTypeProxy
2225
@@ -172,6 +175,8 @@ async def _list_upload_formats(
172175 * ,
173176 timeout : float = 60 ,
174177 ) -> tuple [str , ...]:
178+ warnings .warn ("dataset.list_upload_formats is deprecated" , category = DeprecationWarning )
179+
175180 logger .debug ('Fetching available dataset upload formats for task_type=%s' , task_type )
176181 request = ListUploadFormatsRequest (
177182 task_type = task_type
@@ -191,6 +196,35 @@ async def _list_upload_formats(
191196 )
192197 return tuple (response .formats )
193198
199+ async def _list_upload_schemas (
200+ self ,
201+ task_type : str ,
202+ * ,
203+ timeout : float = 60 ,
204+ ) -> tuple [DatasetUploadSchema , ...]:
205+ logger .debug ('Fetching available dataset upload schemas for task_type=%s' , task_type )
206+ request = ListUploadSchemasRequest (
207+ task_type = task_type ,
208+ folder_id = self ._folder_id ,
209+ )
210+
211+ async with self ._client .get_service_stub (DatasetServiceStub , timeout = timeout ) as stub :
212+ response = await self ._client .call_service (
213+ stub .ListUploadSchemas ,
214+ request ,
215+ timeout = timeout ,
216+ expected_type = ListUploadSchemasResponse ,
217+ )
218+
219+ logger .info (
220+ '%d dataset upload schemas successfully fetched for a task_type=%s' ,
221+ len (response .schemas ), task_type ,
222+ )
223+ return tuple (
224+ DatasetUploadSchema ._from_proto (proto = schema , sdk = self ._sdk )
225+ for schema in response .schemas
226+ )
227+
194228
195229class AsyncDatasets (BaseDatasets [AsyncDataset , AsyncDatasetDraft ]):
196230 _dataset_impl = AsyncDataset
@@ -231,6 +265,14 @@ async def list_upload_formats(
231265 ) -> tuple [str , ...]:
232266 return await self ._list_upload_formats (task_type = task_type , timeout = timeout )
233267
268+ async def list_upload_schemas (
269+ self ,
270+ task_type : str ,
271+ * ,
272+ timeout : float = 60 ,
273+ ) -> tuple [DatasetUploadSchema , ...]:
274+ return await self ._list_upload_schemas (task_type = task_type , timeout = timeout )
275+
234276
235277class Datasets (BaseDatasets [Dataset , DatasetDraft ]):
236278 _dataset_impl = Dataset
@@ -239,6 +281,7 @@ class Datasets(BaseDatasets[Dataset, DatasetDraft]):
239281 __get = run_sync (BaseDatasets ._get )
240282 __list = run_sync_generator (BaseDatasets ._list )
241283 __list_upload_formats = run_sync (BaseDatasets ._list_upload_formats )
284+ __list_upload_schemas = run_sync (BaseDatasets ._list_upload_schemas )
242285
243286 def get (
244287 self ,
@@ -273,3 +316,11 @@ def list_upload_formats(
273316 timeout : float = 60 ,
274317 ) -> tuple [str , ...]:
275318 return self .__list_upload_formats (task_type = task_type , timeout = timeout )
319+
320+ def list_upload_schemas (
321+ self ,
322+ task_type : str ,
323+ * ,
324+ timeout : float = 60 ,
325+ ) -> tuple [DatasetUploadSchema , ...]:
326+ return self .__list_upload_schemas (task_type = task_type , timeout = timeout )
0 commit comments