Skip to content

Commit dfdc292

Browse files
committed
Update kagglesdk
1 parent 9ed4d9b commit dfdc292

28 files changed

+1820
-42
lines changed

kagglesdk/datasets/types/dataset_api_service.py

+16
Original file line numberDiff line numberDiff line change
@@ -1355,6 +1355,7 @@ class ApiDownloadDatasetRequest(KaggleObject):
13551355
file_name (str)
13561356
dataset_version_number (int)
13571357
raw (bool)
1358+
hash_link (str)
13581359
"""
13591360

13601361
def __init__(self):
@@ -1363,6 +1364,7 @@ def __init__(self):
13631364
self._file_name = None
13641365
self._dataset_version_number = None
13651366
self._raw = False
1367+
self._hash_link = None
13661368
self._freeze()
13671369

13681370
@property
@@ -1430,6 +1432,19 @@ def raw(self, raw: bool):
14301432
raise TypeError('raw must be of type bool')
14311433
self._raw = raw
14321434

1435+
@property
1436+
def hash_link(self) -> str:
1437+
return self._hash_link or ""
1438+
1439+
@hash_link.setter
1440+
def hash_link(self, hash_link: str):
1441+
if hash_link is None:
1442+
del self.hash_link
1443+
return
1444+
if not isinstance(hash_link, str):
1445+
raise TypeError('hash_link must be of type str')
1446+
self._hash_link = hash_link
1447+
14331448
def endpoint(self):
14341449
if self.file_name:
14351450
path = '/api/v1/datasets/download/{owner_slug}/{dataset_slug}/{file_name}'
@@ -2668,6 +2683,7 @@ def files(self, files: Optional[List[Optional['ApiDatasetNewFile']]]):
26682683
FieldMetadata("fileName", "file_name", "_file_name", str, None, PredefinedSerializer(), optional=True),
26692684
FieldMetadata("datasetVersionNumber", "dataset_version_number", "_dataset_version_number", int, None, PredefinedSerializer(), optional=True),
26702685
FieldMetadata("raw", "raw", "_raw", bool, False, PredefinedSerializer()),
2686+
FieldMetadata("hashLink", "hash_link", "_hash_link", str, None, PredefinedSerializer(), optional=True),
26712687
]
26722688

26732689
ApiGetDatasetMetadataRequest._fields = [

kagglesdk/kaggle_client.py

+12
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from kagglesdk.competitions.services.competition_api_service import CompetitionApiClient
77
from kagglesdk.datasets.services.dataset_api_service import DatasetApiClient
88
from kagglesdk.admin.services.inbox_file_service import InboxFileClient
9+
from kagglesdk.security.services.oauth_service import OAuthClient
10+
from kagglesdk.users.services.account_service import AccountClient
911
from kagglesdk.kaggle_env import KaggleEnv
1012
from kagglesdk.kaggle_http_client import KaggleHttpClient
1113

@@ -40,6 +42,14 @@ class Admin(object):
4042
def __init__(self, http_client: KaggleHttpClient):
4143
self.inbox_file_client = InboxFileClient(http_client)
4244

45+
class Security(object):
46+
def __init__(self, http_client: KaggleHttpClient):
47+
self.oauth_client = OAuthClient(http_client)
48+
49+
class Users(object):
50+
def __init__(self, http_client: KaggleHttpClient):
51+
self.account_client = AccountClient(http_client)
52+
4353
def __init__(self, env: KaggleEnv = None, verbose: bool = False, username: str = None, password: str = None):
4454
self._http_client = http_client = KaggleHttpClient(env, verbose, self._renew_iap_token, username=username, password=password)
4555
self.kernels = KaggleClient.Kernels(http_client)
@@ -49,6 +59,8 @@ def __init__(self, env: KaggleEnv = None, verbose: bool = False, username: str =
4959
self.competitions = KaggleClient.Competitions(http_client)
5060
self.datasets = KaggleClient.Datasets(http_client)
5161
self.admin = KaggleClient.Admin(http_client)
62+
self.security = KaggleClient.Security(http_client)
63+
self.users = KaggleClient.Users(http_client)
5264
self.username = username
5365
self.password = password
5466

kagglesdk/kernels/types/kernels_api_service.py

+24
Original file line numberDiff line numberDiff line change
@@ -1219,6 +1219,10 @@ class ApiSaveKernelRequest(KaggleObject):
12191219
session_timeout_seconds (int)
12201220
If specified, terminate the kernel session after this many seconds of
12211221
runtime, which must be lower than the global maximum.
1222+
priority (int)
1223+
Sets the execution priority of this kernel session request when queued,
1224+
lower is better (10 will get run before 100).
1225+
Only allowed or certain clients.
12221226
"""
12231227

