1818from labelbox .orm import query
1919from labelbox .exceptions import MalformedQueryException
2020from labelbox .schema .data_row import DataRow
21- from labelbox .schema .export_filters import DatasetExportFilters , SharedExportFilters
21+ from labelbox .schema .export_filters import DatasetExportFilters , build_filters
2222from labelbox .schema .export_params import CatalogExportParams , validate_catalog_export_params
23- from labelbox .schema .project import _validate_datetime
2423from labelbox .schema .task import Task
2524from labelbox .schema .user import User
2625
@@ -549,7 +548,8 @@ def export_v2(self,
549548 >>> task = dataset.export_v2(
550549 >>> filters={
551550 >>> "last_activity_at": ["2000-01-01 00:00:00", "2050-01-01 00:00:00"],
552- >>> "label_created_at": ["2000-01-01 00:00:00", "2050-01-01 00:00:00"]
551+ >>> "label_created_at": ["2000-01-01 00:00:00", "2050-01-01 00:00:00"],
552+ >>> "data_row_ids": [DATA_ROW_ID_1, DATA_ROW_ID_2, ...]
553553 >>> },
554554 >>> params={
555555 >>> "performance_details": False,
@@ -574,38 +574,26 @@ def export_v2(self,
574574
575575 _filters = filters or DatasetExportFilters ({
576576 "last_activity_at" : None ,
577- "label_created_at" : None
577+ "label_created_at" : None ,
578+ "data_row_ids" : None ,
578579 })
579580
580- def _get_timezone () -> str :
581- timezone_query_str = """query CurrentUserPyApi { user { timezone } }"""
582- tz_res = self .client .execute (timezone_query_str )
583- return tz_res ["user" ]["timezone" ] or "UTC"
584-
585- timezone : Optional [str ] = None
586-
587581 mutation_name = "exportDataRowsInCatalog"
588582 create_task_query_str = """mutation exportDataRowsInCatalogPyApi($input: ExportDataRowsInCatalogInput!){
589583 %s(input: $input) {taskId} }
590584 """ % (mutation_name )
591585
592- search_query : List [Dict [str , Collection [str ]]] = []
593- search_query .append ({
594- "ids" : [self .uid ],
595- "operator" : "is" ,
596- "type" : "dataset"
597- })
598586 media_type_override = _params .get ('media_type_override' , None )
599587
600588 if task_name is None :
601589 task_name = f"Export v2: dataset - { self .name } "
602- query_params = {
590+ query_params : Dict [ str , Any ] = {
603591 "input" : {
604592 "taskName" : task_name ,
605593 "filters" : {
606594 "searchQuery" : {
607595 "scope" : None ,
608- "query" : search_query
596+ "query" : None ,
609597 }
610598 },
611599 "params" : {
@@ -632,82 +620,13 @@ def _get_timezone() -> str:
632620 }
633621 }
634622
635- if "last_activity_at" in _filters and _filters [
636- 'last_activity_at' ] is not None :
637- if timezone is None :
638- timezone = _get_timezone ()
639- values = _filters ['last_activity_at' ]
640- start , end = values
641- if (start is not None and end is not None ):
642- [_validate_datetime (date ) for date in values ]
643- search_query .append ({
644- "type" : "data_row_last_activity_at" ,
645- "value" : {
646- "operator" : "BETWEEN" ,
647- "timezone" : timezone ,
648- "value" : {
649- "min" : start ,
650- "max" : end
651- }
652- }
653- })
654- elif (start is not None ):
655- _validate_datetime (start )
656- search_query .append ({
657- "type" : "data_row_last_activity_at" ,
658- "value" : {
659- "operator" : "GREATER_THAN_OR_EQUAL" ,
660- "timezone" : timezone ,
661- "value" : start
662- }
663- })
664- elif (end is not None ):
665- _validate_datetime (end )
666- search_query .append ({
667- "type" : "data_row_last_activity_at" ,
668- "value" : {
669- "operator" : "LESS_THAN_OR_EQUAL" ,
670- "timezone" : timezone ,
671- "value" : end
672- }
673- })
674-
675- if "label_created_at" in _filters and _filters [
676- "label_created_at" ] is not None :
677- if timezone is None :
678- timezone = _get_timezone ()
679- values = _filters ['label_created_at' ]
680- start , end = values
681- if (start is not None and end is not None ):
682- [_validate_datetime (date ) for date in values ]
683- search_query .append ({
684- "type" : "labeled_at" ,
685- "value" : {
686- "operator" : "BETWEEN" ,
687- "value" : {
688- "min" : start ,
689- "max" : end
690- }
691- }
692- })
693- elif (start is not None ):
694- _validate_datetime (start )
695- search_query .append ({
696- "type" : "labeled_at" ,
697- "value" : {
698- "operator" : "GREATER_THAN_OR_EQUAL" ,
699- "value" : start
700- }
701- })
702- elif (end is not None ):
703- _validate_datetime (end )
704- search_query .append ({
705- "type" : "labeled_at" ,
706- "value" : {
707- "operator" : "LESS_THAN_OR_EQUAL" ,
708- "value" : end
709- }
710- })
623+ search_query = build_filters (self .client , _filters )
624+ search_query .append ({
625+ "ids" : [self .uid ],
626+ "operator" : "is" ,
627+ "type" : "dataset"
628+ })
629+ query_params ["input" ]["filters" ]["searchQuery" ]["query" ] = search_query
711630
712631 res = self .client .execute (
713632 create_task_query_str ,
0 commit comments