kaggle 1.7.4.5__py3-none-any.whl → 1.8.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. kaggle/__init__.py +10 -6
  2. kaggle/api/kaggle_api.py +574 -598
  3. kaggle/api/kaggle_api_extended.py +5251 -4769
  4. kaggle/cli.py +1335 -1585
  5. kaggle/models/api_blob_type.py +3 -3
  6. kaggle/models/dataset_column.py +165 -174
  7. kaggle/models/dataset_new_request.py +83 -41
  8. kaggle/models/dataset_new_version_request.py +32 -25
  9. kaggle/models/dataset_update_settings_request.py +35 -27
  10. kaggle/models/kaggle_models_extended.py +169 -172
  11. kaggle/models/kernel_push_request.py +66 -49
  12. kaggle/models/model_instance_new_version_request.py +10 -18
  13. kaggle/models/model_instance_update_request.py +103 -34
  14. kaggle/models/model_new_instance_request.py +138 -41
  15. kaggle/models/model_new_request.py +35 -27
  16. kaggle/models/model_update_request.py +32 -25
  17. kaggle/models/start_blob_upload_request.py +192 -195
  18. kaggle/models/start_blob_upload_response.py +98 -98
  19. kaggle/models/upload_file.py +114 -120
  20. kaggle/test/test_authenticate.py +23 -23
  21. {kaggle-1.7.4.5.dist-info → kaggle-1.8.2.dist-info}/METADATA +12 -15
  22. kaggle-1.8.2.dist-info/RECORD +148 -0
  23. kagglesdk/__init__.py +5 -1
  24. kagglesdk/benchmarks/services/__init__.py +0 -0
  25. kagglesdk/benchmarks/services/benchmarks_api_service.py +19 -0
  26. kagglesdk/benchmarks/types/__init__.py +0 -0
  27. kagglesdk/benchmarks/types/benchmark_types.py +307 -0
  28. kagglesdk/benchmarks/types/benchmarks_api_service.py +243 -0
  29. kagglesdk/blobs/services/blob_api_service.py +1 -1
  30. kagglesdk/blobs/types/blob_api_service.py +2 -2
  31. kagglesdk/common/services/__init__.py +0 -0
  32. kagglesdk/common/services/operations_service.py +46 -0
  33. kagglesdk/common/types/file_download.py +1 -1
  34. kagglesdk/common/types/http_redirect.py +1 -1
  35. kagglesdk/common/types/operations.py +194 -0
  36. kagglesdk/common/types/operations_service.py +48 -0
  37. kagglesdk/community/__init__.py +0 -0
  38. kagglesdk/community/types/__init__.py +0 -0
  39. kagglesdk/community/types/content_enums.py +44 -0
  40. kagglesdk/community/types/organization.py +410 -0
  41. kagglesdk/competitions/services/competition_api_service.py +49 -12
  42. kagglesdk/competitions/types/competition.py +14 -0
  43. kagglesdk/competitions/types/competition_api_service.py +1639 -1275
  44. kagglesdk/competitions/types/search_competitions.py +28 -0
  45. kagglesdk/datasets/databundles/__init__.py +0 -0
  46. kagglesdk/datasets/databundles/types/__init__.py +0 -0
  47. kagglesdk/datasets/databundles/types/databundle_api_types.py +540 -0
  48. kagglesdk/datasets/services/dataset_api_service.py +39 -14
  49. kagglesdk/datasets/types/dataset_api_service.py +554 -300
  50. kagglesdk/datasets/types/dataset_enums.py +21 -0
  51. kagglesdk/datasets/types/dataset_service.py +145 -0
  52. kagglesdk/datasets/types/dataset_types.py +74 -74
  53. kagglesdk/datasets/types/search_datasets.py +6 -0
  54. kagglesdk/discussions/__init__.py +0 -0
  55. kagglesdk/discussions/types/__init__.py +0 -0
  56. kagglesdk/discussions/types/search_discussions.py +43 -0
  57. kagglesdk/discussions/types/writeup_enums.py +11 -0
  58. kagglesdk/education/services/education_api_service.py +1 -1
  59. kagglesdk/education/types/education_api_service.py +1 -1
  60. kagglesdk/kaggle_client.py +46 -23
  61. kagglesdk/kaggle_creds.py +148 -0
  62. kagglesdk/kaggle_env.py +89 -25
  63. kagglesdk/kaggle_http_client.py +224 -306
  64. kagglesdk/kaggle_oauth.py +200 -0
  65. kagglesdk/kaggle_object.py +286 -293
  66. kagglesdk/kernels/services/kernels_api_service.py +46 -9
  67. kagglesdk/kernels/types/kernels_api_service.py +635 -159
  68. kagglesdk/kernels/types/kernels_enums.py +6 -0
  69. kagglesdk/kernels/types/search_kernels.py +6 -0
  70. kagglesdk/licenses/__init__.py +0 -0
  71. kagglesdk/licenses/types/__init__.py +0 -0
  72. kagglesdk/licenses/types/licenses_types.py +182 -0
  73. kagglesdk/models/services/model_api_service.py +41 -17
  74. kagglesdk/models/types/model_api_service.py +987 -637
  75. kagglesdk/models/types/model_enums.py +8 -0
  76. kagglesdk/models/types/model_service.py +71 -71
  77. kagglesdk/models/types/model_types.py +1057 -5
  78. kagglesdk/models/types/search_models.py +8 -0
  79. kagglesdk/search/__init__.py +0 -0
  80. kagglesdk/search/services/__init__.py +0 -0
  81. kagglesdk/search/services/search_api_service.py +19 -0
  82. kagglesdk/search/types/__init__.py +0 -0
  83. kagglesdk/search/types/search_api_service.py +2435 -0
  84. kagglesdk/search/types/search_content_shared.py +50 -0
  85. kagglesdk/search/types/search_enums.py +45 -0
  86. kagglesdk/search/types/search_service.py +303 -0
  87. kagglesdk/security/services/iam_service.py +31 -0
  88. kagglesdk/security/services/oauth_service.py +27 -1
  89. kagglesdk/security/types/authentication.py +63 -63
  90. kagglesdk/security/types/iam_service.py +496 -0
  91. kagglesdk/security/types/oauth_service.py +797 -10
  92. kagglesdk/security/types/roles.py +8 -0
  93. kagglesdk/security/types/security_types.py +159 -0
  94. kagglesdk/test/__init__.py +0 -0
  95. kagglesdk/test/test_client.py +20 -22
  96. kagglesdk/users/services/account_service.py +13 -1
  97. kagglesdk/users/services/group_api_service.py +31 -0
  98. kagglesdk/users/types/account_service.py +169 -28
  99. kagglesdk/users/types/group_api_service.py +315 -0
  100. kagglesdk/users/types/group_types.py +165 -0
  101. kagglesdk/users/types/groups_enum.py +8 -0
  102. kagglesdk/users/types/progression_service.py +9 -0
  103. kagglesdk/users/types/search_users.py +23 -0
  104. kagglesdk/users/types/user_avatar.py +226 -0
  105. kaggle/configuration.py +0 -206
  106. kaggle-1.7.4.5.dist-info/RECORD +0 -98
  107. {kaggle-1.7.4.5.dist-info → kaggle-1.8.2.dist-info}/WHEEL +0 -0
  108. {kaggle-1.7.4.5.dist-info → kaggle-1.8.2.dist-info}/entry_points.txt +0 -0
  109. {kaggle-1.7.4.5.dist-info → kaggle-1.8.2.dist-info}/licenses/LICENSE.txt +0 -0
  110. {kaggle/test → kagglesdk/benchmarks}/__init__.py +0 -0
