77import xarray as xr
88from tqdm .auto import tqdm
99
10+ from _tilebox .grpc .aio .pagination import Pagination as PaginationProtocol
11+ from _tilebox .grpc .aio .pagination import paginated_request
1012from _tilebox .grpc .aio .producer_consumer import async_producer_consumer
1113from _tilebox .grpc .error import ArgumentError , NotFoundError
1214from tilebox .datasets .aio .pagination import (
13- paginated_request ,
1415 with_progressbar ,
1516 with_time_progress_callback ,
1617 with_time_progressbar ,
1718)
1819from tilebox .datasets .data .collection import CollectionInfo
1920from tilebox .datasets .data .data_access import QueryFilters , SpatialFilter , SpatialFilterLike
20- from tilebox .datasets .data .datapoint import DatapointInterval , DatapointPage , QueryResultPage
21+ from tilebox .datasets .data .datapoint import DatapointInterval , DatapointIntervalLike , DatapointPage , QueryResultPage
2122from tilebox .datasets .data .datasets import Dataset
2223from tilebox .datasets .data .pagination import Pagination
2324from tilebox .datasets .data .time_interval import TimeInterval , TimeIntervalLike
@@ -242,7 +243,7 @@ async def _find_legacy(self, datapoint_id: str, skip_data: bool = False) -> xr.D
242243
243244 async def _find_interval (
244245 self ,
245- datapoint_id_interval : tuple [ str , str ] | tuple [ UUID , UUID ] ,
246+ datapoint_id_interval : DatapointIntervalLike ,
246247 end_inclusive : bool = True ,
247248 * ,
248249 skip_data : bool = False ,
@@ -266,18 +267,13 @@ async def _find_interval(
266267 datapoint_id_interval , end_inclusive , skip_data = skip_data , show_progress = show_progress
267268 )
268269
269- start_id , end_id = datapoint_id_interval
270-
271270 filters = QueryFilters (
272- temporal_extent = DatapointInterval (
273- start_id = as_uuid (start_id ),
274- end_id = as_uuid (end_id ),
275- start_exclusive = False ,
276- end_inclusive = end_inclusive ,
277- )
271+ temporal_extent = DatapointInterval .parse (datapoint_id_interval , end_inclusive = end_inclusive )
278272 )
279273
280- request = partial (self ._dataset ._service .query , [self ._collection .id ], filters , skip_data )
274+ async def request (page : PaginationProtocol ) -> QueryResultPage :
275+ query_page = Pagination (page .limit , page .starting_after )
276+ return await self ._dataset ._service .query ([self ._collection .id ], filters , skip_data , query_page )
281277
282278 initial_page = Pagination ()
283279 pages = paginated_request (request , initial_page )
@@ -288,27 +284,19 @@ async def _find_interval(
288284
289285 async def _find_interval_legacy (
290286 self ,
291- datapoint_id_interval : tuple [ str , str ] | tuple [ UUID , UUID ] ,
287+ datapoint_id_interval : DatapointIntervalLike ,
292288 end_inclusive : bool = True ,
293289 * ,
294290 skip_data : bool = False ,
295291 show_progress : bool = False ,
296292 ) -> xr .Dataset :
297- start_id , end_id = datapoint_id_interval
293+ datapoint_interval = DatapointInterval . parse ( datapoint_id_interval , end_inclusive = end_inclusive )
298294
299- datapoint_interval = DatapointInterval (
300- start_id = as_uuid (start_id ),
301- end_id = as_uuid (end_id ),
302- start_exclusive = False ,
303- end_inclusive = end_inclusive ,
304- )
305- request = partial (
306- self ._dataset ._service .get_dataset_for_datapoint_interval ,
307- str (self ._collection .id ),
308- datapoint_interval ,
309- skip_data ,
310- False ,
311- )
295+ async def request (page : PaginationProtocol ) -> DatapointPage :
296+ query_page = Pagination (page .limit , page .starting_after )
297+ return await self ._dataset ._service .get_dataset_for_datapoint_interval (
298+ str (self ._collection .id ), datapoint_interval , skip_data , False , query_page
299+ )
312300
313301 initial_page = Pagination ()
314302 pages = paginated_request (request , initial_page )
@@ -427,9 +415,10 @@ async def _iter_pages(
427415 yield page
428416
429417 async def _load_page (
430- self , filters : QueryFilters , skip_data : bool , page : Pagination | None = None
418+ self , filters : QueryFilters , skip_data : bool , page : PaginationProtocol | None = None
431419 ) -> QueryResultPage :
432- return await self ._dataset ._service .query ([self ._collection .id ], filters , skip_data , page )
420+ query_page = Pagination (page .limit , page .starting_after ) if page else Pagination ()
421+ return await self ._dataset ._service .query ([self ._collection .id ], filters , skip_data , query_page )
433422
434423 async def _load_legacy (
435424 self ,
@@ -472,10 +461,11 @@ async def _iter_pages_legacy(
472461 yield page
473462
474463 async def _load_page_legacy (
475- self , time_interval : TimeInterval , skip_data : bool , skip_meta : bool , page : Pagination | None = None
464+ self , time_interval : TimeInterval , skip_data : bool , skip_meta : bool , page : PaginationProtocol | None = None
476465 ) -> DatapointPage :
466+ query_page = Pagination (page .limit , page .starting_after ) if page else Pagination ()
477467 return await self ._dataset ._service .get_dataset_for_time_interval (
478- str (self ._collection .id ), time_interval , skip_data , skip_meta , page
468+ str (self ._collection .id ), time_interval , skip_data , skip_meta , query_page
479469 )
480470
481471 async def ingest (
0 commit comments