11#!/usr/bin/python
22#
3- # Copyright 2023 Kaggle Inc
3+ # Copyright 2024 Kaggle Inc
44#
55# Licensed under the Apache License, Version 2.0 (the "License");
66# you may not use this file except in compliance with the License.
@@ -271,7 +271,7 @@ def __repr__(self):
271271
272272
273273class KaggleApi (KaggleApi ):
274- __version__ = '1.5.16 '
274+ __version__ = '1.6.1 '
275275
276276 CONFIG_NAME_PROXY = 'proxy'
277277 CONFIG_NAME_COMPETITION = 'competition'
@@ -909,7 +909,7 @@ def competition_download_file(self,
909909 """ download a competition file to a designated location, or use
910910 a default location
911911
912- Paramters
912+ Parameters
913913 =========
914914 competition: the name of the competition
915915 file_name: the configuration file name
@@ -2880,6 +2880,16 @@ def model_instance_get_cli(self, model_instance, folder=None):
28802880 data ['licenseName' ] = mi ['licenseName' ]
28812881 data ['fineTunable' ] = mi ['fineTunable' ]
28822882 data ['trainingData' ] = mi ['trainingData' ]
2883+ data ['versionId' ] = mi ['versionId' ]
2884+ data ['versionNumber' ] = mi ['versionNumber' ]
2885+ data ['modelInstanceType' ] = mi ['modelInstanceType' ]
2886+ if mi ['baseModelInstanceInformation' ] is not None :
2887+ data ['baseModelInstance' ] = '{}/{}/{}/{}' .format (
2888+ mi ['baseModelInstanceInformation' ]['owner' ]['slug' ],
2889+ mi ['baseModelInstanceInformation' ]['modelSlug' ],
2890+ mi ['baseModelInstanceInformation' ]['framework' ],
2891+ mi ['baseModelInstanceInformation' ]['instanceSlug' ])
2892+ data ['externalBaseModelUrl' ] = mi ['externalBaseModelUrl' ]
28832893
28842894 with open (meta_file , 'w' ) as f :
28852895 json .dump (data , f , indent = 2 )
@@ -2924,7 +2934,13 @@ def model_instance_initialize(self, folder):
29242934 'Apache 2.0' ,
29252935 'fineTunable' :
29262936 False ,
2927- 'trainingData' : []
2937+ 'trainingData' : [],
2938+ 'modelInstanceType' :
2939+ 'Unspecified' ,
2940+ 'baseModelInstanceId' :
2941+ 0 ,
2942+ 'externalBaseModelUrl' :
2943+ ''
29282944 }
29292945 meta_file = os .path .join (folder , self .MODEL_INSTANCE_METADATA_FILE )
29302946 with open (meta_file , 'w' ) as f :
@@ -2964,6 +2980,12 @@ def model_instance_create(self, folder, quiet=False, dir_mode='skip'):
29642980 license_name = self .get_or_fail (meta_data , 'licenseName' )
29652981 fine_tunable = self .get_or_default (meta_data , 'fineTunable' , False )
29662982 training_data = self .get_or_default (meta_data , 'trainingData' , [])
2983+ model_instance_type = self .get_or_default (
2984+ meta_data , 'modelInstanceType' , 'Unspecified' )
2985+ base_model_instance = self .get_or_default (meta_data ,
2986+ 'baseModelInstance' , '' )
2987+ external_base_model_url = self .get_or_default (
2988+ meta_data , 'externalBaseModelUrl' , '' )
29672989
29682990 # validations
29692991 if owner_slug == 'INSERT_OWNER_SLUG_HERE' :
@@ -2997,6 +3019,9 @@ def model_instance_create(self, folder, quiet=False, dir_mode='skip'):
29973019 license_name = license_name ,
29983020 fine_tunable = fine_tunable ,
29993021 training_data = training_data ,
3022+ model_instance_type = model_instance_type ,
3023+ base_model_instance = base_model_instance ,
3024+ external_base_model_url = external_base_model_url ,
30003025 files = [])
30013026
30023027 with ResumableUploadContext () as upload_context :
@@ -3089,6 +3114,12 @@ def model_instance_update(self, folder):
30893114 license_name = self .get_or_default (meta_data , 'licenseName' , None )
30903115 fine_tunable = self .get_or_default (meta_data , 'fineTunable' , None )
30913116 training_data = self .get_or_default (meta_data , 'trainingData' , None )
3117+ model_instance_type = self .get_or_default (meta_data ,
3118+ 'modelInstanceType' , None )
3119+ base_model_instance = self .get_or_default (meta_data ,
3120+ 'baseModelInstance' , None )
3121+ external_base_model_url = self .get_or_default (
3122+ meta_data , 'externalBaseModelUrl' , None )
30923123
30933124 # validations
30943125 if owner_slug == 'INSERT_OWNER_SLUG_HERE' :
@@ -3128,13 +3159,22 @@ def model_instance_update(self, folder):
31283159 update_mask ['paths' ].append ('fine_tunable' )
31293160 if training_data != None :
31303161 update_mask ['paths' ].append ('training_data' )
3162+ if model_instance_type != None :
3163+ update_mask ['paths' ].append ('model_instance_type' )
3164+ if base_model_instance != None :
3165+ update_mask ['paths' ].append ('base_model_instance' )
3166+ if external_base_model_url != None :
3167+ update_mask ['paths' ].append ('external_base_model_url' )
31313168
31323169 request = ModelInstanceUpdateRequest (
31333170 overview = overview ,
31343171 usage = usage ,
31353172 license_name = license_name ,
31363173 fine_tunable = fine_tunable ,
31373174 training_data = training_data ,
3175+ model_instance_type = model_instance_type ,
3176+ base_model_instance = base_model_instance ,
3177+ external_base_model_url = external_base_model_url ,
31383178 update_mask = update_mask )
31393179 result = ModelNewResponse (
31403180 self .process_response (
@@ -3283,6 +3323,7 @@ def model_instance_version_download(self,
32833323 os .remove (outfile )
32843324 except OSError as e :
32853325 print ('Could not delete tar file, got %s' % e )
3326+ return outfile
32863327
32873328 def model_instance_version_download_cli (self ,
32883329 model_instance_version ,
@@ -3301,7 +3342,7 @@ def model_instance_version_download_cli(self,
33013342 quiet: suppress verbose output (default is False)
33023343 untar: if True, untar files upon download (default is False)
33033344 """
3304- self .model_instance_version_download (
3345+ return self .model_instance_version_download (
33053346 model_instance_version ,
33063347 path = path ,
33073348 untar = untar ,
@@ -3528,6 +3569,9 @@ def process_response(self, result):
35283569 'Version, please consider updating (server ' +
35293570 api_version + ' / client ' + self .__version__ + ')' )
35303571 self .already_printed_version_warning = True
3572+ if isinstance (data ,
3573+ dict ) and 'code' in data and data ['code' ] != 200 :
3574+ raise Exception (data ['message' ])
35313575 return data
35323576 return result
35333577
0 commit comments