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.
Files changed (89) hide show
  1. kaggle/LICENSE +201 -0
  2. kaggle/__init__.py +6 -0
  3. kaggle/api/__init__.py +0 -0
  4. kaggle/api/kaggle_api.py +614 -0
  5. kaggle/api/kaggle_api_extended.py +4657 -0
  6. kaggle/cli.py +1606 -0
  7. kaggle/configuration.py +206 -0
  8. kaggle/models/__init__.py +0 -0
  9. kaggle/models/api_blob_type.py +4 -0
  10. kaggle/models/dataset_column.py +228 -0
  11. kaggle/models/dataset_new_request.py +385 -0
  12. kaggle/models/dataset_new_version_request.py +287 -0
  13. kaggle/models/dataset_update_settings_request.py +310 -0
  14. kaggle/models/kaggle_models_extended.py +276 -0
  15. kaggle/models/kernel_push_request.py +556 -0
  16. kaggle/models/model_instance_new_version_request.py +145 -0
  17. kaggle/models/model_instance_update_request.py +351 -0
  18. kaggle/models/model_new_instance_request.py +417 -0
  19. kaggle/models/model_new_request.py +314 -0
  20. kaggle/models/model_update_request.py +282 -0
  21. kaggle/models/start_blob_upload_request.py +232 -0
  22. kaggle/models/start_blob_upload_response.py +137 -0
  23. kaggle/models/upload_file.py +169 -0
  24. kaggle/test/__init__.py +0 -0
  25. kaggle/test/test_authenticate.py +43 -0
  26. kaggle-1.7.3b1.dist-info/METADATA +348 -0
  27. kaggle-1.7.3b1.dist-info/RECORD +89 -0
  28. kaggle-1.7.3b1.dist-info/WHEEL +4 -0
  29. kaggle-1.7.3b1.dist-info/entry_points.txt +2 -0
  30. kaggle-1.7.3b1.dist-info/licenses/LICENSE.txt +201 -0
  31. kagglesdk/LICENSE +201 -0
  32. kagglesdk/__init__.py +2 -0
  33. kagglesdk/admin/__init__.py +0 -0
  34. kagglesdk/admin/services/__init__.py +0 -0
  35. kagglesdk/admin/services/inbox_file_service.py +22 -0
  36. kagglesdk/admin/types/__init__.py +0 -0
  37. kagglesdk/admin/types/inbox_file_service.py +74 -0
  38. kagglesdk/blobs/__init__.py +0 -0
  39. kagglesdk/blobs/services/__init__.py +0 -0
  40. kagglesdk/blobs/services/blob_api_service.py +25 -0
  41. kagglesdk/blobs/types/__init__.py +0 -0
  42. kagglesdk/blobs/types/blob_api_service.py +177 -0
  43. kagglesdk/common/__init__.py +0 -0
  44. kagglesdk/common/types/__init__.py +0 -0
  45. kagglesdk/common/types/file_download.py +102 -0
  46. kagglesdk/common/types/http_redirect.py +105 -0
  47. kagglesdk/competitions/__init__.py +0 -0
  48. kagglesdk/competitions/services/__init__.py +0 -0
  49. kagglesdk/competitions/services/competition_api_service.py +129 -0
  50. kagglesdk/competitions/types/__init__.py +0 -0
  51. kagglesdk/competitions/types/competition_api_service.py +1874 -0
  52. kagglesdk/competitions/types/competition_enums.py +53 -0
  53. kagglesdk/competitions/types/submission_status.py +9 -0
  54. kagglesdk/datasets/__init__.py +0 -0
  55. kagglesdk/datasets/services/__init__.py +0 -0
  56. kagglesdk/datasets/services/dataset_api_service.py +170 -0
  57. kagglesdk/datasets/types/__init__.py +0 -0
  58. kagglesdk/datasets/types/dataset_api_service.py +2777 -0
  59. kagglesdk/datasets/types/dataset_enums.py +82 -0
  60. kagglesdk/datasets/types/dataset_types.py +646 -0
  61. kagglesdk/education/__init__.py +0 -0
  62. kagglesdk/education/services/__init__.py +0 -0
  63. kagglesdk/education/services/education_api_service.py +19 -0
  64. kagglesdk/education/types/__init__.py +0 -0
  65. kagglesdk/education/types/education_api_service.py +248 -0
  66. kagglesdk/education/types/education_service.py +139 -0
  67. kagglesdk/kaggle_client.py +66 -0
  68. kagglesdk/kaggle_env.py +42 -0
  69. kagglesdk/kaggle_http_client.py +316 -0
  70. kagglesdk/kaggle_object.py +293 -0
  71. kagglesdk/kernels/__init__.py +0 -0
  72. kagglesdk/kernels/services/__init__.py +0 -0
  73. kagglesdk/kernels/services/kernels_api_service.py +109 -0
  74. kagglesdk/kernels/types/__init__.py +0 -0
  75. kagglesdk/kernels/types/kernels_api_service.py +1951 -0
  76. kagglesdk/kernels/types/kernels_enums.py +33 -0
  77. kagglesdk/models/__init__.py +0 -0
  78. kagglesdk/models/services/__init__.py +0 -0
  79. kagglesdk/models/services/model_api_service.py +255 -0
  80. kagglesdk/models/services/model_service.py +19 -0
  81. kagglesdk/models/types/__init__.py +0 -0
  82. kagglesdk/models/types/model_api_service.py +3719 -0
  83. kagglesdk/models/types/model_enums.py +60 -0
  84. kagglesdk/models/types/model_service.py +275 -0
  85. kagglesdk/models/types/model_types.py +286 -0
  86. kagglesdk/test/test_client.py +45 -0
  87. kagglesdk/users/__init__.py +0 -0
  88. kagglesdk/users/types/__init__.py +0 -0
  89. kagglesdk/users/types/users_enums.py +22 -0
