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.
- kaggle/__init__.py +10 -6
- kaggle/api/kaggle_api.py +574 -585
- kaggle/api/kaggle_api_extended.py +5251 -4738
- kaggle/cli.py +1335 -1585
- kaggle/models/api_blob_type.py +3 -3
- kaggle/models/dataset_column.py +129 -129
- kaggle/models/dataset_new_request.py +130 -72
- kaggle/models/dataset_new_version_request.py +88 -56
- kaggle/models/dataset_update_settings_request.py +93 -59
- kaggle/models/kaggle_models_extended.py +169 -172
- kaggle/models/kernel_push_request.py +152 -100
- kaggle/models/model_instance_new_version_request.py +30 -30
- kaggle/models/model_instance_update_request.py +171 -71
- kaggle/models/model_new_instance_request.py +223 -88
- kaggle/models/model_new_request.py +61 -46
- kaggle/models/model_update_request.py +66 -48
- kaggle/models/start_blob_upload_request.py +146 -138
- kaggle/models/start_blob_upload_response.py +83 -78
- kaggle/models/upload_file.py +92 -96
- kaggle/test/test_authenticate.py +23 -23
- {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/METADATA +11 -15
- kaggle-1.8.0.dist-info/RECORD +148 -0
- kagglesdk/__init__.py +5 -1
- kagglesdk/benchmarks/services/__init__.py +0 -0
- kagglesdk/benchmarks/services/benchmarks_api_service.py +19 -0
- kagglesdk/benchmarks/types/__init__.py +0 -0
- kagglesdk/benchmarks/types/benchmark_types.py +307 -0
- kagglesdk/benchmarks/types/benchmarks_api_service.py +243 -0
- kagglesdk/blobs/services/blob_api_service.py +1 -1
- kagglesdk/blobs/types/blob_api_service.py +2 -2
- kagglesdk/common/services/__init__.py +0 -0
- kagglesdk/common/services/operations_service.py +46 -0
- kagglesdk/common/types/file_download.py +1 -1
- kagglesdk/common/types/http_redirect.py +1 -1
- kagglesdk/common/types/operations.py +194 -0
- kagglesdk/common/types/operations_service.py +48 -0
- kagglesdk/community/__init__.py +0 -0
- kagglesdk/community/types/__init__.py +0 -0
- kagglesdk/community/types/content_enums.py +44 -0
- kagglesdk/community/types/organization.py +410 -0
- kagglesdk/competitions/services/competition_api_service.py +49 -12
- kagglesdk/competitions/types/competition.py +14 -0
- kagglesdk/competitions/types/competition_api_service.py +1639 -1275
- kagglesdk/competitions/types/search_competitions.py +28 -0
- kagglesdk/datasets/databundles/__init__.py +0 -0
- kagglesdk/datasets/databundles/types/__init__.py +0 -0
- kagglesdk/datasets/databundles/types/databundle_api_types.py +540 -0
- kagglesdk/datasets/services/dataset_api_service.py +39 -14
- kagglesdk/datasets/types/dataset_api_service.py +567 -297
- kagglesdk/datasets/types/dataset_enums.py +21 -0
- kagglesdk/datasets/types/dataset_service.py +145 -0
- kagglesdk/datasets/types/dataset_types.py +74 -74
- kagglesdk/datasets/types/search_datasets.py +6 -0
- kagglesdk/discussions/__init__.py +0 -0
- kagglesdk/discussions/types/__init__.py +0 -0
- kagglesdk/discussions/types/search_discussions.py +43 -0
- kagglesdk/discussions/types/writeup_enums.py +11 -0
- kagglesdk/education/services/education_api_service.py +1 -1
- kagglesdk/education/types/education_api_service.py +1 -1
- kagglesdk/kaggle_client.py +55 -20
- kagglesdk/kaggle_creds.py +148 -0
- kagglesdk/kaggle_env.py +89 -27
- kagglesdk/kaggle_http_client.py +235 -290
- kagglesdk/kaggle_oauth.py +200 -0
- kagglesdk/kaggle_object.py +298 -250
- kagglesdk/kernels/services/kernels_api_service.py +46 -9
- kagglesdk/kernels/types/kernels_api_service.py +658 -158
- kagglesdk/kernels/types/kernels_enums.py +6 -0
- kagglesdk/kernels/types/search_kernels.py +6 -0
- kagglesdk/licenses/__init__.py +0 -0
- kagglesdk/licenses/types/__init__.py +0 -0
- kagglesdk/licenses/types/licenses_types.py +182 -0
- kagglesdk/models/services/model_api_service.py +46 -21
- kagglesdk/models/types/model_api_service.py +1018 -652
- kagglesdk/models/types/model_enums.py +8 -0
- kagglesdk/models/types/model_service.py +71 -71
- kagglesdk/models/types/model_types.py +1057 -5
- kagglesdk/models/types/search_models.py +8 -0
- kagglesdk/search/__init__.py +0 -0
- kagglesdk/search/services/__init__.py +0 -0
- kagglesdk/search/services/search_api_service.py +19 -0
- kagglesdk/search/types/__init__.py +0 -0
- kagglesdk/search/types/search_api_service.py +2435 -0
- kagglesdk/search/types/search_content_shared.py +50 -0
- kagglesdk/search/types/search_enums.py +45 -0
- kagglesdk/search/types/search_service.py +303 -0
- kagglesdk/security/__init__.py +0 -0
- kagglesdk/security/services/__init__.py +0 -0
- kagglesdk/security/services/iam_service.py +31 -0
- kagglesdk/security/services/oauth_service.py +58 -0
- kagglesdk/security/types/__init__.py +0 -0
- kagglesdk/security/types/authentication.py +171 -0
- kagglesdk/security/types/iam_service.py +496 -0
- kagglesdk/security/types/oauth_service.py +1181 -0
- kagglesdk/security/types/roles.py +8 -0
- kagglesdk/security/types/security_types.py +159 -0
- kagglesdk/test/__init__.py +0 -0
- kagglesdk/test/test_client.py +20 -24
- kagglesdk/users/services/__init__.py +0 -0
- kagglesdk/users/services/account_service.py +31 -0
- kagglesdk/users/services/group_api_service.py +31 -0
- kagglesdk/users/types/account_service.py +345 -0
- kagglesdk/users/types/group_api_service.py +315 -0
- kagglesdk/users/types/group_types.py +165 -0
- kagglesdk/users/types/groups_enum.py +8 -0
- kagglesdk/users/types/progression_service.py +9 -0
- kagglesdk/users/types/search_users.py +23 -0
- kagglesdk/users/types/user_avatar.py +226 -0
- kaggle/configuration.py +0 -206
- kaggle-1.7.4.2.dist-info/RECORD +0 -89
- {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/WHEEL +0 -0
- {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/entry_points.txt +0 -0
- {kaggle-1.7.4.2.dist-info → kaggle-1.8.0.dist-info}/licenses/LICENSE.txt +0 -0
- {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", "
|
|
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
|