2828
2929from .api import Api
3030from .exceptions import FastLabelInvalidException
31+ from .query import DatasetObjectGetQuery
3132
3233logger = logging .getLogger (__name__ )
3334logging .basicConfig (
@@ -3961,6 +3962,7 @@ def get_dataset_objects(
39613962 tags : Optional [List [str ]] = None ,
39623963 licenses : Optional [List [str ]] = None ,
39633964 revision_id : str = None ,
3965+ types : Optional [List [Union [str , DatasetObjectType ]]] = None ,
39643966 offset : int = 0 ,
39653967 limit : int = 1000 ,
39663968 ) -> list :
@@ -3973,6 +3975,31 @@ def get_dataset_objects(
39733975 revision_id is dataset rebision (Optional).
39743976 Only use specify one of revision_id or version.
39753977 """
3978+ endpoint = "dataset-objects-v2"
3979+ types = [DatasetObjectType .create (type_ ) for type_ in types or []]
3980+ params = self ._prepare_params (
3981+ dataset = dataset ,
3982+ version = version ,
3983+ tags = tags ,
3984+ licenses = licenses ,
3985+ revision_id = revision_id ,
3986+ types = types ,
3987+ offset = offset ,
3988+ limit = limit ,
3989+ )
3990+ return self .api .get_request (endpoint , params = params )
3991+
3992+ def _prepare_params (
3993+ self ,
3994+ dataset : str ,
3995+ offset : int ,
3996+ limit : int ,
3997+ version : str ,
3998+ revision_id : str ,
3999+ tags : Optional [List [str ]],
4000+ licenses : Optional [List [str ]],
4001+ types : Optional [List [DatasetObjectType ]],
4002+ ) -> DatasetObjectGetQuery :
39764003 if version and revision_id :
39774004 raise FastLabelInvalidException (
39784005 "only use specify one of revisionId or version." , 400
@@ -3981,56 +4008,47 @@ def get_dataset_objects(
39814008 raise FastLabelInvalidException (
39824009 "Limit must be less than or equal to 1000." , 422
39834010 )
3984- endpoint = "dataset-objects-v2"
3985- params = {"dataset" : dataset , "offset" : offset , "limit" : limit }
4011+ params : DatasetObjectGetQuery = {
4012+ "dataset" : dataset ,
4013+ "offset" : offset ,
4014+ "limit" : limit ,
4015+ }
39864016 if revision_id :
39874017 params ["revisionId" ] = revision_id
39884018 if version :
39894019 params ["version" ] = version
3990-
3991- tags = tags or []
39924020 if tags :
39934021 params ["tags" ] = tags
39944022 if licenses :
39954023 params ["licenses" ] = licenses
3996- return self .api .get_request (endpoint , params = params )
4024+ if types :
4025+ params ["types" ] = [t .value for t in types ]
4026+ return params
39974027
39984028 def download_dataset_objects (
39994029 self ,
40004030 dataset : str ,
40014031 path : str ,
40024032 version : str = "" ,
4033+ revision_id : str = "" ,
40034034 tags : Optional [List [str ]] = None ,
4035+ licenses : Optional [List [str ]] = None ,
40044036 types : Optional [List [Union [str , DatasetObjectType ]]] = None ,
40054037 offset : int = 0 ,
40064038 limit : int = 1000 ,
40074039 ):
40084040 endpoint = "dataset-objects-v2/signed-urls"
4009- if limit > 1000 :
4010- raise FastLabelInvalidException (
4011- "Limit must be less than or equal to 1000." , 422
4012- )
4013- params = {"dataset" : dataset , "offset" : offset , "limit" : limit }
4014- if version :
4015- params ["version" ] = version
4016- if tags :
4017- params ["tags" ] = tags
4018- if types :
4019- try :
4020- types = list (
4021- map (
4022- lambda t : t
4023- if isinstance (t , DatasetObjectType )
4024- else DatasetObjectType (t ),
4025- types ,
4026- )
4027- )
4028- except ValueError :
4029- raise FastLabelInvalidException (
4030- f"types must be { [k for k in DatasetObjectType .__members__ .keys ()]} ." ,
4031- 422 ,
4032- )
4033- params ["types" ] = [t .value for t in types ]
4041+ types = [DatasetObjectType .create (type_ ) for type_ in types or []]
4042+ params = self ._prepare_params (
4043+ dataset = dataset ,
4044+ offset = offset ,
4045+ limit = limit ,
4046+ version = version ,
4047+ revision_id = revision_id ,
4048+ tags = tags ,
4049+ types = types ,
4050+ licenses = licenses ,
4051+ )
40344052
40354053 response = self .api .get_request (endpoint , params = params )
40364054
0 commit comments