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.
- kaggle/LICENSE +201 -0
- kaggle/__init__.py +6 -0
- kaggle/api/__init__.py +0 -0
- kaggle/api/kaggle_api.py +614 -0
- kaggle/api/kaggle_api_extended.py +4657 -0
- kaggle/cli.py +1606 -0
- kaggle/configuration.py +206 -0
- kaggle/models/__init__.py +0 -0
- kaggle/models/api_blob_type.py +4 -0
- kaggle/models/dataset_column.py +228 -0
- kaggle/models/dataset_new_request.py +385 -0
- kaggle/models/dataset_new_version_request.py +287 -0
- kaggle/models/dataset_update_settings_request.py +310 -0
- kaggle/models/kaggle_models_extended.py +276 -0
- kaggle/models/kernel_push_request.py +556 -0
- kaggle/models/model_instance_new_version_request.py +145 -0
- kaggle/models/model_instance_update_request.py +351 -0
- kaggle/models/model_new_instance_request.py +417 -0
- kaggle/models/model_new_request.py +314 -0
- kaggle/models/model_update_request.py +282 -0
- kaggle/models/start_blob_upload_request.py +232 -0
- kaggle/models/start_blob_upload_response.py +137 -0
- kaggle/models/upload_file.py +169 -0
- kaggle/test/__init__.py +0 -0
- kaggle/test/test_authenticate.py +43 -0
- kaggle-1.7.3b1.dist-info/METADATA +348 -0
- kaggle-1.7.3b1.dist-info/RECORD +89 -0
- kaggle-1.7.3b1.dist-info/WHEEL +4 -0
- kaggle-1.7.3b1.dist-info/entry_points.txt +2 -0
- kaggle-1.7.3b1.dist-info/licenses/LICENSE.txt +201 -0
- kagglesdk/LICENSE +201 -0
- kagglesdk/__init__.py +2 -0
- kagglesdk/admin/__init__.py +0 -0
- kagglesdk/admin/services/__init__.py +0 -0
- kagglesdk/admin/services/inbox_file_service.py +22 -0
- kagglesdk/admin/types/__init__.py +0 -0
- kagglesdk/admin/types/inbox_file_service.py +74 -0
- kagglesdk/blobs/__init__.py +0 -0
- kagglesdk/blobs/services/__init__.py +0 -0
- kagglesdk/blobs/services/blob_api_service.py +25 -0
- kagglesdk/blobs/types/__init__.py +0 -0
- kagglesdk/blobs/types/blob_api_service.py +177 -0
- kagglesdk/common/__init__.py +0 -0
- kagglesdk/common/types/__init__.py +0 -0
- kagglesdk/common/types/file_download.py +102 -0
- kagglesdk/common/types/http_redirect.py +105 -0
- kagglesdk/competitions/__init__.py +0 -0
- kagglesdk/competitions/services/__init__.py +0 -0
- kagglesdk/competitions/services/competition_api_service.py +129 -0
- kagglesdk/competitions/types/__init__.py +0 -0
- kagglesdk/competitions/types/competition_api_service.py +1874 -0
- kagglesdk/competitions/types/competition_enums.py +53 -0
- kagglesdk/competitions/types/submission_status.py +9 -0
- kagglesdk/datasets/__init__.py +0 -0
- kagglesdk/datasets/services/__init__.py +0 -0
- kagglesdk/datasets/services/dataset_api_service.py +170 -0
- kagglesdk/datasets/types/__init__.py +0 -0
- kagglesdk/datasets/types/dataset_api_service.py +2777 -0
- kagglesdk/datasets/types/dataset_enums.py +82 -0
- kagglesdk/datasets/types/dataset_types.py +646 -0
- kagglesdk/education/__init__.py +0 -0
- kagglesdk/education/services/__init__.py +0 -0
- kagglesdk/education/services/education_api_service.py +19 -0
- kagglesdk/education/types/__init__.py +0 -0
- kagglesdk/education/types/education_api_service.py +248 -0
- kagglesdk/education/types/education_service.py +139 -0
- kagglesdk/kaggle_client.py +66 -0
- kagglesdk/kaggle_env.py +42 -0
- kagglesdk/kaggle_http_client.py +316 -0
- kagglesdk/kaggle_object.py +293 -0
- kagglesdk/kernels/__init__.py +0 -0
- kagglesdk/kernels/services/__init__.py +0 -0
- kagglesdk/kernels/services/kernels_api_service.py +109 -0
- kagglesdk/kernels/types/__init__.py +0 -0
- kagglesdk/kernels/types/kernels_api_service.py +1951 -0
- kagglesdk/kernels/types/kernels_enums.py +33 -0
- kagglesdk/models/__init__.py +0 -0
- kagglesdk/models/services/__init__.py +0 -0
- kagglesdk/models/services/model_api_service.py +255 -0
- kagglesdk/models/services/model_service.py +19 -0
- kagglesdk/models/types/__init__.py +0 -0
- kagglesdk/models/types/model_api_service.py +3719 -0
- kagglesdk/models/types/model_enums.py +60 -0
- kagglesdk/models/types/model_service.py +275 -0
- kagglesdk/models/types/model_types.py +286 -0
- kagglesdk/test/test_client.py +45 -0
- kagglesdk/users/__init__.py +0 -0
- kagglesdk/users/types/__init__.py +0 -0
- kagglesdk/users/types/users_enums.py +22 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import enum
|
|
2
|
+
|
|
3
|
+
class GatingAgreementRequestsExpiryStatus(enum.Enum):
|
|
4
|
+
GATING_AGREEMENT_REQUESTS_EXPIRY_STATUS_UNSPECIFIED = 0
|
|
5
|
+
GATING_AGREEMENT_REQUESTS_EXPIRY_STATUS_NOT_EXPIRED = 1
|
|
6
|
+
GATING_AGREEMENT_REQUESTS_EXPIRY_STATUS_IS_EXPIRED = 2
|
|
7
|
+
|
|
8
|
+
class GatingAgreementRequestsReviewStatus(enum.Enum):
|
|
9
|
+
GATING_AGREEMENT_REQUESTS_REVIEW_STATUS_UNSPECIFIED = 0
|
|
10
|
+
GATING_AGREEMENT_REQUESTS_REVIEW_STATUS_PENDING = 1
|
|
11
|
+
GATING_AGREEMENT_REQUESTS_REVIEW_STATUS_ACCEPTED = 2
|
|
12
|
+
GATING_AGREEMENT_REQUESTS_REVIEW_STATUS_REJECTED = 3
|
|
13
|
+
|
|
14
|
+
class ListModelsOrderBy(enum.Enum):
|
|
15
|
+
LIST_MODELS_ORDER_BY_UNSPECIFIED = 0
|
|
16
|
+
LIST_MODELS_ORDER_BY_HOTNESS = 1
|
|
17
|
+
LIST_MODELS_ORDER_BY_DOWNLOAD_COUNT = 2
|
|
18
|
+
LIST_MODELS_ORDER_BY_VOTE_COUNT = 3
|
|
19
|
+
LIST_MODELS_ORDER_BY_NOTEBOOK_COUNT = 4
|
|
20
|
+
LIST_MODELS_ORDER_BY_PUBLISH_TIME = 5
|
|
21
|
+
LIST_MODELS_ORDER_BY_CREATE_TIME = 6
|
|
22
|
+
LIST_MODELS_ORDER_BY_UPDATE_TIME = 7
|
|
23
|
+
LIST_MODELS_ORDER_BY_VIEW_TIME_DESC = 8
|
|
24
|
+
|
|
25
|
+
class ModelFramework(enum.Enum):
|
|
26
|
+
MODEL_FRAMEWORK_UNSPECIFIED = 0
|
|
27
|
+
MODEL_FRAMEWORK_TENSOR_FLOW_1 = 1
|
|
28
|
+
MODEL_FRAMEWORK_TENSOR_FLOW_2 = 2
|
|
29
|
+
MODEL_FRAMEWORK_TF_LITE = 3
|
|
30
|
+
MODEL_FRAMEWORK_TF_JS = 4
|
|
31
|
+
MODEL_FRAMEWORK_PY_TORCH = 5
|
|
32
|
+
MODEL_FRAMEWORK_JAX = 6
|
|
33
|
+
MODEL_FRAMEWORK_FLAX = 14
|
|
34
|
+
MODEL_FRAMEWORK_PAX = 15
|
|
35
|
+
MODEL_FRAMEWORK_MAX_TEXT = 17
|
|
36
|
+
MODEL_FRAMEWORK_GEMMA_CPP = 18
|
|
37
|
+
MODEL_FRAMEWORK_GGML = 19
|
|
38
|
+
MODEL_FRAMEWORK_GGUF = 21
|
|
39
|
+
MODEL_FRAMEWORK_CORAL = 7
|
|
40
|
+
MODEL_FRAMEWORK_SCIKIT_LEARN = 8
|
|
41
|
+
MODEL_FRAMEWORK_MXNET = 9
|
|
42
|
+
MODEL_FRAMEWORK_ONNX = 10
|
|
43
|
+
MODEL_FRAMEWORK_KERAS = 11
|
|
44
|
+
MODEL_FRAMEWORK_TRANSFORMERS = 16
|
|
45
|
+
MODEL_FRAMEWORK_API = 12
|
|
46
|
+
MODEL_FRAMEWORK_OTHER = 13
|
|
47
|
+
MODEL_FRAMEWORK_TENSOR_RT_LLM = 20
|
|
48
|
+
MODEL_FRAMEWORK_TRITON = 22
|
|
49
|
+
|
|
50
|
+
class ModelInstanceType(enum.Enum):
|
|
51
|
+
MODEL_INSTANCE_TYPE_UNSPECIFIED = 0
|
|
52
|
+
MODEL_INSTANCE_TYPE_BASE_MODEL = 1
|
|
53
|
+
MODEL_INSTANCE_TYPE_KAGGLE_VARIANT = 2
|
|
54
|
+
MODEL_INSTANCE_TYPE_EXTERNAL_VARIANT = 3
|
|
55
|
+
|
|
56
|
+
class ModelVersionLinkType(enum.Enum):
|
|
57
|
+
MODEL_VERSION_LINK_TYPE_UNSPECIFIED = 0
|
|
58
|
+
MODEL_VERSION_LINK_TYPE_VERTEX_OPEN = 1
|
|
59
|
+
MODEL_VERSION_LINK_TYPE_VERTEX_DEPLOY = 2
|
|
60
|
+
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from kagglesdk.kaggle_object import *
|
|
3
|
+
from kagglesdk.models.types.model_enums import ModelFramework
|
|
4
|
+
from typing import Optional, List
|
|
5
|
+
|
|
6
|
+
class GetModelMetricsRequest(KaggleObject):
|
|
7
|
+
r"""
|
|
8
|
+
Attributes:
|
|
9
|
+
owner_slug (str)
|
|
10
|
+
model_slug (str)
|
|
11
|
+
start_time (datetime)
|
|
12
|
+
Optional start time for the time series. A year ago by default.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
def __init__(self):
|
|
16
|
+
self._owner_slug = ""
|
|
17
|
+
self._model_slug = ""
|
|
18
|
+
self._start_time = None
|
|
19
|
+
self._freeze()
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def owner_slug(self) -> str:
|
|
23
|
+
return self._owner_slug
|
|
24
|
+
|
|
25
|
+
@owner_slug.setter
|
|
26
|
+
def owner_slug(self, owner_slug: str):
|
|
27
|
+
if owner_slug is None:
|
|
28
|
+
del self.owner_slug
|
|
29
|
+
return
|
|
30
|
+
if not isinstance(owner_slug, str):
|
|
31
|
+
raise TypeError('owner_slug must be of type str')
|
|
32
|
+
self._owner_slug = owner_slug
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def model_slug(self) -> str:
|
|
36
|
+
return self._model_slug
|
|
37
|
+
|
|
38
|
+
@model_slug.setter
|
|
39
|
+
def model_slug(self, model_slug: str):
|
|
40
|
+
if model_slug is None:
|
|
41
|
+
del self.model_slug
|
|
42
|
+
return
|
|
43
|
+
if not isinstance(model_slug, str):
|
|
44
|
+
raise TypeError('model_slug must be of type str')
|
|
45
|
+
self._model_slug = model_slug
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def start_time(self) -> datetime:
|
|
49
|
+
"""Optional start time for the time series. A year ago by default."""
|
|
50
|
+
return self._start_time or None
|
|
51
|
+
|
|
52
|
+
@start_time.setter
|
|
53
|
+
def start_time(self, start_time: datetime):
|
|
54
|
+
if start_time is None:
|
|
55
|
+
del self.start_time
|
|
56
|
+
return
|
|
57
|
+
if not isinstance(start_time, datetime):
|
|
58
|
+
raise TypeError('start_time must be of type datetime')
|
|
59
|
+
self._start_time = start_time
|
|
60
|
+
|
|
61
|
+
def endpoint(self):
|
|
62
|
+
path = '/api/v1/models/{owner_slug}/{model_slug}/metrics'
|
|
63
|
+
return path.format_map(self.to_field_map(self))
|
|
64
|
+
|
|
65
|
+
@staticmethod
|
|
66
|
+
def endpoint_path():
|
|
67
|
+
return '/models/{owner_slug}/{model_slug}/metrics'
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class GetModelMetricsResponse(KaggleObject):
|
|
71
|
+
r"""
|
|
72
|
+
Attributes:
|
|
73
|
+
metrics (ModelMetric)
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
def __init__(self):
|
|
77
|
+
self._metrics = []
|
|
78
|
+
self._freeze()
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def metrics(self) -> Optional[List[Optional['ModelMetric']]]:
|
|
82
|
+
return self._metrics
|
|
83
|
+
|
|
84
|
+
@metrics.setter
|
|
85
|
+
def metrics(self, metrics: Optional[List[Optional['ModelMetric']]]):
|
|
86
|
+
if metrics is None:
|
|
87
|
+
del self.metrics
|
|
88
|
+
return
|
|
89
|
+
if not isinstance(metrics, list):
|
|
90
|
+
raise TypeError('metrics must be of type list')
|
|
91
|
+
if not all([isinstance(t, ModelMetric) for t in metrics]):
|
|
92
|
+
raise TypeError('metrics must contain only items of type ModelMetric')
|
|
93
|
+
self._metrics = metrics
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class ModelMetric(KaggleObject):
|
|
97
|
+
r"""
|
|
98
|
+
Attributes:
|
|
99
|
+
date (str)
|
|
100
|
+
views (int)
|
|
101
|
+
downloads (int)
|
|
102
|
+
notebooks (int)
|
|
103
|
+
instances (ModelInstanceMetric)
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
def __init__(self):
|
|
107
|
+
self._date = ""
|
|
108
|
+
self._views = 0
|
|
109
|
+
self._downloads = 0
|
|
110
|
+
self._notebooks = 0
|
|
111
|
+
self._instances = []
|
|
112
|
+
self._freeze()
|
|
113
|
+
|
|
114
|
+
@property
|
|
115
|
+
def date(self) -> str:
|
|
116
|
+
return self._date
|
|
117
|
+
|
|
118
|
+
@date.setter
|
|
119
|
+
def date(self, date: str):
|
|
120
|
+
if date is None:
|
|
121
|
+
del self.date
|
|
122
|
+
return
|
|
123
|
+
if not isinstance(date, str):
|
|
124
|
+
raise TypeError('date must be of type str')
|
|
125
|
+
self._date = date
|
|
126
|
+
|
|
127
|
+
@property
|
|
128
|
+
def views(self) -> int:
|
|
129
|
+
return self._views
|
|
130
|
+
|
|
131
|
+
@views.setter
|
|
132
|
+
def views(self, views: int):
|
|
133
|
+
if views is None:
|
|
134
|
+
del self.views
|
|
135
|
+
return
|
|
136
|
+
if not isinstance(views, int):
|
|
137
|
+
raise TypeError('views must be of type int')
|
|
138
|
+
self._views = views
|
|
139
|
+
|
|
140
|
+
@property
|
|
141
|
+
def downloads(self) -> int:
|
|
142
|
+
return self._downloads
|
|
143
|
+
|
|
144
|
+
@downloads.setter
|
|
145
|
+
def downloads(self, downloads: int):
|
|
146
|
+
if downloads is None:
|
|
147
|
+
del self.downloads
|
|
148
|
+
return
|
|
149
|
+
if not isinstance(downloads, int):
|
|
150
|
+
raise TypeError('downloads must be of type int')
|
|
151
|
+
self._downloads = downloads
|
|
152
|
+
|
|
153
|
+
@property
|
|
154
|
+
def notebooks(self) -> int:
|
|
155
|
+
return self._notebooks
|
|
156
|
+
|
|
157
|
+
@notebooks.setter
|
|
158
|
+
def notebooks(self, notebooks: int):
|
|
159
|
+
if notebooks is None:
|
|
160
|
+
del self.notebooks
|
|
161
|
+
return
|
|
162
|
+
if not isinstance(notebooks, int):
|
|
163
|
+
raise TypeError('notebooks must be of type int')
|
|
164
|
+
self._notebooks = notebooks
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def instances(self) -> Optional[List[Optional['ModelInstanceMetric']]]:
|
|
168
|
+
return self._instances
|
|
169
|
+
|
|
170
|
+
@instances.setter
|
|
171
|
+
def instances(self, instances: Optional[List[Optional['ModelInstanceMetric']]]):
|
|
172
|
+
if instances is None:
|
|
173
|
+
del self.instances
|
|
174
|
+
return
|
|
175
|
+
if not isinstance(instances, list):
|
|
176
|
+
raise TypeError('instances must be of type list')
|
|
177
|
+
if not all([isinstance(t, ModelInstanceMetric) for t in instances]):
|
|
178
|
+
raise TypeError('instances must contain only items of type ModelInstanceMetric')
|
|
179
|
+
self._instances = instances
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class ModelInstanceMetric(KaggleObject):
|
|
183
|
+
r"""
|
|
184
|
+
Attributes:
|
|
185
|
+
variation (str)
|
|
186
|
+
framework (ModelFramework)
|
|
187
|
+
downloads (int)
|
|
188
|
+
notebooks (int)
|
|
189
|
+
"""
|
|
190
|
+
|
|
191
|
+
def __init__(self):
|
|
192
|
+
self._variation = ""
|
|
193
|
+
self._framework = ModelFramework.MODEL_FRAMEWORK_UNSPECIFIED
|
|
194
|
+
self._downloads = 0
|
|
195
|
+
self._notebooks = 0
|
|
196
|
+
self._freeze()
|
|
197
|
+
|
|
198
|
+
@property
|
|
199
|
+
def variation(self) -> str:
|
|
200
|
+
return self._variation
|
|
201
|
+
|
|
202
|
+
@variation.setter
|
|
203
|
+
def variation(self, variation: str):
|
|
204
|
+
if variation is None:
|
|
205
|
+
del self.variation
|
|
206
|
+
return
|
|
207
|
+
if not isinstance(variation, str):
|
|
208
|
+
raise TypeError('variation must be of type str')
|
|
209
|
+
self._variation = variation
|
|
210
|
+
|
|
211
|
+
@property
|
|
212
|
+
def framework(self) -> 'ModelFramework':
|
|
213
|
+
return self._framework
|
|
214
|
+
|
|
215
|
+
@framework.setter
|
|
216
|
+
def framework(self, framework: 'ModelFramework'):
|
|
217
|
+
if framework is None:
|
|
218
|
+
del self.framework
|
|
219
|
+
return
|
|
220
|
+
if not isinstance(framework, ModelFramework):
|
|
221
|
+
raise TypeError('framework must be of type ModelFramework')
|
|
222
|
+
self._framework = framework
|
|
223
|
+
|
|
224
|
+
@property
|
|
225
|
+
def downloads(self) -> int:
|
|
226
|
+
return self._downloads
|
|
227
|
+
|
|
228
|
+
@downloads.setter
|
|
229
|
+
def downloads(self, downloads: int):
|
|
230
|
+
if downloads is None:
|
|
231
|
+
del self.downloads
|
|
232
|
+
return
|
|
233
|
+
if not isinstance(downloads, int):
|
|
234
|
+
raise TypeError('downloads must be of type int')
|
|
235
|
+
self._downloads = downloads
|
|
236
|
+
|
|
237
|
+
@property
|
|
238
|
+
def notebooks(self) -> int:
|
|
239
|
+
return self._notebooks
|
|
240
|
+
|
|
241
|
+
@notebooks.setter
|
|
242
|
+
def notebooks(self, notebooks: int):
|
|
243
|
+
if notebooks is None:
|
|
244
|
+
del self.notebooks
|
|
245
|
+
return
|
|
246
|
+
if not isinstance(notebooks, int):
|
|
247
|
+
raise TypeError('notebooks must be of type int')
|
|
248
|
+
self._notebooks = notebooks
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
GetModelMetricsRequest._fields = [
|
|
252
|
+
FieldMetadata("ownerSlug", "owner_slug", "_owner_slug", str, "", PredefinedSerializer()),
|
|
253
|
+
FieldMetadata("modelSlug", "model_slug", "_model_slug", str, "", PredefinedSerializer()),
|
|
254
|
+
FieldMetadata("startTime", "start_time", "_start_time", datetime, None, DateTimeSerializer(), optional=True),
|
|
255
|
+
]
|
|
256
|
+
|
|
257
|
+
GetModelMetricsResponse._fields = [
|
|
258
|
+
FieldMetadata("metrics", "metrics", "_metrics", ModelMetric, [], ListSerializer(KaggleObjectSerializer())),
|
|
259
|
+
]
|
|
260
|
+
|
|
261
|
+
ModelMetric._fields = [
|
|
262
|
+
FieldMetadata("date", "date", "_date", str, "", PredefinedSerializer()),
|
|
263
|
+
FieldMetadata("views", "views", "_views", int, 0, PredefinedSerializer()),
|
|
264
|
+
FieldMetadata("downloads", "downloads", "_downloads", int, 0, PredefinedSerializer()),
|
|
265
|
+
FieldMetadata("notebooks", "notebooks", "_notebooks", int, 0, PredefinedSerializer()),
|
|
266
|
+
FieldMetadata("instances", "instances", "_instances", ModelInstanceMetric, [], ListSerializer(KaggleObjectSerializer())),
|
|
267
|
+
]
|
|
268
|
+
|
|
269
|
+
ModelInstanceMetric._fields = [
|
|
270
|
+
FieldMetadata("variation", "variation", "_variation", str, "", PredefinedSerializer()),
|
|
271
|
+
FieldMetadata("framework", "framework", "_framework", ModelFramework, ModelFramework.MODEL_FRAMEWORK_UNSPECIFIED, EnumSerializer()),
|
|
272
|
+
FieldMetadata("downloads", "downloads", "_downloads", int, 0, PredefinedSerializer()),
|
|
273
|
+
FieldMetadata("notebooks", "notebooks", "_notebooks", int, 0, PredefinedSerializer()),
|
|
274
|
+
]
|
|
275
|
+
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
from kagglesdk.kaggle_object import *
|
|
2
|
+
from kagglesdk.models.types.model_enums import ModelFramework, ModelVersionLinkType
|
|
3
|
+
from kagglesdk.users.types.users_enums import UserAchievementTier
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
class BaseModelInstanceInformation(KaggleObject):
|
|
7
|
+
r"""
|
|
8
|
+
Attributes:
|
|
9
|
+
id (int)
|
|
10
|
+
owner (Owner)
|
|
11
|
+
model_slug (str)
|
|
12
|
+
instance_slug (str)
|
|
13
|
+
framework (ModelFramework)
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
def __init__(self):
|
|
17
|
+
self._id = 0
|
|
18
|
+
self._owner = None
|
|
19
|
+
self._model_slug = ""
|
|
20
|
+
self._instance_slug = ""
|
|
21
|
+
self._framework = ModelFramework.MODEL_FRAMEWORK_UNSPECIFIED
|
|
22
|
+
self._freeze()
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def id(self) -> int:
|
|
26
|
+
return self._id
|
|
27
|
+
|
|
28
|
+
@id.setter
|
|
29
|
+
def id(self, id: int):
|
|
30
|
+
if id is None:
|
|
31
|
+
del self.id
|
|
32
|
+
return
|
|
33
|
+
if not isinstance(id, int):
|
|
34
|
+
raise TypeError('id must be of type int')
|
|
35
|
+
self._id = id
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def owner(self) -> Optional['Owner']:
|
|
39
|
+
return self._owner
|
|
40
|
+
|
|
41
|
+
@owner.setter
|
|
42
|
+
def owner(self, owner: Optional['Owner']):
|
|
43
|
+
if owner is None:
|
|
44
|
+
del self.owner
|
|
45
|
+
return
|
|
46
|
+
if not isinstance(owner, Owner):
|
|
47
|
+
raise TypeError('owner must be of type Owner')
|
|
48
|
+
self._owner = owner
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def model_slug(self) -> str:
|
|
52
|
+
return self._model_slug
|
|
53
|
+
|
|
54
|
+
@model_slug.setter
|
|
55
|
+
def model_slug(self, model_slug: str):
|
|
56
|
+
if model_slug is None:
|
|
57
|
+
del self.model_slug
|
|
58
|
+
return
|
|
59
|
+
if not isinstance(model_slug, str):
|
|
60
|
+
raise TypeError('model_slug must be of type str')
|
|
61
|
+
self._model_slug = model_slug
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def instance_slug(self) -> str:
|
|
65
|
+
return self._instance_slug
|
|
66
|
+
|
|
67
|
+
@instance_slug.setter
|
|
68
|
+
def instance_slug(self, instance_slug: str):
|
|
69
|
+
if instance_slug is None:
|
|
70
|
+
del self.instance_slug
|
|
71
|
+
return
|
|
72
|
+
if not isinstance(instance_slug, str):
|
|
73
|
+
raise TypeError('instance_slug must be of type str')
|
|
74
|
+
self._instance_slug = instance_slug
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def framework(self) -> 'ModelFramework':
|
|
78
|
+
return self._framework
|
|
79
|
+
|
|
80
|
+
@framework.setter
|
|
81
|
+
def framework(self, framework: 'ModelFramework'):
|
|
82
|
+
if framework is None:
|
|
83
|
+
del self.framework
|
|
84
|
+
return
|
|
85
|
+
if not isinstance(framework, ModelFramework):
|
|
86
|
+
raise TypeError('framework must be of type ModelFramework')
|
|
87
|
+
self._framework = framework
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class ModelLink(KaggleObject):
|
|
91
|
+
r"""
|
|
92
|
+
Attributes:
|
|
93
|
+
type (ModelVersionLinkType)
|
|
94
|
+
url (str)
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
def __init__(self):
|
|
98
|
+
self._type = ModelVersionLinkType.MODEL_VERSION_LINK_TYPE_UNSPECIFIED
|
|
99
|
+
self._url = ""
|
|
100
|
+
self._freeze()
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def type(self) -> 'ModelVersionLinkType':
|
|
104
|
+
return self._type
|
|
105
|
+
|
|
106
|
+
@type.setter
|
|
107
|
+
def type(self, type: 'ModelVersionLinkType'):
|
|
108
|
+
if type is None:
|
|
109
|
+
del self.type
|
|
110
|
+
return
|
|
111
|
+
if not isinstance(type, ModelVersionLinkType):
|
|
112
|
+
raise TypeError('type must be of type ModelVersionLinkType')
|
|
113
|
+
self._type = type
|
|
114
|
+
|
|
115
|
+
@property
|
|
116
|
+
def url(self) -> str:
|
|
117
|
+
return self._url
|
|
118
|
+
|
|
119
|
+
@url.setter
|
|
120
|
+
def url(self, url: str):
|
|
121
|
+
if url is None:
|
|
122
|
+
del self.url
|
|
123
|
+
return
|
|
124
|
+
if not isinstance(url, str):
|
|
125
|
+
raise TypeError('url must be of type str')
|
|
126
|
+
self._url = url
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class Owner(KaggleObject):
|
|
130
|
+
r"""
|
|
131
|
+
Based off Datasets OwnerDto as the permission model is the same
|
|
132
|
+
Separate message since Models don't have max_file_size_bytes.
|
|
133
|
+
Consider renaming more generically to apply to Users/Orgs
|
|
134
|
+
interchangeably without a strict concept of ownership
|
|
135
|
+
|
|
136
|
+
Attributes:
|
|
137
|
+
id (int)
|
|
138
|
+
image_url (str)
|
|
139
|
+
is_organization (bool)
|
|
140
|
+
name (str)
|
|
141
|
+
profile_url (str)
|
|
142
|
+
slug (str)
|
|
143
|
+
user_tier (UserAchievementTier)
|
|
144
|
+
allow_model_gating (bool)
|
|
145
|
+
"""
|
|
146
|
+
|
|
147
|
+
def __init__(self):
|
|
148
|
+
self._id = 0
|
|
149
|
+
self._image_url = None
|
|
150
|
+
self._is_organization = False
|
|
151
|
+
self._name = ""
|
|
152
|
+
self._profile_url = None
|
|
153
|
+
self._slug = ""
|
|
154
|
+
self._user_tier = UserAchievementTier.NOVICE
|
|
155
|
+
self._allow_model_gating = None
|
|
156
|
+
self._freeze()
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def id(self) -> int:
|
|
160
|
+
return self._id
|
|
161
|
+
|
|
162
|
+
@id.setter
|
|
163
|
+
def id(self, id: int):
|
|
164
|
+
if id is None:
|
|
165
|
+
del self.id
|
|
166
|
+
return
|
|
167
|
+
if not isinstance(id, int):
|
|
168
|
+
raise TypeError('id must be of type int')
|
|
169
|
+
self._id = id
|
|
170
|
+
|
|
171
|
+
@property
|
|
172
|
+
def image_url(self) -> str:
|
|
173
|
+
return self._image_url or ""
|
|
174
|
+
|
|
175
|
+
@image_url.setter
|
|
176
|
+
def image_url(self, image_url: str):
|
|
177
|
+
if image_url is None:
|
|
178
|
+
del self.image_url
|
|
179
|
+
return
|
|
180
|
+
if not isinstance(image_url, str):
|
|
181
|
+
raise TypeError('image_url must be of type str')
|
|
182
|
+
self._image_url = image_url
|
|
183
|
+
|
|
184
|
+
@property
|
|
185
|
+
def is_organization(self) -> bool:
|
|
186
|
+
return self._is_organization
|
|
187
|
+
|
|
188
|
+
@is_organization.setter
|
|
189
|
+
def is_organization(self, is_organization: bool):
|
|
190
|
+
if is_organization is None:
|
|
191
|
+
del self.is_organization
|
|
192
|
+
return
|
|
193
|
+
if not isinstance(is_organization, bool):
|
|
194
|
+
raise TypeError('is_organization must be of type bool')
|
|
195
|
+
self._is_organization = is_organization
|
|
196
|
+
|
|
197
|
+
@property
|
|
198
|
+
def name(self) -> str:
|
|
199
|
+
return self._name
|
|
200
|
+
|
|
201
|
+
@name.setter
|
|
202
|
+
def name(self, name: str):
|
|
203
|
+
if name is None:
|
|
204
|
+
del self.name
|
|
205
|
+
return
|
|
206
|
+
if not isinstance(name, str):
|
|
207
|
+
raise TypeError('name must be of type str')
|
|
208
|
+
self._name = name
|
|
209
|
+
|
|
210
|
+
@property
|
|
211
|
+
def profile_url(self) -> str:
|
|
212
|
+
return self._profile_url or ""
|
|
213
|
+
|
|
214
|
+
@profile_url.setter
|
|
215
|
+
def profile_url(self, profile_url: str):
|
|
216
|
+
if profile_url is None:
|
|
217
|
+
del self.profile_url
|
|
218
|
+
return
|
|
219
|
+
if not isinstance(profile_url, str):
|
|
220
|
+
raise TypeError('profile_url must be of type str')
|
|
221
|
+
self._profile_url = profile_url
|
|
222
|
+
|
|
223
|
+
@property
|
|
224
|
+
def slug(self) -> str:
|
|
225
|
+
return self._slug
|
|
226
|
+
|
|
227
|
+
@slug.setter
|
|
228
|
+
def slug(self, slug: str):
|
|
229
|
+
if slug is None:
|
|
230
|
+
del self.slug
|
|
231
|
+
return
|
|
232
|
+
if not isinstance(slug, str):
|
|
233
|
+
raise TypeError('slug must be of type str')
|
|
234
|
+
self._slug = slug
|
|
235
|
+
|
|
236
|
+
@property
|
|
237
|
+
def user_tier(self) -> 'UserAchievementTier':
|
|
238
|
+
return self._user_tier
|
|
239
|
+
|
|
240
|
+
@user_tier.setter
|
|
241
|
+
def user_tier(self, user_tier: 'UserAchievementTier'):
|
|
242
|
+
if user_tier is None:
|
|
243
|
+
del self.user_tier
|
|
244
|
+
return
|
|
245
|
+
if not isinstance(user_tier, UserAchievementTier):
|
|
246
|
+
raise TypeError('user_tier must be of type UserAchievementTier')
|
|
247
|
+
self._user_tier = user_tier
|
|
248
|
+
|
|
249
|
+
@property
|
|
250
|
+
def allow_model_gating(self) -> bool:
|
|
251
|
+
return self._allow_model_gating or False
|
|
252
|
+
|
|
253
|
+
@allow_model_gating.setter
|
|
254
|
+
def allow_model_gating(self, allow_model_gating: bool):
|
|
255
|
+
if allow_model_gating is None:
|
|
256
|
+
del self.allow_model_gating
|
|
257
|
+
return
|
|
258
|
+
if not isinstance(allow_model_gating, bool):
|
|
259
|
+
raise TypeError('allow_model_gating must be of type bool')
|
|
260
|
+
self._allow_model_gating = allow_model_gating
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
BaseModelInstanceInformation._fields = [
|
|
264
|
+
FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
|
|
265
|
+
FieldMetadata("owner", "owner", "_owner", Owner, None, KaggleObjectSerializer()),
|
|
266
|
+
FieldMetadata("modelSlug", "model_slug", "_model_slug", str, "", PredefinedSerializer()),
|
|
267
|
+
FieldMetadata("instanceSlug", "instance_slug", "_instance_slug", str, "", PredefinedSerializer()),
|
|
268
|
+
FieldMetadata("framework", "framework", "_framework", ModelFramework, ModelFramework.MODEL_FRAMEWORK_UNSPECIFIED, EnumSerializer()),
|
|
269
|
+
]
|
|
270
|
+
|
|
271
|
+
ModelLink._fields = [
|
|
272
|
+
FieldMetadata("type", "type", "_type", ModelVersionLinkType, ModelVersionLinkType.MODEL_VERSION_LINK_TYPE_UNSPECIFIED, EnumSerializer()),
|
|
273
|
+
FieldMetadata("url", "url", "_url", str, "", PredefinedSerializer()),
|
|
274
|
+
]
|
|
275
|
+
|
|
276
|
+
Owner._fields = [
|
|
277
|
+
FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
|
|
278
|
+
FieldMetadata("imageUrl", "image_url", "_image_url", str, None, PredefinedSerializer(), optional=True),
|
|
279
|
+
FieldMetadata("isOrganization", "is_organization", "_is_organization", bool, False, PredefinedSerializer()),
|
|
280
|
+
FieldMetadata("name", "name", "_name", str, "", PredefinedSerializer()),
|
|
281
|
+
FieldMetadata("profileUrl", "profile_url", "_profile_url", str, None, PredefinedSerializer(), optional=True),
|
|
282
|
+
FieldMetadata("slug", "slug", "_slug", str, "", PredefinedSerializer()),
|
|
283
|
+
FieldMetadata("userTier", "user_tier", "_user_tier", UserAchievementTier, UserAchievementTier.NOVICE, EnumSerializer()),
|
|
284
|
+
FieldMetadata("allowModelGating", "allow_model_gating", "_allow_model_gating", bool, None, PredefinedSerializer(), optional=True),
|
|
285
|
+
]
|
|
286
|
+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from kagglesdk import kaggle_env
|
|
2
|
+
from kagglesdk import KaggleClient, KaggleEnv
|
|
3
|
+
|
|
4
|
+
# python -m unittest tests.test_authenticate
|
|
5
|
+
|
|
6
|
+
import os
|
|
7
|
+
import unittest
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class TestClient(unittest.TestCase):
|
|
11
|
+
|
|
12
|
+
def setUp(self):
|
|
13
|
+
print("setup class:%s" % self)
|
|
14
|
+
|
|
15
|
+
def tearDown(self):
|
|
16
|
+
print("teardown class:TestStuff")
|
|
17
|
+
|
|
18
|
+
# Environment
|
|
19
|
+
|
|
20
|
+
def test_kaggle_environment(self):
|
|
21
|
+
os.environ['KAGGLE_API_ENVIRONMENT'] = 'PROD'
|
|
22
|
+
|
|
23
|
+
env = kaggle_env.get_env()
|
|
24
|
+
self.assertEqual(env, KaggleEnv.PROD)
|
|
25
|
+
|
|
26
|
+
endpoint = kaggle_env.get_endpoint(env)
|
|
27
|
+
self.assertEqual(endpoint, 'https://www.kaggle.com')
|
|
28
|
+
|
|
29
|
+
# Client
|
|
30
|
+
|
|
31
|
+
def test_kaggle_client(self):
|
|
32
|
+
client = KaggleClient(
|
|
33
|
+
env=KaggleEnv.PROD,
|
|
34
|
+
verbose=False,
|
|
35
|
+
username='dinosaur',
|
|
36
|
+
password='xxxxxxxxxxxx')
|
|
37
|
+
|
|
38
|
+
self.assertEqual(client.username, 'dinosaur')
|
|
39
|
+
self.assertEqual(client.password, 'xxxxxxxxxxxx')
|
|
40
|
+
self.assertEqual(client.http_client()._endpoint, 'https://www.kaggle.com')
|
|
41
|
+
self.assertEqual(client.http_client()._verbose, False)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
if __name__ == '__main__':
|
|
45
|
+
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import enum
|
|
2
|
+
|
|
3
|
+
class UserAchievementTier(enum.Enum):
|
|
4
|
+
NOVICE = 0
|
|
5
|
+
CONTRIBUTOR = 1
|
|
6
|
+
EXPERT = 2
|
|
7
|
+
MASTER = 3
|
|
8
|
+
GRANDMASTER = 4
|
|
9
|
+
STAFF = 5
|
|
10
|
+
"""Kaggle admins"""
|
|
11
|
+
ORGANIZATION = 11
|
|
12
|
+
"""Organizations"""
|
|
13
|
+
RECALC = 21
|
|
14
|
+
"""Flag user for tier recalculation"""
|
|
15
|
+
|
|
16
|
+
class CollaboratorType(enum.Enum):
|
|
17
|
+
COLLABORATOR_TYPE_UNSPECIFIED = 0
|
|
18
|
+
READER = 1
|
|
19
|
+
WRITER = 2
|
|
20
|
+
OWNER = 3
|
|
21
|
+
ADMIN = 4
|
|
22
|
+
|