@@ -0,0 +1,248 @@
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: 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
+
@@ -0,0 +1,139 @@
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
+
@@ -0,0 +1,66 @@
1
+ from kagglesdk.kernels.services.kernels_api_service import KernelsApiClient
2
+ from kagglesdk.blobs.services.blob_api_service import BlobApiClient
3
+ from kagglesdk.education.services.education_api_service import EducationApiClient
4
+ from kagglesdk.models.services.model_api_service import ModelApiClient
5
+ from kagglesdk.models.services.model_service import ModelClient
6
+ from kagglesdk.competitions.services.competition_api_service import CompetitionApiClient
7
+ from kagglesdk.datasets.services.dataset_api_service import DatasetApiClient
8
+ from kagglesdk.admin.services.inbox_file_service import InboxFileClient
9
+ from kagglesdk.kaggle_env import KaggleEnv
10
+ from kagglesdk.kaggle_http_client import KaggleHttpClient
11
+
12
+
13
+ class KaggleClient(object):
14
+ class Kernels(object):
15
+ def __init__(self, http_client: KaggleHttpClient):
16
+ self.kernels_api_client = KernelsApiClient(http_client)
17
+
18
+ class Blobs(object):
19
+ def __init__(self, http_client: KaggleHttpClient):
20
+ self.blob_api_client = BlobApiClient(http_client)
21
+
22
+ class Education(object):
23
+ def __init__(self, http_client: KaggleHttpClient):
24
+ self.education_api_client = EducationApiClient(http_client)
25
+
26
+ class Models(object):
27
+ def __init__(self, http_client: KaggleHttpClient):
28
+ self.model_api_client = ModelApiClient(http_client)
29
+ self.model_client = ModelClient(http_client)
30
+
31
+ class Competitions(object):
32
+ def __init__(self, http_client: KaggleHttpClient):
33
+ self.competition_api_client = CompetitionApiClient(http_client)
34
+
35
+ class Datasets(object):
36
+ def __init__(self, http_client: KaggleHttpClient):
37
+ self.dataset_api_client = DatasetApiClient(http_client)
38
+
39
+ class Admin(object):
40
+ def __init__(self, http_client: KaggleHttpClient):
41
+ self.inbox_file_client = InboxFileClient(http_client)
42
+
43
+ def __init__(self, env: KaggleEnv = None, verbose: bool = False, username: str = None, password: str = None):
44
+ self._http_client = http_client = KaggleHttpClient(env, verbose, self._renew_iap_token, username=username, password=password)
45
+ self.kernels = KaggleClient.Kernels(http_client)
46
+ self.blobs = KaggleClient.Blobs(http_client)
47
+ self.education = KaggleClient.Education(http_client)
48
+ self.models = KaggleClient.Models(http_client)
49
+ self.competitions = KaggleClient.Competitions(http_client)
50
+ self.datasets = KaggleClient.Datasets(http_client)
51
+ self.admin = KaggleClient.Admin(http_client)
52
+ self.username = username
53
+ self.password = password
54
+
55
+ def http_client(self):
56
+ return self._http_client
57
+
58
+ def _renew_iap_token(self):
59
+ return self.admin.admin_client.renew_iap_token()
60
+
61
+ def __enter__(self):
62
+ self._http_client.__enter__()
63
+ return self
64
+
65
+ def __exit__(self, exc_type, exc_value, tb):
66
+ self._http_client.__exit__(exc_type, exc_value, tb)
@@ -0,0 +1,42 @@
1
+ import os
2
+ from enum import Enum
3
+
4
+
5
+ class KaggleEnv(Enum):
6
+ LOCAL = 0 # localhost
7
+ STAGING = 1 # staging.kaggle.com
8
+ ADMIN = 2 # admin.kaggle.com
9
+ QA = 3 # qa.kaggle.com
10
+ # Direct prod access is not allowed to have IAP protection during testing, but we support basic auth.
11
+ PROD = 4 # www.kaggle.com
12
+
13
+
14
+ _env_to_endpoint = {
15
+ KaggleEnv.LOCAL: 'http://localhost',
16
+ KaggleEnv.STAGING: 'https://staging.kaggle.com',
17
+ KaggleEnv.ADMIN: 'https://admin.kaggle.com',
18
+ KaggleEnv.QA: 'https://qa.kaggle.com',
19
+ # See the comment above in KaggleEnv enum.
20
+ KaggleEnv.PROD: "https://www.kaggle.com",
21
+ }
22
+
23
+
24
+ def get_endpoint(env: KaggleEnv):
25
+ return _env_to_endpoint[env]
26
+
27
+
28
+ def get_env():
29
+ env = os.getenv('KAGGLE_API_ENVIRONMENT')
30
+ if env is None:
31
+ raise Exception('Must specify KaggleEnv or set KAGGLE_API_ENVIRONMENT env var')
32
+ if env == 'LOCALHOST':
33
+ return KaggleEnv.LOCAL
34
+ if env == 'ADMIN':
35
+ return KaggleEnv.ADMIN
36
+ if env == 'STAGING':
37
+ return KaggleEnv.STAGING
38
+ if env == 'QA':
39
+ return KaggleEnv.QA
40
+ if env == 'PROD':
41
+ return KaggleEnv.PROD
42
+ raise Exception(f'Unrecognized value in KAGGLE_API_ENVIRONMENT: "{env}"')