kaggle 1.7.4.5__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 -598
- kaggle/api/kaggle_api_extended.py +5251 -4769
- kaggle/cli.py +1335 -1585
- kaggle/models/api_blob_type.py +3 -3
- kaggle/models/dataset_column.py +165 -174
- kaggle/models/dataset_new_request.py +83 -41
- kaggle/models/dataset_new_version_request.py +32 -25
- kaggle/models/dataset_update_settings_request.py +35 -27
- kaggle/models/kaggle_models_extended.py +169 -172
- kaggle/models/kernel_push_request.py +66 -49
- kaggle/models/model_instance_new_version_request.py +10 -18
- kaggle/models/model_instance_update_request.py +103 -34
- kaggle/models/model_new_instance_request.py +138 -41
- kaggle/models/model_new_request.py +35 -27
- kaggle/models/model_update_request.py +32 -25
- kaggle/models/start_blob_upload_request.py +192 -195
- kaggle/models/start_blob_upload_response.py +98 -98
- kaggle/models/upload_file.py +114 -120
- kaggle/test/test_authenticate.py +23 -23
- {kaggle-1.7.4.5.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 +554 -300
- 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 +46 -23
- kagglesdk/kaggle_creds.py +148 -0
- kagglesdk/kaggle_env.py +89 -25
- kagglesdk/kaggle_http_client.py +216 -306
- kagglesdk/kaggle_oauth.py +200 -0
- kagglesdk/kaggle_object.py +286 -293
- kagglesdk/kernels/services/kernels_api_service.py +46 -9
- kagglesdk/kernels/types/kernels_api_service.py +635 -159
- 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 +41 -17
- kagglesdk/models/types/model_api_service.py +987 -637
- 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/services/iam_service.py +31 -0
- kagglesdk/security/services/oauth_service.py +27 -1
- kagglesdk/security/types/authentication.py +63 -63
- kagglesdk/security/types/iam_service.py +496 -0
- kagglesdk/security/types/oauth_service.py +797 -10
- 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 -22
- kagglesdk/users/services/account_service.py +13 -1
- kagglesdk/users/services/group_api_service.py +31 -0
- kagglesdk/users/types/account_service.py +169 -28
- 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.5.dist-info/RECORD +0 -98
- {kaggle-1.7.4.5.dist-info → kaggle-1.8.0.dist-info}/WHEEL +0 -0
- {kaggle-1.7.4.5.dist-info → kaggle-1.8.0.dist-info}/entry_points.txt +0 -0
- {kaggle-1.7.4.5.dist-info → kaggle-1.8.0.dist-info}/licenses/LICENSE.txt +0 -0
- {kaggle/test → kagglesdk/benchmarks}/__init__.py +0 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
from kagglesdk.kaggle_object import *
|
|
2
|
+
from typing import Optional, List
|
|
3
|
+
|
|
4
|
+
class ApiGroupMembership(KaggleObject):
|
|
5
|
+
r"""
|
|
6
|
+
Attributes:
|
|
7
|
+
user_id (int)
|
|
8
|
+
username (str)
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
def __init__(self):
|
|
12
|
+
self._user_id = 0
|
|
13
|
+
self._username = ""
|
|
14
|
+
self._freeze()
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def user_id(self) -> int:
|
|
18
|
+
return self._user_id
|
|
19
|
+
|
|
20
|
+
@user_id.setter
|
|
21
|
+
def user_id(self, user_id: int):
|
|
22
|
+
if user_id is None:
|
|
23
|
+
del self.user_id
|
|
24
|
+
return
|
|
25
|
+
if not isinstance(user_id, int):
|
|
26
|
+
raise TypeError('user_id must be of type int')
|
|
27
|
+
self._user_id = user_id
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def username(self) -> str:
|
|
31
|
+
return self._username
|
|
32
|
+
|
|
33
|
+
@username.setter
|
|
34
|
+
def username(self, username: str):
|
|
35
|
+
if username is None:
|
|
36
|
+
del self.username
|
|
37
|
+
return
|
|
38
|
+
if not isinstance(username, str):
|
|
39
|
+
raise TypeError('username must be of type str')
|
|
40
|
+
self._username = username
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class ApiListSynchronizedGroupMembershipsRequest(KaggleObject):
|
|
44
|
+
r"""
|
|
45
|
+
Attributes:
|
|
46
|
+
page_size (int)
|
|
47
|
+
page_token (str)
|
|
48
|
+
skip (int)
|
|
49
|
+
group_slug (str)
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
def __init__(self):
|
|
53
|
+
self._page_size = 0
|
|
54
|
+
self._page_token = None
|
|
55
|
+
self._skip = None
|
|
56
|
+
self._group_slug = ""
|
|
57
|
+
self._freeze()
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def page_size(self) -> int:
|
|
61
|
+
return self._page_size
|
|
62
|
+
|
|
63
|
+
@page_size.setter
|
|
64
|
+
def page_size(self, page_size: int):
|
|
65
|
+
if page_size is None:
|
|
66
|
+
del self.page_size
|
|
67
|
+
return
|
|
68
|
+
if not isinstance(page_size, int):
|
|
69
|
+
raise TypeError('page_size must be of type int')
|
|
70
|
+
self._page_size = page_size
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def page_token(self) -> str:
|
|
74
|
+
return self._page_token or ""
|
|
75
|
+
|
|
76
|
+
@page_token.setter
|
|
77
|
+
def page_token(self, page_token: Optional[str]):
|
|
78
|
+
if page_token is None:
|
|
79
|
+
del self.page_token
|
|
80
|
+
return
|
|
81
|
+
if not isinstance(page_token, str):
|
|
82
|
+
raise TypeError('page_token must be of type str')
|
|
83
|
+
self._page_token = page_token
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def skip(self) -> int:
|
|
87
|
+
return self._skip or 0
|
|
88
|
+
|
|
89
|
+
@skip.setter
|
|
90
|
+
def skip(self, skip: Optional[int]):
|
|
91
|
+
if skip is None:
|
|
92
|
+
del self.skip
|
|
93
|
+
return
|
|
94
|
+
if not isinstance(skip, int):
|
|
95
|
+
raise TypeError('skip must be of type int')
|
|
96
|
+
self._skip = skip
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def group_slug(self) -> str:
|
|
100
|
+
return self._group_slug
|
|
101
|
+
|
|
102
|
+
@group_slug.setter
|
|
103
|
+
def group_slug(self, group_slug: str):
|
|
104
|
+
if group_slug is None:
|
|
105
|
+
del self.group_slug
|
|
106
|
+
return
|
|
107
|
+
if not isinstance(group_slug, str):
|
|
108
|
+
raise TypeError('group_slug must be of type str')
|
|
109
|
+
self._group_slug = group_slug
|
|
110
|
+
|
|
111
|
+
def endpoint(self):
|
|
112
|
+
path = '/api/v1/sync_groups/{group_slug}/members'
|
|
113
|
+
return path.format_map(self.to_field_map(self))
|
|
114
|
+
|
|
115
|
+
@staticmethod
|
|
116
|
+
def endpoint_path():
|
|
117
|
+
return '/api/v1/sync_groups/{group_slug}/members'
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class ApiListSynchronizedGroupMembershipsResponse(KaggleObject):
|
|
121
|
+
r"""
|
|
122
|
+
Attributes:
|
|
123
|
+
memberships (ApiGroupMembership)
|
|
124
|
+
next_page_token (str)
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
def __init__(self):
|
|
128
|
+
self._memberships = []
|
|
129
|
+
self._next_page_token = ""
|
|
130
|
+
self._freeze()
|
|
131
|
+
|
|
132
|
+
@property
|
|
133
|
+
def memberships(self) -> Optional[List[Optional['ApiGroupMembership']]]:
|
|
134
|
+
return self._memberships
|
|
135
|
+
|
|
136
|
+
@memberships.setter
|
|
137
|
+
def memberships(self, memberships: Optional[List[Optional['ApiGroupMembership']]]):
|
|
138
|
+
if memberships is None:
|
|
139
|
+
del self.memberships
|
|
140
|
+
return
|
|
141
|
+
if not isinstance(memberships, list):
|
|
142
|
+
raise TypeError('memberships must be of type list')
|
|
143
|
+
if not all([isinstance(t, ApiGroupMembership) for t in memberships]):
|
|
144
|
+
raise TypeError('memberships must contain only items of type ApiGroupMembership')
|
|
145
|
+
self._memberships = memberships
|
|
146
|
+
|
|
147
|
+
@property
|
|
148
|
+
def next_page_token(self) -> str:
|
|
149
|
+
return self._next_page_token
|
|
150
|
+
|
|
151
|
+
@next_page_token.setter
|
|
152
|
+
def next_page_token(self, next_page_token: str):
|
|
153
|
+
if next_page_token is None:
|
|
154
|
+
del self.next_page_token
|
|
155
|
+
return
|
|
156
|
+
if not isinstance(next_page_token, str):
|
|
157
|
+
raise TypeError('next_page_token must be of type str')
|
|
158
|
+
self._next_page_token = next_page_token
|
|
159
|
+
|
|
160
|
+
@property
|
|
161
|
+
def nextPageToken(self):
|
|
162
|
+
return self.next_page_token
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class ApiListUserManagedGroupMembershipsRequest(KaggleObject):
|
|
166
|
+
r"""
|
|
167
|
+
Attributes:
|
|
168
|
+
page_size (int)
|
|
169
|
+
page_token (str)
|
|
170
|
+
skip (int)
|
|
171
|
+
group_slug (str)
|
|
172
|
+
"""
|
|
173
|
+
|
|
174
|
+
def __init__(self):
|
|
175
|
+
self._page_size = 0
|
|
176
|
+
self._page_token = None
|
|
177
|
+
self._skip = None
|
|
178
|
+
self._group_slug = ""
|
|
179
|
+
self._freeze()
|
|
180
|
+
|
|
181
|
+
@property
|
|
182
|
+
def page_size(self) -> int:
|
|
183
|
+
return self._page_size
|
|
184
|
+
|
|
185
|
+
@page_size.setter
|
|
186
|
+
def page_size(self, page_size: int):
|
|
187
|
+
if page_size is None:
|
|
188
|
+
del self.page_size
|
|
189
|
+
return
|
|
190
|
+
if not isinstance(page_size, int):
|
|
191
|
+
raise TypeError('page_size must be of type int')
|
|
192
|
+
self._page_size = page_size
|
|
193
|
+
|
|
194
|
+
@property
|
|
195
|
+
def page_token(self) -> str:
|
|
196
|
+
return self._page_token or ""
|
|
197
|
+
|
|
198
|
+
@page_token.setter
|
|
199
|
+
def page_token(self, page_token: Optional[str]):
|
|
200
|
+
if page_token is None:
|
|
201
|
+
del self.page_token
|
|
202
|
+
return
|
|
203
|
+
if not isinstance(page_token, str):
|
|
204
|
+
raise TypeError('page_token must be of type str')
|
|
205
|
+
self._page_token = page_token
|
|
206
|
+
|
|
207
|
+
@property
|
|
208
|
+
def skip(self) -> int:
|
|
209
|
+
return self._skip or 0
|
|
210
|
+
|
|
211
|
+
@skip.setter
|
|
212
|
+
def skip(self, skip: Optional[int]):
|
|
213
|
+
if skip is None:
|
|
214
|
+
del self.skip
|
|
215
|
+
return
|
|
216
|
+
if not isinstance(skip, int):
|
|
217
|
+
raise TypeError('skip must be of type int')
|
|
218
|
+
self._skip = skip
|
|
219
|
+
|
|
220
|
+
@property
|
|
221
|
+
def group_slug(self) -> str:
|
|
222
|
+
return self._group_slug
|
|
223
|
+
|
|
224
|
+
@group_slug.setter
|
|
225
|
+
def group_slug(self, group_slug: str):
|
|
226
|
+
if group_slug is None:
|
|
227
|
+
del self.group_slug
|
|
228
|
+
return
|
|
229
|
+
if not isinstance(group_slug, str):
|
|
230
|
+
raise TypeError('group_slug must be of type str')
|
|
231
|
+
self._group_slug = group_slug
|
|
232
|
+
|
|
233
|
+
def endpoint(self):
|
|
234
|
+
path = '/api/v1/groups/{group_slug}/members'
|
|
235
|
+
return path.format_map(self.to_field_map(self))
|
|
236
|
+
|
|
237
|
+
@staticmethod
|
|
238
|
+
def endpoint_path():
|
|
239
|
+
return '/api/v1/groups/{group_slug}/members'
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
class ApiListUserManagedGroupMembershipsResponse(KaggleObject):
|
|
243
|
+
r"""
|
|
244
|
+
Attributes:
|
|
245
|
+
memberships (ApiGroupMembership)
|
|
246
|
+
next_page_token (str)
|
|
247
|
+
"""
|
|
248
|
+
|
|
249
|
+
def __init__(self):
|
|
250
|
+
self._memberships = []
|
|
251
|
+
self._next_page_token = ""
|
|
252
|
+
self._freeze()
|
|
253
|
+
|
|
254
|
+
@property
|
|
255
|
+
def memberships(self) -> Optional[List[Optional['ApiGroupMembership']]]:
|
|
256
|
+
return self._memberships
|
|
257
|
+
|
|
258
|
+
@memberships.setter
|
|
259
|
+
def memberships(self, memberships: Optional[List[Optional['ApiGroupMembership']]]):
|
|
260
|
+
if memberships is None:
|
|
261
|
+
del self.memberships
|
|
262
|
+
return
|
|
263
|
+
if not isinstance(memberships, list):
|
|
264
|
+
raise TypeError('memberships must be of type list')
|
|
265
|
+
if not all([isinstance(t, ApiGroupMembership) for t in memberships]):
|
|
266
|
+
raise TypeError('memberships must contain only items of type ApiGroupMembership')
|
|
267
|
+
self._memberships = memberships
|
|
268
|
+
|
|
269
|
+
@property
|
|
270
|
+
def next_page_token(self) -> str:
|
|
271
|
+
return self._next_page_token
|
|
272
|
+
|
|
273
|
+
@next_page_token.setter
|
|
274
|
+
def next_page_token(self, next_page_token: str):
|
|
275
|
+
if next_page_token is None:
|
|
276
|
+
del self.next_page_token
|
|
277
|
+
return
|
|
278
|
+
if not isinstance(next_page_token, str):
|
|
279
|
+
raise TypeError('next_page_token must be of type str')
|
|
280
|
+
self._next_page_token = next_page_token
|
|
281
|
+
|
|
282
|
+
@property
|
|
283
|
+
def nextPageToken(self):
|
|
284
|
+
return self.next_page_token
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
ApiGroupMembership._fields = [
|
|
288
|
+
FieldMetadata("userId", "user_id", "_user_id", int, 0, PredefinedSerializer()),
|
|
289
|
+
FieldMetadata("username", "username", "_username", str, "", PredefinedSerializer()),
|
|
290
|
+
]
|
|
291
|
+
|
|
292
|
+
ApiListSynchronizedGroupMembershipsRequest._fields = [
|
|
293
|
+
FieldMetadata("pageSize", "page_size", "_page_size", int, 0, PredefinedSerializer()),
|
|
294
|
+
FieldMetadata("pageToken", "page_token", "_page_token", str, None, PredefinedSerializer(), optional=True),
|
|
295
|
+
FieldMetadata("skip", "skip", "_skip", int, None, PredefinedSerializer(), optional=True),
|
|
296
|
+
FieldMetadata("groupSlug", "group_slug", "_group_slug", str, "", PredefinedSerializer()),
|
|
297
|
+
]
|
|
298
|
+
|
|
299
|
+
ApiListSynchronizedGroupMembershipsResponse._fields = [
|
|
300
|
+
FieldMetadata("memberships", "memberships", "_memberships", ApiGroupMembership, [], ListSerializer(KaggleObjectSerializer())),
|
|
301
|
+
FieldMetadata("nextPageToken", "next_page_token", "_next_page_token", str, "", PredefinedSerializer()),
|
|
302
|
+
]
|
|
303
|
+
|
|
304
|
+
ApiListUserManagedGroupMembershipsRequest._fields = [
|
|
305
|
+
FieldMetadata("pageSize", "page_size", "_page_size", int, 0, PredefinedSerializer()),
|
|
306
|
+
FieldMetadata("pageToken", "page_token", "_page_token", str, None, PredefinedSerializer(), optional=True),
|
|
307
|
+
FieldMetadata("skip", "skip", "_skip", int, None, PredefinedSerializer(), optional=True),
|
|
308
|
+
FieldMetadata("groupSlug", "group_slug", "_group_slug", str, "", PredefinedSerializer()),
|
|
309
|
+
]
|
|
310
|
+
|
|
311
|
+
ApiListUserManagedGroupMembershipsResponse._fields = [
|
|
312
|
+
FieldMetadata("memberships", "memberships", "_memberships", ApiGroupMembership, [], ListSerializer(KaggleObjectSerializer())),
|
|
313
|
+
FieldMetadata("nextPageToken", "next_page_token", "_next_page_token", str, "", PredefinedSerializer()),
|
|
314
|
+
]
|
|
315
|
+
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
from kagglesdk.kaggle_object import *
|
|
2
|
+
from kagglesdk.users.types.groups_enum import GroupMembershipRole
|
|
3
|
+
from kagglesdk.users.types.user_avatar import UserAvatar
|
|
4
|
+
from typing import Optional, List
|
|
5
|
+
|
|
6
|
+
class UserManagedGroup(KaggleObject):
|
|
7
|
+
r"""
|
|
8
|
+
Attributes:
|
|
9
|
+
id (int)
|
|
10
|
+
name (str)
|
|
11
|
+
slug (str)
|
|
12
|
+
description (str)
|
|
13
|
+
owner (UserAvatar)
|
|
14
|
+
member_count (int)
|
|
15
|
+
current_user_role (GroupMembershipRole)
|
|
16
|
+
avatar_infos (UserAvatar)
|
|
17
|
+
List of up to three avatars sorted by join date.
|
|
18
|
+
share_token (str)
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
def __init__(self):
|
|
22
|
+
self._id = 0
|
|
23
|
+
self._name = ""
|
|
24
|
+
self._slug = ""
|
|
25
|
+
self._description = None
|
|
26
|
+
self._owner = None
|
|
27
|
+
self._member_count = None
|
|
28
|
+
self._current_user_role = None
|
|
29
|
+
self._avatar_infos = []
|
|
30
|
+
self._share_token = None
|
|
31
|
+
self._freeze()
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def id(self) -> int:
|
|
35
|
+
return self._id
|
|
36
|
+
|
|
37
|
+
@id.setter
|
|
38
|
+
def id(self, id: int):
|
|
39
|
+
if id is None:
|
|
40
|
+
del self.id
|
|
41
|
+
return
|
|
42
|
+
if not isinstance(id, int):
|
|
43
|
+
raise TypeError('id must be of type int')
|
|
44
|
+
self._id = id
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
def name(self) -> str:
|
|
48
|
+
return self._name
|
|
49
|
+
|
|
50
|
+
@name.setter
|
|
51
|
+
def name(self, name: str):
|
|
52
|
+
if name is None:
|
|
53
|
+
del self.name
|
|
54
|
+
return
|
|
55
|
+
if not isinstance(name, str):
|
|
56
|
+
raise TypeError('name must be of type str')
|
|
57
|
+
self._name = name
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def slug(self) -> str:
|
|
61
|
+
return self._slug
|
|
62
|
+
|
|
63
|
+
@slug.setter
|
|
64
|
+
def slug(self, slug: str):
|
|
65
|
+
if slug is None:
|
|
66
|
+
del self.slug
|
|
67
|
+
return
|
|
68
|
+
if not isinstance(slug, str):
|
|
69
|
+
raise TypeError('slug must be of type str')
|
|
70
|
+
self._slug = slug
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def description(self) -> str:
|
|
74
|
+
return self._description or ""
|
|
75
|
+
|
|
76
|
+
@description.setter
|
|
77
|
+
def description(self, description: Optional[str]):
|
|
78
|
+
if description is None:
|
|
79
|
+
del self.description
|
|
80
|
+
return
|
|
81
|
+
if not isinstance(description, str):
|
|
82
|
+
raise TypeError('description must be of type str')
|
|
83
|
+
self._description = description
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def owner(self) -> Optional['UserAvatar']:
|
|
87
|
+
return self._owner or None
|
|
88
|
+
|
|
89
|
+
@owner.setter
|
|
90
|
+
def owner(self, owner: Optional[Optional['UserAvatar']]):
|
|
91
|
+
if owner is None:
|
|
92
|
+
del self.owner
|
|
93
|
+
return
|
|
94
|
+
if not isinstance(owner, UserAvatar):
|
|
95
|
+
raise TypeError('owner must be of type UserAvatar')
|
|
96
|
+
self._owner = owner
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def member_count(self) -> int:
|
|
100
|
+
return self._member_count or 0
|
|
101
|
+
|
|
102
|
+
@member_count.setter
|
|
103
|
+
def member_count(self, member_count: Optional[int]):
|
|
104
|
+
if member_count is None:
|
|
105
|
+
del self.member_count
|
|
106
|
+
return
|
|
107
|
+
if not isinstance(member_count, int):
|
|
108
|
+
raise TypeError('member_count must be of type int')
|
|
109
|
+
self._member_count = member_count
|
|
110
|
+
|
|
111
|
+
@property
|
|
112
|
+
def current_user_role(self) -> 'GroupMembershipRole':
|
|
113
|
+
return self._current_user_role or GroupMembershipRole.GROUP_MEMBERSHIP_ROLE_UNSPECIFIED
|
|
114
|
+
|
|
115
|
+
@current_user_role.setter
|
|
116
|
+
def current_user_role(self, current_user_role: Optional['GroupMembershipRole']):
|
|
117
|
+
if current_user_role is None:
|
|
118
|
+
del self.current_user_role
|
|
119
|
+
return
|
|
120
|
+
if not isinstance(current_user_role, GroupMembershipRole):
|
|
121
|
+
raise TypeError('current_user_role must be of type GroupMembershipRole')
|
|
122
|
+
self._current_user_role = current_user_role
|
|
123
|
+
|
|
124
|
+
@property
|
|
125
|
+
def avatar_infos(self) -> Optional[List[Optional['UserAvatar']]]:
|
|
126
|
+
"""List of up to three avatars sorted by join date."""
|
|
127
|
+
return self._avatar_infos
|
|
128
|
+
|
|
129
|
+
@avatar_infos.setter
|
|
130
|
+
def avatar_infos(self, avatar_infos: Optional[List[Optional['UserAvatar']]]):
|
|
131
|
+
if avatar_infos is None:
|
|
132
|
+
del self.avatar_infos
|
|
133
|
+
return
|
|
134
|
+
if not isinstance(avatar_infos, list):
|
|
135
|
+
raise TypeError('avatar_infos must be of type list')
|
|
136
|
+
if not all([isinstance(t, UserAvatar) for t in avatar_infos]):
|
|
137
|
+
raise TypeError('avatar_infos must contain only items of type UserAvatar')
|
|
138
|
+
self._avatar_infos = avatar_infos
|
|
139
|
+
|
|
140
|
+
@property
|
|
141
|
+
def share_token(self) -> str:
|
|
142
|
+
return self._share_token or ""
|
|
143
|
+
|
|
144
|
+
@share_token.setter
|
|
145
|
+
def share_token(self, share_token: Optional[str]):
|
|
146
|
+
if share_token is None:
|
|
147
|
+
del self.share_token
|
|
148
|
+
return
|
|
149
|
+
if not isinstance(share_token, str):
|
|
150
|
+
raise TypeError('share_token must be of type str')
|
|
151
|
+
self._share_token = share_token
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
UserManagedGroup._fields = [
|
|
155
|
+
FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
|
|
156
|
+
FieldMetadata("name", "name", "_name", str, "", PredefinedSerializer()),
|
|
157
|
+
FieldMetadata("slug", "slug", "_slug", str, "", PredefinedSerializer()),
|
|
158
|
+
FieldMetadata("description", "description", "_description", str, None, PredefinedSerializer(), optional=True),
|
|
159
|
+
FieldMetadata("owner", "owner", "_owner", UserAvatar, None, KaggleObjectSerializer(), optional=True),
|
|
160
|
+
FieldMetadata("memberCount", "member_count", "_member_count", int, None, PredefinedSerializer(), optional=True),
|
|
161
|
+
FieldMetadata("currentUserRole", "current_user_role", "_current_user_role", GroupMembershipRole, None, EnumSerializer(), optional=True),
|
|
162
|
+
FieldMetadata("avatarInfos", "avatar_infos", "_avatar_infos", UserAvatar, [], ListSerializer(KaggleObjectSerializer())),
|
|
163
|
+
FieldMetadata("shareToken", "share_token", "_share_token", str, None, PredefinedSerializer(), optional=True),
|
|
164
|
+
]
|
|
165
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import enum
|
|
2
|
+
|
|
3
|
+
class SearchUsersOrderBy(enum.Enum):
|
|
4
|
+
SEARCH_USERS_ORDER_BY_UNSPECIFIED = 0
|
|
5
|
+
SEARCH_USERS_ORDER_BY_COMPETITION_RANKING = 1
|
|
6
|
+
"""Ordered by current competition ranking, ascending (best rank first)."""
|
|
7
|
+
SEARCH_USERS_ORDER_BY_KERNEL_RANKING = 2
|
|
8
|
+
"""Ordered by current kernel ranking, ascending (best rank first)."""
|
|
9
|
+
SEARCH_USERS_ORDER_BY_DATASET_RANKING = 3
|
|
10
|
+
"""Ordered by current dataset ranking, ascending (best rank first)."""
|
|
11
|
+
SEARCH_USERS_ORDER_BY_DISPLAY_NAME = 4
|
|
12
|
+
"""Ordered by display name, alphabetically, ascending."""
|
|
13
|
+
SEARCH_USERS_ORDER_BY_TIER_AND_LEVEL = 5
|
|
14
|
+
r"""
|
|
15
|
+
Ordered by tier and tier levels, descending. Tier levels are awarded
|
|
16
|
+
starting at Grandmaster. The first user returned will have the highest tier
|
|
17
|
+
and level (GM 7x, etc.).
|
|
18
|
+
"""
|
|
19
|
+
SEARCH_USERS_ORDER_BY_OLDEST_JOIN_DATE = 6
|
|
20
|
+
"""Ordered by user create date, ascending (i.e. oldest account first)."""
|
|
21
|
+
SEARCH_USERS_ORDER_BY_NEWEST_JOIN_DATE = 7
|
|
22
|
+
"""Ordered by user create date, descending (i.e. newest account first)."""
|
|
23
|
+
|