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,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,8 @@
1
+ import enum
2
+
3
+ class GroupMembershipRole(enum.Enum):
4
+ GROUP_MEMBERSHIP_ROLE_UNSPECIFIED = 0
5
+ GROUP_MEMBERSHIP_ROLE_ADMIN = 1
6
+ GROUP_MEMBERSHIP_ROLE_OWNER = 2
7
+ GROUP_MEMBERSHIP_ROLE_MEMBER = 3
8
+
@@ -0,0 +1,9 @@
1
+ import enum
2
+
3
+ class UserAchievementType(enum.Enum):
4
+ USER_ACHIEVEMENT_TYPE_UNSPECIFIED = 0
5
+ USER_ACHIEVEMENT_TYPE_COMPETITIONS = 1
6
+ USER_ACHIEVEMENT_TYPE_NOTEBOOKS = 2
7
+ USER_ACHIEVEMENT_TYPE_DISCUSSION = 3
8
+ USER_ACHIEVEMENT_TYPE_DATASETS = 4
9
+
@@ -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
+