|
31 | 31 | from pathlib import Path
|
32 | 32 |
|
33 | 33 | from servicex.configuration import Configuration
|
34 |
| -from servicex.models import ResultFormat, TransformStatus, TransformedResults |
| 34 | +from servicex.models import ( |
| 35 | + ResultFormat, |
| 36 | + TransformStatus, |
| 37 | + TransformedResults, |
| 38 | + CachedDataset, |
| 39 | +) |
35 | 40 | from servicex.query_cache import QueryCache
|
36 | 41 | from servicex.servicex_adapter import ServiceXAdapter
|
37 | 42 | from servicex.query_core import (
|
|
44 | 49 |
|
45 | 50 | from make_it_sync import make_sync
|
46 | 51 | from servicex.databinder_models import ServiceXSpec, General, Sample
|
47 |
| -from collections.abc import Sequence |
| 52 | +from collections.abc import Sequence, Coroutine |
48 | 53 | from enum import Enum
|
49 | 54 | import traceback
|
50 | 55 |
|
@@ -115,6 +120,15 @@ def __repr__(self):
|
115 | 120 | return f"Invalid GuardList: {repr(data._exc)}"
|
116 | 121 |
|
117 | 122 |
|
| 123 | +def _async_execute_and_wait(coro: Coroutine) -> Any: |
| 124 | + import asyncio |
| 125 | + |
| 126 | + try: |
| 127 | + return asyncio.create_task(coro).result() |
| 128 | + except RuntimeError: |
| 129 | + return asyncio.run(coro) |
| 130 | + |
| 131 | + |
118 | 132 | def _load_ServiceXSpec(
|
119 | 133 | config: Union[ServiceXSpec, Mapping[str, Any], str, Path],
|
120 | 134 | ) -> ServiceXSpec:
|
@@ -353,40 +367,40 @@ async def get_transform_status_async(self, transform_id) -> TransformStatus:
|
353 | 367 |
|
354 | 368 | get_transform_status = make_sync(get_transform_status_async)
|
355 | 369 |
|
356 |
| - def get_datasets(self, did_finder=None, show_deleted=False): |
| 370 | + def get_datasets(self, did_finder=None, show_deleted=False) -> List[CachedDataset]: |
357 | 371 | r"""
|
358 | 372 | Retrieve all datasets you have run on the server
|
359 | 373 | :return: List of Query objects
|
360 | 374 | """
|
361 |
| - return self.servicex.get_datasets(did_finder, show_deleted) |
| 375 | + return _async_execute_and_wait( |
| 376 | + self.servicex.get_datasets(did_finder, show_deleted) |
| 377 | + ) |
362 | 378 |
|
363 |
| - def get_dataset(self, dataset_id): |
| 379 | + def get_dataset(self, dataset_id) -> CachedDataset: |
364 | 380 | r"""
|
365 | 381 | Retrieve a dataset by its ID
|
366 | 382 | :return: A Query object
|
367 | 383 | """
|
368 |
| - return self.servicex.get_dataset(dataset_id) |
| 384 | + return _async_execute_and_wait(self.servicex.get_dataset(dataset_id)) |
369 | 385 |
|
370 |
| - def delete_dataset(self, dataset_id): |
| 386 | + def delete_dataset(self, dataset_id) -> bool: |
371 | 387 | r"""
|
372 | 388 | Delete a dataset by its ID
|
373 |
| - :return: A Query object |
| 389 | + :return: boolean showing whether the dataset has been deleted |
374 | 390 | """
|
375 |
| - return self.servicex.delete_dataset(dataset_id) |
| 391 | + return _async_execute_and_wait(self.servicex.delete_dataset(dataset_id)) |
376 | 392 |
|
377 |
| - def delete_transform(self, transform_id): |
| 393 | + def delete_transform(self, transform_id) -> None: |
378 | 394 | r"""
|
379 | 395 | Delete a Transform by its request ID
|
380 |
| - :return: A Query object |
381 | 396 | """
|
382 |
| - return self.servicex.delete_transform(transform_id) |
| 397 | + return _async_execute_and_wait(self.servicex.delete_transform(transform_id)) |
383 | 398 |
|
384 |
| - def cancel_transform(self, transform_id): |
| 399 | + def cancel_transform(self, transform_id) -> None: |
385 | 400 | r"""
|
386 | 401 | Cancel a Transform by its request ID
|
387 |
| - :return: A Query object |
388 | 402 | """
|
389 |
| - return self.servicex.cancel_transform(transform_id) |
| 403 | + return _async_execute_and_wait(self.servicex.cancel_transform(transform_id)) |
390 | 404 |
|
391 | 405 | def get_code_generators(self, backend=None):
|
392 | 406 | r"""
|
|
0 commit comments