kaggle 1.7.4.2__py3-none-any.whl → 1.8.0__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 (114) hide show
  1. kaggle/__init__.py +10 -6
  2. kaggle/api/kaggle_api.py +574 -585
  3. kaggle/api/kaggle_api_extended.py +5251 -4738
  4. kaggle/cli.py +1335 -1585
  5. kaggle/models/api_blob_type.py +3 -3
  6. kaggle/models/dataset_column.py +129 -129
  7. kaggle/models/dataset_new_request.py +130 -72
  8. kaggle/models/dataset_new_version_request.py +88 -56
  9. kaggle/models/dataset_update_settings_request.py +93 -59
  10. kaggle/models/kaggle_models_extended.py +169 -172
  11. kaggle/models/kernel_push_request.py +152 -100
  12. kaggle/models/model_instance_new_version_request.py +30 -30
  13. kaggle/models/model_instance_update_request.py +171 -71
  14. kaggle/models/model_new_instance_request.py +223 -88
  15. kaggle/models/model_new_request.py +61 -46
  16. kaggle/models/model_update_request.py +66 -48
  17. kaggle/models/start_blob_upload_request.py +146 -138
  18. kaggle/models/start_blob_upload_response.py +83 -78
  19. kaggle/models/upload_file.py +92 -96
  20. kaggle/test/test_authenticate.py +23 -23
  21. {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/METADATA +11 -15
  22. kaggle-1.8.0.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 +567 -297
  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 +55 -20
  61. kagglesdk/kaggle_creds.py +148 -0
  62. kagglesdk/kaggle_env.py +89 -27
  63. kagglesdk/kaggle_http_client.py +235 -290
  64. kagglesdk/kaggle_oauth.py +200 -0
  65. kagglesdk/kaggle_object.py +298 -250
  66. kagglesdk/kernels/services/kernels_api_service.py +46 -9
  67. kagglesdk/kernels/types/kernels_api_service.py +658 -158
  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 +46 -21
  74. kagglesdk/models/types/model_api_service.py +1018 -652
  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/__init__.py +0 -0
  88. kagglesdk/security/services/__init__.py +0 -0
  89. kagglesdk/security/services/iam_service.py +31 -0
  90. kagglesdk/security/services/oauth_service.py +58 -0
  91. kagglesdk/security/types/__init__.py +0 -0
  92. kagglesdk/security/types/authentication.py +171 -0
  93. kagglesdk/security/types/iam_service.py +496 -0
  94. kagglesdk/security/types/oauth_service.py +1181 -0
  95. kagglesdk/security/types/roles.py +8 -0
  96. kagglesdk/security/types/security_types.py +159 -0
  97. kagglesdk/test/__init__.py +0 -0
  98. kagglesdk/test/test_client.py +20 -24
  99. kagglesdk/users/services/__init__.py +0 -0
  100. kagglesdk/users/services/account_service.py +31 -0
  101. kagglesdk/users/services/group_api_service.py +31 -0
  102. kagglesdk/users/types/account_service.py +345 -0
  103. kagglesdk/users/types/group_api_service.py +315 -0
  104. kagglesdk/users/types/group_types.py +165 -0
  105. kagglesdk/users/types/groups_enum.py +8 -0
  106. kagglesdk/users/types/progression_service.py +9 -0
  107. kagglesdk/users/types/search_users.py +23 -0
  108. kagglesdk/users/types/user_avatar.py +226 -0
  109. kaggle/configuration.py +0 -206
  110. kaggle-1.7.4.2.dist-info/RECORD +0 -89
  111. {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/WHEEL +0 -0
  112. {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/entry_points.txt +0 -0
  113. {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/licenses/LICENSE.txt +0 -0
  114. {kaggle/test → kagglesdk/benchmarks}/__init__.py +0 -0
@@ -0,0 +1,307 @@
1
+ from datetime import datetime
2
+ from kagglesdk.kaggle_object import *
3
+ from typing import Optional, List
4
+
5
+ class BenchmarkResult(KaggleObject):
6
+ r"""
7
+ TODO(bml): Integrate this proto with personal benchmarks trials.
8
+ Represents the outcome of a benchmark run. All fields are immutable.
9
+
10
+ Attributes:
11
+ numeric_result (NumericResult)
12
+ boolean_result (bool)
13
+ custom_additional_results (CustomResult)
14
+ Generic additional results. These are rendered generically on the frontend:
15
+ numeric_result_private (NumericResult)
16
+ Numeric result on the private set of the benchmark version.
17
+ numeric_result_public (NumericResult)
18
+ Numeric result on the public set of the benchmark version.
19
+ evaluation_date (datetime)
20
+ The date on which evaluation was performed.
21
+ task_version_id (int)
22
+ Convenience fields for this result (for the frontend):
23
+ """
24
+
25
+ def __init__(self):
26
+ self._numeric_result = None
27
+ self._boolean_result = None
28
+ self._custom_additional_results = []
29
+ self._numeric_result_private = None
30
+ self._numeric_result_public = None
31
+ self._evaluation_date = None
32
+ self._task_version_id = None
33
+ self._freeze()
34
+
35
+ @property
36
+ def task_version_id(self) -> int:
37
+ """Convenience fields for this result (for the frontend):"""
38
+ return self._task_version_id or 0
39
+
40
+ @task_version_id.setter
41
+ def task_version_id(self, task_version_id: Optional[int]):
42
+ if task_version_id is None:
43
+ del self.task_version_id
44
+ return
45
+ if not isinstance(task_version_id, int):
46
+ raise TypeError('task_version_id must be of type int')
47
+ self._task_version_id = task_version_id
48
+
49
+ @property
50
+ def numeric_result(self) -> Optional['NumericResult']:
51
+ return self._numeric_result or None
52
+
53
+ @numeric_result.setter
54
+ def numeric_result(self, numeric_result: Optional['NumericResult']):
55
+ if numeric_result is None:
56
+ del self.numeric_result
57
+ return
58
+ if not isinstance(numeric_result, NumericResult):
59
+ raise TypeError('numeric_result must be of type NumericResult')
60
+ del self.boolean_result
61
+ self._numeric_result = numeric_result
62
+
63
+ @property
64
+ def boolean_result(self) -> bool:
65
+ return self._boolean_result or False
66
+
67
+ @boolean_result.setter
68
+ def boolean_result(self, boolean_result: bool):
69
+ if boolean_result is None:
70
+ del self.boolean_result
71
+ return
72
+ if not isinstance(boolean_result, bool):
73
+ raise TypeError('boolean_result must be of type bool')
74
+ del self.numeric_result
75
+ self._boolean_result = boolean_result
76
+
77
+ @property
78
+ def custom_additional_results(self) -> Optional[List[Optional['CustomResult']]]:
79
+ """Generic additional results. These are rendered generically on the frontend:"""
80
+ return self._custom_additional_results
81
+
82
+ @custom_additional_results.setter
83
+ def custom_additional_results(self, custom_additional_results: Optional[List[Optional['CustomResult']]]):
84
+ if custom_additional_results is None:
85
+ del self.custom_additional_results
86
+ return
87
+ if not isinstance(custom_additional_results, list):
88
+ raise TypeError('custom_additional_results must be of type list')
89
+ if not all([isinstance(t, CustomResult) for t in custom_additional_results]):
90
+ raise TypeError('custom_additional_results must contain only items of type CustomResult')
91
+ self._custom_additional_results = custom_additional_results
92
+
93
+ @property
94
+ def numeric_result_private(self) -> Optional['NumericResult']:
95
+ """Numeric result on the private set of the benchmark version."""
96
+ return self._numeric_result_private or None
97
+
98
+ @numeric_result_private.setter
99
+ def numeric_result_private(self, numeric_result_private: Optional[Optional['NumericResult']]):
100
+ if numeric_result_private is None:
101
+ del self.numeric_result_private
102
+ return
103
+ if not isinstance(numeric_result_private, NumericResult):
104
+ raise TypeError('numeric_result_private must be of type NumericResult')
105
+ self._numeric_result_private = numeric_result_private
106
+
107
+ @property
108
+ def numeric_result_public(self) -> Optional['NumericResult']:
109
+ """Numeric result on the public set of the benchmark version."""
110
+ return self._numeric_result_public or None
111
+
112
+ @numeric_result_public.setter
113
+ def numeric_result_public(self, numeric_result_public: Optional[Optional['NumericResult']]):
114
+ if numeric_result_public is None:
115
+ del self.numeric_result_public
116
+ return
117
+ if not isinstance(numeric_result_public, NumericResult):
118
+ raise TypeError('numeric_result_public must be of type NumericResult')
119
+ self._numeric_result_public = numeric_result_public
120
+
121
+ @property
122
+ def evaluation_date(self) -> datetime:
123
+ """The date on which evaluation was performed."""
124
+ return self._evaluation_date or None
125
+
126
+ @evaluation_date.setter
127
+ def evaluation_date(self, evaluation_date: Optional[datetime]):
128
+ if evaluation_date is None:
129
+ del self.evaluation_date
130
+ return
131
+ if not isinstance(evaluation_date, datetime):
132
+ raise TypeError('evaluation_date must be of type datetime')
133
+ self._evaluation_date = evaluation_date
134
+
135
+
136
+ class CustomResult(KaggleObject):
137
+ r"""
138
+ Attributes:
139
+ key (str)
140
+ value (str)
141
+ """
142
+
143
+ def __init__(self):
144
+ self._key = ""
145
+ self._value = ""
146
+ self._freeze()
147
+
148
+ @property
149
+ def key(self) -> str:
150
+ return self._key
151
+
152
+ @key.setter
153
+ def key(self, key: str):
154
+ if key is None:
155
+ del self.key
156
+ return
157
+ if not isinstance(key, str):
158
+ raise TypeError('key must be of type str')
159
+ self._key = key
160
+
161
+ @property
162
+ def value(self) -> str:
163
+ return self._value
164
+
165
+ @value.setter
166
+ def value(self, value: str):
167
+ if value is None:
168
+ del self.value
169
+ return
170
+ if not isinstance(value, str):
171
+ raise TypeError('value must be of type str')
172
+ self._value = value
173
+
174
+
175
+ class NumericResult(KaggleObject):
176
+ r"""
177
+ Attributes:
178
+ value (float)
179
+ confidence_interval (float)
180
+ Note, while we call this the 'confidence interval' - the value we store
181
+ here is actually the 'confidence radius', it should always be displayed
182
+ as a +- value.
183
+ uneven_confidence_interval (UnevenConfidenceInterval)
184
+ For asymmetric confidence intervals in which the +/- values differ
185
+ If set, prioritized over confidence_interval
186
+ """
187
+
188
+ def __init__(self):
189
+ self._value = 0.0
190
+ self._confidence_interval = None
191
+ self._uneven_confidence_interval = None
192
+ self._freeze()
193
+
194
+ @property
195
+ def value(self) -> float:
196
+ return self._value
197
+
198
+ @value.setter
199
+ def value(self, value: float):
200
+ if value is None:
201
+ del self.value
202
+ return
203
+ if not isinstance(value, float):
204
+ raise TypeError('value must be of type float')
205
+ self._value = value
206
+
207
+ @property
208
+ def confidence_interval(self) -> float:
209
+ r"""
210
+ Note, while we call this the 'confidence interval' - the value we store
211
+ here is actually the 'confidence radius', it should always be displayed
212
+ as a +- value.
213
+ """
214
+ return self._confidence_interval or 0.0
215
+
216
+ @confidence_interval.setter
217
+ def confidence_interval(self, confidence_interval: Optional[float]):
218
+ if confidence_interval is None:
219
+ del self.confidence_interval
220
+ return
221
+ if not isinstance(confidence_interval, float):
222
+ raise TypeError('confidence_interval must be of type float')
223
+ self._confidence_interval = confidence_interval
224
+
225
+ @property
226
+ def uneven_confidence_interval(self) -> Optional['UnevenConfidenceInterval']:
227
+ r"""
228
+ For asymmetric confidence intervals in which the +/- values differ
229
+ If set, prioritized over confidence_interval
230
+ """
231
+ return self._uneven_confidence_interval or None
232
+
233
+ @uneven_confidence_interval.setter
234
+ def uneven_confidence_interval(self, uneven_confidence_interval: Optional[Optional['UnevenConfidenceInterval']]):
235
+ if uneven_confidence_interval is None:
236
+ del self.uneven_confidence_interval
237
+ return
238
+ if not isinstance(uneven_confidence_interval, UnevenConfidenceInterval):
239
+ raise TypeError('uneven_confidence_interval must be of type UnevenConfidenceInterval')
240
+ self._uneven_confidence_interval = uneven_confidence_interval
241
+
242
+
243
+ class UnevenConfidenceInterval(KaggleObject):
244
+ r"""
245
+ Attributes:
246
+ plus (float)
247
+ minus (float)
248
+ """
249
+
250
+ def __init__(self):
251
+ self._plus = 0.0
252
+ self._minus = 0.0
253
+ self._freeze()
254
+
255
+ @property
256
+ def plus(self) -> float:
257
+ return self._plus
258
+
259
+ @plus.setter
260
+ def plus(self, plus: float):
261
+ if plus is None:
262
+ del self.plus
263
+ return
264
+ if not isinstance(plus, float):
265
+ raise TypeError('plus must be of type float')
266
+ self._plus = plus
267
+
268
+ @property
269
+ def minus(self) -> float:
270
+ return self._minus
271
+
272
+ @minus.setter
273
+ def minus(self, minus: float):
274
+ if minus is None:
275
+ del self.minus
276
+ return
277
+ if not isinstance(minus, float):
278
+ raise TypeError('minus must be of type float')
279
+ self._minus = minus
280
+
281
+
282
+ BenchmarkResult._fields = [
283
+ FieldMetadata("numericResult", "numeric_result", "_numeric_result", NumericResult, None, KaggleObjectSerializer(), optional=True),
284
+ FieldMetadata("booleanResult", "boolean_result", "_boolean_result", bool, None, PredefinedSerializer(), optional=True),
285
+ FieldMetadata("customAdditionalResults", "custom_additional_results", "_custom_additional_results", CustomResult, [], ListSerializer(KaggleObjectSerializer())),
286
+ FieldMetadata("numericResultPrivate", "numeric_result_private", "_numeric_result_private", NumericResult, None, KaggleObjectSerializer(), optional=True),
287
+ FieldMetadata("numericResultPublic", "numeric_result_public", "_numeric_result_public", NumericResult, None, KaggleObjectSerializer(), optional=True),
288
+ FieldMetadata("evaluationDate", "evaluation_date", "_evaluation_date", datetime, None, DateTimeSerializer(), optional=True),
289
+ FieldMetadata("taskVersionId", "task_version_id", "_task_version_id", int, None, PredefinedSerializer(), optional=True),
290
+ ]
291
+
292
+ CustomResult._fields = [
293
+ FieldMetadata("key", "key", "_key", str, "", PredefinedSerializer()),
294
+ FieldMetadata("value", "value", "_value", str, "", PredefinedSerializer()),
295
+ ]
296
+
297
+ NumericResult._fields = [
298
+ FieldMetadata("value", "value", "_value", float, 0.0, PredefinedSerializer()),
299
+ FieldMetadata("confidenceInterval", "confidence_interval", "_confidence_interval", float, None, PredefinedSerializer(), optional=True),
300
+ FieldMetadata("unevenConfidenceInterval", "uneven_confidence_interval", "_uneven_confidence_interval", UnevenConfidenceInterval, None, KaggleObjectSerializer(), optional=True),
301
+ ]
302
+
303
+ UnevenConfidenceInterval._fields = [
304
+ FieldMetadata("plus", "plus", "_plus", float, 0.0, PredefinedSerializer()),
305
+ FieldMetadata("minus", "minus", "_minus", float, 0.0, PredefinedSerializer()),
306
+ ]
307
+
@@ -0,0 +1,243 @@
1
+ from kagglesdk.benchmarks.types.benchmark_types import BenchmarkResult
2
+ from kagglesdk.kaggle_object import *
3
+ from typing import List, Optional
4
+
5
+ class ApiBenchmarkLeaderboard(KaggleObject):
6
+ r"""
7
+ Attributes:
8
+ rows (ApiBenchmarkLeaderboard.LeaderboardRow)
9
+ """
10
+
11
+ class LeaderboardRow(KaggleObject):
12
+ r"""
13
+ Attributes:
14
+ model_version_name (str)
15
+ model_version_slug (str)
16
+ task_results (ApiBenchmarkLeaderboard.TaskResult)
17
+ """
18
+
19
+ def __init__(self):
20
+ self._model_version_name = ""
21
+ self._model_version_slug = ""
22
+ self._task_results = []
23
+ self._freeze()
24
+
25
+ @property
26
+ def model_version_name(self) -> str:
27
+ return self._model_version_name
28
+
29
+ @model_version_name.setter
30
+ def model_version_name(self, model_version_name: str):
31
+ if model_version_name is None:
32
+ del self.model_version_name
33
+ return
34
+ if not isinstance(model_version_name, str):
35
+ raise TypeError('model_version_name must be of type str')
36
+ self._model_version_name = model_version_name
37
+
38
+ @property
39
+ def model_version_slug(self) -> str:
40
+ return self._model_version_slug
41
+
42
+ @model_version_slug.setter
43
+ def model_version_slug(self, model_version_slug: str):
44
+ if model_version_slug is None:
45
+ del self.model_version_slug
46
+ return
47
+ if not isinstance(model_version_slug, str):
48
+ raise TypeError('model_version_slug must be of type str')
49
+ self._model_version_slug = model_version_slug
50
+
51
+ @property
52
+ def task_results(self) -> Optional[List[Optional['ApiBenchmarkLeaderboard.TaskResult']]]:
53
+ return self._task_results
54
+
55
+ @task_results.setter
56
+ def task_results(self, task_results: Optional[List[Optional['ApiBenchmarkLeaderboard.TaskResult']]]):
57
+ if task_results is None:
58
+ del self.task_results
59
+ return
60
+ if not isinstance(task_results, list):
61
+ raise TypeError('task_results must be of type list')
62
+ if not all([isinstance(t, ApiBenchmarkLeaderboard.TaskResult) for t in task_results]):
63
+ raise TypeError('task_results must contain only items of type ApiBenchmarkLeaderboard.TaskResult')
64
+ self._task_results = task_results
65
+
66
+
67
+ class TaskResult(KaggleObject):
68
+ r"""
69
+ Attributes:
70
+ benchmark_task_name (str)
71
+ benchmark_task_slug (str)
72
+ task_version (int)
73
+ result (BenchmarkResult)
74
+ """
75
+
76
+ def __init__(self):
77
+ self._benchmark_task_name = ""
78
+ self._benchmark_task_slug = ""
79
+ self._task_version = 0
80
+ self._result = None
81
+ self._freeze()
82
+
83
+ @property
84
+ def benchmark_task_name(self) -> str:
85
+ return self._benchmark_task_name
86
+
87
+ @benchmark_task_name.setter
88
+ def benchmark_task_name(self, benchmark_task_name: str):
89
+ if benchmark_task_name is None:
90
+ del self.benchmark_task_name
91
+ return
92
+ if not isinstance(benchmark_task_name, str):
93
+ raise TypeError('benchmark_task_name must be of type str')
94
+ self._benchmark_task_name = benchmark_task_name
95
+
96
+ @property
97
+ def benchmark_task_slug(self) -> str:
98
+ return self._benchmark_task_slug
99
+
100
+ @benchmark_task_slug.setter
101
+ def benchmark_task_slug(self, benchmark_task_slug: str):
102
+ if benchmark_task_slug is None:
103
+ del self.benchmark_task_slug
104
+ return
105
+ if not isinstance(benchmark_task_slug, str):
106
+ raise TypeError('benchmark_task_slug must be of type str')
107
+ self._benchmark_task_slug = benchmark_task_slug
108
+
109
+ @property
110
+ def task_version(self) -> int:
111
+ return self._task_version
112
+
113
+ @task_version.setter
114
+ def task_version(self, task_version: int):
115
+ if task_version is None:
116
+ del self.task_version
117
+ return
118
+ if not isinstance(task_version, int):
119
+ raise TypeError('task_version must be of type int')
120
+ self._task_version = task_version
121
+
122
+ @property
123
+ def result(self) -> Optional['BenchmarkResult']:
124
+ return self._result
125
+
126
+ @result.setter
127
+ def result(self, result: Optional['BenchmarkResult']):
128
+ if result is None:
129
+ del self.result
130
+ return
131
+ if not isinstance(result, BenchmarkResult):
132
+ raise TypeError('result must be of type BenchmarkResult')
133
+ self._result = result
134
+
135
+
136
+ def __init__(self):
137
+ self._rows = []
138
+ self._freeze()
139
+
140
+ @property
141
+ def rows(self) -> Optional[List[Optional['ApiBenchmarkLeaderboard.LeaderboardRow']]]:
142
+ return self._rows
143
+
144
+ @rows.setter
145
+ def rows(self, rows: Optional[List[Optional['ApiBenchmarkLeaderboard.LeaderboardRow']]]):
146
+ if rows is None:
147
+ del self.rows
148
+ return
149
+ if not isinstance(rows, list):
150
+ raise TypeError('rows must be of type list')
151
+ if not all([isinstance(t, ApiBenchmarkLeaderboard.LeaderboardRow) for t in rows]):
152
+ raise TypeError('rows must contain only items of type ApiBenchmarkLeaderboard.LeaderboardRow')
153
+ self._rows = rows
154
+
155
+
156
+ class ApiGetBenchmarkLeaderboardRequest(KaggleObject):
157
+ r"""
158
+ Attributes:
159
+ owner_slug (str)
160
+ benchmark_slug (str)
161
+ version_number (int)
162
+ """
163
+
164
+ def __init__(self):
165
+ self._owner_slug = ""
166
+ self._benchmark_slug = ""
167
+ self._version_number = None
168
+ self._freeze()
169
+
170
+ @property
171
+ def owner_slug(self) -> str:
172
+ return self._owner_slug
173
+
174
+ @owner_slug.setter
175
+ def owner_slug(self, owner_slug: str):
176
+ if owner_slug is None:
177
+ del self.owner_slug
178
+ return
179
+ if not isinstance(owner_slug, str):
180
+ raise TypeError('owner_slug must be of type str')
181
+ self._owner_slug = owner_slug
182
+
183
+ @property
184
+ def benchmark_slug(self) -> str:
185
+ return self._benchmark_slug
186
+
187
+ @benchmark_slug.setter
188
+ def benchmark_slug(self, benchmark_slug: str):
189
+ if benchmark_slug is None:
190
+ del self.benchmark_slug
191
+ return
192
+ if not isinstance(benchmark_slug, str):
193
+ raise TypeError('benchmark_slug must be of type str')
194
+ self._benchmark_slug = benchmark_slug
195
+
196
+ @property
197
+ def version_number(self) -> int:
198
+ return self._version_number or 0
199
+
200
+ @version_number.setter
201
+ def version_number(self, version_number: Optional[int]):
202
+ if version_number is None:
203
+ del self.version_number
204
+ return
205
+ if not isinstance(version_number, int):
206
+ raise TypeError('version_number must be of type int')
207
+ self._version_number = version_number
208
+
209
+ def endpoint(self):
210
+ if self.version_number:
211
+ path = '/api/v1/benchmarks/{owner_slug}/{benchmark_slug}/versions/{version_number}/leaderboard'
212
+ else:
213
+ path = '/api/v1/benchmarks/{owner_slug}/{benchmark_slug}/leaderboard'
214
+ return path.format_map(self.to_field_map(self))
215
+
216
+ @staticmethod
217
+ def endpoint_path():
218
+ return '/api/v1/benchmarks/{owner_slug}/{benchmark_slug}/leaderboard'
219
+
220
+
221
+ ApiBenchmarkLeaderboard.LeaderboardRow._fields = [
222
+ FieldMetadata("modelVersionName", "model_version_name", "_model_version_name", str, "", PredefinedSerializer()),
223
+ FieldMetadata("modelVersionSlug", "model_version_slug", "_model_version_slug", str, "", PredefinedSerializer()),
224
+ FieldMetadata("taskResults", "task_results", "_task_results", ApiBenchmarkLeaderboard.TaskResult, [], ListSerializer(KaggleObjectSerializer())),
225
+ ]
226
+
227
+ ApiBenchmarkLeaderboard.TaskResult._fields = [
228
+ FieldMetadata("benchmarkTaskName", "benchmark_task_name", "_benchmark_task_name", str, "", PredefinedSerializer()),
229
+ FieldMetadata("benchmarkTaskSlug", "benchmark_task_slug", "_benchmark_task_slug", str, "", PredefinedSerializer()),
230
+ FieldMetadata("taskVersion", "task_version", "_task_version", int, 0, PredefinedSerializer()),
231
+ FieldMetadata("result", "result", "_result", BenchmarkResult, None, KaggleObjectSerializer()),
232
+ ]
233
+
234
+ ApiBenchmarkLeaderboard._fields = [
235
+ FieldMetadata("rows", "rows", "_rows", ApiBenchmarkLeaderboard.LeaderboardRow, [], ListSerializer(KaggleObjectSerializer())),
236
+ ]
237
+
238
+ ApiGetBenchmarkLeaderboardRequest._fields = [
239
+ FieldMetadata("ownerSlug", "owner_slug", "_owner_slug", str, "", PredefinedSerializer()),
240
+ FieldMetadata("benchmarkSlug", "benchmark_slug", "_benchmark_slug", str, "", PredefinedSerializer()),
241
+ FieldMetadata("versionNumber", "version_number", "_version_number", int, None, PredefinedSerializer(), optional=True),
242
+ ]
243
+
@@ -22,4 +22,4 @@ class BlobApiClient(object):
22
22
  if request is None:
23
23
  request = ApiStartBlobUploadRequest()
24
24
 
25
- return self._client.call("blobs.BlobApiService", "ApiStartBlobUpload", request, ApiStartBlobUploadResponse)
25
+ return self._client.call("blobs.BlobApiService", "StartBlobUpload", request, ApiStartBlobUploadResponse)
@@ -65,7 +65,7 @@ class ApiStartBlobUploadRequest(KaggleObject):
65
65
  return self._content_type or ""
66
66
 
67
67
  @content_type.setter
68
- def content_type(self, content_type: str):
68
+ def content_type(self, content_type: Optional[str]):
69
69
  if content_type is None:
70
70
  del self.content_type
71
71
  return
@@ -93,7 +93,7 @@ class ApiStartBlobUploadRequest(KaggleObject):
93
93
  return self._last_modified_epoch_seconds or 0
94
94
 
95
95
  @last_modified_epoch_seconds.setter
96
- def last_modified_epoch_seconds(self, last_modified_epoch_seconds: int):
96
+ def last_modified_epoch_seconds(self, last_modified_epoch_seconds: Optional[int]):
97
97
  if last_modified_epoch_seconds is None:
98
98
  del self.last_modified_epoch_seconds
99
99
  return
File without changes
@@ -0,0 +1,46 @@
1
+ from kagglesdk.common.types.operations import Operation
2
+ from kagglesdk.common.types.operations_service import GetOperationRequest
3
+ from kagglesdk.kaggle_http_client import KaggleHttpClient
4
+
5
+ class OperationsClient(object):
6
+ r"""
7
+ Manages long-running operations with an API service.
8
+
9
+ When an API method normally takes long time to complete, it can be designed
10
+ to return [Operation][google.longrunning.Operation] to the client, and the
11
+ client can use this interface to receive the real response asynchronously by
12
+ polling the operation resource, or pass the operation resource to another API
13
+ (such as Pub/Sub API) to receive the response. Any API service that returns
14
+ long-running operations should implement the `Operations` interface so
15
+ developers can have a consistent client experience.
16
+ """
17
+
18
+ def __init__(self, client: KaggleHttpClient):
19
+ self._client = client
20
+
21
+ def get_operation(self, request: GetOperationRequest = None, name: str = None) -> Operation:
22
+ r"""
23
+ Gets the latest state of a long-running operation. Clients can use this
24
+ method to poll the operation result at intervals as recommended by the API
25
+ service.
26
+
27
+ Args:
28
+ request (GetOperationRequest):
29
+ The request object; initialized to empty instance if not specified.
30
+ May not be specified if any of the flattened field params are specified.
31
+ name (str)
32
+ This corresponds to the ``name`` field on the ``request`` instance;
33
+ if ``request`` is provided, this should not be set.
34
+ """
35
+
36
+ has_flattened_args = any([name])
37
+ if request is not None and has_flattened_args:
38
+ raise ValueError('If the `request` argument is set, then none of '
39
+ 'the individual field arguments should be set.')
40
+
41
+ if request is None:
42
+ request = GetOperationRequest()
43
+ if name is not None:
44
+ request.name = name
45
+
46
+ return self._client.call("common.OperationsService", "GetOperation", request, Operation)
@@ -80,7 +80,7 @@ class FileDownload(KaggleObject):
80
80
  return self._content_length or 0
81
81
 
82
82
  @content_length.setter
83
- def content_length(self, content_length: int):
83
+ def content_length(self, content_length: Optional[int]):
84
84
  if content_length is None:
85
85
  del self.content_length
86
86
  return
@@ -69,7 +69,7 @@ class HttpRedirect(KaggleObject):
69
69
  return self._bypass_encoding or False
70
70
 
71
71
  @bypass_encoding.setter
72
- def bypass_encoding(self, bypass_encoding: bool):
72
+ def bypass_encoding(self, bypass_encoding: Optional[bool]):
73
73
  if bypass_encoding is None:
74
74
  del self.bypass_encoding
75
75
  return