1- from typing import Any , Dict , List , Optional , Union
1+ from typing import Any , Dict , List , Optional , Tuple , Union
22from labelbox .orm .db_object import experimental
33from labelbox .schema .export_filters import CatalogExportFilters , build_filters
44
@@ -23,7 +23,7 @@ def export_v2(
2323 task_name : Optional [str ] = None ,
2424 filters : Union [CatalogExportFilters , Dict [str , List [str ]], None ] = None ,
2525 params : Optional [CatalogExportParams ] = None ,
26- ) -> Task :
26+ ) -> Union [ Task , ExportTask ] :
2727 """
2828 Creates a catalog export task with the given params, filters and returns the task.
2929
@@ -42,7 +42,10 @@ def export_v2(
4242 >>> task.wait_till_done()
4343 >>> task.result
4444 """
45- return self ._export (task_name , filters , params , False )
45+ task , is_streamable = self ._export (task_name , filters , params )
46+ if (is_streamable ):
47+ return ExportTask (task , True )
48+ return task
4649
4750 @experimental
4851 def export (
@@ -83,15 +86,15 @@ def export(
8386 >>> stream_type=lb.StreamType.RESULT
8487 >>> ).start(stream_handler=json_stream_handler)
8588 """
86- task = self ._export (task_name , filters , params , True )
89+ task , _ = self ._export (task_name , filters , params , streamable = True )
8790 return ExportTask (task )
8891
8992 def _export (self ,
9093 task_name : Optional [str ] = None ,
9194 filters : Union [CatalogExportFilters , Dict [str , List [str ]],
9295 None ] = None ,
9396 params : Optional [CatalogExportParams ] = None ,
94- streamable : bool = False ) -> Task :
97+ streamable : bool = False ) -> Tuple [ Task , bool ] :
9598
9699 _params = params or CatalogExportParams ({
97100 "attachments" : False ,
@@ -120,7 +123,7 @@ def _export(self,
120123 create_task_query_str = (
121124 f"mutation { mutation_name } PyApi"
122125 f"($input: ExportDataRowsInCatalogInput!)"
123- f"{{{ mutation_name } (input: $input){{taskId}}}}" )
126+ f"{{{ mutation_name } (input: $input){{taskId isStreamable }}}}" )
124127
125128 media_type_override = _params .get ('media_type_override' , None )
126129 query_params : Dict [str , Any ] = {
@@ -132,6 +135,7 @@ def _export(self,
132135 "query" : None ,
133136 }
134137 },
138+ "isStreamableReady" : True ,
135139 "params" : {
136140 "mediaTypeOverride" :
137141 media_type_override .value
@@ -171,4 +175,5 @@ def _export(self,
171175 error_log_key = "errors" )
172176 res = res [mutation_name ]
173177 task_id = res ["taskId" ]
174- return Task .get_task (self .client , task_id )
178+ is_streamable = res ["isStreamable" ]
179+ return Task .get_task (self .client , task_id ), is_streamable
0 commit comments