kaggle 1.7.3b1__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 (89) hide show
  1. kaggle/LICENSE +201 -0
  2. kaggle/__init__.py +6 -0
  3. kaggle/api/__init__.py +0 -0
  4. kaggle/api/kaggle_api.py +614 -0
  5. kaggle/api/kaggle_api_extended.py +4657 -0
  6. kaggle/cli.py +1606 -0
  7. kaggle/configuration.py +206 -0
  8. kaggle/models/__init__.py +0 -0
  9. kaggle/models/api_blob_type.py +4 -0
  10. kaggle/models/dataset_column.py +228 -0
  11. kaggle/models/dataset_new_request.py +385 -0
  12. kaggle/models/dataset_new_version_request.py +287 -0
  13. kaggle/models/dataset_update_settings_request.py +310 -0
  14. kaggle/models/kaggle_models_extended.py +276 -0
  15. kaggle/models/kernel_push_request.py +556 -0
  16. kaggle/models/model_instance_new_version_request.py +145 -0
  17. kaggle/models/model_instance_update_request.py +351 -0
  18. kaggle/models/model_new_instance_request.py +417 -0
  19. kaggle/models/model_new_request.py +314 -0
  20. kaggle/models/model_update_request.py +282 -0
  21. kaggle/models/start_blob_upload_request.py +232 -0
  22. kaggle/models/start_blob_upload_response.py +137 -0
  23. kaggle/models/upload_file.py +169 -0
  24. kaggle/test/__init__.py +0 -0
  25. kaggle/test/test_authenticate.py +43 -0
  26. kaggle-1.7.3b1.dist-info/METADATA +348 -0
  27. kaggle-1.7.3b1.dist-info/RECORD +89 -0
  28. kaggle-1.7.3b1.dist-info/WHEEL +4 -0
  29. kaggle-1.7.3b1.dist-info/entry_points.txt +2 -0
  30. kaggle-1.7.3b1.dist-info/licenses/LICENSE.txt +201 -0
  31. kagglesdk/LICENSE +201 -0
  32. kagglesdk/__init__.py +2 -0
  33. kagglesdk/admin/__init__.py +0 -0
  34. kagglesdk/admin/services/__init__.py +0 -0
  35. kagglesdk/admin/services/inbox_file_service.py +22 -0
  36. kagglesdk/admin/types/__init__.py +0 -0
  37. kagglesdk/admin/types/inbox_file_service.py +74 -0
  38. kagglesdk/blobs/__init__.py +0 -0
  39. kagglesdk/blobs/services/__init__.py +0 -0
  40. kagglesdk/blobs/services/blob_api_service.py +25 -0
  41. kagglesdk/blobs/types/__init__.py +0 -0
  42. kagglesdk/blobs/types/blob_api_service.py +177 -0
  43. kagglesdk/common/__init__.py +0 -0
  44. kagglesdk/common/types/__init__.py +0 -0
  45. kagglesdk/common/types/file_download.py +102 -0
  46. kagglesdk/common/types/http_redirect.py +105 -0
  47. kagglesdk/competitions/__init__.py +0 -0
  48. kagglesdk/competitions/services/__init__.py +0 -0
  49. kagglesdk/competitions/services/competition_api_service.py +129 -0
  50. kagglesdk/competitions/types/__init__.py +0 -0
  51. kagglesdk/competitions/types/competition_api_service.py +1874 -0
  52. kagglesdk/competitions/types/competition_enums.py +53 -0
  53. kagglesdk/competitions/types/submission_status.py +9 -0
  54. kagglesdk/datasets/__init__.py +0 -0
  55. kagglesdk/datasets/services/__init__.py +0 -0
  56. kagglesdk/datasets/services/dataset_api_service.py +170 -0
  57. kagglesdk/datasets/types/__init__.py +0 -0
  58. kagglesdk/datasets/types/dataset_api_service.py +2777 -0
  59. kagglesdk/datasets/types/dataset_enums.py +82 -0
  60. kagglesdk/datasets/types/dataset_types.py +646 -0
  61. kagglesdk/education/__init__.py +0 -0
  62. kagglesdk/education/services/__init__.py +0 -0
  63. kagglesdk/education/services/education_api_service.py +19 -0
  64. kagglesdk/education/types/__init__.py +0 -0
  65. kagglesdk/education/types/education_api_service.py +248 -0
  66. kagglesdk/education/types/education_service.py +139 -0
  67. kagglesdk/kaggle_client.py +66 -0
  68. kagglesdk/kaggle_env.py +42 -0
  69. kagglesdk/kaggle_http_client.py +316 -0
  70. kagglesdk/kaggle_object.py +293 -0
  71. kagglesdk/kernels/__init__.py +0 -0
  72. kagglesdk/kernels/services/__init__.py +0 -0
  73. kagglesdk/kernels/services/kernels_api_service.py +109 -0
  74. kagglesdk/kernels/types/__init__.py +0 -0
  75. kagglesdk/kernels/types/kernels_api_service.py +1951 -0
  76. kagglesdk/kernels/types/kernels_enums.py +33 -0
  77. kagglesdk/models/__init__.py +0 -0
  78. kagglesdk/models/services/__init__.py +0 -0
  79. kagglesdk/models/services/model_api_service.py +255 -0
  80. kagglesdk/models/services/model_service.py +19 -0
  81. kagglesdk/models/types/__init__.py +0 -0
  82. kagglesdk/models/types/model_api_service.py +3719 -0
  83. kagglesdk/models/types/model_enums.py +60 -0
  84. kagglesdk/models/types/model_service.py +275 -0
  85. kagglesdk/models/types/model_types.py +286 -0
  86. kagglesdk/test/test_client.py +45 -0
  87. kagglesdk/users/__init__.py +0 -0
  88. kagglesdk/users/types/__init__.py +0 -0
  89. kagglesdk/users/types/users_enums.py +22 -0
