kaggle 1.8.2__py3-none-any.whl → 1.8.4__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 +1 -1
- kaggle/api/kaggle_api_extended.py +206 -75
- kaggle/cli.py +36 -28
- kaggle/models/upload_file.py +4 -4
- {kaggle-1.8.2.dist-info → kaggle-1.8.4.dist-info}/METADATA +66 -75
- kaggle-1.8.4.dist-info/RECORD +15 -0
- {kaggle-1.8.2.dist-info → kaggle-1.8.4.dist-info}/WHEEL +1 -1
- kaggle/models/api_blob_type.py +0 -4
- kaggle/models/dataset_column.py +0 -228
- kaggle/models/dataset_new_request.py +0 -443
- kaggle/models/dataset_new_version_request.py +0 -319
- kaggle/models/dataset_update_settings_request.py +0 -344
- kaggle/models/kernel_push_request.py +0 -608
- kaggle/models/model_instance_new_version_request.py +0 -145
- kaggle/models/model_instance_update_request.py +0 -451
- kaggle/models/model_new_instance_request.py +0 -552
- kaggle/models/model_new_request.py +0 -329
- kaggle/models/model_update_request.py +0 -300
- kaggle/models/start_blob_upload_request.py +0 -240
- kaggle/models/start_blob_upload_response.py +0 -142
- kaggle-1.8.2.dist-info/RECORD +0 -148
- kagglesdk/LICENSE +0 -201
- kagglesdk/__init__.py +0 -6
- kagglesdk/admin/__init__.py +0 -0
- kagglesdk/admin/services/__init__.py +0 -0
- kagglesdk/admin/services/inbox_file_service.py +0 -22
- kagglesdk/admin/types/__init__.py +0 -0
- kagglesdk/admin/types/inbox_file_service.py +0 -74
- kagglesdk/benchmarks/__init__.py +0 -0
- kagglesdk/benchmarks/services/__init__.py +0 -0
- kagglesdk/benchmarks/services/benchmarks_api_service.py +0 -19
- kagglesdk/benchmarks/types/__init__.py +0 -0
- kagglesdk/benchmarks/types/benchmark_types.py +0 -307
- kagglesdk/benchmarks/types/benchmarks_api_service.py +0 -243
- kagglesdk/blobs/__init__.py +0 -0
- kagglesdk/blobs/services/__init__.py +0 -0
- kagglesdk/blobs/services/blob_api_service.py +0 -25
- kagglesdk/blobs/types/__init__.py +0 -0
- kagglesdk/blobs/types/blob_api_service.py +0 -177
- kagglesdk/common/__init__.py +0 -0
- kagglesdk/common/services/__init__.py +0 -0
- kagglesdk/common/services/operations_service.py +0 -46
- kagglesdk/common/types/__init__.py +0 -0
- kagglesdk/common/types/file_download.py +0 -102
- kagglesdk/common/types/http_redirect.py +0 -105
- kagglesdk/common/types/operations.py +0 -194
- kagglesdk/common/types/operations_service.py +0 -48
- kagglesdk/community/__init__.py +0 -0
- kagglesdk/community/types/__init__.py +0 -0
- kagglesdk/community/types/content_enums.py +0 -44
- kagglesdk/community/types/organization.py +0 -410
- kagglesdk/competitions/__init__.py +0 -0
- kagglesdk/competitions/services/__init__.py +0 -0
- kagglesdk/competitions/services/competition_api_service.py +0 -178
- kagglesdk/competitions/types/__init__.py +0 -0
- kagglesdk/competitions/types/competition.py +0 -14
- kagglesdk/competitions/types/competition_api_service.py +0 -2393
- kagglesdk/competitions/types/competition_enums.py +0 -53
- kagglesdk/competitions/types/search_competitions.py +0 -28
- kagglesdk/competitions/types/submission_status.py +0 -9
- kagglesdk/datasets/__init__.py +0 -0
- kagglesdk/datasets/databundles/__init__.py +0 -0
- kagglesdk/datasets/databundles/types/__init__.py +0 -0
- kagglesdk/datasets/databundles/types/databundle_api_types.py +0 -540
- kagglesdk/datasets/services/__init__.py +0 -0
- kagglesdk/datasets/services/dataset_api_service.py +0 -195
- kagglesdk/datasets/types/__init__.py +0 -0
- kagglesdk/datasets/types/dataset_api_service.py +0 -3047
- kagglesdk/datasets/types/dataset_enums.py +0 -103
- kagglesdk/datasets/types/dataset_service.py +0 -145
- kagglesdk/datasets/types/dataset_types.py +0 -646
- kagglesdk/datasets/types/search_datasets.py +0 -6
- kagglesdk/discussions/__init__.py +0 -0
- kagglesdk/discussions/types/__init__.py +0 -0
- kagglesdk/discussions/types/search_discussions.py +0 -43
- kagglesdk/discussions/types/writeup_enums.py +0 -11
- kagglesdk/education/__init__.py +0 -0
- kagglesdk/education/services/__init__.py +0 -0
- kagglesdk/education/services/education_api_service.py +0 -19
- kagglesdk/education/types/__init__.py +0 -0
- kagglesdk/education/types/education_api_service.py +0 -248
- kagglesdk/education/types/education_service.py +0 -139
- kagglesdk/kaggle_client.py +0 -101
- kagglesdk/kaggle_creds.py +0 -148
- kagglesdk/kaggle_env.py +0 -104
- kagglesdk/kaggle_http_client.py +0 -269
- kagglesdk/kaggle_oauth.py +0 -200
- kagglesdk/kaggle_object.py +0 -344
- kagglesdk/kernels/__init__.py +0 -0
- kagglesdk/kernels/services/__init__.py +0 -0
- kagglesdk/kernels/services/kernels_api_service.py +0 -146
- kagglesdk/kernels/types/__init__.py +0 -0
- kagglesdk/kernels/types/kernels_api_service.py +0 -2451
- kagglesdk/kernels/types/kernels_enums.py +0 -39
- kagglesdk/kernels/types/search_kernels.py +0 -6
- kagglesdk/licenses/__init__.py +0 -0
- kagglesdk/licenses/types/__init__.py +0 -0
- kagglesdk/licenses/types/licenses_types.py +0 -182
- kagglesdk/models/__init__.py +0 -0
- kagglesdk/models/services/__init__.py +0 -0
- kagglesdk/models/services/model_api_service.py +0 -280
- kagglesdk/models/services/model_service.py +0 -19
- kagglesdk/models/types/__init__.py +0 -0
- kagglesdk/models/types/model_api_service.py +0 -4069
- kagglesdk/models/types/model_enums.py +0 -68
- kagglesdk/models/types/model_service.py +0 -275
- kagglesdk/models/types/model_types.py +0 -1338
- kagglesdk/models/types/search_models.py +0 -8
- kagglesdk/search/__init__.py +0 -0
- kagglesdk/search/services/__init__.py +0 -0
- kagglesdk/search/services/search_api_service.py +0 -19
- kagglesdk/search/types/__init__.py +0 -0
- kagglesdk/search/types/search_api_service.py +0 -2435
- kagglesdk/search/types/search_content_shared.py +0 -50
- kagglesdk/search/types/search_enums.py +0 -45
- kagglesdk/search/types/search_service.py +0 -303
- kagglesdk/security/__init__.py +0 -0
- kagglesdk/security/services/__init__.py +0 -0
- kagglesdk/security/services/iam_service.py +0 -31
- kagglesdk/security/services/oauth_service.py +0 -58
- kagglesdk/security/types/__init__.py +0 -0
- kagglesdk/security/types/authentication.py +0 -171
- kagglesdk/security/types/iam_service.py +0 -496
- kagglesdk/security/types/oauth_service.py +0 -1181
- kagglesdk/security/types/roles.py +0 -8
- kagglesdk/security/types/security_types.py +0 -159
- kagglesdk/test/__init__.py +0 -0
- kagglesdk/test/test_client.py +0 -41
- kagglesdk/users/__init__.py +0 -0
- kagglesdk/users/services/__init__.py +0 -0
- kagglesdk/users/services/account_service.py +0 -31
- kagglesdk/users/services/group_api_service.py +0 -31
- kagglesdk/users/types/__init__.py +0 -0
- kagglesdk/users/types/account_service.py +0 -345
- kagglesdk/users/types/group_api_service.py +0 -315
- kagglesdk/users/types/group_types.py +0 -165
- kagglesdk/users/types/groups_enum.py +0 -8
- kagglesdk/users/types/progression_service.py +0 -9
- kagglesdk/users/types/search_users.py +0 -23
- kagglesdk/users/types/user_avatar.py +0 -226
- kagglesdk/users/types/users_enums.py +0 -22
- {kaggle-1.8.2.dist-info → kaggle-1.8.4.dist-info}/entry_points.txt +0 -0
- {kaggle-1.8.2.dist-info → kaggle-1.8.4.dist-info}/licenses/LICENSE.txt +0 -0
kagglesdk/education/__init__.py
DELETED
|
File without changes
|
|
File without changes
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
from kagglesdk.education.types.education_api_service import ApiTrackExerciseInteractionRequest, ApiTrackExerciseInteractionResponse
|
|
2
|
-
from kagglesdk.kaggle_http_client import KaggleHttpClient
|
|
3
|
-
|
|
4
|
-
class EducationApiClient(object):
|
|
5
|
-
|
|
6
|
-
def __init__(self, client: KaggleHttpClient):
|
|
7
|
-
self._client = client
|
|
8
|
-
|
|
9
|
-
def track_exercise_interaction(self, request: ApiTrackExerciseInteractionRequest = None) -> ApiTrackExerciseInteractionResponse:
|
|
10
|
-
r"""
|
|
11
|
-
Args:
|
|
12
|
-
request (ApiTrackExerciseInteractionRequest):
|
|
13
|
-
The request object; initialized to empty instance if not specified.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
if request is None:
|
|
17
|
-
request = ApiTrackExerciseInteractionRequest()
|
|
18
|
-
|
|
19
|
-
return self._client.call("education.EducationApiService", "TrackExerciseInteraction", request, ApiTrackExerciseInteractionResponse)
|
|
File without changes
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
from kagglesdk.education.types.education_service import LearnExerciseInteractionType, LearnExerciseOutcomeType, LearnExerciseQuestionType, LearnNudge
|
|
2
|
-
from kagglesdk.kaggle_object import *
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
|
-
class ApiTrackExerciseInteractionRequest(KaggleObject):
|
|
6
|
-
r"""
|
|
7
|
-
This is copied from TrackExerciseInteractionRequest in
|
|
8
|
-
education_service.proto, which will eventually be deprecated. In the
|
|
9
|
-
meantime, make sure to keep these in sync.
|
|
10
|
-
|
|
11
|
-
NOTE: there's one small rename from `fork_parent_script_version_id` to
|
|
12
|
-
`fork_parent_kernel_session_id`.
|
|
13
|
-
|
|
14
|
-
Attributes:
|
|
15
|
-
exception_class (str)
|
|
16
|
-
failure_message (str)
|
|
17
|
-
interaction_type (LearnExerciseInteractionType)
|
|
18
|
-
learn_tools_version (str)
|
|
19
|
-
fork_parent_kernel_session_id (int)
|
|
20
|
-
outcome_type (LearnExerciseOutcomeType)
|
|
21
|
-
question_id (str)
|
|
22
|
-
question_type (LearnExerciseQuestionType)
|
|
23
|
-
trace (str)
|
|
24
|
-
value_towards_completion (float)
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
def __init__(self):
|
|
28
|
-
self._exception_class = ""
|
|
29
|
-
self._failure_message = ""
|
|
30
|
-
self._interaction_type = LearnExerciseInteractionType.LEARN_EXERCISE_INTERACTION_TYPE_UNSPECIFIED
|
|
31
|
-
self._learn_tools_version = ""
|
|
32
|
-
self._fork_parent_kernel_session_id = 0
|
|
33
|
-
self._outcome_type = LearnExerciseOutcomeType.LEARN_EXERCISE_OUTCOME_TYPE_UNSPECIFIED
|
|
34
|
-
self._question_id = ""
|
|
35
|
-
self._question_type = LearnExerciseQuestionType.LEARN_EXERCISE_QUESTION_TYPE_UNSPECIFIED
|
|
36
|
-
self._trace = ""
|
|
37
|
-
self._value_towards_completion = None
|
|
38
|
-
self._freeze()
|
|
39
|
-
|
|
40
|
-
@property
|
|
41
|
-
def exception_class(self) -> str:
|
|
42
|
-
return self._exception_class
|
|
43
|
-
|
|
44
|
-
@exception_class.setter
|
|
45
|
-
def exception_class(self, exception_class: str):
|
|
46
|
-
if exception_class is None:
|
|
47
|
-
del self.exception_class
|
|
48
|
-
return
|
|
49
|
-
if not isinstance(exception_class, str):
|
|
50
|
-
raise TypeError('exception_class must be of type str')
|
|
51
|
-
self._exception_class = exception_class
|
|
52
|
-
|
|
53
|
-
@property
|
|
54
|
-
def failure_message(self) -> str:
|
|
55
|
-
return self._failure_message
|
|
56
|
-
|
|
57
|
-
@failure_message.setter
|
|
58
|
-
def failure_message(self, failure_message: str):
|
|
59
|
-
if failure_message is None:
|
|
60
|
-
del self.failure_message
|
|
61
|
-
return
|
|
62
|
-
if not isinstance(failure_message, str):
|
|
63
|
-
raise TypeError('failure_message must be of type str')
|
|
64
|
-
self._failure_message = failure_message
|
|
65
|
-
|
|
66
|
-
@property
|
|
67
|
-
def interaction_type(self) -> 'LearnExerciseInteractionType':
|
|
68
|
-
return self._interaction_type
|
|
69
|
-
|
|
70
|
-
@interaction_type.setter
|
|
71
|
-
def interaction_type(self, interaction_type: 'LearnExerciseInteractionType'):
|
|
72
|
-
if interaction_type is None:
|
|
73
|
-
del self.interaction_type
|
|
74
|
-
return
|
|
75
|
-
if not isinstance(interaction_type, LearnExerciseInteractionType):
|
|
76
|
-
raise TypeError('interaction_type must be of type LearnExerciseInteractionType')
|
|
77
|
-
self._interaction_type = interaction_type
|
|
78
|
-
|
|
79
|
-
@property
|
|
80
|
-
def learn_tools_version(self) -> str:
|
|
81
|
-
return self._learn_tools_version
|
|
82
|
-
|
|
83
|
-
@learn_tools_version.setter
|
|
84
|
-
def learn_tools_version(self, learn_tools_version: str):
|
|
85
|
-
if learn_tools_version is None:
|
|
86
|
-
del self.learn_tools_version
|
|
87
|
-
return
|
|
88
|
-
if not isinstance(learn_tools_version, str):
|
|
89
|
-
raise TypeError('learn_tools_version must be of type str')
|
|
90
|
-
self._learn_tools_version = learn_tools_version
|
|
91
|
-
|
|
92
|
-
@property
|
|
93
|
-
def fork_parent_kernel_session_id(self) -> int:
|
|
94
|
-
return self._fork_parent_kernel_session_id
|
|
95
|
-
|
|
96
|
-
@fork_parent_kernel_session_id.setter
|
|
97
|
-
def fork_parent_kernel_session_id(self, fork_parent_kernel_session_id: int):
|
|
98
|
-
if fork_parent_kernel_session_id is None:
|
|
99
|
-
del self.fork_parent_kernel_session_id
|
|
100
|
-
return
|
|
101
|
-
if not isinstance(fork_parent_kernel_session_id, int):
|
|
102
|
-
raise TypeError('fork_parent_kernel_session_id must be of type int')
|
|
103
|
-
self._fork_parent_kernel_session_id = fork_parent_kernel_session_id
|
|
104
|
-
|
|
105
|
-
@property
|
|
106
|
-
def outcome_type(self) -> 'LearnExerciseOutcomeType':
|
|
107
|
-
return self._outcome_type
|
|
108
|
-
|
|
109
|
-
@outcome_type.setter
|
|
110
|
-
def outcome_type(self, outcome_type: 'LearnExerciseOutcomeType'):
|
|
111
|
-
if outcome_type is None:
|
|
112
|
-
del self.outcome_type
|
|
113
|
-
return
|
|
114
|
-
if not isinstance(outcome_type, LearnExerciseOutcomeType):
|
|
115
|
-
raise TypeError('outcome_type must be of type LearnExerciseOutcomeType')
|
|
116
|
-
self._outcome_type = outcome_type
|
|
117
|
-
|
|
118
|
-
@property
|
|
119
|
-
def question_id(self) -> str:
|
|
120
|
-
return self._question_id
|
|
121
|
-
|
|
122
|
-
@question_id.setter
|
|
123
|
-
def question_id(self, question_id: str):
|
|
124
|
-
if question_id is None:
|
|
125
|
-
del self.question_id
|
|
126
|
-
return
|
|
127
|
-
if not isinstance(question_id, str):
|
|
128
|
-
raise TypeError('question_id must be of type str')
|
|
129
|
-
self._question_id = question_id
|
|
130
|
-
|
|
131
|
-
@property
|
|
132
|
-
def question_type(self) -> 'LearnExerciseQuestionType':
|
|
133
|
-
return self._question_type
|
|
134
|
-
|
|
135
|
-
@question_type.setter
|
|
136
|
-
def question_type(self, question_type: 'LearnExerciseQuestionType'):
|
|
137
|
-
if question_type is None:
|
|
138
|
-
del self.question_type
|
|
139
|
-
return
|
|
140
|
-
if not isinstance(question_type, LearnExerciseQuestionType):
|
|
141
|
-
raise TypeError('question_type must be of type LearnExerciseQuestionType')
|
|
142
|
-
self._question_type = question_type
|
|
143
|
-
|
|
144
|
-
@property
|
|
145
|
-
def trace(self) -> str:
|
|
146
|
-
return self._trace
|
|
147
|
-
|
|
148
|
-
@trace.setter
|
|
149
|
-
def trace(self, trace: str):
|
|
150
|
-
if trace is None:
|
|
151
|
-
del self.trace
|
|
152
|
-
return
|
|
153
|
-
if not isinstance(trace, str):
|
|
154
|
-
raise TypeError('trace must be of type str')
|
|
155
|
-
self._trace = trace
|
|
156
|
-
|
|
157
|
-
@property
|
|
158
|
-
def value_towards_completion(self) -> float:
|
|
159
|
-
return self._value_towards_completion or 0.0
|
|
160
|
-
|
|
161
|
-
@value_towards_completion.setter
|
|
162
|
-
def value_towards_completion(self, value_towards_completion: Optional[float]):
|
|
163
|
-
if value_towards_completion is None:
|
|
164
|
-
del self.value_towards_completion
|
|
165
|
-
return
|
|
166
|
-
if not isinstance(value_towards_completion, float):
|
|
167
|
-
raise TypeError('value_towards_completion must be of type float')
|
|
168
|
-
self._value_towards_completion = value_towards_completion
|
|
169
|
-
|
|
170
|
-
def endpoint(self):
|
|
171
|
-
path = '/api/v1/learn/track'
|
|
172
|
-
return path.format_map(self.to_field_map(self))
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
@staticmethod
|
|
176
|
-
def method():
|
|
177
|
-
return 'POST'
|
|
178
|
-
|
|
179
|
-
@staticmethod
|
|
180
|
-
def body_fields():
|
|
181
|
-
return '*'
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
class ApiTrackExerciseInteractionResponse(KaggleObject):
|
|
185
|
-
r"""
|
|
186
|
-
This is copied from TrackExerciseInteractionResponse in
|
|
187
|
-
education_service.proto, which will eventually be deprecated. In the
|
|
188
|
-
meantime, make sure to keep these in sync.
|
|
189
|
-
|
|
190
|
-
Attributes:
|
|
191
|
-
nudge (LearnNudge)
|
|
192
|
-
show_login_prompt (bool)
|
|
193
|
-
"""
|
|
194
|
-
|
|
195
|
-
def __init__(self):
|
|
196
|
-
self._nudge = None
|
|
197
|
-
self._show_login_prompt = False
|
|
198
|
-
self._freeze()
|
|
199
|
-
|
|
200
|
-
@property
|
|
201
|
-
def nudge(self) -> Optional['LearnNudge']:
|
|
202
|
-
return self._nudge
|
|
203
|
-
|
|
204
|
-
@nudge.setter
|
|
205
|
-
def nudge(self, nudge: Optional['LearnNudge']):
|
|
206
|
-
if nudge is None:
|
|
207
|
-
del self.nudge
|
|
208
|
-
return
|
|
209
|
-
if not isinstance(nudge, LearnNudge):
|
|
210
|
-
raise TypeError('nudge must be of type LearnNudge')
|
|
211
|
-
self._nudge = nudge
|
|
212
|
-
|
|
213
|
-
@property
|
|
214
|
-
def show_login_prompt(self) -> bool:
|
|
215
|
-
return self._show_login_prompt
|
|
216
|
-
|
|
217
|
-
@show_login_prompt.setter
|
|
218
|
-
def show_login_prompt(self, show_login_prompt: bool):
|
|
219
|
-
if show_login_prompt is None:
|
|
220
|
-
del self.show_login_prompt
|
|
221
|
-
return
|
|
222
|
-
if not isinstance(show_login_prompt, bool):
|
|
223
|
-
raise TypeError('show_login_prompt must be of type bool')
|
|
224
|
-
self._show_login_prompt = show_login_prompt
|
|
225
|
-
|
|
226
|
-
@property
|
|
227
|
-
def showLoginPrompt(self):
|
|
228
|
-
return self.show_login_prompt
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
ApiTrackExerciseInteractionRequest._fields = [
|
|
232
|
-
FieldMetadata("exceptionClass", "exception_class", "_exception_class", str, "", PredefinedSerializer()),
|
|
233
|
-
FieldMetadata("failureMessage", "failure_message", "_failure_message", str, "", PredefinedSerializer()),
|
|
234
|
-
FieldMetadata("interactionType", "interaction_type", "_interaction_type", LearnExerciseInteractionType, LearnExerciseInteractionType.LEARN_EXERCISE_INTERACTION_TYPE_UNSPECIFIED, EnumSerializer()),
|
|
235
|
-
FieldMetadata("learnToolsVersion", "learn_tools_version", "_learn_tools_version", str, "", PredefinedSerializer()),
|
|
236
|
-
FieldMetadata("forkParentKernelSessionId", "fork_parent_kernel_session_id", "_fork_parent_kernel_session_id", int, 0, PredefinedSerializer()),
|
|
237
|
-
FieldMetadata("outcomeType", "outcome_type", "_outcome_type", LearnExerciseOutcomeType, LearnExerciseOutcomeType.LEARN_EXERCISE_OUTCOME_TYPE_UNSPECIFIED, EnumSerializer()),
|
|
238
|
-
FieldMetadata("questionId", "question_id", "_question_id", str, "", PredefinedSerializer()),
|
|
239
|
-
FieldMetadata("questionType", "question_type", "_question_type", LearnExerciseQuestionType, LearnExerciseQuestionType.LEARN_EXERCISE_QUESTION_TYPE_UNSPECIFIED, EnumSerializer()),
|
|
240
|
-
FieldMetadata("trace", "trace", "_trace", str, "", PredefinedSerializer()),
|
|
241
|
-
FieldMetadata("valueTowardsCompletion", "value_towards_completion", "_value_towards_completion", float, None, PredefinedSerializer(), optional=True),
|
|
242
|
-
]
|
|
243
|
-
|
|
244
|
-
ApiTrackExerciseInteractionResponse._fields = [
|
|
245
|
-
FieldMetadata("nudge", "nudge", "_nudge", LearnNudge, None, KaggleObjectSerializer()),
|
|
246
|
-
FieldMetadata("showLoginPrompt", "show_login_prompt", "_show_login_prompt", bool, False, PredefinedSerializer()),
|
|
247
|
-
]
|
|
248
|
-
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import enum
|
|
2
|
-
from kagglesdk.kaggle_object import *
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
|
-
class LearnExerciseInteractionType(enum.Enum):
|
|
6
|
-
LEARN_EXERCISE_INTERACTION_TYPE_UNSPECIFIED = 0
|
|
7
|
-
CHECK = 1
|
|
8
|
-
HINT = 2
|
|
9
|
-
SOLUTION = 3
|
|
10
|
-
|
|
11
|
-
class LearnExerciseOutcomeType(enum.Enum):
|
|
12
|
-
LEARN_EXERCISE_OUTCOME_TYPE_UNSPECIFIED = 0
|
|
13
|
-
PASS = 1
|
|
14
|
-
FAIL = 2
|
|
15
|
-
EXCEPTION = 3
|
|
16
|
-
UNATTEMPTED = 4
|
|
17
|
-
|
|
18
|
-
class LearnExerciseQuestionType(enum.Enum):
|
|
19
|
-
LEARN_EXERCISE_QUESTION_TYPE_UNSPECIFIED = 0
|
|
20
|
-
EQUALITY_CHECK_PROBLEM = 1
|
|
21
|
-
CODING_PROBLEM = 2
|
|
22
|
-
FUNCTION_PROBLEM = 3
|
|
23
|
-
THOUGHT_EXPERIMENT = 4
|
|
24
|
-
|
|
25
|
-
class LearnNudgeType(enum.Enum):
|
|
26
|
-
COURSE_COMPLETE_NO_BONUS_LESSONS = 0
|
|
27
|
-
COURSE_COMPLETE_WITH_BONUS_LESSONS = 1
|
|
28
|
-
COURSE_INCOMPLETE = 2
|
|
29
|
-
DO_EXERCISE = 3
|
|
30
|
-
DO_TUTORIAL = 4
|
|
31
|
-
|
|
32
|
-
class LearnNudge(KaggleObject):
|
|
33
|
-
r"""
|
|
34
|
-
Attributes:
|
|
35
|
-
course_index (int)
|
|
36
|
-
course_name (str)
|
|
37
|
-
course_slug (str)
|
|
38
|
-
next_item_name (str)
|
|
39
|
-
next_item_url (str)
|
|
40
|
-
next_item_type (LearnNudgeType)
|
|
41
|
-
"""
|
|
42
|
-
|
|
43
|
-
def __init__(self):
|
|
44
|
-
self._course_index = 0
|
|
45
|
-
self._course_name = ""
|
|
46
|
-
self._course_slug = ""
|
|
47
|
-
self._next_item_name = ""
|
|
48
|
-
self._next_item_url = ""
|
|
49
|
-
self._next_item_type = LearnNudgeType.COURSE_COMPLETE_NO_BONUS_LESSONS
|
|
50
|
-
self._freeze()
|
|
51
|
-
|
|
52
|
-
@property
|
|
53
|
-
def course_index(self) -> int:
|
|
54
|
-
return self._course_index
|
|
55
|
-
|
|
56
|
-
@course_index.setter
|
|
57
|
-
def course_index(self, course_index: int):
|
|
58
|
-
if course_index is None:
|
|
59
|
-
del self.course_index
|
|
60
|
-
return
|
|
61
|
-
if not isinstance(course_index, int):
|
|
62
|
-
raise TypeError('course_index must be of type int')
|
|
63
|
-
self._course_index = course_index
|
|
64
|
-
|
|
65
|
-
@property
|
|
66
|
-
def course_name(self) -> str:
|
|
67
|
-
return self._course_name
|
|
68
|
-
|
|
69
|
-
@course_name.setter
|
|
70
|
-
def course_name(self, course_name: str):
|
|
71
|
-
if course_name is None:
|
|
72
|
-
del self.course_name
|
|
73
|
-
return
|
|
74
|
-
if not isinstance(course_name, str):
|
|
75
|
-
raise TypeError('course_name must be of type str')
|
|
76
|
-
self._course_name = course_name
|
|
77
|
-
|
|
78
|
-
@property
|
|
79
|
-
def course_slug(self) -> str:
|
|
80
|
-
return self._course_slug
|
|
81
|
-
|
|
82
|
-
@course_slug.setter
|
|
83
|
-
def course_slug(self, course_slug: str):
|
|
84
|
-
if course_slug is None:
|
|
85
|
-
del self.course_slug
|
|
86
|
-
return
|
|
87
|
-
if not isinstance(course_slug, str):
|
|
88
|
-
raise TypeError('course_slug must be of type str')
|
|
89
|
-
self._course_slug = course_slug
|
|
90
|
-
|
|
91
|
-
@property
|
|
92
|
-
def next_item_name(self) -> str:
|
|
93
|
-
return self._next_item_name
|
|
94
|
-
|
|
95
|
-
@next_item_name.setter
|
|
96
|
-
def next_item_name(self, next_item_name: str):
|
|
97
|
-
if next_item_name is None:
|
|
98
|
-
del self.next_item_name
|
|
99
|
-
return
|
|
100
|
-
if not isinstance(next_item_name, str):
|
|
101
|
-
raise TypeError('next_item_name must be of type str')
|
|
102
|
-
self._next_item_name = next_item_name
|
|
103
|
-
|
|
104
|
-
@property
|
|
105
|
-
def next_item_url(self) -> str:
|
|
106
|
-
return self._next_item_url
|
|
107
|
-
|
|
108
|
-
@next_item_url.setter
|
|
109
|
-
def next_item_url(self, next_item_url: str):
|
|
110
|
-
if next_item_url is None:
|
|
111
|
-
del self.next_item_url
|
|
112
|
-
return
|
|
113
|
-
if not isinstance(next_item_url, str):
|
|
114
|
-
raise TypeError('next_item_url must be of type str')
|
|
115
|
-
self._next_item_url = next_item_url
|
|
116
|
-
|
|
117
|
-
@property
|
|
118
|
-
def next_item_type(self) -> 'LearnNudgeType':
|
|
119
|
-
return self._next_item_type
|
|
120
|
-
|
|
121
|
-
@next_item_type.setter
|
|
122
|
-
def next_item_type(self, next_item_type: 'LearnNudgeType'):
|
|
123
|
-
if next_item_type is None:
|
|
124
|
-
del self.next_item_type
|
|
125
|
-
return
|
|
126
|
-
if not isinstance(next_item_type, LearnNudgeType):
|
|
127
|
-
raise TypeError('next_item_type must be of type LearnNudgeType')
|
|
128
|
-
self._next_item_type = next_item_type
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
LearnNudge._fields = [
|
|
132
|
-
FieldMetadata("courseIndex", "course_index", "_course_index", int, 0, PredefinedSerializer()),
|
|
133
|
-
FieldMetadata("courseName", "course_name", "_course_name", str, "", PredefinedSerializer()),
|
|
134
|
-
FieldMetadata("courseSlug", "course_slug", "_course_slug", str, "", PredefinedSerializer()),
|
|
135
|
-
FieldMetadata("nextItemName", "next_item_name", "_next_item_name", str, "", PredefinedSerializer()),
|
|
136
|
-
FieldMetadata("nextItemUrl", "next_item_url", "_next_item_url", str, "", PredefinedSerializer()),
|
|
137
|
-
FieldMetadata("nextItemType", "next_item_type", "_next_item_type", LearnNudgeType, LearnNudgeType.COURSE_COMPLETE_NO_BONUS_LESSONS, EnumSerializer()),
|
|
138
|
-
]
|
|
139
|
-
|
kagglesdk/kaggle_client.py
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
from kagglesdk.admin.services.inbox_file_service import InboxFileClient
|
|
2
|
-
from kagglesdk.benchmarks.services.benchmarks_api_service import BenchmarksApiClient
|
|
3
|
-
from kagglesdk.blobs.services.blob_api_service import BlobApiClient
|
|
4
|
-
from kagglesdk.common.services.operations_service import OperationsClient
|
|
5
|
-
from kagglesdk.competitions.services.competition_api_service import CompetitionApiClient
|
|
6
|
-
from kagglesdk.datasets.services.dataset_api_service import DatasetApiClient
|
|
7
|
-
from kagglesdk.education.services.education_api_service import EducationApiClient
|
|
8
|
-
from kagglesdk.kernels.services.kernels_api_service import KernelsApiClient
|
|
9
|
-
from kagglesdk.models.services.model_api_service import ModelApiClient
|
|
10
|
-
from kagglesdk.models.services.model_service import ModelClient
|
|
11
|
-
from kagglesdk.search.services.search_api_service import SearchApiClient
|
|
12
|
-
from kagglesdk.security.services.iam_service import IamClient
|
|
13
|
-
from kagglesdk.security.services.oauth_service import OAuthClient
|
|
14
|
-
from kagglesdk.users.services.account_service import AccountClient
|
|
15
|
-
from kagglesdk.users.services.group_api_service import GroupApiClient
|
|
16
|
-
from kagglesdk.kaggle_env import KaggleEnv
|
|
17
|
-
from kagglesdk.kaggle_http_client import KaggleHttpClient
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class KaggleClient(object):
|
|
21
|
-
class Admin(object):
|
|
22
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
23
|
-
self.inbox_file_client = InboxFileClient(http_client)
|
|
24
|
-
|
|
25
|
-
class Benchmarks(object):
|
|
26
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
27
|
-
self.benchmarks_api_client = BenchmarksApiClient(http_client)
|
|
28
|
-
|
|
29
|
-
class Blobs(object):
|
|
30
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
31
|
-
self.blob_api_client = BlobApiClient(http_client)
|
|
32
|
-
|
|
33
|
-
class Common(object):
|
|
34
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
35
|
-
self.operations_client = OperationsClient(http_client)
|
|
36
|
-
|
|
37
|
-
class Competitions(object):
|
|
38
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
39
|
-
self.competition_api_client = CompetitionApiClient(http_client)
|
|
40
|
-
|
|
41
|
-
class Datasets(object):
|
|
42
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
43
|
-
self.dataset_api_client = DatasetApiClient(http_client)
|
|
44
|
-
|
|
45
|
-
class Education(object):
|
|
46
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
47
|
-
self.education_api_client = EducationApiClient(http_client)
|
|
48
|
-
|
|
49
|
-
class Kernels(object):
|
|
50
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
51
|
-
self.kernels_api_client = KernelsApiClient(http_client)
|
|
52
|
-
|
|
53
|
-
class Models(object):
|
|
54
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
55
|
-
self.model_api_client = ModelApiClient(http_client)
|
|
56
|
-
self.model_client = ModelClient(http_client)
|
|
57
|
-
|
|
58
|
-
class Search(object):
|
|
59
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
60
|
-
self.search_api_client = SearchApiClient(http_client)
|
|
61
|
-
|
|
62
|
-
class Security(object):
|
|
63
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
64
|
-
self.iam_client = IamClient(http_client)
|
|
65
|
-
self.oauth_client = OAuthClient(http_client)
|
|
66
|
-
|
|
67
|
-
class Users(object):
|
|
68
|
-
def __init__(self, http_client: KaggleHttpClient):
|
|
69
|
-
self.account_client = AccountClient(http_client)
|
|
70
|
-
self.group_api_client = GroupApiClient(http_client)
|
|
71
|
-
|
|
72
|
-
def __init__(self, env: KaggleEnv = None, verbose: bool = False, username: str = None, password: str = None, api_token: str = None):
|
|
73
|
-
self._http_client = http_client = KaggleHttpClient(env, verbose, username=username, password=password, api_token=api_token)
|
|
74
|
-
self.admin = KaggleClient.Admin(http_client)
|
|
75
|
-
self.benchmarks = KaggleClient.Benchmarks(http_client)
|
|
76
|
-
self.blobs = KaggleClient.Blobs(http_client)
|
|
77
|
-
self.common = KaggleClient.Common(http_client)
|
|
78
|
-
self.competitions = KaggleClient.Competitions(http_client)
|
|
79
|
-
self.datasets = KaggleClient.Datasets(http_client)
|
|
80
|
-
self.education = KaggleClient.Education(http_client)
|
|
81
|
-
self.kernels = KaggleClient.Kernels(http_client)
|
|
82
|
-
self.models = KaggleClient.Models(http_client)
|
|
83
|
-
self.search = KaggleClient.Search(http_client)
|
|
84
|
-
self.security = KaggleClient.Security(http_client)
|
|
85
|
-
self.users = KaggleClient.Users(http_client)
|
|
86
|
-
self.username = username
|
|
87
|
-
self.password = password
|
|
88
|
-
self.api_token = api_token
|
|
89
|
-
|
|
90
|
-
def http_client(self) -> str:
|
|
91
|
-
return self._http_client
|
|
92
|
-
|
|
93
|
-
def _renew_iap_token(self) -> str:
|
|
94
|
-
return self.admin.admin_client.renew_iap_token()
|
|
95
|
-
|
|
96
|
-
def __enter__(self):
|
|
97
|
-
self._http_client.__enter__()
|
|
98
|
-
return self
|
|
99
|
-
|
|
100
|
-
def __exit__(self, exc_type, exc_value, tb):
|
|
101
|
-
self._http_client.__exit__(exc_type, exc_value, tb)
|
kagglesdk/kaggle_creds.py
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
import os
|
|
3
|
-
from datetime import datetime, timedelta, timezone
|
|
4
|
-
from kagglesdk.kaggle_client import KaggleClient
|
|
5
|
-
from kagglesdk.security.types.oauth_service import IntrospectTokenRequest
|
|
6
|
-
from kagglesdk.users.types.account_service import (
|
|
7
|
-
ApiVersion,
|
|
8
|
-
GenerateAccessTokenRequest,
|
|
9
|
-
GenerateAccessTokenResponse,
|
|
10
|
-
ExpireApiTokenRequest,
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class KaggleCredentials:
|
|
15
|
-
DEFAULT_CREDENTIALS_FILE = "~/.kaggle/credentials.json"
|
|
16
|
-
DEFAULT_ACCESS_TOKEN_EXPIRATION = timedelta(hours=12)
|
|
17
|
-
|
|
18
|
-
def __init__(
|
|
19
|
-
self,
|
|
20
|
-
client: KaggleClient,
|
|
21
|
-
refresh_token: str = None,
|
|
22
|
-
access_token: str = None,
|
|
23
|
-
access_token_expiration: datetime = None,
|
|
24
|
-
username: str = None,
|
|
25
|
-
scopes: list[str] = None,
|
|
26
|
-
):
|
|
27
|
-
self._client = client
|
|
28
|
-
self._refresh_token = refresh_token
|
|
29
|
-
self._access_token = access_token
|
|
30
|
-
self._access_token_expiration = access_token_expiration
|
|
31
|
-
self._username = username
|
|
32
|
-
self._scopes = scopes if scopes is not None else []
|
|
33
|
-
|
|
34
|
-
@classmethod
|
|
35
|
-
def load(cls, client: KaggleClient, file_path: str = None) -> "KaggleCredentials":
|
|
36
|
-
file_path = os.path.expanduser(file_path or KaggleCredentials.DEFAULT_CREDENTIALS_FILE)
|
|
37
|
-
if not os.path.exists(file_path):
|
|
38
|
-
return None
|
|
39
|
-
|
|
40
|
-
try:
|
|
41
|
-
with open(file_path, "r") as f:
|
|
42
|
-
data = json.load(f)
|
|
43
|
-
except (json.JSONDecodeError, KeyError):
|
|
44
|
-
return None
|
|
45
|
-
|
|
46
|
-
refresh_token = data.get("refresh_token")
|
|
47
|
-
if not refresh_token:
|
|
48
|
-
return None
|
|
49
|
-
|
|
50
|
-
access_token_expiration = data.get("access_token_expiration")
|
|
51
|
-
if access_token_expiration:
|
|
52
|
-
access_token_expiration = datetime.fromisoformat(access_token_expiration)
|
|
53
|
-
else:
|
|
54
|
-
access_token_expiration = None
|
|
55
|
-
|
|
56
|
-
return cls(
|
|
57
|
-
client=client,
|
|
58
|
-
refresh_token=refresh_token,
|
|
59
|
-
access_token=data.get("access_token"),
|
|
60
|
-
access_token_expiration=access_token_expiration,
|
|
61
|
-
username=data.get("username"),
|
|
62
|
-
scopes=data.get("scopes"),
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
def delete(self, file_path=DEFAULT_CREDENTIALS_FILE) -> None:
|
|
66
|
-
file_path = os.path.expanduser(file_path)
|
|
67
|
-
if os.path.exists(file_path):
|
|
68
|
-
os.remove(file_path)
|
|
69
|
-
|
|
70
|
-
def save(self, file_path=DEFAULT_CREDENTIALS_FILE) -> None:
|
|
71
|
-
if not self._refresh_token:
|
|
72
|
-
raise Exception("Missing refresh token")
|
|
73
|
-
|
|
74
|
-
file_path = os.path.expanduser(file_path)
|
|
75
|
-
dir_name = os.path.dirname(file_path)
|
|
76
|
-
if not os.path.exists(dir_name):
|
|
77
|
-
os.makedirs(dir_name)
|
|
78
|
-
|
|
79
|
-
data = {
|
|
80
|
-
"refresh_token": self._refresh_token,
|
|
81
|
-
"access_token": self._access_token or "",
|
|
82
|
-
"access_token_expiration": (
|
|
83
|
-
self._access_token_expiration.isoformat() if self._access_token_expiration else ""
|
|
84
|
-
),
|
|
85
|
-
"username": self._username or "",
|
|
86
|
-
"scopes": self._scopes or [],
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
with open(file_path, "w") as f:
|
|
90
|
-
json.dump(data, f, indent=2)
|
|
91
|
-
|
|
92
|
-
try:
|
|
93
|
-
os.chmod(file_path, 0o600)
|
|
94
|
-
except OSError:
|
|
95
|
-
pass # Ignore errors, especially on Windows
|
|
96
|
-
|
|
97
|
-
def introspect(self) -> str:
|
|
98
|
-
request = IntrospectTokenRequest()
|
|
99
|
-
request.token = self._access_token
|
|
100
|
-
response = self._client.security.oauth_client.introspect_token(request)
|
|
101
|
-
|
|
102
|
-
if not response.active or not response.username:
|
|
103
|
-
raise Exception("Authentication failed.")
|
|
104
|
-
|
|
105
|
-
self._username = response.username
|
|
106
|
-
return response.username
|
|
107
|
-
|
|
108
|
-
def refresh_access_token(self) -> None:
|
|
109
|
-
if not self._refresh_token:
|
|
110
|
-
raise Exception("Missing refresh token")
|
|
111
|
-
|
|
112
|
-
response = self.generate_access_token()
|
|
113
|
-
self._access_token_expiration = datetime.now(timezone.utc) + timedelta(seconds=response.expires_in)
|
|
114
|
-
self._access_token = response.token
|
|
115
|
-
self.save()
|
|
116
|
-
|
|
117
|
-
def access_token_has_expired(self) -> bool:
|
|
118
|
-
return not self._access_token_expiration or self._access_token_expiration < datetime.now(
|
|
119
|
-
timezone.utc
|
|
120
|
-
) - timedelta(minutes=30)
|
|
121
|
-
|
|
122
|
-
def get_access_token(self) -> str:
|
|
123
|
-
if not self._access_token or self.access_token_has_expired():
|
|
124
|
-
if not self._refresh_token:
|
|
125
|
-
return None
|
|
126
|
-
self.refresh_access_token()
|
|
127
|
-
return self._access_token
|
|
128
|
-
|
|
129
|
-
def generate_access_token(self, expiration_duration: timedelta = None) -> GenerateAccessTokenResponse:
|
|
130
|
-
if not self._refresh_token:
|
|
131
|
-
return None
|
|
132
|
-
request = GenerateAccessTokenRequest()
|
|
133
|
-
request.refresh_token = self._refresh_token
|
|
134
|
-
request.api_version = ApiVersion.API_VERSION_V1
|
|
135
|
-
request.expiration_duration = expiration_duration or KaggleCredentials.DEFAULT_ACCESS_TOKEN_EXPIRATION
|
|
136
|
-
return self._client.users.account_client.generate_access_token(request)
|
|
137
|
-
|
|
138
|
-
def revoke_token(self, reason: str) -> None:
|
|
139
|
-
if not self._refresh_token:
|
|
140
|
-
return
|
|
141
|
-
request = ExpireApiTokenRequest()
|
|
142
|
-
request.token = self._refresh_token
|
|
143
|
-
request.reason = reason
|
|
144
|
-
self._client.users.account_client.expire_api_token(request)
|
|
145
|
-
self.delete()
|
|
146
|
-
|
|
147
|
-
def get_username(self) -> str:
|
|
148
|
-
return self._username
|