12241228
def __init__(self):
@@ -1239,6 +1243,7 @@ def __init__(self):
12391243
self._docker_image_pinning_type = None
12401244
self._model_data_sources = []
12411245
self._session_timeout_seconds = None
1246+
self._priority = None
12421247
self._freeze()
12431248

12441249
@property
@@ -1517,6 +1522,24 @@ def session_timeout_seconds(self, session_timeout_seconds: int):
15171522
raise TypeError('session_timeout_seconds must be of type int')
15181523
self._session_timeout_seconds = session_timeout_seconds
15191524

1525+
@property
1526+
def priority(self) -> int:
1527+
r"""
1528+
Sets the execution priority of this kernel session request when queued,
1529+
lower is better (10 will get run before 100).
1530+
Only allowed or certain clients.
1531+
"""
1532+
return self._priority or 0
1533+
1534+
@priority.setter
1535+
def priority(self, priority: int):
1536+
if priority is None:
1537+
del self.priority
1538+
return
1539+
if not isinstance(priority, int):
1540+
raise TypeError('priority must be of type int')
1541+
self._priority = priority
1542+
15201543
def endpoint(self):
15211544
path = '/api/v1/kernels/push'
15221545
return path.format_map(self.to_field_map(self))
@@ -1924,6 +1947,7 @@ def creation_date(self, creation_date: str):
19241947
FieldMetadata("dockerImagePinningType", "docker_image_pinning_type", "_docker_image_pinning_type", str, None, PredefinedSerializer(), optional=True),
19251948
FieldMetadata("modelDataSources", "model_data_sources", "_model_data_sources", str, [], ListSerializer(PredefinedSerializer())),
19261949
FieldMetadata("sessionTimeoutSeconds", "session_timeout_seconds", "_session_timeout_seconds", int, None, PredefinedSerializer(), optional=True),
1950+
FieldMetadata("priority", "priority", "_priority", int, None, PredefinedSerializer(), optional=True),
19271951
]
19281952