@@ -0,0 +1,1874 @@
1
+ from datetime import datetime
2
+ from kagglesdk.competitions.types.competition_enums import CompetitionListTab, CompetitionSortBy, HostSegment, SubmissionGroup, SubmissionSortBy
3
+ from kagglesdk.competitions.types.submission_status import SubmissionStatus
4
+ from kagglesdk.kaggle_object import *
5
+ from typing import Optional, List
6
+
7
+ class ApiCreateSubmissionRequest(KaggleObject):
8
+ r"""
9
+ Attributes:
10
+ competition_name (str)
11
+ Competition name. Example: 'titanic'.
12
+ blob_file_tokens (str)
13
+ Token identifying location of uploaded submission file.
14
+ submission_description (str)
15
+ Description of competition submission.
16
+ """
17
+
18
+ def __init__(self):
19
+ self._competition_name = ""
20
+ self._blob_file_tokens = ""
21
+ self._submission_description = None
22
+ self._freeze()
23
+
24
+ @property
25
+ def competition_name(self) -> str:
26
+ """Competition name. Example: 'titanic'."""
27
+ return self._competition_name
28
+
29
+ @competition_name.setter
30
+ def competition_name(self, competition_name: str):
31
+ if competition_name is None:
32
+ del self.competition_name
33
+ return
34
+ if not isinstance(competition_name, str):
35
+ raise TypeError('competition_name must be of type str')
36
+ self._competition_name = competition_name
37
+
38
+ @property
39
+ def blob_file_tokens(self) -> str:
40
+ """Token identifying location of uploaded submission file."""
41
+ return self._blob_file_tokens
42
+
43
+ @blob_file_tokens.setter
44
+ def blob_file_tokens(self, blob_file_tokens: str):
45
+ if blob_file_tokens is None:
46
+ del self.blob_file_tokens
47
+ return
48
+ if not isinstance(blob_file_tokens, str):
49
+ raise TypeError('blob_file_tokens must be of type str')
50
+ self._blob_file_tokens = blob_file_tokens
51
+
52
+ @property
53
+ def submission_description(self) -> str:
54
+ """Description of competition submission."""
55
+ return self._submission_description or ""
56
+
57
+ @submission_description.setter
58
+ def submission_description(self, submission_description: str):
59
+ if submission_description is None:
60
+ del self.submission_description
61
+ return
62
+ if not isinstance(submission_description, str):
63
+ raise TypeError('submission_description must be of type str')
64
+ self._submission_description = submission_description
65
+
66
+ def endpoint(self):
67
+ path = '/api/v1/competitions/submissions/submit/{competition_name}'
68
+ return path.format_map(self.to_field_map(self))
69
+
70
+
71
+ @staticmethod
72
+ def method():
73
+ return 'POST'
74
+
75
+
76
+ class ApiCreateSubmissionResponse(KaggleObject):
77
+ r"""
78
+ Attributes:
79
+ message (str)
80
+ TODO: Remove when we feel okay with the breaking change, this adds no
81
+ value.
82
+ ref (int)
83
+ """
84
+
85
+ def __init__(self):
86
+ self._message = ""
87
+ self._ref = 0
88
+ self._freeze()
89
+
90
+ @property
91
+ def message(self) -> str:
92
+ r"""
93
+ TODO: Remove when we feel okay with the breaking change, this adds no
94
+ value.
95
+ """
96
+ return self._message
97
+
98
+ @message.setter
99
+ def message(self, message: str):
100
+ if message is None:
101
+ del self.message
102
+ return
103
+ if not isinstance(message, str):
104
+ raise TypeError('message must be of type str')
105
+ self._message = message
106
+
107
+ @property
108
+ def ref(self) -> int:
109
+ return self._ref
110
+
111
+ @ref.setter
112
+ def ref(self, ref: int):
113
+ if ref is None:
114
+ del self.ref
115
+ return
116
+ if not isinstance(ref, int):
117
+ raise TypeError('ref must be of type int')
118
+ self._ref = ref
119
+
120
+
121
+ class ApiDownloadDataFileRequest(KaggleObject):
122
+ r"""
123
+ Attributes:
124
+ competition_name (str)
125
+ Competition name. Example: 'titanic'.
126
+ file_name (str)
127
+ Name of the file to download. Example: 'train/foo/bar.png'.
128
+ """
129
+
130
+ def __init__(self):
131
+ self._competition_name = ""
132
+ self._file_name = ""
133
+ self._freeze()
134
+
135
+ @property
136
+ def competition_name(self) -> str:
137
+ """Competition name. Example: 'titanic'."""
138
+ return self._competition_name
139
+
140
+ @competition_name.setter
141
+ def competition_name(self, competition_name: str):
142
+ if competition_name is None:
143
+ del self.competition_name
144
+ return
145
+ if not isinstance(competition_name, str):
146
+ raise TypeError('competition_name must be of type str')
147
+ self._competition_name = competition_name
148
+
149
+ @property
150
+ def file_name(self) -> str:
151
+ """Name of the file to download. Example: 'train/foo/bar.png'."""
152
+ return self._file_name
153
+
154
+ @file_name.setter
155
+ def file_name(self, file_name: str):
156
+ if file_name is None:
157
+ del self.file_name
158
+ return
159
+ if not isinstance(file_name, str):
160
+ raise TypeError('file_name must be of type str')
161
+ self._file_name = file_name
162
+
163
+ def endpoint(self):
164
+ path = '/api/v1/competitions/data/download/{competition_name}/{file_name}'
165
+ return path.format_map(self.to_field_map(self))
166
+
167
+ @staticmethod
168
+ def endpoint_path():
169
+ return '/api/v1/competitions/data/download/{competition_name}/{file_name}'
170
+
171
+
172
+ class ApiDownloadDataFilesRequest(KaggleObject):
173
+ r"""
174
+ Attributes:
175
+ competition_name (str)
176
+ Competition name. Example: 'titanic'.
177
+ """
178
+
179
+ def __init__(self):
180
+ self._competition_name = ""
181
+ self._freeze()
182
+
183
+ @property
184
+ def competition_name(self) -> str:
185
+ """Competition name. Example: 'titanic'."""
186
+ return self._competition_name
187
+
188
+ @competition_name.setter
189
+ def competition_name(self, competition_name: str):
190
+ if competition_name is None:
191
+ del self.competition_name
192
+ return
193
+ if not isinstance(competition_name, str):
194
+ raise TypeError('competition_name must be of type str')
195
+ self._competition_name = competition_name
196
+
197
+ def endpoint(self):
198
+ path = '/api/v1/competitions/data/download-all/{competition_name}'
199
+ return path.format_map(self.to_field_map(self))
200
+
201
+ @staticmethod
202
+ def endpoint_path():
203
+ return '/api/v1/competitions/data/download-all/{competition_name}'
204
+
205
+
206
+ class ApiDownloadLeaderboardRequest(KaggleObject):
207
+ r"""
208
+ Attributes:
209
+ competition_name (str)
210
+ """
211
+
212
+ def __init__(self):
213
+ self._competition_name = ""
214
+ self._freeze()
215
+
216
+ @property
217
+ def competition_name(self) -> str:
218
+ return self._competition_name
219
+
220
+ @competition_name.setter
221
+ def competition_name(self, competition_name: str):
222
+ if competition_name is None:
223
+ del self.competition_name
224
+ return
225
+ if not isinstance(competition_name, str):
226
+ raise TypeError('competition_name must be of type str')
227
+ self._competition_name = competition_name
228
+
229
+ def endpoint(self):
230
+ path = '/api/v1/competitions/{competition_name}/leaderboard/download'
231
+ return path.format_map(self.to_field_map(self))
232
+
233
+ @staticmethod
234
+ def endpoint_path():
235
+ return '/api/v1/competitions/{competition_name}/leaderboard/download'
236
+
237
+
238
+ class ApiGetLeaderboardRequest(KaggleObject):
239
+ r"""
240
+ Attributes:
241
+ competition_name (str)
242
+ Competition name. Example: 'titanic'.
243
+ override_public (bool)
244
+ By default we return the private leaderboard if it's available, otherwise
245
+ the public LB. This flag lets you override to get public even if private
246
+ is available.
247
+ """
248
+
249
+ def __init__(self):
250
+ self._competition_name = ""
251
+ self._override_public = None
252
+ self._freeze()
253
+
254
+ @property
255
+ def competition_name(self) -> str:
256
+ """Competition name. Example: 'titanic'."""
257
+ return self._competition_name
258
+
259
+ @competition_name.setter
260
+ def competition_name(self, competition_name: str):
261
+ if competition_name is None:
262
+ del self.competition_name
263
+ return
264
+ if not isinstance(competition_name, str):
265
+ raise TypeError('competition_name must be of type str')
266
+ self._competition_name = competition_name
267
+
268
+ @property
269
+ def override_public(self) -> bool:
270
+ r"""
271
+ By default we return the private leaderboard if it's available, otherwise
272
+ the public LB. This flag lets you override to get public even if private
273
+ is available.
274
+ """
275
+ return self._override_public or False
276
+
277
+ @override_public.setter
278
+ def override_public(self, override_public: bool):
279
+ if override_public is None:
280
+ del self.override_public
281
+ return
282
+ if not isinstance(override_public, bool):
283
+ raise TypeError('override_public must be of type bool')
284
+ self._override_public = override_public
285
+
286
+ def endpoint(self):
287
+ path = '/api/v1/competitions/{competition_name}/leaderboard/view'
288
+ return path.format_map(self.to_field_map(self))
289
+
290
+ @staticmethod
291
+ def endpoint_path():
292
+ return '/api/v1/competitions/{competition_name}/leaderboard/view'
293
+
294
+
295
+ class ApiGetLeaderboardResponse(KaggleObject):
296
+ r"""
297
+ Attributes:
298
+ submissions (ApiLeaderboardSubmission)
299
+ """
300
+
301
+ def __init__(self):
302
+ self._submissions = []
303
+ self._freeze()
304
+
305
+ @property
306
+ def submissions(self) -> Optional[List[Optional['ApiLeaderboardSubmission']]]:
307
+ return self._submissions
308
+
309
+ @submissions.setter
310
+ def submissions(self, submissions: Optional[List[Optional['ApiLeaderboardSubmission']]]):
311
+ if submissions is None:
312
+ del self.submissions
313
+ return
314
+ if not isinstance(submissions, list):
315
+ raise TypeError('submissions must be of type list')
316
+ if not all([isinstance(t, ApiLeaderboardSubmission) for t in submissions]):
317
+ raise TypeError('submissions must contain only items of type ApiLeaderboardSubmission')
318
+ self._submissions = submissions
319
+
320
+
321
+ class ApiGetSubmissionRequest(KaggleObject):
322
+ r"""
323
+ Attributes:
324
+ ref (int)
325
+ SubmissionId.
326
+ """
327
+
328
+ def __init__(self):
329
+ self._ref = 0
330
+ self._freeze()
331
+
332
+ @property
333
+ def ref(self) -> int:
334
+ """SubmissionId."""
335
+ return self._ref
336
+
337
+ @ref.setter
338
+ def ref(self, ref: int):
339
+ if ref is None:
340
+ del self.ref
341
+ return
342
+ if not isinstance(ref, int):
343
+ raise TypeError('ref must be of type int')
344
+ self._ref = ref
345
+
346
+ def endpoint(self):
347
+ path = '/api/v1/competitions/submissions/get/{ref}'
348
+ return path.format_map(self.to_field_map(self))
349
+
350
+
351
+ @staticmethod
352
+ def method():
353
+ return 'POST'
354
+
355
+
356
+ class ApiLeaderboardSubmission(KaggleObject):
357
+ r"""
358
+ Attributes:
359
+ team_id (int)
360
+ team_name (str)
361
+ submission_date (datetime)
362
+ score (str)
363
+ """
364
+
365
+ def __init__(self):
366
+ self._team_id = 0
367
+ self._team_name = None
368
+ self._submission_date = None
369
+ self._score = None
370
+ self._freeze()
371
+
372
+ @property
373
+ def team_id(self) -> int:
374
+ return self._team_id
375
+
376
+ @team_id.setter
377
+ def team_id(self, team_id: int):
378
+ if team_id is None:
379
+ del self.team_id
380
+ return
381
+ if not isinstance(team_id, int):
382
+ raise TypeError('team_id must be of type int')
383
+ self._team_id = team_id
384
+
385
+ @property
386
+ def team_name(self) -> str:
387
+ return self._team_name or ""
388
+
389
+ @team_name.setter
390
+ def team_name(self, team_name: str):
391
+ if team_name is None:
392
+ del self.team_name
393
+ return
394
+ if not isinstance(team_name, str):
395
+ raise TypeError('team_name must be of type str')
396
+ self._team_name = team_name
397
+
398
+ @property
399
+ def submission_date(self) -> datetime:
400
+ return self._submission_date
401
+
402
+ @submission_date.setter
403
+ def submission_date(self, submission_date: datetime):
404
+ if submission_date is None:
405
+ del self.submission_date
406
+ return
407
+ if not isinstance(submission_date, datetime):
408
+ raise TypeError('submission_date must be of type datetime')
409
+ self._submission_date = submission_date
410
+
411
+ @property
412
+ def score(self) -> str:
413
+ return self._score or ""
414
+
415
+ @score.setter
416
+ def score(self, score: str):
417
+ if score is None:
418
+ del self.score
419
+ return
420
+ if not isinstance(score, str):
421
+ raise TypeError('score must be of type str')
422
+ self._score = score
423
+
424
+
425
+ class ApiListCompetitionsRequest(KaggleObject):
426
+ r"""
427
+ Attributes:
428
+ group (CompetitionListTab)
429
+ Filter competitions by a particular group (default is 'general').
430
+ One of 'general', 'entered' and 'inClass'.
431
+ category (HostSegment)
432
+ Filter competitions by a particular category (default is 'all').
433
+ One of 'all', 'featured', 'research', 'recruitment', 'gettingStarted',
434
+ 'masters', 'playground'.
435
+ sort_by (CompetitionSortBy)
436
+ Sort the results (default is 'latestDeadline').
437
+ One of 'grouped', 'prize', 'earliestDeadline', 'latestDeadline',
438
+ 'numberOfTeams', 'recentlyCreated'.
439
+ search (str)
440
+ Filter competitions by search terms.
441
+ page (int)
442
+ Page number (default is 1).
443
+ """
444
+
445
+ def __init__(self):
446
+ self._group = None
447
+ self._category = None
448
+ self._sort_by = None
449
+ self._search = None
450
+ self._page = None
451
+ self._freeze()
452
+
453
+ @property
454
+ def group(self) -> 'CompetitionListTab':
455
+ r"""
456
+ Filter competitions by a particular group (default is 'general').
457
+ One of 'general', 'entered' and 'inClass'.
458
+ """
459
+ return self._group or CompetitionListTab.COMPETITION_LIST_TAB_GENERAL
460
+
461
+ @group.setter
462
+ def group(self, group: 'CompetitionListTab'):
463
+ if group is None:
464
+ del self.group
465
+ return
466
+ if not isinstance(group, CompetitionListTab):
467
+ raise TypeError('group must be of type CompetitionListTab')
468
+ self._group = group
469
+
470
+ @property
471
+ def category(self) -> 'HostSegment':
472
+ r"""
473
+ Filter competitions by a particular category (default is 'all').
474
+ One of 'all', 'featured', 'research', 'recruitment', 'gettingStarted',
475
+ 'masters', 'playground'.
476
+ """
477
+ return self._category or HostSegment.HOST_SEGMENT_UNSPECIFIED
478
+
479
+ @category.setter
480
+ def category(self, category: 'HostSegment'):
481
+ if category is None:
482
+ del self.category
483
+ return
484
+ if not isinstance(category, HostSegment):
485
+ raise TypeError('category must be of type HostSegment')
486
+ self._category = category
487
+
488
+ @property
489
+ def sort_by(self) -> 'CompetitionSortBy':
490
+ r"""
491
+ Sort the results (default is 'latestDeadline').
492
+ One of 'grouped', 'prize', 'earliestDeadline', 'latestDeadline',
493
+ 'numberOfTeams', 'recentlyCreated'.
494
+ """
495
+ return self._sort_by or CompetitionSortBy.COMPETITION_SORT_BY_GROUPED
496
+
497
+ @sort_by.setter
498
+ def sort_by(self, sort_by: 'CompetitionSortBy'):
499
+ if sort_by is None:
500
+ del self.sort_by
501
+ return
502
+ if not isinstance(sort_by, CompetitionSortBy):
503
+ raise TypeError('sort_by must be of type CompetitionSortBy')
504
+ self._sort_by = sort_by
505
+
506
+ @property
507
+ def search(self) -> str:
508
+ """Filter competitions by search terms."""
509
+ return self._search or ""
510
+
511
+ @search.setter
512
+ def search(self, search: str):
513
+ if search is None:
514
+ del self.search
515
+ return
516
+ if not isinstance(search, str):
517
+ raise TypeError('search must be of type str')
518
+ self._search = search
519
+
520
+ @property
521
+ def page(self) -> int:
522
+ """Page number (default is 1)."""
523
+ return self._page or 0
524
+
525
+ @page.setter
526
+ def page(self, page: int):
527
+ if page is None:
528
+ del self.page
529
+ return
530
+ if not isinstance(page, int):
531
+ raise TypeError('page must be of type int')
532
+ self._page = page
533
+
534
+ def endpoint(self):
535
+ path = '/api/v1/competitions/list'
536
+ return path.format_map(self.to_field_map(self))
537
+
538
+
539
+ class ApiListCompetitionsResponse(KaggleObject):
540
+ r"""
541
+ Attributes:
542
+ competitions (ApiCompetition)
543
+ """
544
+
545
+ def __init__(self):
546
+ self._competitions = []
547
+ self._freeze()
548
+
549
+ @property
550
+ def competitions(self) -> Optional[List[Optional['ApiCompetition']]]:
551
+ return self._competitions
552
+
553
+ @competitions.setter
554
+ def competitions(self, competitions: Optional[List[Optional['ApiCompetition']]]):
555
+ if competitions is None:
556
+ del self.competitions
557
+ return
558
+ if not isinstance(competitions, list):
559
+ raise TypeError('competitions must be of type list')
560
+ if not all([isinstance(t, ApiCompetition) for t in competitions]):
561
+ raise TypeError('competitions must contain only items of type ApiCompetition')
562
+ self._competitions = competitions
563
+
564
+ @classmethod
565
+ def prepare_from(cls, http_response):
566
+ return cls.from_dict({'competitions': json.loads(http_response.text)})
567
+
568
+
569
+ class ApiListDataFilesRequest(KaggleObject):
570
+ r"""
571
+ Attributes:
572
+ competition_name (str)
573
+ Competition name. Example: 'titanic'.
574
+ page_size (int)
575
+ page_token (str)
576
+ """
577
+
578
+ def __init__(self):
579
+ self._competition_name = ""
580
+ self._page_size = None
581
+ self._page_token = None
582
+ self._freeze()
583
+
584
+ @property
585
+ def competition_name(self) -> str:
586
+ """Competition name. Example: 'titanic'."""
587
+ return self._competition_name
588
+
589
+ @competition_name.setter
590
+ def competition_name(self, competition_name: str):
591
+ if competition_name is None:
592
+ del self.competition_name
593
+ return
594
+ if not isinstance(competition_name, str):
595
+ raise TypeError('competition_name must be of type str')
596
+ self._competition_name = competition_name
597
+
598
+ @property
599
+ def page_size(self) -> int:
600
+ return self._page_size or 0
601
+
602
+ @page_size.setter
603
+ def page_size(self, page_size: int):
604
+ if page_size is None:
605
+ del self.page_size
606
+ return
607
+ if not isinstance(page_size, int):
608
+ raise TypeError('page_size must be of type int')
609
+ self._page_size = page_size
610
+
611
+ @property
612
+ def page_token(self) -> str:
613
+ return self._page_token or ""
614
+
615
+ @page_token.setter
616
+ def page_token(self, page_token: str):
617
+ if page_token is None:
618
+ del self.page_token
619
+ return
620
+ if not isinstance(page_token, str):
621
+ raise TypeError('page_token must be of type str')
622
+ self._page_token = page_token
623
+
624
+ def endpoint(self):
625
+ path = '/api/v1/competitions/data/list/{competition_name}'
626
+ return path.format_map(self.to_field_map(self))
627
+
628
+ @staticmethod
629
+ def endpoint_path():
630
+ return '/api/v1/competitions/data/list/{competition_name}'
631
+
632
+
633
+ class ApiListDataFilesResponse(KaggleObject):
634
+ r"""
635
+ Attributes:
636
+ files (ApiDataFile)
637
+ next_page_token (str)
638
+ """
639
+
640
+ def __init__(self):
641
+ self._files = []
642
+ self._next_page_token = ""
643
+ self._freeze()
644
+
645
+ @property
646
+ def files(self) -> Optional[List[Optional['ApiDataFile']]]:
647
+ return self._files
648
+
649
+ @files.setter
650
+ def files(self, files: Optional[List[Optional['ApiDataFile']]]):
651
+ if files is None:
652
+ del self.files
653
+ return
654
+ if not isinstance(files, list):
655
+ raise TypeError('files must be of type list')
656
+ if not all([isinstance(t, ApiDataFile) for t in files]):
657
+ raise TypeError('files must contain only items of type ApiDataFile')
658
+ self._files = files
659
+
660
+ @property
661
+ def next_page_token(self) -> str:
662
+ return self._next_page_token
663
+
664
+ @next_page_token.setter
665
+ def next_page_token(self, next_page_token: str):
666
+ if next_page_token is None:
667
+ del self.next_page_token
668
+ return
669
+ if not isinstance(next_page_token, str):
670
+ raise TypeError('next_page_token must be of type str')
671
+ self._next_page_token = next_page_token
672
+
673
+ @property
674
+ def nextPageToken(self):
675
+ return self.next_page_token
676
+
677
+
678
+ class ApiListSubmissionsRequest(KaggleObject):
679
+ r"""
680
+ Attributes:
681
+ competition_name (str)
682
+ sort_by (SubmissionSortBy)
683
+ group (SubmissionGroup)
684
+ page (int)
685
+ """
686
+
687
+ def __init__(self):
688
+ self._competition_name = ""
689
+ self._sort_by = SubmissionSortBy.SUBMISSION_SORT_BY_DATE
690
+ self._group = SubmissionGroup.SUBMISSION_GROUP_ALL
691
+ self._page = None
692
+ self._freeze()
693
+
694
+ @property
695
+ def competition_name(self) -> str:
696
+ return self._competition_name
697
+
698
+ @competition_name.setter
699
+ def competition_name(self, competition_name: str):
700
+ if competition_name is None:
701
+ del self.competition_name
702
+ return
703
+ if not isinstance(competition_name, str):
704
+ raise TypeError('competition_name must be of type str')
705
+ self._competition_name = competition_name
706
+
707
+ @property
708
+ def sort_by(self) -> 'SubmissionSortBy':
709
+ return self._sort_by
710
+
711
+ @sort_by.setter
712
+ def sort_by(self, sort_by: 'SubmissionSortBy'):
713
+ if sort_by is None:
714
+ del self.sort_by
715
+ return
716
+ if not isinstance(sort_by, SubmissionSortBy):
717
+ raise TypeError('sort_by must be of type SubmissionSortBy')
718
+ self._sort_by = sort_by
719
+
720
+ @property
721
+ def group(self) -> 'SubmissionGroup':
722
+ return self._group
723
+
724
+ @group.setter
725
+ def group(self, group: 'SubmissionGroup'):
726
+ if group is None:
727
+ del self.group
728
+ return
729
+ if not isinstance(group, SubmissionGroup):
730
+ raise TypeError('group must be of type SubmissionGroup')
731
+ self._group = group
732
+
733
+ @property
734
+ def page(self) -> int:
735
+ return self._page or 0
736
+
737
+ @page.setter
738
+ def page(self, page: int):
739
+ if page is None:
740
+ del self.page
741
+ return
742
+ if not isinstance(page, int):
743
+ raise TypeError('page must be of type int')
744
+ self._page = page
745
+
746
+ def endpoint(self):
747
+ path = '/api/v1/competitions/submissions/list/{competition_name}'
748
+ return path.format_map(self.to_field_map(self))
749
+
750
+ @staticmethod
751
+ def endpoint_path():
752
+ return '/api/v1/competitions/submissions/list/{competition_name}'
753
+
754
+
755
+ class ApiListSubmissionsResponse(KaggleObject):
756
+ r"""
757
+ Attributes:
758
+ submissions (ApiSubmission)
759
+ """
760
+
761
+ def __init__(self):
762
+ self._submissions = []
763
+ self._freeze()
764
+
765
+ @property
766
+ def submissions(self) -> Optional[List[Optional['ApiSubmission']]]:
767
+ return self._submissions
768
+
769
+ @submissions.setter
770
+ def submissions(self, submissions: Optional[List[Optional['ApiSubmission']]]):
771
+ if submissions is None:
772
+ del self.submissions
773
+ return
774
+ if not isinstance(submissions, list):
775
+ raise TypeError('submissions must be of type list')
776
+ if not all([isinstance(t, ApiSubmission) for t in submissions]):
777
+ raise TypeError('submissions must contain only items of type ApiSubmission')
778
+ self._submissions = submissions
779
+
780
+ @classmethod
781
+ def prepare_from(cls, http_response):
782
+ return cls.from_dict({'submissions': json.loads(http_response.text)})
783
+
784
+
785
+ class ApiStartSubmissionUploadRequest(KaggleObject):
786
+ r"""
787
+ Attributes:
788
+ competition_name (str)
789
+ content_length (int)
790
+ last_modified_epoch_seconds (int)
791
+ file_name (str)
792
+ Comes from form upload
793
+ """
794
+
795
+ def __init__(self):
796
+ self._competition_name = None
797
+ self._content_length = 0
798
+ self._last_modified_epoch_seconds = 0
799
+ self._file_name = ""
800
+ self._freeze()
801
+
802
+ @property
803
+ def competition_name(self) -> str:
804
+ return self._competition_name or ""
805
+
806
+ @competition_name.setter
807
+ def competition_name(self, competition_name: str):
808
+ if competition_name is None:
809
+ del self.competition_name
810
+ return
811
+ if not isinstance(competition_name, str):
812
+ raise TypeError('competition_name must be of type str')
813
+ self._competition_name = competition_name
814
+
815
+ @property
816
+ def content_length(self) -> int:
817
+ return self._content_length
818
+
819
+ @content_length.setter
820
+ def content_length(self, content_length: int):
821
+ if content_length is None:
822
+ del self.content_length
823
+ return
824
+ if not isinstance(content_length, int):
825
+ raise TypeError('content_length must be of type int')
826
+ self._content_length = content_length
827
+
828
+ @property
829
+ def last_modified_epoch_seconds(self) -> int:
830
+ return self._last_modified_epoch_seconds
831
+
832
+ @last_modified_epoch_seconds.setter
833
+ def last_modified_epoch_seconds(self, last_modified_epoch_seconds: int):
834
+ if last_modified_epoch_seconds is None:
835
+ del self.last_modified_epoch_seconds
836
+ return
837
+ if not isinstance(last_modified_epoch_seconds, int):
838
+ raise TypeError('last_modified_epoch_seconds must be of type int')
839
+ self._last_modified_epoch_seconds = last_modified_epoch_seconds
840
+
841
+ @property
842
+ def file_name(self) -> str:
843
+ """Comes from form upload"""
844
+ return self._file_name
845
+
846
+ @file_name.setter
847
+ def file_name(self, file_name: str):
848
+ if file_name is None:
849
+ del self.file_name
850
+ return
851
+ if not isinstance(file_name, str):
852
+ raise TypeError('file_name must be of type str')
853
+ self._file_name = file_name
854
+
855
+ def endpoint(self):
856
+ path = '/api/v1/competitions/submission-url'
857
+ return path.format_map(self.to_field_map(self))
858
+
859
+
860
+ @staticmethod
861
+ def method():
862
+ return 'POST'
863
+
864
+
865
+ class ApiStartSubmissionUploadResponse(KaggleObject):
866
+ r"""
867
+ Currently identical to StartBlobUploadResponse, but keeping separate since
868
+ they could change independently and this is a legacy V1 type.
869
+
870
+ Attributes:
871
+ token (str)
872
+ create_url (str)
873
+ """
874
+
875
+ def __init__(self):
876
+ self._token = ""
877
+ self._create_url = ""
878
+ self._freeze()
879
+
880
+ @property
881
+ def token(self) -> str:
882
+ return self._token
883
+
884
+ @token.setter
885
+ def token(self, token: str):
886
+ if token is None:
887
+ del self.token
888
+ return
889
+ if not isinstance(token, str):
890
+ raise TypeError('token must be of type str')
891
+ self._token = token
892
+
893
+ @property
894
+ def create_url(self) -> str:
895
+ return self._create_url
896
+
897
+ @create_url.setter
898
+ def create_url(self, create_url: str):
899
+ if create_url is None:
900
+ del self.create_url
901
+ return
902
+ if not isinstance(create_url, str):
903
+ raise TypeError('create_url must be of type str')
904
+ self._create_url = create_url
905
+
906
+ @property
907
+ def createUrl(self):
908
+ return self.create_url
909
+
910
+
911
+ class ApiSubmission(KaggleObject):
912
+ r"""
913
+ Attributes:
914
+ ref (int)
915
+ total_bytes (int)
916
+ date (datetime)
917
+ description (str)
918
+ error_description (str)
919
+ file_name (str)
920
+ public_score (str)
921
+ private_score (str)
922
+ status (SubmissionStatus)
923
+ submitted_by (str)
924
+ submitted_by_ref (str)
925
+ team_name (str)
926
+ url (str)
927
+ Minor note: ListSubmissions and GetSubmission may differ in setting this
928
+ field.
929
+ """
930
+
931
+ def __init__(self):
932
+ self._ref = 0
933
+ self._total_bytes = None
934
+ self._date = None
935
+ self._description = None
936
+ self._error_description = None
937
+ self._file_name = None
938
+ self._public_score = None
939
+ self._private_score = None
940
+ self._status = SubmissionStatus.PENDING
941
+ self._submitted_by = None
942
+ self._submitted_by_ref = None
943
+ self._team_name = None
944
+ self._url = None
945
+ self._freeze()
946
+
947
+ @property
948
+ def ref(self) -> int:
949
+ return self._ref
950
+
951
+ @ref.setter
952
+ def ref(self, ref: int):
953
+ if ref is None:
954
+ del self.ref
955
+ return
956
+ if not isinstance(ref, int):
957
+ raise TypeError('ref must be of type int')
958
+ self._ref = ref
959
+
960
+ @property
961
+ def total_bytes(self) -> int:
962
+ return self._total_bytes or 0
963
+
964
+ @total_bytes.setter
965
+ def total_bytes(self, total_bytes: int):
966
+ if total_bytes is None:
967
+ del self.total_bytes
968
+ return
969
+ if not isinstance(total_bytes, int):
970
+ raise TypeError('total_bytes must be of type int')
971
+ self._total_bytes = total_bytes
972
+
973
+ @property
974
+ def date(self) -> datetime:
975
+ return self._date
976
+
977
+ @date.setter
978
+ def date(self, date: datetime):
979
+ if date is None:
980
+ del self.date
981
+ return
982
+ if not isinstance(date, datetime):
983
+ raise TypeError('date must be of type datetime')
984
+ self._date = date
985
+
986
+ @property
987
+ def description(self) -> str:
988
+ return self._description or ""
989
+
990
+ @description.setter
991
+ def description(self, description: str):
992
+ if description is None:
993
+ del self.description
994
+ return
995
+ if not isinstance(description, str):
996
+ raise TypeError('description must be of type str')
997
+ self._description = description
998
+
999
+ @property
1000
+ def error_description(self) -> str:
1001
+ return self._error_description or ""
1002
+
1003
+ @error_description.setter
1004
+ def error_description(self, error_description: str):
1005
+ if error_description is None:
1006
+ del self.error_description
1007
+ return
1008
+ if not isinstance(error_description, str):
1009
+ raise TypeError('error_description must be of type str')
1010
+ self._error_description = error_description
1011
+
1012
+ @property
1013
+ def file_name(self) -> str:
1014
+ return self._file_name or ""
1015
+
1016
+ @file_name.setter
1017
+ def file_name(self, file_name: str):
1018
+ if file_name is None:
1019
+ del self.file_name
1020
+ return
1021
+ if not isinstance(file_name, str):
1022
+ raise TypeError('file_name must be of type str')
1023
+ self._file_name = file_name
1024
+
1025
+ @property
1026
+ def public_score(self) -> str:
1027
+ return self._public_score or ""
1028
+
1029
+ @public_score.setter
1030
+ def public_score(self, public_score: str):
1031
+ if public_score is None:
1032
+ del self.public_score
1033
+ return
1034
+ if not isinstance(public_score, str):
1035
+ raise TypeError('public_score must be of type str')
1036
+ self._public_score = public_score
1037
+
1038
+ @property
1039
+ def private_score(self) -> str:
1040
+ return self._private_score or ""
1041
+
1042
+ @private_score.setter
1043
+ def private_score(self, private_score: str):
1044
+ if private_score is None:
1045
+ del self.private_score
1046
+ return
1047
+ if not isinstance(private_score, str):
1048
+ raise TypeError('private_score must be of type str')
1049
+ self._private_score = private_score
1050
+
1051
+ @property
1052
+ def status(self) -> 'SubmissionStatus':
1053
+ return self._status
1054
+
1055
+ @status.setter
1056
+ def status(self, status: 'SubmissionStatus'):
1057
+ if status is None:
1058
+ del self.status
1059
+ return
1060
+ if not isinstance(status, SubmissionStatus):
1061
+ raise TypeError('status must be of type SubmissionStatus')
1062
+ self._status = status
1063
+
1064
+ @property
1065
+ def submitted_by(self) -> str:
1066
+ return self._submitted_by or ""
1067
+
1068
+ @submitted_by.setter
1069
+ def submitted_by(self, submitted_by: str):
1070
+ if submitted_by is None:
1071
+ del self.submitted_by
1072
+ return
1073
+ if not isinstance(submitted_by, str):
1074
+ raise TypeError('submitted_by must be of type str')
1075
+ self._submitted_by = submitted_by
1076
+
1077
+ @property
1078
+ def submitted_by_ref(self) -> str:
1079
+ return self._submitted_by_ref or ""
1080
+
1081
+ @submitted_by_ref.setter
1082
+ def submitted_by_ref(self, submitted_by_ref: str):
1083
+ if submitted_by_ref is None:
1084
+ del self.submitted_by_ref
1085
+ return
1086
+ if not isinstance(submitted_by_ref, str):
1087
+ raise TypeError('submitted_by_ref must be of type str')
1088
+ self._submitted_by_ref = submitted_by_ref
1089
+
1090
+ @property
1091
+ def team_name(self) -> str:
1092
+ return self._team_name or ""
1093
+
1094
+ @team_name.setter
1095
+ def team_name(self, team_name: str):
1096
+ if team_name is None:
1097
+ del self.team_name
1098
+ return
1099
+ if not isinstance(team_name, str):
1100
+ raise TypeError('team_name must be of type str')
1101
+ self._team_name = team_name
1102
+
1103
+ @property
1104
+ def url(self) -> str:
1105
+ r"""
1106
+ Minor note: ListSubmissions and GetSubmission may differ in setting this
1107
+ field.
1108
+ """
1109
+ return self._url or ""
1110
+
1111
+ @url.setter
1112
+ def url(self, url: str):
1113
+ if url is None:
1114
+ del self.url
1115
+ return
1116
+ if not isinstance(url, str):
1117
+ raise TypeError('url must be of type str')
1118
+ self._url = url
1119
+
1120
+
1121
+ class ApiCompetition(KaggleObject):
1122
+ r"""
1123
+ Attributes:
1124
+ id (int)
1125
+ ref (str)
1126
+ title (str)
1127
+ url (str)
1128
+ description (str)
1129
+ organization_name (str)
1130
+ organization_ref (str)
1131
+ category (str)
1132
+ reward (str)
1133
+ tags (ApiCategory)
1134
+ deadline (datetime)
1135
+ kernel_count (int)
1136
+ team_count (int)
1137
+ user_has_entered (bool)
1138
+ user_rank (int)
1139
+ merger_deadline (datetime)
1140
+ new_entrant_deadline (datetime)
1141
+ enabled_date (datetime)
1142
+ max_daily_submissions (int)
1143
+ max_team_size (int)
1144
+ evaluation_metric (str)
1145
+ awards_points (bool)
1146
+ is_kernels_submissions_only (bool)
1147
+ submissions_disabled (bool)
1148
+ """
1149
+
1150
+ def __init__(self):
1151
+ self._id = 0
1152
+ self._ref = ""
1153
+ self._title = None
1154
+ self._url = None
1155
+ self._description = None
1156
+ self._organization_name = None
1157
+ self._organization_ref = None
1158
+ self._category = None
1159
+ self._reward = None
1160
+ self._tags = []
1161
+ self._deadline = None
1162
+ self._kernel_count = 0
1163
+ self._team_count = 0
1164
+ self._user_has_entered = False
1165
+ self._user_rank = None
1166
+ self._merger_deadline = None
1167
+ self._new_entrant_deadline = None
1168
+ self._enabled_date = None
1169
+ self._max_daily_submissions = 0
1170
+ self._max_team_size = None
1171
+ self._evaluation_metric = None
1172
+ self._awards_points = False
1173
+ self._is_kernels_submissions_only = False
1174
+ self._submissions_disabled = False
1175
+ self._freeze()
1176
+
1177
+ @property
1178
+ def id(self) -> int:
1179
+ return self._id
1180
+
1181
+ @id.setter
1182
+ def id(self, id: int):
1183
+ if id is None:
1184
+ del self.id
1185
+ return
1186
+ if not isinstance(id, int):
1187
+ raise TypeError('id must be of type int')
1188
+ self._id = id
1189
+
1190
+ @property
1191
+ def ref(self) -> str:
1192
+ return self._ref
1193
+
1194
+ @ref.setter
1195
+ def ref(self, ref: str):
1196
+ if ref is None:
1197
+ del self.ref
1198
+ return
1199
+ if not isinstance(ref, str):
1200
+ raise TypeError('ref must be of type str')
1201
+ self._ref = ref
1202
+
1203
+ @property
1204
+ def title(self) -> str:
1205
+ return self._title or ""
1206
+
1207
+ @title.setter
1208
+ def title(self, title: str):
1209
+ if title is None:
1210
+ del self.title
1211
+ return
1212
+ if not isinstance(title, str):
1213
+ raise TypeError('title must be of type str')
1214
+ self._title = title
1215
+
1216
+ @property
1217
+ def url(self) -> str:
1218
+ return self._url or ""
1219
+
1220
+ @url.setter
1221
+ def url(self, url: str):
1222
+ if url is None:
1223
+ del self.url
1224
+ return
1225
+ if not isinstance(url, str):
1226
+ raise TypeError('url must be of type str')
1227
+ self._url = url
1228
+
1229
+ @property
1230
+ def description(self) -> str:
1231
+ return self._description or ""
1232
+
1233
+ @description.setter
1234
+ def description(self, description: str):
1235
+ if description is None:
1236
+ del self.description
1237
+ return
1238
+ if not isinstance(description, str):
1239
+ raise TypeError('description must be of type str')
1240
+ self._description = description
1241
+
1242
+ @property
1243
+ def organization_name(self) -> str:
1244
+ return self._organization_name or ""
1245
+
1246
+ @organization_name.setter
1247
+ def organization_name(self, organization_name: str):
1248
+ if organization_name is None:
1249
+ del self.organization_name
1250
+ return
1251
+ if not isinstance(organization_name, str):
1252
+ raise TypeError('organization_name must be of type str')
1253
+ self._organization_name = organization_name
1254
+
1255
+ @property
1256
+ def organization_ref(self) -> str:
1257
+ return self._organization_ref or ""
1258
+
1259
+ @organization_ref.setter
1260
+ def organization_ref(self, organization_ref: str):
1261
+ if organization_ref is None:
1262
+ del self.organization_ref
1263
+ return
1264
+ if not isinstance(organization_ref, str):
1265
+ raise TypeError('organization_ref must be of type str')
1266
+ self._organization_ref = organization_ref
1267
+
1268
+ @property
1269
+ def category(self) -> str:
1270
+ return self._category or ""
1271
+
1272
+ @category.setter
1273
+ def category(self, category: str):
1274
+ if category is None:
1275
+ del self.category
1276
+ return
1277
+ if not isinstance(category, str):
1278
+ raise TypeError('category must be of type str')
1279
+ self._category = category
1280
+
1281
+ @property
1282
+ def reward(self) -> str:
1283
+ return self._reward or ""
1284
+
1285
+ @reward.setter
1286
+ def reward(self, reward: str):
1287
+ if reward is None:
1288
+ del self.reward
1289
+ return
1290
+ if not isinstance(reward, str):
1291
+ raise TypeError('reward must be of type str')
1292
+ self._reward = reward
1293
+
1294
+ @property
1295
+ def tags(self) -> Optional[List[Optional['ApiCategory']]]:
1296
+ return self._tags
1297
+
1298
+ @tags.setter
1299
+ def tags(self, tags: Optional[List[Optional['ApiCategory']]]):
1300
+ if tags is None:
1301
+ del self.tags
1302
+ return
1303
+ if not isinstance(tags, list):
1304
+ raise TypeError('tags must be of type list')
1305
+ if not all([isinstance(t, ApiCategory) for t in tags]):
1306
+ raise TypeError('tags must contain only items of type ApiCategory')
1307
+ self._tags = tags
1308
+
1309
+ @property
1310
+ def deadline(self) -> datetime:
1311
+ return self._deadline
1312
+
1313
+ @deadline.setter
1314
+ def deadline(self, deadline: datetime):
1315
+ if deadline is None:
1316
+ del self.deadline
1317
+ return
1318
+ if not isinstance(deadline, datetime):
1319
+ raise TypeError('deadline must be of type datetime')
1320
+ self._deadline = deadline
1321
+
1322
+ @property
1323
+ def kernel_count(self) -> int:
1324
+ return self._kernel_count
1325
+
1326
+ @kernel_count.setter
1327
+ def kernel_count(self, kernel_count: int):
1328
+ if kernel_count is None:
1329
+ del self.kernel_count
1330
+ return
1331
+ if not isinstance(kernel_count, int):
1332
+ raise TypeError('kernel_count must be of type int')
1333
+ self._kernel_count = kernel_count
1334
+
1335
+ @property
1336
+ def team_count(self) -> int:
1337
+ return self._team_count
1338
+
1339
+ @team_count.setter
1340
+ def team_count(self, team_count: int):
1341
+ if team_count is None:
1342
+ del self.team_count
1343
+ return
1344
+ if not isinstance(team_count, int):
1345
+ raise TypeError('team_count must be of type int')
1346
+ self._team_count = team_count
1347
+
1348
+ @property
1349
+ def user_has_entered(self) -> bool:
1350
+ return self._user_has_entered
1351
+
1352
+ @user_has_entered.setter
1353
+ def user_has_entered(self, user_has_entered: bool):
1354
+ if user_has_entered is None:
1355
+ del self.user_has_entered
1356
+ return
1357
+ if not isinstance(user_has_entered, bool):
1358
+ raise TypeError('user_has_entered must be of type bool')
1359
+ self._user_has_entered = user_has_entered
1360
+
1361
+ @property
1362
+ def user_rank(self) -> int:
1363
+ return self._user_rank or 0
1364
+
1365
+ @user_rank.setter
1366
+ def user_rank(self, user_rank: int):
1367
+ if user_rank is None:
1368
+ del self.user_rank
1369
+ return
1370
+ if not isinstance(user_rank, int):
1371
+ raise TypeError('user_rank must be of type int')
1372
+ self._user_rank = user_rank
1373
+
1374
+ @property
1375
+ def merger_deadline(self) -> datetime:
1376
+ return self._merger_deadline
1377
+
1378
+ @merger_deadline.setter
1379
+ def merger_deadline(self, merger_deadline: datetime):
1380
+ if merger_deadline is None:
1381
+ del self.merger_deadline
1382
+ return
1383
+ if not isinstance(merger_deadline, datetime):
1384
+ raise TypeError('merger_deadline must be of type datetime')
1385
+ self._merger_deadline = merger_deadline
1386
+
1387
+ @property
1388
+ def new_entrant_deadline(self) -> datetime:
1389
+ return self._new_entrant_deadline
1390
+
1391
+ @new_entrant_deadline.setter
1392
+ def new_entrant_deadline(self, new_entrant_deadline: datetime):
1393
+ if new_entrant_deadline is None:
1394
+ del self.new_entrant_deadline
1395
+ return
1396
+ if not isinstance(new_entrant_deadline, datetime):
1397
+ raise TypeError('new_entrant_deadline must be of type datetime')
1398
+ self._new_entrant_deadline = new_entrant_deadline
1399
+
1400
+ @property
1401
+ def enabled_date(self) -> datetime:
1402
+ return self._enabled_date
1403
+
1404
+ @enabled_date.setter
1405
+ def enabled_date(self, enabled_date: datetime):
1406
+ if enabled_date is None:
1407
+ del self.enabled_date
1408
+ return
1409
+ if not isinstance(enabled_date, datetime):
1410
+ raise TypeError('enabled_date must be of type datetime')
1411
+ self._enabled_date = enabled_date
1412
+
1413
+ @property
1414
+ def max_daily_submissions(self) -> int:
1415
+ return self._max_daily_submissions
1416
+
1417
+ @max_daily_submissions.setter
1418
+ def max_daily_submissions(self, max_daily_submissions: int):
1419
+ if max_daily_submissions is None:
1420
+ del self.max_daily_submissions
1421
+ return
1422
+ if not isinstance(max_daily_submissions, int):
1423
+ raise TypeError('max_daily_submissions must be of type int')
1424
+ self._max_daily_submissions = max_daily_submissions
1425
+
1426
+ @property
1427
+ def max_team_size(self) -> int:
1428
+ return self._max_team_size or 0
1429
+
1430
+ @max_team_size.setter
1431
+ def max_team_size(self, max_team_size: int):
1432
+ if max_team_size is None:
1433
+ del self.max_team_size
1434
+ return
1435
+ if not isinstance(max_team_size, int):
1436
+ raise TypeError('max_team_size must be of type int')
1437
+ self._max_team_size = max_team_size
1438
+
1439
+ @property
1440
+ def evaluation_metric(self) -> str:
1441
+ return self._evaluation_metric or ""
1442
+
1443
+ @evaluation_metric.setter
1444
+ def evaluation_metric(self, evaluation_metric: str):
1445
+ if evaluation_metric is None:
1446
+ del self.evaluation_metric
1447
+ return
1448
+ if not isinstance(evaluation_metric, str):
1449
+ raise TypeError('evaluation_metric must be of type str')
1450
+ self._evaluation_metric = evaluation_metric
1451
+
1452
+ @property
1453
+ def awards_points(self) -> bool:
1454
+ return self._awards_points
1455
+
1456
+ @awards_points.setter
1457
+ def awards_points(self, awards_points: bool):
1458
+ if awards_points is None:
1459
+ del self.awards_points
1460
+ return
1461
+ if not isinstance(awards_points, bool):
1462
+ raise TypeError('awards_points must be of type bool')
1463
+ self._awards_points = awards_points
1464
+
1465
+ @property
1466
+ def is_kernels_submissions_only(self) -> bool:
1467
+ return self._is_kernels_submissions_only
1468
+
1469
+ @is_kernels_submissions_only.setter
1470
+ def is_kernels_submissions_only(self, is_kernels_submissions_only: bool):
1471
+ if is_kernels_submissions_only is None:
1472
+ del self.is_kernels_submissions_only
1473
+ return
1474
+ if not isinstance(is_kernels_submissions_only, bool):
1475
+ raise TypeError('is_kernels_submissions_only must be of type bool')
1476
+ self._is_kernels_submissions_only = is_kernels_submissions_only
1477
+
1478
+ @property
1479
+ def submissions_disabled(self) -> bool:
1480
+ return self._submissions_disabled
1481
+
1482
+ @submissions_disabled.setter
1483
+ def submissions_disabled(self, submissions_disabled: bool):
1484
+ if submissions_disabled is None:
1485
+ del self.submissions_disabled
1486
+ return
1487
+ if not isinstance(submissions_disabled, bool):
1488
+ raise TypeError('submissions_disabled must be of type bool')
1489
+ self._submissions_disabled = submissions_disabled
1490
+
1491
+
1492
+ class ApiDataFile(KaggleObject):
1493
+ r"""
1494
+ Attributes:
1495
+ ref (str)
1496
+ name (str)
1497
+ description (str)
1498
+ total_bytes (int)
1499
+ url (str)
1500
+ creation_date (datetime)
1501
+ """
1502
+
1503
+ def __init__(self):
1504
+ self._ref = ""
1505
+ self._name = None
1506
+ self._description = None
1507
+ self._total_bytes = 0
1508
+ self._url = None
1509
+ self._creation_date = None
1510
+ self._freeze()
1511
+
1512
+ @property
1513
+ def ref(self) -> str:
1514
+ return self._ref
1515
+
1516
+ @ref.setter
1517
+ def ref(self, ref: str):
1518
+ if ref is None:
1519
+ del self.ref
1520
+ return
1521
+ if not isinstance(ref, str):
1522
+ raise TypeError('ref must be of type str')
1523
+ self._ref = ref
1524
+
1525
+ @property
1526
+ def name(self) -> str:
1527
+ return self._name or ""
1528
+
1529
+ @name.setter
1530
+ def name(self, name: str):
1531
+ if name is None:
1532
+ del self.name
1533
+ return
1534
+ if not isinstance(name, str):
1535
+ raise TypeError('name must be of type str')
1536
+ self._name = name
1537
+
1538
+ @property
1539
+ def description(self) -> str:
1540
+ return self._description or ""
1541
+
1542
+ @description.setter
1543
+ def description(self, description: str):
1544
+ if description is None:
1545
+ del self.description
1546
+ return
1547
+ if not isinstance(description, str):
1548
+ raise TypeError('description must be of type str')
1549
+ self._description = description
1550
+
1551
+ @property
1552
+ def total_bytes(self) -> int:
1553
+ return self._total_bytes
1554
+
1555
+ @total_bytes.setter
1556
+ def total_bytes(self, total_bytes: int):
1557
+ if total_bytes is None:
1558
+ del self.total_bytes
1559
+ return
1560
+ if not isinstance(total_bytes, int):
1561
+ raise TypeError('total_bytes must be of type int')
1562
+ self._total_bytes = total_bytes
1563
+
1564
+ @property
1565
+ def url(self) -> str:
1566
+ return self._url or ""
1567
+
1568
+ @url.setter
1569
+ def url(self, url: str):
1570
+ if url is None:
1571
+ del self.url
1572
+ return
1573
+ if not isinstance(url, str):
1574
+ raise TypeError('url must be of type str')
1575
+ self._url = url
1576
+
1577
+ @property
1578
+ def creation_date(self) -> datetime:
1579
+ return self._creation_date
1580
+
1581
+ @creation_date.setter
1582
+ def creation_date(self, creation_date: datetime):
1583
+ if creation_date is None:
1584
+ del self.creation_date
1585
+ return
1586
+ if not isinstance(creation_date, datetime):
1587
+ raise TypeError('creation_date must be of type datetime')
1588
+ self._creation_date = creation_date
1589
+
1590
+
1591
+ class ApiCategory(KaggleObject):
1592
+ r"""
1593
+ TODO(erdalsivri): Consider reusing with Kaggle.Sdk.Datasets.ApiCategory.
1594
+
1595
+ Attributes:
1596
+ ref (str)
1597
+ name (str)
1598
+ description (str)
1599
+ full_path (str)
1600
+ competition_count (int)
1601
+ dataset_count (int)
1602
+ script_count (int)
1603
+ total_count (int)
1604
+ """
1605
+
1606
+ def __init__(self):
1607
+ self._ref = ""
1608
+ self._name = None
1609
+ self._description = None
1610
+ self._full_path = None
1611
+ self._competition_count = 0
1612
+ self._dataset_count = 0
1613
+ self._script_count = 0
1614
+ self._total_count = 0
1615
+ self._freeze()
1616
+
1617
+ @property
1618
+ def ref(self) -> str:
1619
+ return self._ref
1620
+
1621
+ @ref.setter
1622
+ def ref(self, ref: str):
1623
+ if ref is None:
1624
+ del self.ref
1625
+ return
1626
+ if not isinstance(ref, str):
1627
+ raise TypeError('ref must be of type str')
1628
+ self._ref = ref
1629
+
1630
+ @property
1631
+ def name(self) -> str:
1632
+ return self._name or ""
1633
+
1634
+ @name.setter
1635
+ def name(self, name: str):
1636
+ if name is None:
1637
+ del self.name
1638
+ return
1639
+ if not isinstance(name, str):
1640
+ raise TypeError('name must be of type str')
1641
+ self._name = name
1642
+
1643
+ @property
1644
+ def description(self) -> str:
1645
+ return self._description or ""
1646
+
1647
+ @description.setter
1648
+ def description(self, description: str):
1649
+ if description is None:
1650
+ del self.description
1651
+ return
1652
+ if not isinstance(description, str):
1653
+ raise TypeError('description must be of type str')
1654
+ self._description = description
1655
+
1656
+ @property
1657
+ def full_path(self) -> str:
1658
+ return self._full_path or ""
1659
+
1660
+ @full_path.setter
1661
+ def full_path(self, full_path: str):
1662
+ if full_path is None:
1663
+ del self.full_path
1664
+ return
1665
+ if not isinstance(full_path, str):
1666
+ raise TypeError('full_path must be of type str')
1667
+ self._full_path = full_path
1668
+
1669
+ @property
1670
+ def competition_count(self) -> int:
1671
+ return self._competition_count
1672
+
1673
+ @competition_count.setter
1674
+ def competition_count(self, competition_count: int):
1675
+ if competition_count is None:
1676
+ del self.competition_count
1677
+ return
1678
+ if not isinstance(competition_count, int):
1679
+ raise TypeError('competition_count must be of type int')
1680
+ self._competition_count = competition_count
1681
+
1682
+ @property
1683
+ def dataset_count(self) -> int:
1684
+ return self._dataset_count
1685
+
1686
+ @dataset_count.setter
1687
+ def dataset_count(self, dataset_count: int):
1688
+ if dataset_count is None:
1689
+ del self.dataset_count
1690
+ return
1691
+ if not isinstance(dataset_count, int):
1692
+ raise TypeError('dataset_count must be of type int')
1693
+ self._dataset_count = dataset_count
1694
+
1695
+ @property
1696
+ def script_count(self) -> int:
1697
+ return self._script_count
1698
+
1699
+ @script_count.setter
1700
+ def script_count(self, script_count: int):
1701
+ if script_count is None:
1702
+ del self.script_count
1703
+ return
1704
+ if not isinstance(script_count, int):
1705
+ raise TypeError('script_count must be of type int')
1706
+ self._script_count = script_count
1707
+
1708
+ @property
1709
+ def total_count(self) -> int:
1710
+ return self._total_count
1711
+
1712
+ @total_count.setter
1713
+ def total_count(self, total_count: int):
1714
+ if total_count is None:
1715
+ del self.total_count
1716
+ return
1717
+ if not isinstance(total_count, int):
1718
+ raise TypeError('total_count must be of type int')
1719
+ self._total_count = total_count
1720
+
1721
+
1722
+ ApiCreateSubmissionRequest._fields = [
1723
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, "", PredefinedSerializer()),
1724
+ FieldMetadata("blobFileTokens", "blob_file_tokens", "_blob_file_tokens", str, "", PredefinedSerializer()),
1725
+ FieldMetadata("submissionDescription", "submission_description", "_submission_description", str, None, PredefinedSerializer(), optional=True),
1726
+ ]
1727
+
1728
+ ApiCreateSubmissionResponse._fields = [
1729
+ FieldMetadata("message", "message", "_message", str, "", PredefinedSerializer()),
1730
+ FieldMetadata("ref", "ref", "_ref", int, 0, PredefinedSerializer()),
1731
+ ]
1732
+
1733
+ ApiDownloadDataFileRequest._fields = [
1734
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, "", PredefinedSerializer()),
1735
+ FieldMetadata("fileName", "file_name", "_file_name", str, "", PredefinedSerializer()),
1736
+ ]
1737
+
1738
+ ApiDownloadDataFilesRequest._fields = [
1739
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, "", PredefinedSerializer()),
1740
+ ]
1741
+
1742
+ ApiDownloadLeaderboardRequest._fields = [
1743
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, "", PredefinedSerializer()),
1744
+ ]
1745
+
1746
+ ApiGetLeaderboardRequest._fields = [
1747
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, "", PredefinedSerializer()),
1748
+ FieldMetadata("overridePublic", "override_public", "_override_public", bool, None, PredefinedSerializer(), optional=True),
1749
+ ]
1750
+
1751
+ ApiGetLeaderboardResponse._fields = [
1752
+ FieldMetadata("submissions", "submissions", "_submissions", ApiLeaderboardSubmission, [], ListSerializer(KaggleObjectSerializer())),
1753
+ ]
1754
+
1755
+ ApiGetSubmissionRequest._fields = [
1756
+ FieldMetadata("ref", "ref", "_ref", int, 0, PredefinedSerializer()),
1757
+ ]
1758
+
1759
+ ApiLeaderboardSubmission._fields = [
1760
+ FieldMetadata("teamId", "team_id", "_team_id", int, 0, PredefinedSerializer()),
1761
+ FieldMetadata("teamName", "team_name", "_team_name", str, None, PredefinedSerializer(), optional=True),
1762
+ FieldMetadata("submissionDate", "submission_date", "_submission_date", datetime, None, DateTimeSerializer()),
1763
+ FieldMetadata("score", "score", "_score", str, None, PredefinedSerializer(), optional=True),
1764
+ ]
1765
+
1766
+ ApiListCompetitionsRequest._fields = [
1767
+ FieldMetadata("group", "group", "_group", CompetitionListTab, None, EnumSerializer(), optional=True),
1768
+ FieldMetadata("category", "category", "_category", HostSegment, None, EnumSerializer(), optional=True),
1769
+ FieldMetadata("sortBy", "sort_by", "_sort_by", CompetitionSortBy, None, EnumSerializer(), optional=True),
1770
+ FieldMetadata("search", "search", "_search", str, None, PredefinedSerializer(), optional=True),
1771
+ FieldMetadata("page", "page", "_page", int, None, PredefinedSerializer(), optional=True),
1772
+ ]
1773
+
1774
+ ApiListCompetitionsResponse._fields = [
1775
+ FieldMetadata("competitions", "competitions", "_competitions", ApiCompetition, [], ListSerializer(KaggleObjectSerializer())),
1776
+ ]
1777
+
1778
+ ApiListDataFilesRequest._fields = [
1779
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, "", PredefinedSerializer()),
1780
+ FieldMetadata("pageSize", "page_size", "_page_size", int, None, PredefinedSerializer(), optional=True),
1781
+ FieldMetadata("pageToken", "page_token", "_page_token", str, None, PredefinedSerializer(), optional=True),
1782
+ ]
1783
+
1784
+ ApiListDataFilesResponse._fields = [
1785
+ FieldMetadata("files", "files", "_files", ApiDataFile, [], ListSerializer(KaggleObjectSerializer())),
1786
+ FieldMetadata("nextPageToken", "next_page_token", "_next_page_token", str, "", PredefinedSerializer()),
1787
+ ]
1788
+
1789
+ ApiListSubmissionsRequest._fields = [
1790
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, "", PredefinedSerializer()),
1791
+ FieldMetadata("sortBy", "sort_by", "_sort_by", SubmissionSortBy, SubmissionSortBy.SUBMISSION_SORT_BY_DATE, EnumSerializer()),
1792
+ FieldMetadata("group", "group", "_group", SubmissionGroup, SubmissionGroup.SUBMISSION_GROUP_ALL, EnumSerializer()),
1793
+ FieldMetadata("page", "page", "_page", int, None, PredefinedSerializer(), optional=True),
1794
+ ]
1795
+
1796
+ ApiListSubmissionsResponse._fields = [
1797
+ FieldMetadata("submissions", "submissions", "_submissions", ApiSubmission, [], ListSerializer(KaggleObjectSerializer())),
1798
+ ]
1799
+
1800
+ ApiStartSubmissionUploadRequest._fields = [
1801
+ FieldMetadata("competitionName", "competition_name", "_competition_name", str, None, PredefinedSerializer(), optional=True),
1802
+ FieldMetadata("contentLength", "content_length", "_content_length", int, 0, PredefinedSerializer()),
1803
+ FieldMetadata("lastModifiedEpochSeconds", "last_modified_epoch_seconds", "_last_modified_epoch_seconds", int, 0, PredefinedSerializer()),
1804
+ FieldMetadata("fileName", "file_name", "_file_name", str, "", PredefinedSerializer()),
1805
+ ]
1806
+
1807
+ ApiStartSubmissionUploadResponse._fields = [
1808
+ FieldMetadata("token", "token", "_token", str, "", PredefinedSerializer()),
1809
+ FieldMetadata("createUrl", "create_url", "_create_url", str, "", PredefinedSerializer()),
1810
+ ]
1811
+
1812
+ ApiSubmission._fields = [
1813
+ FieldMetadata("ref", "ref", "_ref", int, 0, PredefinedSerializer()),
1814
+ FieldMetadata("totalBytes", "total_bytes", "_total_bytes", int, None, PredefinedSerializer(), optional=True),
1815
+ FieldMetadata("date", "date", "_date", datetime, None, DateTimeSerializer()),
1816
+ FieldMetadata("description", "description", "_description", str, None, PredefinedSerializer(), optional=True),
1817
+ FieldMetadata("errorDescription", "error_description", "_error_description", str, None, PredefinedSerializer(), optional=True),
1818
+ FieldMetadata("fileName", "file_name", "_file_name", str, None, PredefinedSerializer(), optional=True),
1819
+ FieldMetadata("publicScore", "public_score", "_public_score", str, None, PredefinedSerializer(), optional=True),
1820
+ FieldMetadata("privateScore", "private_score", "_private_score", str, None, PredefinedSerializer(), optional=True),
1821
+ FieldMetadata("status", "status", "_status", SubmissionStatus, SubmissionStatus.PENDING, EnumSerializer()),
1822
+ FieldMetadata("submittedBy", "submitted_by", "_submitted_by", str, None, PredefinedSerializer(), optional=True),
1823
+ FieldMetadata("submittedByRef", "submitted_by_ref", "_submitted_by_ref", str, None, PredefinedSerializer(), optional=True),
1824
+ FieldMetadata("teamName", "team_name", "_team_name", str, None, PredefinedSerializer(), optional=True),
1825
+ FieldMetadata("url", "url", "_url", str, None, PredefinedSerializer(), optional=True),
1826
+ ]
1827
+
1828
+ ApiCompetition._fields = [
1829
+ FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
1830
+ FieldMetadata("ref", "ref", "_ref", str, "", PredefinedSerializer()),
1831
+ FieldMetadata("title", "title", "_title", str, None, PredefinedSerializer(), optional=True),
1832
+ FieldMetadata("url", "url", "_url", str, None, PredefinedSerializer(), optional=True),
1833
+ FieldMetadata("description", "description", "_description", str, None, PredefinedSerializer(), optional=True),
1834
+ FieldMetadata("organizationName", "organization_name", "_organization_name", str, None, PredefinedSerializer(), optional=True),
1835
+ FieldMetadata("organizationRef", "organization_ref", "_organization_ref", str, None, PredefinedSerializer(), optional=True),
1836
+ FieldMetadata("category", "category", "_category", str, None, PredefinedSerializer(), optional=True),
1837
+ FieldMetadata("reward", "reward", "_reward", str, None, PredefinedSerializer(), optional=True),
1838
+ FieldMetadata("tags", "tags", "_tags", ApiCategory, [], ListSerializer(KaggleObjectSerializer())),
1839
+ FieldMetadata("deadline", "deadline", "_deadline", datetime, None, DateTimeSerializer()),
1840
+ FieldMetadata("kernelCount", "kernel_count", "_kernel_count", int, 0, PredefinedSerializer()),
1841
+ FieldMetadata("teamCount", "team_count", "_team_count", int, 0, PredefinedSerializer()),
1842
+ FieldMetadata("userHasEntered", "user_has_entered", "_user_has_entered", bool, False, PredefinedSerializer()),
1843
+ FieldMetadata("userRank", "user_rank", "_user_rank", int, None, PredefinedSerializer(), optional=True),
1844
+ FieldMetadata("mergerDeadline", "merger_deadline", "_merger_deadline", datetime, None, DateTimeSerializer()),
1845
+ FieldMetadata("newEntrantDeadline", "new_entrant_deadline", "_new_entrant_deadline", datetime, None, DateTimeSerializer()),
1846
+ FieldMetadata("enabledDate", "enabled_date", "_enabled_date", datetime, None, DateTimeSerializer()),
1847
+ FieldMetadata("maxDailySubmissions", "max_daily_submissions", "_max_daily_submissions", int, 0, PredefinedSerializer()),
1848
+ FieldMetadata("maxTeamSize", "max_team_size", "_max_team_size", int, None, PredefinedSerializer(), optional=True),
1849
+ FieldMetadata("evaluationMetric", "evaluation_metric", "_evaluation_metric", str, None, PredefinedSerializer(), optional=True),
1850
+ FieldMetadata("awardsPoints", "awards_points", "_awards_points", bool, False, PredefinedSerializer()),
1851
+ FieldMetadata("isKernelsSubmissionsOnly", "is_kernels_submissions_only", "_is_kernels_submissions_only", bool, False, PredefinedSerializer()),
1852
+ FieldMetadata("submissionsDisabled", "submissions_disabled", "_submissions_disabled", bool, False, PredefinedSerializer()),
1853
+ ]
1854
+
1855
+ ApiDataFile._fields = [
1856
+ FieldMetadata("ref", "ref", "_ref", str, "", PredefinedSerializer()),
1857
+ FieldMetadata("name", "name", "_name", str, None, PredefinedSerializer(), optional=True),
1858
+ FieldMetadata("description", "description", "_description", str, None, PredefinedSerializer(), optional=True),
1859
+ FieldMetadata("totalBytes", "total_bytes", "_total_bytes", int, 0, PredefinedSerializer()),
1860
+ FieldMetadata("url", "url", "_url", str, None, PredefinedSerializer(), optional=True),
1861
+ FieldMetadata("creationDate", "creation_date", "_creation_date", datetime, None, DateTimeSerializer()),
1862
+ ]
1863
+
1864
+ ApiCategory._fields = [
1865
+ FieldMetadata("ref", "ref", "_ref", str, "", PredefinedSerializer()),
1866
+ FieldMetadata("name", "name", "_name", str, None, PredefinedSerializer(), optional=True),
1867
+ FieldMetadata("description", "description", "_description", str, None, PredefinedSerializer(), optional=True),
1868
+ FieldMetadata("fullPath", "full_path", "_full_path", str, None, PredefinedSerializer(), optional=True),
1869
+ FieldMetadata("competitionCount", "competition_count", "_competition_count", int, 0, PredefinedSerializer()),
1870
+ FieldMetadata("datasetCount", "dataset_count", "_dataset_count", int, 0, PredefinedSerializer()),
1871
+ FieldMetadata("scriptCount", "script_count", "_script_count", int, 0, PredefinedSerializer()),
1872
+ FieldMetadata("totalCount", "total_count", "_total_count", int, 0, PredefinedSerializer()),
1873
+ ]
1874
+