kaggle/api/kaggle_api.py CHANGED
@@ -27,601 +27,577 @@ import tempfile
27
27
 
28
28
  class KaggleApi(object):
29
29
 
30
- def __init__(self, api_client=None):
31
- if api_client is None:
32
- api_client = api.KaggleApi()
33
- self.api_client = api_client
34
-
35
- def competition_download_leaderboard(self, id): # noqa: E501
36
- """Download competition leaderboard # noqa: E501.
37
-
38
- :param str id: Competition name (required)
39
- :return: Result
40
- """
41
- return self.api_client.competition_leaderboard_download(id, None)
42
-
43
- def competition_view_leaderboard(self, id): # noqa: E501
44
- """View competition leaderboard # noqa: E501.
45
-
46
- :param str id: Competition name (required)
47
- :return: Result
48
- """
49
- return self.api_client.competition_leaderboard_view(id)
50
-
51
- def competitions_data_download_file(self, id, file_name): # noqa: E501
52
- """Download competition data file # noqa: E501.
53
-
54
- :param str id: Competition name (required)
55
- :param str file_name: Competition name (required)
56
- :return: Result
57
- """
58
- return self.api_client.competition_download_file(id, file_name)
59
-
60
- def competitions_data_download_files(self, id): # noqa: E501
61
- """Download all competition data files # noqa: E501.
62
-
63
- :param str id: Competition name (required)
64
- :return: Result
65
- """
66
- return self.api_client.competition_download_files(id)
67
-
68
- def competitions_data_list_files(self, id): # noqa: E501
69
- """List competition data files # noqa: E501.
70
-
71
- :param str id: Competition name (required)
72
- :return: Result
73
- """
74
- return self.api_client.competition_list_files(id)
75
-
76
- def competitions_list(self,
77
- group=None,
78
- category=None,
79
- sort_by=None,
80
- page=1,
81
- search=None): # noqa: E501
82
- """List competitions # noqa: E501.
83
-
84
- :param str group: Filter competitions by a particular group
85
- :param str category: Filter competitions by a particular category
86
- :param str sort_by: Sort the results
87
- :param int page: Page number
88
- :param str search: Search terms
89
- :return: ApiListCompetitionsResponse
90
- """
91
- return self.api_client.competitions_list(group, category, sort_by, page,
92
- search)
93
-
94
- def competitions_submissions_list(self, id, page=0): # noqa: E501
95
- """List competition submissions # noqa: E501.
96
-
97
- :param str id: Competition name (required)
98
- :param int page: Page number
99
- :return: Result
100
- """
101
- return self.api_client.competition_submissions(id, page)
102
-
103
- def competitions_submissions_submit(self, blob_file_tokens,
104
- submission_description, id): # noqa: E501
105
- """Submit to competition # noqa: E501.
106
-
107
- :param str blob_file_tokens: Token identifying location of uploaded
108
- submission file (required)
109
- :param str submission_description: Description of competition
110
- submission (required)
111
- :param str id: Competition name (required)
112
- :return: Result
113
- """
114
- print("competitions_submissions_submit() not implemented")
115
- print("use kaggle_api_extended.KaggleApi.competition_submit() instead")
116
- raise NotImplementedError()
117
-
118
- def competitions_submissions_upload(self, file, guid, content_length,
119
- last_modified_date_utc): # noqa: E501
120
- """Upload competition submission file # noqa: E501.
121
-
122
- :param file file: Competition submission file (required)
123
- :param str guid: Location where submission should be uploaded
124
- (required)
125
- :param int content_length: Content length of file in bytes
126
- (required)
127
- :param int last_modified_date_utc: Last modified date of file in
128
- seconds since epoch in UTC (required)
129
- :return: Result
130
- """
131
- print("competitions_submissions_upload() not implemented")
132
- print(
133
- "use kaggle_api_extended.KaggleApi.competitions_submissions_submit() instead"
134
- )
135
- raise NotImplementedError()
136
-
137
- def competitions_submissions_url(self, id, content_length,
138
- last_modified_date_utc): # noqa: E501
139
- """Generate competition submission URL # noqa: E501.
140
-
141
- :param str id: Competition name, as it appears in the competition's
142
- URL (required)
143
- :param int content_length: Content length of file in bytes
144
- (required)
145
- :param int last_modified_date_utc: Last modified date of file in
146
- seconds since epoch in UTC (required)
147
- :param str file_name: Competition submission file name
148
- :return: Result
149
- """
150
- print("competitions_submissions_url() not implemented")
151
- print("use kaggle_api_extended.KaggleApi.competition_submit() instead")
152
- raise NotImplementedError()
153
-
154
- def create_inbox_file(self, create_inbox_file_request): # noqa: E501
155
- """Creates (aka \"drops\") a new file into the inbox. # noqa:
156
- E501.
157
-
158
- :param CreateInboxFileRequest create_inbox_file_request: (required)
159
- :return: Result
160
- """
161
- print("create_inbox_file() not implemented")
162
- print("use kaggle_api_extended.KaggleApi.files_upload_cli() instead")
163
- raise NotImplementedError()
164
-
165
- def datasets_create_new(self, request): # noqa: E501
166
- """Create a new dataset # noqa: E501.
167
-
168
- :param DatasetNewRequest request: Information for creating a new
169
- dataset (required)
170
- :return: Result
171
- """
172
- print("datasets_create_new() not implemented")
173
- print("use kaggle_api_extended.KaggleApi.dataset_create_new() instead")
174
- raise NotImplementedError()
175
-
176
- def datasets_create_version_by_id(self, id, dataset_new_version_request,
177
- **kwargs): # noqa: E501
178
- """Create a new dataset version by id # noqa: E501.
179
-
180
- :param int id: Dataset ID (required)
181
- :param DatasetNewVersionRequest dataset_new_version_request:
182
- Information for creating a new dataset version (required)
183
- :return: throws NotImplementedError
184
- """
185
- print("datasets_create_version_by_id() not implemented")
186
- print("use kaggle_api_extended.KaggleApi.dataset_create_version() instead")
187
- raise NotImplementedError()
188
-
189
- def datasets_download(self,
190
- owner_slug,
191
- dataset_slug,
192
- dataset_version_number=None): # noqa: E501
193
- """Download dataset file # noqa: E501.
194
-
195
- :param str owner_slug: Dataset owner (required)
196
- :param str dataset_slug: Dataset name (required)
197
- :param str dataset_version_number: Dataset version number
198
- :return: Result
199
- """
200
- dataset = f'{owner_slug}/{dataset_slug}'
201
- if dataset_version_number is not None:
202
- dataset += f'/{dataset_version_number}'
203
- return self.api_client.dataset_download_files(dataset)
204
-
205
- def datasets_download_file(self,
206
- owner_slug,
207
- dataset_slug,
208
- file_name,
209
- dataset_version_number=None): # noqa: E501
210
- """Download dataset file # noqa: E501.
211
-
212
- :param str owner_slug: Dataset owner (required)
213
- :param str dataset_slug: Dataset name (required)
214
- :param str file_name: File name (required)
215
- :param str dataset_version_number: Dataset version number
216
- :return: True if the file was downloaded successfully, False otherwise
217
- """
218
- dataset = f'{owner_slug}/{dataset_slug}'
219
- if dataset_version_number is not None:
220
- dataset += f'@{dataset_version_number}'
221
- return self.api_client.dataset_download_file(dataset, file_name)
222
-
223
- def datasets_list(self,
224
- sort_by=None,
225
- size=None,
226
- file_type=None,
227
- license_name=None,
228
- tag_ids=None,
229
- search=None,
230
- user=None,
231
- mine=False,
232
- page=1,
233
- max_size=None,
234
- min_size=None): # noqa: E501
235
- """List datasets # noqa: E501.
236
-
237
- :param str group: Display datasets by a particular group
238
- :param str sort_by: Sort the results
239
- :param str size: (DEPRECATED). Please use --max-size and --min-size
240
- to filter dataset sizes.
241
- :param str filetype: Display datasets of a specific file type
242
- :param str license: Display datasets with a specific license
243
- :param str tagids: A comma separated list of tags to filter by
244
- :param str search: Search terms
245
- :param str user: Display datasets by a specific user or organization
246
- :param int page: Page number
247
- :param int max_size: Max Dataset Size (bytes)
248
- :param int min_size: Max Dataset Size (bytes)
249
- :return: List of ApiDatasetFile.
250
- """
251
- return self.api_client.dataset_list(
252
- sort_by=sort_by,
253
- size=size,
254
- file_type=file_type,
255
- license_name=license_name,
256
- tag_ids=tag_ids,
257
- search=search,
258
- user=user,
259
- mine=mine,
260
- page=page,
261
- max_size=max_size,
262
- min_size=min_size)
263
-
264
- def datasets_status(self, owner_slug, dataset_slug, **kwargs): # noqa: E501
265
- """Get dataset creation status # noqa: E501.
266
-
267
- :param str owner_slug: Dataset owner (required)
268
- :param str dataset_slug: Dataset name (required)
269
- :return: Result
270
- """
271
- return self.api_client.dataset_status(f'{owner_slug}/{dataset_slug})')
272
-
273
- def delete_model(self, owner_slug, model_slug): # noqa: E501
274
- """Delete a model # noqa: E501.
275
-
276
- :param str owner_slug: Model owner (required)
277
- :param str model_slug: Model name (required)
278
- :return: ApiDeleteModelResponse
279
- """
280
- return self.api_client.model_delete(f'{owner_slug}/{model_slug})')
281
-
282
- def delete_model_instance(self, owner_slug, model_slug, framework,
283
- instance_slug): # noqa: E501
284
- """Delete a model instance # noqa: E501.
285
-
286
- :param str owner_slug: Model owner (required)
287
- :param str model_slug: Model name (required)
288
- :param str framework: Model instance framework (required)
289
- :param str instance_slug: Model instance slug (required)
290
- :return: Result
291
- """
292
- return self.api_client.model_instance_delete(
293
- f'{owner_slug}/{model_slug}/{framework}/{instance_slug}', yes=True)
294
-
295
- def delete_model_instance_version(self, owner_slug, model_slug, framework,
296
- instance_slug,
297
- version_number): # noqa: E501
298
- """Delete a model instance version # noqa: E501.
299
-
300
- :param str owner_slug: Model owner (required)
301
- :param str model_slug: Model name (required)
302
- :param str framework: Model instance framework (required)
303
- :param str instance_slug: Model instance slug (required)
304
- :param str version_number: Model instance version number (required)
305
- :return: Result
306
- """
307
- return self.api_client.model_instance_version_delete(
308
- f'{owner_slug}/{model_slug}/{framework}/{instance_slug}/{version_number}',
309
- yes=True)
310
-
311
- def get_model(self, owner_slug, model_slug): # noqa: E501
312
- """Get a model # noqa: E501.
313
-
314
- :param str owner_slug: Model owner (required)
315
- :param str model_slug: Model name (required)
316
- :return: Result
317
- """
318
- return self.api_client.model_get(f'{owner_slug}/{model_slug}')
319
-
320
- def get_model_instance(self, owner_slug, model_slug, framework,
321
- instance_slug): # noqa: E501
322
- """Get a model instance # noqa: E501.
323
-
324
- :param str owner_slug: Model owner (required)
325
- :param str model_slug: Model name (required)
326
- :param str framework: Model instance framework (required)
327
- :param str instance_slug: Model instance slug (required)
328
- :return: Result
329
- """
330
- return self.api_client.model_instance_get(
331
- f'{owner_slug}/{model_slug}/{framework}/{instance_slug}')
332
-
333
- def kernel_output(self, user_name, kernel_slug): # noqa: E501
334
- """Download the latest output from a kernel # noqa: E501.
335
-
336
- :param str user_name: Kernel owner (required)
337
- :param str kernel_slug: Kernel name (required)
338
- :return: Result
339
- """
340
- return self.api_client.kernels_output(
341
- f'{user_name}/{kernel_slug}', path=None, force=True)
342
-
343
- def kernel_pull(self, user_name, kernel_slug): # noqa: E501
344
- """Pull the latest code from a kernel # noqa: E501.
345
-
346
- :param str user_name: Kernel owner (required)
347
- :param str kernel_slug: Kernel name (required)
348
- :return: Result
349
- """
350
- return self.api_client.kernels_pull(f'{user_name}/{kernel_slug}', path=None)
351
-
352
- def kernel_push(self, kernel_push_request): # noqa: E501
353
- """Push a new kernel version. Can be used to create a new kernel and
354
- update an existing one. # noqa: E501.
355
-
356
- :param KernelPushRequest kernel_push_request: Information for
357
- pushing a new kernel version (required)
358
- :return: Result
359
- """
360
- with tempfile.TemporaryDirectory() as tmpdir:
361
- meta_file = os.path.join(tmpdir, 'kernel-metadata.json')
362
- (fd, code_file) = tempfile.mkstemp('code', 'py', tmpdir, text=True)
363
- fd.write(json.dumps(kernel_push_request.code))
364
- os.close(fd)
365
- with open(meta_file, 'w') as f:
366
- params = kernel_push_request.to_dict()
367
- params['code_file'] = code_file
368
- params['competition_sources'] = params.get('competition_data_sources')
369
- params['dataset_sources'] = params.get('dataset_data_sources')
370
- params['kernel_sources'] = params.get('kernel_data_sources')
371
- params['model_sources'] = params.get('model_data_sources')
372
- params['title'] = params.get('new_title')
373
- entries_to_remove = ('competition_data_sources', 'dataset_data_sources',
374
- 'kernel_data_sources', 'model_data_sources',
375
- 'new_title')
376
- for k in entries_to_remove:
377
- params.pop(k, None)
378
- f.write(json.dumps(params))
379
- return self.api_client.kernels_push(tmpdir)
380
-
381
- def kernel_status(self, user_name, kernel_slug): # noqa: E501
382
- """Get the status of the latest kernel version # noqa: E501.
383
-
384
- :param str user_name: Kernel owner (required)
385
- :param str kernel_slug: Kernel name (required)
386
- :return: Result
387
- """
388
- return self.api_client.kernels_status(f'{user_name}/{kernel_slug}')
389
-
390
- def kernels_list(self,
391
- page=1,
392
- page_size=20,
393
- dataset=None,
394
- competition=None,
395
- parent_kernel=None,
396
- search=None,
397
- group='everyone',
398
- user=None,
399
- language=None,
400
- kernel_type=None,
401
- output_type=None,
402
- sort_by=None): # noqa: E501
403
- """List kernels # noqa: E501.
404
-
405
- :param int page: Page number
406
- :param int page_size: Page size
407
- :param str search: Search terms
408
- :param str group: Display only your kernels
409
- :param str user: Display kernels by a particular group
410
- :param str language: Display kernels in a specific language
411
- :param str kernel_type: Display kernels of a specific type
412
- :param str output_type: Display kernels with a specific output type
413
- :param str sort_by: Sort the results. 'relevance' only works if
414
- there is a search query
415
- :param str dataset: Display kernels using the specified dataset
416
- :param str competition: Display kernels using the specified
417
- competition
418
- :param str parent_kernel: Display kernels that have forked the
419
- specified kernel
420
- :return: Result
421
- """
422
- return self.api_client.kernels_list(
423
- page=page,
424
- page_size=page_size,
425
- dataset=dataset,
426
- competition=competition,
427
- parent_kernel=parent_kernel,
428
- search=search,
429
- mine=group != 'everyone',
430
- user=user,
431
- language=language,
432
- kernel_type=kernel_type,
433
- output_type=output_type,
434
- sort_by=sort_by)
435
-
436
- def metadata_get(self, owner_slug, dataset_slug): # noqa: E501
437
- """Get the metadata for a dataset # noqa: E501.
438
-
439
- :param str owner_slug: Dataset owner (required)
440
- :param str dataset_slug: Dataset name (required)
441
- :return: Result
442
- """
443
- return self.api_client.dataset_metadata(f'{owner_slug}/{dataset_slug}',
444
- None)
445
-
446
- def metadata_post(self, owner_slug, dataset_slug, settings,
447
- request): # noqa: E501
448
- """Update the metadata for a dataset # noqa: E501.
449
-
450
- :param str owner_slug: Dataset owner (required)
451
- :param str dataset_slug: Dataset name (required)
452
- :param DatasetUpdateSettingsRequest settings: Dataset metadata to
453
- update (required)
454
- :return: Result
455
- """
456
- with tempfile.TemporaryDirectory() as tmpdir:
457
- meta_file = os.path.join(tmpdir, 'dataset-metadata.json')
458
- with open(meta_file, 'w') as f:
459
- params = request.to_dict()
460
- params['isPrivate'] = params.get('is_private')
461
- params.pop('is_private', None)
462
- f.write(json.dumps(params))
463
- return self.api_client.dataset_metadata_update(
464
- f'{owner_slug}/{dataset_slug}', meta_file)
465
-
466
- def model_instance_versions_download(self, owner_slug, model_slug, framework,
467
- instance_slug,
468
- version_number): # noqa: E501
469
- """Download model instance version files # noqa: E501.
470
-
471
- :param str owner_slug: Model owner (required)
472
- :param str model_slug: Model name (required)
473
- :param str framework: Model instance framework (required)
474
- :param str instance_slug: Model instance slug (required)
475
- :param str version_number: Model instance version number (required)
476
- :return: Result
477
- """
478
- v = f'{owner_slug}/{model_slug}/{framework}/{instance_slug}/{version_number}'
479
- return self.api_client.model_instance_version_download(v)
480
-
481
- def models_create_instance(self, owner_slug, model_slug,
482
- model_new_instance_request): # noqa: E501
483
- """Create a new model instance # noqa: E501.
484
-
485
- :param str owner_slug: Model owner (required)
486
- :param str model_slug: Model slug (required)
487
- :param ModelNewInstanceRequest model_new_instance_request:
488
- Information for creating a new model instance (required)
489
- :return: Result
490
- """
491
- print("models_create_instance() not implemented")
492
- print("use kaggle_api_extended.KaggleApi.model_instance_create() instead")
493
- raise NotImplementedError()
494
-
495
- def models_create_instance_version(
496
- self, owner_slug, model_slug, framework, instance_slug,
497
- model_instance_new_version_request): # noqa: E501
498
- """Create a new model instance version # noqa: E501.
499
-
500
- :param str owner_slug: Model owner (required)
501
- :param str model_slug: Model slug (required)
502
- :param str framework: Model instance framework (required)
503
- :param str instance_slug: Model instance slug (required)
504
- :param ModelInstanceNewVersionRequest
505
- model_instance_new_version_request: Information for creating a
506
- new model instance version (required)
507
- :return: Result
508
- """
509
- print("models_create_instance_version() not implemented")
510
- print(
511
- "use kaggle_api_extended.KaggleApi.model_instance_version_create() instead"
512
- )
513
- raise NotImplementedError()
514
-
515
- def models_create_new(self, model_new_request): # noqa: E501
516
- """Create a new model # noqa: E501.
517
-
518
- :param ModelNewRequest model_new_request: Information for creating a
519
- new model (required)
520
- :return: Result
521
- """
522
- with tempfile.TemporaryDirectory() as tmpdir:
523
- meta_file = os.path.join(tmpdir, 'model-metadata.json')
524
- with open(meta_file, 'w') as f:
525
- params = model_new_request.to_dict()
526
- params['ownerSlug'] = params.get('owner_slug')
527
- params['isPrivate'] = params.get('is_private')
528
- params['publishTime'] = params.get('publish_time')
529
- params['provenanceSources'] = params.get('provenance_sources')
530
- entries_to_remove = ('owner_slug', 'is_private', 'publish_time',
531
- 'provenance_sources')
532
- for k in entries_to_remove:
533
- params.pop(k, None)
534
- f.write(json.dumps(params))
535
- return self.api_client.model_create_new(tmpdir)
536
-
537
- def models_list(self,
538
- sort_by=None,
539
- search=None,
540
- owner=None,
541
- page_size=20,
542
- page_token=None):
543
- """List models
544
-
545
- :param str search: Search terms
546
- :param str sort_by: Sort the results
547
- :param str owner: Display models by a specific user or organization
548
- :param int page_size: Page size
549
- :param str page_token: Page token for pagination
550
- :return: list of models
551
- """
552
- return self.api_client.model_list(
553
- sort_by=sort_by,
554
- search=search,
555
- owner=owner,
556
- page_size=page_size,
557
- page_token=page_token)
558
-
559
- def update_model(
560
- self,
561
- owner_slug,
562
- model_slug,
563
- model_update_request,
564
- ): # noqa: E501
565
- """Update a model # noqa: E501.
566
-
567
- :param str owner_slug: Model owner (required)
568
- :param str model_slug: Model name (required)
569
- :param ModelUpdateRequest model_update_request: Information for
570
- updating a model (required)
571
- :return: Result
572
- """
573
- with tempfile.TemporaryDirectory() as tmpdir:
574
- meta_file = os.path.join(tmpdir, 'model-metadata.json')
575
- with open(meta_file, 'w') as f:
576
- params = model_update_request.to_dict()
577
- params['ownerSlug'] = params.get('owner_slug')
578
- params['isPrivate'] = params.get('is_private')
579
- params['publishTime'] = params.get('publish_time')
580
- params['provenanceSources'] = params.get('provenance_sources')
581
- params['updateMask'] = params.get('update_mask')
582
- entries_to_remove = ('owner_slug', 'is_private', 'publish_time',
583
- 'provenance_sources', 'update_mask')
584
- for k in entries_to_remove:
585
- params.pop(k, None)
586
- f.write(json.dumps(params))
587
- return self.api_client.model_update(tmpdir)
588
-
589
- def update_model_instance(self, owner_slug, model_slug, framework,
590
- instance_slug,
591
- model_instance_update_request): # noqa: E501
592
- """Update a model # noqa: E501.
593
-
594
- :param str owner_slug: Model owner (required)
595
- :param str model_slug: Model name (required)
596
- :param str framework: Model instance framework (required)
597
- :param str instance_slug: Model instance slug (required)
598
- :param ModelInstanceUpdateRequest model_instance_update_request:
599
- Information for updating a model instance (required)
600
- :return: Result
601
- """
602
- with tempfile.TemporaryDirectory() as tmpdir:
603
- meta_file = os.path.join(tmpdir, 'model-instance-metadata.json')
604
- with open(meta_file, 'w') as f:
605
- params = model_instance_update_request.to_dict()
606
- params['licenseName'] = params.get('license_name')
607
- params['fineTunable'] = params.get('fine_tunable')
608
- params['trainingData'] = params.get('training_data')
609
- params['modelInstanceType'] = params.get('model_instance_type')
610
- params['baseModelInstance'] = params.get('base_model_instance')
611
- params['externalBaseModelUrl'] = params.get('external_base_model_url')
612
- params['updateMask'] = params.get('update_mask')
613
- entries_to_remove = ('license_name', 'fine_tunable', 'training_data',
614
- 'model_instance_type', 'base_model_instance',
615
- 'external_base_model_url', 'update_mask')
616
- for k in entries_to_remove:
617
- params.pop(k, None)
618
- f.write(json.dumps(params))
619
- return self.api_client.model_instance_update(tmpdir)
620
-
621
- def upload_file(self, start_blob_upload_request): # noqa: E501
622
- """Start uploading a file # noqa: E501 :param StartBlobUploadRequest
623
- start_blob_upload_request: (required) :return: StartBlobUploadResponse."""
624
- print("upload_file() not implemented")
625
- print("it should not be needed after converting your code")
626
- print("to use kaggle_api_extended.KaggleApi.<high-level-fn>() instead")
627
- raise NotImplementedError()
30
+ def __init__(self, api_client=None):
31
+ if api_client is None:
32
+ api_client = api.KaggleApi()
33
+ self.api_client = api_client
34
+
35
+ def competition_download_leaderboard(self, id): # noqa: E501
36
+ """Download competition leaderboard # noqa: E501.
37
+
38
+ :param str id: Competition name (required)
39
+ :return: Result
40
+ """
41
+ return self.api_client.competition_leaderboard_download(id, None)
42
+
43
+ def competition_view_leaderboard(self, id): # noqa: E501
44
+ """View competition leaderboard # noqa: E501.
45
+
46
+ :param str id: Competition name (required)
47
+ :return: Result
48
+ """
49
+ return self.api_client.competition_leaderboard_view(id)
50
+
51
+ def competitions_data_download_file(self, id, file_name): # noqa: E501
52
+ """Download competition data file # noqa: E501.
53
+
54
+ :param str id: Competition name (required)
55
+ :param str file_name: Competition name (required)
56
+ :return: Result
57
+ """
58
+ return self.api_client.competition_download_file(id, file_name)
59
+
60
+ def competitions_data_download_files(self, id): # noqa: E501
61
+ """Download all competition data files # noqa: E501.
62
+
63
+ :param str id: Competition name (required)
64
+ :return: Result
65
+ """
66
+ return self.api_client.competition_download_files(id)
67
+
68
+ def competitions_data_list_files(self, id): # noqa: E501
69
+ """List competition data files # noqa: E501.
70
+
71
+ :param str id: Competition name (required)
72
+ :return: Result
73
+ """
74
+ return self.api_client.competition_list_files(id)
75
+
76
+ def competitions_list(self, group=None, category=None, sort_by=None, page=1, search=None): # noqa: E501
77
+ """List competitions # noqa: E501.
78
+
79
+ :param str group: Filter competitions by a particular group
80
+ :param str category: Filter competitions by a particular category
81
+ :param str sort_by: Sort the results
82
+ :param int page: Page number
83
+ :param str search: Search terms
84
+ :return: ApiListCompetitionsResponse
85
+ """
86
+ return self.api_client.competitions_list(group, category, sort_by, page, search)
87
+
88
+ def competitions_submissions_list(self, id, page=0): # noqa: E501
89
+ """List competition submissions # noqa: E501.
90
+
91
+ :param str id: Competition name (required)
92
+ :param int page: Page number
93
+ :return: Result
94
+ """
95
+ return self.api_client.competition_submissions(id, page)
96
+
97
+ def competitions_submissions_submit(self, blob_file_tokens, submission_description, id): # noqa: E501
98
+ """Submit to competition # noqa: E501.
99
+
100
+ :param str blob_file_tokens: Token identifying location of uploaded
101
+ submission file (required)
102
+ :param str submission_description: Description of competition
103
+ submission (required)
104
+ :param str id: Competition name (required)
105
+ :return: Result
106
+ """
107
+ print("competitions_submissions_submit() not implemented")
108
+ print("use kaggle_api_extended.KaggleApi.competition_submit() instead")
109
+ raise NotImplementedError()
110
+
111
+ def competitions_submissions_upload(self, file, guid, content_length, last_modified_date_utc): # noqa: E501
112
+ """Upload competition submission file # noqa: E501.
113
+
114
+ :param file file: Competition submission file (required)
115
+ :param str guid: Location where submission should be uploaded
116
+ (required)
117
+ :param int content_length: Content length of file in bytes
118
+ (required)
119
+ :param int last_modified_date_utc: Last modified date of file in
120
+ seconds since epoch in UTC (required)
121
+ :return: Result
122
+ """
123
+ print("competitions_submissions_upload() not implemented")
124
+ print("use kaggle_api_extended.KaggleApi.competitions_submissions_submit() instead")
125
+ raise NotImplementedError()
126
+
127
+ def competitions_submissions_url(self, id, content_length, last_modified_date_utc): # noqa: E501
128
+ """Generate competition submission URL # noqa: E501.
129
+
130
+ :param str id: Competition name, as it appears in the competition's
131
+ URL (required)
132
+ :param int content_length: Content length of file in bytes
133
+ (required)
134
+ :param int last_modified_date_utc: Last modified date of file in
135
+ seconds since epoch in UTC (required)
136
+ :param str file_name: Competition submission file name
137
+ :return: Result
138
+ """
139
+ print("competitions_submissions_url() not implemented")
140
+ print("use kaggle_api_extended.KaggleApi.competition_submit() instead")
141
+ raise NotImplementedError()
142
+
143
+ def create_inbox_file(self, create_inbox_file_request): # noqa: E501
144
+ """Creates (aka \&quot;drops\&quot;) a new file into the inbox. # noqa:
145
+ E501.
146
+
147
+ :param CreateInboxFileRequest create_inbox_file_request: (required)
148
+ :return: Result
149
+ """
150
+ print("create_inbox_file() not implemented")
151
+ print("use kaggle_api_extended.KaggleApi.files_upload_cli() instead")
152
+ raise NotImplementedError()
153
+
154
+ def datasets_create_new(self, request): # noqa: E501
155
+ """Create a new dataset # noqa: E501.
156
+
157
+ :param DatasetNewRequest request: Information for creating a new
158
+ dataset (required)
159
+ :return: Result
160
+ """
161
+ print("datasets_create_new() not implemented")
162
+ print("use kaggle_api_extended.KaggleApi.dataset_create_new() instead")
163
+ raise NotImplementedError()
164
+
165
+ def datasets_create_version_by_id(self, id, dataset_new_version_request, **kwargs): # noqa: E501
166
+ """Create a new dataset version by id # noqa: E501.
167
+
168
+ :param int id: Dataset ID (required)
169
+ :param DatasetNewVersionRequest dataset_new_version_request:
170
+ Information for creating a new dataset version (required)
171
+ :return: throws NotImplementedError
172
+ """
173
+ print("datasets_create_version_by_id() not implemented")
174
+ print("use kaggle_api_extended.KaggleApi.dataset_create_version() instead")
175
+ raise NotImplementedError()
176
+
177
+ def datasets_download(self, owner_slug, dataset_slug, dataset_version_number=None): # noqa: E501
178
+ """Download dataset file # noqa: E501.
179
+
180
+ :param str owner_slug: Dataset owner (required)
181
+ :param str dataset_slug: Dataset name (required)
182
+ :param str dataset_version_number: Dataset version number
183
+ :return: Result
184
+ """
185
+ dataset = f"{owner_slug}/{dataset_slug}"
186
+ if dataset_version_number is not None:
187
+ dataset += f"/{dataset_version_number}"
188
+ return self.api_client.dataset_download_files(dataset)
189
+
190
+ def datasets_download_file(self, owner_slug, dataset_slug, file_name, dataset_version_number=None): # noqa: E501
191
+ """Download dataset file # noqa: E501.
192
+
193
+ :param str owner_slug: Dataset owner (required)
194
+ :param str dataset_slug: Dataset name (required)
195
+ :param str file_name: File name (required)
196
+ :param str dataset_version_number: Dataset version number
197
+ :return: True if the file was downloaded successfully, False otherwise
198
+ """
199
+ dataset = f"{owner_slug}/{dataset_slug}"
200
+ if dataset_version_number is not None:
201
+ dataset += f"@{dataset_version_number}"
202
+ return self.api_client.dataset_download_file(dataset, file_name)
203
+
204
+ def datasets_list(
205
+ self,
206
+ sort_by=None,
207
+ size=None,
208
+ file_type=None,
209
+ license_name=None,
210
+ tag_ids=None,
211
+ search=None,
212
+ user=None,
213
+ mine=False,
214
+ page=1,
215
+ max_size=None,
216
+ min_size=None,
217
+ ): # noqa: E501
218
+ """List datasets # noqa: E501.
219
+
220
+ :param str group: Display datasets by a particular group
221
+ :param str sort_by: Sort the results
222
+ :param str size: (DEPRECATED). Please use --max-size and --min-size
223
+ to filter dataset sizes.
224
+ :param str filetype: Display datasets of a specific file type
225
+ :param str license: Display datasets with a specific license
226
+ :param str tagids: A comma separated list of tags to filter by
227
+ :param str search: Search terms
228
+ :param str user: Display datasets by a specific user or organization
229
+ :param int page: Page number
230
+ :param int max_size: Max Dataset Size (bytes)
231
+ :param int min_size: Max Dataset Size (bytes)
232
+ :return: List of ApiDatasetFile.
233
+ """
234
+ return self.api_client.dataset_list(
235
+ sort_by=sort_by,
236
+ size=size,
237
+ file_type=file_type,
238
+ license_name=license_name,
239
+ tag_ids=tag_ids,
240
+ search=search,
241
+ user=user,
242
+ mine=mine,
243
+ page=page,
244
+ max_size=max_size,
245
+ min_size=min_size,
246
+ )
247
+
248
+ def datasets_status(self, owner_slug, dataset_slug, **kwargs): # noqa: E501
249
+ """Get dataset creation status # noqa: E501.
250
+
251
+ :param str owner_slug: Dataset owner (required)
252
+ :param str dataset_slug: Dataset name (required)
253
+ :return: Result
254
+ """
255
+ return self.api_client.dataset_status(f"{owner_slug}/{dataset_slug})")
256
+
257
+ def delete_model(self, owner_slug, model_slug): # noqa: E501
258
+ """Delete a model # noqa: E501.
259
+
260
+ :param str owner_slug: Model owner (required)
261
+ :param str model_slug: Model name (required)
262
+ :return: ApiDeleteModelResponse
263
+ """
264
+ return self.api_client.model_delete(f"{owner_slug}/{model_slug})")
265
+
266
+ def delete_model_instance(self, owner_slug, model_slug, framework, instance_slug): # noqa: E501
267
+ """Delete a model instance # noqa: E501.
268
+
269
+ :param str owner_slug: Model owner (required)
270
+ :param str model_slug: Model name (required)
271
+ :param str framework: Model instance framework (required)
272
+ :param str instance_slug: Model instance slug (required)
273
+ :return: Result
274
+ """
275
+ return self.api_client.model_instance_delete(f"{owner_slug}/{model_slug}/{framework}/{instance_slug}", yes=True)
276
+
277
+ def delete_model_instance_version(
278
+ self, owner_slug, model_slug, framework, instance_slug, version_number
279
+ ): # noqa: E501
280
+ """Delete a model instance version # noqa: E501.
281
+
282
+ :param str owner_slug: Model owner (required)
283
+ :param str model_slug: Model name (required)
284
+ :param str framework: Model instance framework (required)
285
+ :param str instance_slug: Model instance slug (required)
286
+ :param str version_number: Model instance version number (required)
287
+ :return: Result
288
+ """
289
+ return self.api_client.model_instance_version_delete(
290
+ f"{owner_slug}/{model_slug}/{framework}/{instance_slug}/{version_number}", yes=True
291
+ )
292
+
293
+ def get_model(self, owner_slug, model_slug): # noqa: E501
294
+ """Get a model # noqa: E501.
295
+
296
+ :param str owner_slug: Model owner (required)
297
+ :param str model_slug: Model name (required)
298
+ :return: Result
299
+ """
300
+ return self.api_client.model_get(f"{owner_slug}/{model_slug}")
301
+
302
+ def get_model_instance(self, owner_slug, model_slug, framework, instance_slug): # noqa: E501
303
+ """Get a model instance # noqa: E501.
304
+
305
+ :param str owner_slug: Model owner (required)
306
+ :param str model_slug: Model name (required)
307
+ :param str framework: Model instance framework (required)
308
+ :param str instance_slug: Model instance slug (required)
309
+ :return: Result
310
+ """
311
+ return self.api_client.model_instance_get(f"{owner_slug}/{model_slug}/{framework}/{instance_slug}")
312
+
313
+ def kernel_output(self, user_name, kernel_slug): # noqa: E501
314
+ """Download the latest output from a kernel # noqa: E501.
315
+
316
+ :param str user_name: Kernel owner (required)
317
+ :param str kernel_slug: Kernel name (required)
318
+ :return: Result
319
+ """
320
+ return self.api_client.kernels_output(f"{user_name}/{kernel_slug}", path=None, force=True)
321
+
322
+ def kernel_pull(self, user_name, kernel_slug): # noqa: E501
323
+ """Pull the latest code from a kernel # noqa: E501.
324
+
325
+ :param str user_name: Kernel owner (required)
326
+ :param str kernel_slug: Kernel name (required)
327
+ :return: Result
328
+ """
329
+ return self.api_client.kernels_pull(f"{user_name}/{kernel_slug}", path=None)
330
+
331
+ def kernel_push(self, kernel_push_request): # noqa: E501
332
+ """Push a new kernel version. Can be used to create a new kernel and
333
+ update an existing one. # noqa: E501.
334
+
335
+ :param KernelPushRequest kernel_push_request: Information for
336
+ pushing a new kernel version (required)
337
+ :return: Result
338
+ """
339
+ with tempfile.TemporaryDirectory() as tmpdir:
340
+ meta_file = os.path.join(tmpdir, "kernel-metadata.json")
341
+ (fd, code_file) = tempfile.mkstemp("code", "py", tmpdir, text=True)
342
+ fd.write(json.dumps(kernel_push_request.code))
343
+ os.close(fd)
344
+ with open(meta_file, "w") as f:
345
+ params = kernel_push_request.to_dict()
346
+ params["code_file"] = code_file
347
+ params["competition_sources"] = params.get("competition_data_sources")
348
+ params["dataset_sources"] = params.get("dataset_data_sources")
349
+ params["kernel_sources"] = params.get("kernel_data_sources")
350
+ params["model_sources"] = params.get("model_data_sources")
351
+ params["title"] = params.get("new_title")
352
+ entries_to_remove = (
353
+ "competition_data_sources",
354
+ "dataset_data_sources",
355
+ "kernel_data_sources",
356
+ "model_data_sources",
357
+ "new_title",
358
+ )
359
+ for k in entries_to_remove:
360
+ params.pop(k, None)
361
+ f.write(json.dumps(params))
362
+ return self.api_client.kernels_push(tmpdir)
363
+
364
+ def kernel_status(self, user_name, kernel_slug): # noqa: E501
365
+ """Get the status of the latest kernel version # noqa: E501.
366
+
367
+ :param str user_name: Kernel owner (required)
368
+ :param str kernel_slug: Kernel name (required)
369
+ :return: Result
370
+ """
371
+ return self.api_client.kernels_status(f"{user_name}/{kernel_slug}")
372
+
373
+ def kernels_list(
374
+ self,
375
+ page=1,
376
+ page_size=20,
377
+ dataset=None,
378
+ competition=None,
379
+ parent_kernel=None,
380
+ search=None,
381
+ group="everyone",
382
+ user=None,
383
+ language=None,
384
+ kernel_type=None,
385
+ output_type=None,
386
+ sort_by=None,
387
+ ): # noqa: E501
388
+ """List kernels # noqa: E501.
389
+
390
+ :param int page: Page number
391
+ :param int page_size: Page size
392
+ :param str search: Search terms
393
+ :param str group: Display only your kernels
394
+ :param str user: Display kernels by a particular group
395
+ :param str language: Display kernels in a specific language
396
+ :param str kernel_type: Display kernels of a specific type
397
+ :param str output_type: Display kernels with a specific output type
398
+ :param str sort_by: Sort the results. 'relevance' only works if
399
+ there is a search query
400
+ :param str dataset: Display kernels using the specified dataset
401
+ :param str competition: Display kernels using the specified
402
+ competition
403
+ :param str parent_kernel: Display kernels that have forked the
404
+ specified kernel
405
+ :return: Result
406
+ """
407
+ return self.api_client.kernels_list(
408
+ page=page,
409
+ page_size=page_size,
410
+ dataset=dataset,
411
+ competition=competition,
412
+ parent_kernel=parent_kernel,
413
+ search=search,
414
+ mine=group != "everyone",
415
+ user=user,
416
+ language=language,
417
+ kernel_type=kernel_type,
418
+ output_type=output_type,
419
+ sort_by=sort_by,
420
+ )
421
+
422
+ def metadata_get(self, owner_slug, dataset_slug): # noqa: E501
423
+ """Get the metadata for a dataset # noqa: E501.
424
+
425
+ :param str owner_slug: Dataset owner (required)
426
+ :param str dataset_slug: Dataset name (required)
427
+ :return: Result
428
+ """
429
+ return self.api_client.dataset_metadata(f"{owner_slug}/{dataset_slug}", None)
430
+
431
+ def metadata_post(self, owner_slug, dataset_slug, settings, request): # noqa: E501
432
+ """Update the metadata for a dataset # noqa: E501.
433
+
434
+ :param str owner_slug: Dataset owner (required)
435
+ :param str dataset_slug: Dataset name (required)
436
+ :param DatasetUpdateSettingsRequest settings: Dataset metadata to
437
+ update (required)
438
+ :return: Result
439
+ """
440
+ with tempfile.TemporaryDirectory() as tmpdir:
441
+ meta_file = os.path.join(tmpdir, "dataset-metadata.json")
442
+ with open(meta_file, "w") as f:
443
+ params = request.to_dict()
444
+ params["isPrivate"] = params.get("is_private")
445
+ params.pop("is_private", None)
446
+ f.write(json.dumps(params))
447
+ return self.api_client.dataset_metadata_update(f"{owner_slug}/{dataset_slug}", meta_file)
448
+
449
+ def model_instance_versions_download(
450
+ self, owner_slug, model_slug, framework, instance_slug, version_number
451
+ ): # noqa: E501
452
+ """Download model instance version files # noqa: E501.
453
+
454
+ :param str owner_slug: Model owner (required)
455
+ :param str model_slug: Model name (required)
456
+ :param str framework: Model instance framework (required)
457
+ :param str instance_slug: Model instance slug (required)
458
+ :param str version_number: Model instance version number (required)
459
+ :return: Result
460
+ """
461
+ v = f"{owner_slug}/{model_slug}/{framework}/{instance_slug}/{version_number}"
462
+ return self.api_client.model_instance_version_download(v)
463
+
464
+ def models_create_instance(self, owner_slug, model_slug, model_new_instance_request): # noqa: E501
465
+ """Create a new model instance # noqa: E501.
466
+
467
+ :param str owner_slug: Model owner (required)
468
+ :param str model_slug: Model slug (required)
469
+ :param ModelNewInstanceRequest model_new_instance_request:
470
+ Information for creating a new model instance (required)
471
+ :return: Result
472
+ """
473
+ print("models_create_instance() not implemented")
474
+ print("use kaggle_api_extended.KaggleApi.model_instance_create() instead")
475
+ raise NotImplementedError()
476
+
477
+ def models_create_instance_version(
478
+ self, owner_slug, model_slug, framework, instance_slug, model_instance_new_version_request
479
+ ): # noqa: E501
480
+ """Create a new model instance version # noqa: E501.
481
+
482
+ :param str owner_slug: Model owner (required)
483
+ :param str model_slug: Model slug (required)
484
+ :param str framework: Model instance framework (required)
485
+ :param str instance_slug: Model instance slug (required)
486
+ :param ModelInstanceNewVersionRequest
487
+ model_instance_new_version_request: Information for creating a
488
+ new model instance version (required)
489
+ :return: Result
490
+ """
491
+ print("models_create_instance_version() not implemented")
492
+ print("use kaggle_api_extended.KaggleApi.model_instance_version_create() instead")
493
+ raise NotImplementedError()
494
+
495
+ def models_create_new(self, model_new_request): # noqa: E501
496
+ """Create a new model # noqa: E501.
497
+
498
+ :param ModelNewRequest model_new_request: Information for creating a
499
+ new model (required)
500
+ :return: Result
501
+ """
502
+ with tempfile.TemporaryDirectory() as tmpdir:
503
+ meta_file = os.path.join(tmpdir, "model-metadata.json")
504
+ with open(meta_file, "w") as f:
505
+ params = model_new_request.to_dict()
506
+ params["ownerSlug"] = params.get("owner_slug")
507
+ params["isPrivate"] = params.get("is_private")
508
+ params["publishTime"] = params.get("publish_time")
509
+ params["provenanceSources"] = params.get("provenance_sources")
510
+ entries_to_remove = ("owner_slug", "is_private", "publish_time", "provenance_sources")
511
+ for k in entries_to_remove:
512
+ params.pop(k, None)
513
+ f.write(json.dumps(params))
514
+ return self.api_client.model_create_new(tmpdir)
515
+
516
+ def models_list(self, sort_by=None, search=None, owner=None, page_size=20, page_token=None):
517
+ """List models
518
+
519
+ :param str search: Search terms
520
+ :param str sort_by: Sort the results
521
+ :param str owner: Display models by a specific user or organization
522
+ :param int page_size: Page size
523
+ :param str page_token: Page token for pagination
524
+ :return: list of models
525
+ """
526
+ return self.api_client.model_list(
527
+ sort_by=sort_by, search=search, owner=owner, page_size=page_size, page_token=page_token
528
+ )
529
+
530
+ def update_model(
531
+ self,
532
+ owner_slug,
533
+ model_slug,
534
+ model_update_request,
535
+ ): # noqa: E501
536
+ """Update a model # noqa: E501.
537
+
538
+ :param str owner_slug: Model owner (required)
539
+ :param str model_slug: Model name (required)
540
+ :param ModelUpdateRequest model_update_request: Information for
541
+ updating a model (required)
542
+ :return: Result
543
+ """
544
+ with tempfile.TemporaryDirectory() as tmpdir:
545
+ meta_file = os.path.join(tmpdir, "model-metadata.json")
546
+ with open(meta_file, "w") as f:
547
+ params = model_update_request.to_dict()
548
+ params["ownerSlug"] = params.get("owner_slug")
549
+ params["isPrivate"] = params.get("is_private")
550
+ params["publishTime"] = params.get("publish_time")
551
+ params["provenanceSources"] = params.get("provenance_sources")
552
+ params["updateMask"] = params.get("update_mask")
553
+ entries_to_remove = ("owner_slug", "is_private", "publish_time", "provenance_sources", "update_mask")
554
+ for k in entries_to_remove:
555
+ params.pop(k, None)
556
+ f.write(json.dumps(params))
557
+ return self.api_client.model_update(tmpdir)
558
+
559
+ def update_model_instance(
560
+ self, owner_slug, model_slug, framework, instance_slug, model_instance_update_request
561
+ ): # noqa: E501
562
+ """Update a model # noqa: E501.
563
+
564
+ :param str owner_slug: Model owner (required)
565
+ :param str model_slug: Model name (required)
566
+ :param str framework: Model instance framework (required)
567
+ :param str instance_slug: Model instance slug (required)
568
+ :param ModelInstanceUpdateRequest model_instance_update_request:
569
+ Information for updating a model instance (required)
570
+ :return: Result
571
+ """
572
+ with tempfile.TemporaryDirectory() as tmpdir:
573
+ meta_file = os.path.join(tmpdir, "model-instance-metadata.json")
574
+ with open(meta_file, "w") as f:
575
+ params = model_instance_update_request.to_dict()
576
+ params["licenseName"] = params.get("license_name")
577
+ params["fineTunable"] = params.get("fine_tunable")
578
+ params["trainingData"] = params.get("training_data")
579
+ params["modelInstanceType"] = params.get("model_instance_type")
580
+ params["baseModelInstance"] = params.get("base_model_instance")
581
+ params["externalBaseModelUrl"] = params.get("external_base_model_url")
582
+ params["updateMask"] = params.get("update_mask")
583
+ entries_to_remove = (
584
+ "license_name",
585
+ "fine_tunable",
586
+ "training_data",
587
+ "model_instance_type",
588
+ "base_model_instance",
589
+ "external_base_model_url",
590
+ "update_mask",
591
+ )
592
+ for k in entries_to_remove:
593
+ params.pop(k, None)
594
+ f.write(json.dumps(params))
595
+ return self.api_client.model_instance_update(tmpdir)
596
+
597
+ def upload_file(self, start_blob_upload_request): # noqa: E501
598
+ """Start uploading a file # noqa: E501 :param StartBlobUploadRequest
599
+ start_blob_upload_request: (required) :return: StartBlobUploadResponse."""
600
+ print("upload_file() not implemented")
601
+ print("it should not be needed after converting your code")
602
+ print("to use kaggle_api_extended.KaggleApi.<high-level-fn>() instead")
603
+ raise NotImplementedError()