19291953
ApiSaveKernelResponse._fields = [

kagglesdk/models/services/model_api_service.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from kagglesdk.common.types.http_redirect import HttpRedirect
22
from kagglesdk.kaggle_http_client import KaggleHttpClient
3-
from kagglesdk.models.types.model_api_service import ApiCreateModelInstanceRequest, ApiCreateModelInstanceVersionRequest, ApiCreateModelRequest, ApiCreateModelResponse, ApiDeleteModelInstanceRequest, ApiDeleteModelInstanceVersionRequest, ApiDeleteModelRequest, ApiDeleteModelResponse, ApiDownloadModelInstanceVersionRequest, ApiGetModelInstanceRequest, ApiGetModelRequest, ApiListModelGatingUserConsentsRequest, ApiListModelGatingUserConsentsResponse, ApiListModelInstanceVersionFilesRequest, ApiListModelInstanceVersionFilesResponse, ApiListModelsRequest, ApiListModelsResponse, ApiModel, ApiModelInstance, ApiReviewGatingUserConsentRequest, ApiUpdateModelInstanceRequest, ApiUpdateModelRequest, ApiUpdateModelResponse, ApiUploadModelFileRequest, ApiUploadModelFileResponse, CreateModelSigningTokenRequest, CreateModelSigningTokenResponse, KeysRequest, KeysResponse, WellKnowEndpointRequest, WellKnowEndpointResponse
3+
from kagglesdk.models.types.model_api_service import ApiCreateModelInstanceRequest, ApiCreateModelInstanceVersionRequest, ApiCreateModelRequest, ApiCreateModelResponse, ApiDeleteModelInstanceRequest, ApiDeleteModelInstanceVersionRequest, ApiDeleteModelRequest, ApiDeleteModelResponse, ApiDownloadModelInstanceVersionRequest, ApiGetModelInstanceRequest, ApiGetModelRequest, ApiListModelGatingUserConsentsRequest, ApiListModelGatingUserConsentsResponse, ApiListModelInstanceVersionFilesRequest, ApiListModelInstanceVersionFilesResponse, ApiListModelsRequest, ApiListModelsResponse, ApiModel, ApiModelInstance, ApiReviewModelGatingUserConsentRequest, ApiUpdateModelInstanceRequest, ApiUpdateModelRequest, ApiUpdateModelResponse, ApiUploadModelFileRequest, ApiUploadModelFileResponse, CreateModelSigningTokenRequest, CreateModelSigningTokenResponse, KeysRequest, KeysResponse, WellKnowEndpointRequest, WellKnowEndpointResponse
44

55
class ModelApiClient(object):
66

@@ -240,16 +240,17 @@ def list_model_gating_user_consents(self, request: ApiListModelGatingUserConsent
240240

241241
return self._client.call("models.ModelApiService", "ApiListModelGatingUserConsents", request, ApiListModelGatingUserConsentsResponse)
242242

243-
def review_gating_user_consent(self, request: ApiReviewGatingUserConsentRequest = None):
243+
def review_model_gating_user_consent(self, request: ApiReviewModelGatingUserConsentRequest = None):
244244
r"""
245-
Review the user consents for an agreement.
245+
Review the user consents for a gated model, under the model's current
246+
active agreement.
246247
247248
Args:
248-
request (ApiReviewGatingUserConsentRequest):
249+
request (ApiReviewModelGatingUserConsentRequest):
249250
The request object; initialized to empty instance if not specified.
250251
"""
251252

252253
if request is None:
253-
request = ApiReviewGatingUserConsentRequest()
254+
request = ApiReviewModelGatingUserConsentRequest()
254255

255-
self._client.call("models.ModelApiService", "ApiReviewGatingUserConsent", request, None)
256+
self._client.call("models.ModelApiService", "ApiReviewModelGatingUserConsent", request, None)

kagglesdk/models/types/model_api_service.py

+31-15
Original file line numberDiff line numberDiff line change
@@ -2226,34 +2226,49 @@ def total_uncompressed_bytes(self, total_uncompressed_bytes: int):
22262226
self._total_uncompressed_bytes = total_uncompressed_bytes
22272227

22282228

2229-
class ApiReviewGatingUserConsentRequest(KaggleObject):
2229+
class ApiReviewModelGatingUserConsentRequest(KaggleObject):
22302230
r"""
22312231
Attributes:
2232-
agreement_id (int)
2232+
owner_slug (str)
2233+
model_slug (str)
22332234
user_name (str)
22342235
review_status (GatingAgreementRequestsReviewStatus)
22352236
publisher_notes (str)
22362237
"""
22372238

22382239
def __init__(self):
2239-
self._agreement_id = 0
2240+
self._owner_slug = ""
2241+
self._model_slug = ""
22402242
self._user_name = ""
22412243
self._review_status = GatingAgreementRequestsReviewStatus.GATING_AGREEMENT_REQUESTS_REVIEW_STATUS_UNSPECIFIED
22422244
self._publisher_notes = None
22432245
self._freeze()
22442246

22452247
@property
2246-
def agreement_id(self) -> int:
2247-
return self._agreement_id
2248+
def owner_slug(self) -> str:
2249+
return self._owner_slug
22482250

2249-
@agreement_id.setter
2250-
def agreement_id(self, agreement_id: int):
2251-
if agreement_id is None:
2252-
del self.agreement_id
2251+
@owner_slug.setter
2252+
def owner_slug(self, owner_slug: str):
2253+
if owner_slug is None:
2254+
del self.owner_slug
22532255
return
2254-
if not isinstance(agreement_id, int):
2255-
raise TypeError('agreement_id must be of type int')
2256-
self._agreement_id = agreement_id
2256+
if not isinstance(owner_slug, str):
2257+
raise TypeError('owner_slug must be of type str')
2258+
self._owner_slug = owner_slug
2259+
2260+
@property
2261+
def model_slug(self) -> str:
2262+
return self._model_slug
2263+
2264+
@model_slug.setter
2265+
def model_slug(self, model_slug: str):
2266+
if model_slug is None:
2267+
del self.model_slug
2268+
return
2269+
if not isinstance(model_slug, str):
2270+
raise TypeError('model_slug must be of type str')
2271+
self._model_slug = model_slug
22572272

22582273
@property
22592274
def user_name(self) -> str:
@@ -2295,7 +2310,7 @@ def publisher_notes(self, publisher_notes: str):
22952310
self._publisher_notes = publisher_notes
22962311

22972312
def endpoint(self):
2298-
path = '/api/v1/gating/{agreement_id}/user-consent/review'
2313+
path = '/api/v1/models/{owner_slug}/{model_slug}/user-consents/review'
22992314
return path.format_map(self.to_field_map(self))
23002315

23012316

@@ -3599,8 +3614,9 @@ def e(self, e: str):
35993614
FieldMetadata("totalUncompressedBytes", "total_uncompressed_bytes", "_total_uncompressed_bytes", int, 0, PredefinedSerializer()),
36003615
]
36013616

3602-
ApiReviewGatingUserConsentRequest._fields = [
3603-
FieldMetadata("agreementId", "agreement_id", "_agreement_id", int, 0, PredefinedSerializer()),
3617+
ApiReviewModelGatingUserConsentRequest._fields = [
3618+
FieldMetadata("ownerSlug", "owner_slug", "_owner_slug", str, "", PredefinedSerializer()),
3619+
FieldMetadata("modelSlug", "model_slug", "_model_slug", str, "", PredefinedSerializer()),
36043620
FieldMetadata("userName", "user_name", "_user_name", str, "", PredefinedSerializer()),
36053621
FieldMetadata("reviewStatus", "review_status", "_review_status", GatingAgreementRequestsReviewStatus, GatingAgreementRequestsReviewStatus.GATING_AGREEMENT_REQUESTS_REVIEW_STATUS_UNSPECIFIED, EnumSerializer()),
36063622
FieldMetadata("publisherNotes", "publisher_notes", "_publisher_notes", str, None, PredefinedSerializer(), optional=True),

kagglesdk/security/__init__.py

Whitespace-only changes.

kagglesdk/security/services/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from kagglesdk.common.types.http_redirect import HttpRedirect
2+
from kagglesdk.kaggle_http_client import KaggleHttpClient
3+
from kagglesdk.security.types.oauth_service import ExchangeOAuthTokenRequest, ExchangeOAuthTokenResponse, StartOAuthFlowRequest
4+
5+
class OAuthClient(object):
6+
7+
def __init__(self, client: KaggleHttpClient):
8+
self._client = client
9+
10+
def start_oauth_flow(self, request: StartOAuthFlowRequest = None) -> HttpRedirect:
11+
r"""
12+
Args:
13+
request (StartOAuthFlowRequest):
14+
The request object; initialized to empty instance if not specified.
15+
"""
16+
17+
if request is None:
18+
request = StartOAuthFlowRequest()
19+
20+
return self._client.call("security.OAuthService", "StartOAuthFlow", request, HttpRedirect)
21+
22+
def exchange_oauth_token(self, request: ExchangeOAuthTokenRequest = None) -> ExchangeOAuthTokenResponse:
23+
r"""
24+
Args:
25+
request (ExchangeOAuthTokenRequest):
26+
The request object; initialized to empty instance if not specified.
27+
"""
28+
29+
if request is None:
30+
request = ExchangeOAuthTokenRequest()
31+
32+
return self._client.call("security.OAuthService", "ExchangeOAuthToken", request, ExchangeOAuthTokenResponse)

kagglesdk/security/types/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)