Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion kagglesdk/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.1.34"
__version__ = "0.1.35"

from kagglesdk.kaggle_client import KaggleClient
from kagglesdk.kaggle_creds import KaggleCredentials
Expand Down
160 changes: 157 additions & 3 deletions kagglesdk/benchmarks/types/benchmark_tasks_api_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -1269,11 +1269,136 @@ def harbor_git(self, harbor_git: Optional['BenchmarkTaskGitDefinition']):

class BenchmarkTaskDockerImageDefinition(KaggleObject):
r"""
TODO(bml): Setup for docker images
User-supplied Docker image task definition.

Attributes:
docker_image_url (str)
Required. Full image ref (e.g. gcr.io/project/image:tag).
description (str)
Required on new tasks; ignored on version bumps (existing description
carries over). Task description.
title (str)
Optional. Display name for the task. Defaults to the slug when omitted.
Ignored on version bumps.
env_variables (EnvVariable)
Optional. Environment variables set on the container.
secrets (UserSecret)
Optional. Create/update UserSecrets inline before running.
nested_virtualization_required (bool)
Optional. Run the container with nested virtualization enabled — set
when the image needs to launch VMs (e.g. QEMU/KVM guests) inside its
sandbox. Ignored unless the caller has the
BENCHMARKS_ALLOW_NESTED_VIRTUALIZATION feature flag.
"""

pass
def __init__(self):
self._docker_image_url = ""
self._description = None
self._title = None
self._env_variables = []
self._secrets = []
self._nested_virtualization_required = False
self._freeze()

@property
def docker_image_url(self) -> str:
"""Required. Full image ref (e.g. gcr.io/project/image:tag)."""
return self._docker_image_url

@docker_image_url.setter
def docker_image_url(self, docker_image_url: str):
if docker_image_url is None:
del self.docker_image_url
return
if not isinstance(docker_image_url, str):
raise TypeError('docker_image_url must be of type str')
self._docker_image_url = docker_image_url

@property
def description(self) -> str:
r"""
Required on new tasks; ignored on version bumps (existing description
carries over). Task description.
"""
return self._description or ""

@description.setter
def description(self, description: Optional[str]):
if description is None:
del self.description
return
if not isinstance(description, str):
raise TypeError('description must be of type str')
self._description = description

@property
def title(self) -> str:
r"""
Optional. Display name for the task. Defaults to the slug when omitted.
Ignored on version bumps.
"""
return self._title or ""

@title.setter
def title(self, title: Optional[str]):
if title is None:
del self.title
return
if not isinstance(title, str):
raise TypeError('title must be of type str')
self._title = title

@property
def env_variables(self) -> Optional[List[Optional['EnvVariable']]]:
"""Optional. Environment variables set on the container."""
return self._env_variables

@env_variables.setter
def env_variables(self, env_variables: Optional[List[Optional['EnvVariable']]]):
if env_variables is None:
del self.env_variables
return
if not isinstance(env_variables, list):
raise TypeError('env_variables must be of type list')
if not all([isinstance(t, EnvVariable) for t in env_variables]):
raise TypeError('env_variables must contain only items of type EnvVariable')
self._env_variables = env_variables

@property
def secrets(self) -> Optional[List[Optional['UserSecret']]]:
"""Optional. Create/update UserSecrets inline before running."""
return self._secrets

@secrets.setter
def secrets(self, secrets: Optional[List[Optional['UserSecret']]]):
if secrets is None:
del self.secrets
return
if not isinstance(secrets, list):
raise TypeError('secrets must be of type list')
if not all([isinstance(t, UserSecret) for t in secrets]):
raise TypeError('secrets must contain only items of type UserSecret')
self._secrets = secrets

@property
def nested_virtualization_required(self) -> bool:
r"""
Optional. Run the container with nested virtualization enabled — set
when the image needs to launch VMs (e.g. QEMU/KVM guests) inside its
sandbox. Ignored unless the caller has the
BENCHMARKS_ALLOW_NESTED_VIRTUALIZATION feature flag.
"""
return self._nested_virtualization_required

@nested_virtualization_required.setter
def nested_virtualization_required(self, nested_virtualization_required: bool):
if nested_virtualization_required is None:
del self.nested_virtualization_required
return
if not isinstance(nested_virtualization_required, bool):
raise TypeError('nested_virtualization_required must be of type bool')
self._nested_virtualization_required = nested_virtualization_required


class BenchmarkTaskGitDefinition(KaggleObject):
r"""
Expand All @@ -1290,6 +1415,9 @@ class BenchmarkTaskGitDefinition(KaggleObject):
Optional. Environment variables to expose to the Harbor session container.
secrets (UserSecret)
Optional. Create/update UserSecrets inline before running.
use_accelerator (bool)
Optional. Route the Harbor session to an L4-GPU exeunit pool. Ignored
unless the caller has the BENCHMARKS_ALLOW_USE_ACCELERATOR feature flag.
"""

def __init__(self):
Expand All @@ -1298,6 +1426,7 @@ def __init__(self):
self._subpath = ""
self._env_variables = []
self._secrets = []
self._use_accelerator = False
self._freeze()

@property
Expand Down Expand Up @@ -1374,6 +1503,23 @@ def secrets(self, secrets: Optional[List[Optional['UserSecret']]]):
raise TypeError('secrets must contain only items of type UserSecret')
self._secrets = secrets

@property
def use_accelerator(self) -> bool:
r"""
Optional. Route the Harbor session to an L4-GPU exeunit pool. Ignored
unless the caller has the BENCHMARKS_ALLOW_USE_ACCELERATOR feature flag.
"""
return self._use_accelerator

@use_accelerator.setter
def use_accelerator(self, use_accelerator: bool):
if use_accelerator is None:
del self.use_accelerator
return
if not isinstance(use_accelerator, bool):
raise TypeError('use_accelerator must be of type bool')
self._use_accelerator = use_accelerator


class BenchmarkTaskNotebookDefinition(KaggleObject):
r"""
Expand Down Expand Up @@ -1488,14 +1634,22 @@ class BenchmarkTaskNotebookDefinition(KaggleObject):
FieldMetadata("harborGit", "harbor_git", "_harbor_git", BenchmarkTaskGitDefinition, None, KaggleObjectSerializer(), optional=True),
]

BenchmarkTaskDockerImageDefinition._fields = []
BenchmarkTaskDockerImageDefinition._fields = [
FieldMetadata("dockerImageUrl", "docker_image_url", "_docker_image_url", str, "", PredefinedSerializer()),
FieldMetadata("description", "description", "_description", str, None, PredefinedSerializer(), optional=True),
FieldMetadata("title", "title", "_title", str, None, PredefinedSerializer(), optional=True),
FieldMetadata("envVariables", "env_variables", "_env_variables", EnvVariable, [], ListSerializer(KaggleObjectSerializer())),
FieldMetadata("secrets", "secrets", "_secrets", UserSecret, [], ListSerializer(KaggleObjectSerializer())),
FieldMetadata("nestedVirtualizationRequired", "nested_virtualization_required", "_nested_virtualization_required", bool, False, PredefinedSerializer()),
]

BenchmarkTaskGitDefinition._fields = [
FieldMetadata("url", "url", "_url", str, "", PredefinedSerializer()),
FieldMetadata("commitHash", "commit_hash", "_commit_hash", str, "", PredefinedSerializer()),
FieldMetadata("subpath", "subpath", "_subpath", str, "", PredefinedSerializer()),
FieldMetadata("envVariables", "env_variables", "_env_variables", EnvVariable, [], ListSerializer(KaggleObjectSerializer())),
FieldMetadata("secrets", "secrets", "_secrets", UserSecret, [], ListSerializer(KaggleObjectSerializer())),
FieldMetadata("useAccelerator", "use_accelerator", "_use_accelerator", bool, False, PredefinedSerializer()),
]

BenchmarkTaskNotebookDefinition._fields = []
Expand Down
1 change: 1 addition & 0 deletions kagglesdk/blobs/types/blob_api_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class ApiBlobType(enum.Enum):
DATASET = 1
MODEL = 2
INBOX = 3
COMPETITION_SOLUTION = 4

class ApiStartBlobUploadRequest(KaggleObject):
r"""
Expand Down
2 changes: 1 addition & 1 deletion kagglesdk/community/types/content_enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class ContentState(enum.Enum):
SYSTEM_DELETED = 6
r"""
Deleted by an admin or by a system account for moderation purposes. This
data may need to be restored in the event of a successfull user appeal, and
data may need to be restored in the event of a successful user appeal, and
should not be wiped out.
"""
PENDING_PERMANENT_DELETE = 7
Expand Down
14 changes: 13 additions & 1 deletion kagglesdk/competitions/services/competition_api_service.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from kagglesdk.common.types.file_download import FileDownload
from kagglesdk.common.types.http_redirect import HttpRedirect
from kagglesdk.competitions.types.competition_api_service import ApiCompetition, ApiCompetitionPage, ApiCompetitionSolutionStatus, ApiCreateCodeSubmissionRequest, ApiCreateCodeSubmissionResponse, ApiCreateCompetitionDataRequest, ApiCreateCompetitionDataResponse, ApiCreateCompetitionPageRequest, ApiCreateCompetitionRequest, ApiCreateCompetitionResponse, ApiCreateCompetitionSampleSubmissionRequest, ApiCreateCompetitionSolutionRequest, ApiCreateSubmissionRequest, ApiCreateSubmissionResponse, ApiDeleteCompetitionPageRequest, ApiDownloadDataFileRequest, ApiDownloadDataFilesRequest, ApiDownloadLeaderboardRequest, ApiGetCompetitionDataFilesSummaryRequest, ApiGetCompetitionRequest, ApiGetCompetitionSettingsRequest, ApiGetCompetitionSolutionStatusRequest, ApiGetEpisodeAgentLogsRequest, ApiGetEpisodeReplayRequest, ApiGetLeaderboardRequest, ApiGetLeaderboardResponse, ApiGetSubmissionRequest, ApiLaunchCompetitionRequest, ApiListCompetitionHostsRequest, ApiListCompetitionHostsResponse, ApiListCompetitionPagesRequest, ApiListCompetitionPagesResponse, ApiListCompetitionsRequest, ApiListCompetitionsResponse, ApiListCompetitionTopicsRequest, ApiListCompetitionTopicsResponse, ApiListDataFilesRequest, ApiListDataFilesResponse, ApiListDataTreeFilesRequest, ApiListSubmissionEpisodesRequest, ApiListSubmissionEpisodesResponse, ApiListSubmissionsRequest, ApiListSubmissionsResponse, ApiListTeamPublicSubmissionsRequest, ApiListTeamPublicSubmissionsResponse, ApiListTopicMessagesRequest, ApiListTopicMessagesResponse, ApiStartSubmissionUploadRequest, ApiStartSubmissionUploadResponse, ApiSubmission, ApiUpdateCompetitionPageRequest, ApiUpdateCompetitionSettingsRequest
from kagglesdk.competitions.types.competition_api_service import ApiCompetition, ApiCompetitionPage, ApiCompetitionSolutionStatus, ApiCreateCodeSubmissionRequest, ApiCreateCodeSubmissionResponse, ApiCreateCompetitionDataRequest, ApiCreateCompetitionDataResponse, ApiCreateCompetitionPageRequest, ApiCreateCompetitionRequest, ApiCreateCompetitionResponse, ApiCreateCompetitionSampleSubmissionRequest, ApiCreateCompetitionSolutionRequest, ApiCreateSubmissionRequest, ApiCreateSubmissionResponse, ApiDeleteCompetitionPageRequest, ApiDownloadDataFileRequest, ApiDownloadDataFilesRequest, ApiDownloadLeaderboardRequest, ApiGetCompetitionDataFilesSummaryRequest, ApiGetCompetitionRequest, ApiGetCompetitionSettingsRequest, ApiGetCompetitionSolutionStatusRequest, ApiGetEpisodeAgentLogsRequest, ApiGetEpisodeReplayRequest, ApiGetLeaderboardRequest, ApiGetLeaderboardResponse, ApiGetSubmissionLimitsRequest, ApiGetSubmissionRequest, ApiLaunchCompetitionRequest, ApiListCompetitionHostsRequest, ApiListCompetitionHostsResponse, ApiListCompetitionPagesRequest, ApiListCompetitionPagesResponse, ApiListCompetitionsRequest, ApiListCompetitionsResponse, ApiListCompetitionTopicsRequest, ApiListCompetitionTopicsResponse, ApiListDataFilesRequest, ApiListDataFilesResponse, ApiListDataTreeFilesRequest, ApiListSubmissionEpisodesRequest, ApiListSubmissionEpisodesResponse, ApiListSubmissionsRequest, ApiListSubmissionsResponse, ApiListTeamPublicSubmissionsRequest, ApiListTeamPublicSubmissionsResponse, ApiListTopicMessagesRequest, ApiListTopicMessagesResponse, ApiStartSubmissionUploadRequest, ApiStartSubmissionUploadResponse, ApiSubmission, ApiSubmissionLimits, ApiUpdateCompetitionPageRequest, ApiUpdateCompetitionSettingsRequest
from kagglesdk.competitions.types.host_service import CompetitionSettings
from kagglesdk.datasets.databundles.types.databundle_api_types import ApiDirectoryContent, ApiFilesSummary
from kagglesdk.kaggle_http_client import KaggleHttpClient
Expand Down Expand Up @@ -142,6 +142,18 @@ def get_submission(self, request: ApiGetSubmissionRequest = None) -> ApiSubmissi

return self._client.call("competitions.CompetitionApiService", "GetSubmission", request, ApiSubmission)

def get_submission_limits(self, request: ApiGetSubmissionLimitsRequest = None) -> ApiSubmissionLimits:
r"""
Args:
request (ApiGetSubmissionLimitsRequest):
The request object; initialized to empty instance if not specified.
"""

if request is None:
request = ApiGetSubmissionLimitsRequest()

return self._client.call("competitions.CompetitionApiService", "GetSubmissionLimits", request, ApiSubmissionLimits)

def start_submission_upload(self, request: ApiStartSubmissionUploadRequest = None) -> ApiStartSubmissionUploadResponse:
r"""
Args:
Expand Down
35 changes: 12 additions & 23 deletions kagglesdk/competitions/services/hackathon_service.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,19 @@
from kagglesdk.competitions.types.hackathon_service import (
ListHackathonTracksRequest,
ListHackathonTracksResponse,
)
from kagglesdk.competitions.types.hackathon_service import ExportEnrichedHackathonWriteUpsCsvRequest, ExportEnrichedHackathonWriteUpsCsvResponse
from kagglesdk.kaggle_http_client import KaggleHttpClient


class HackathonClient(object):

def __init__(self, client: KaggleHttpClient):
self._client = client
def __init__(self, client: KaggleHttpClient):
self._client = client

def list_hackathon_tracks(
self, request: ListHackathonTracksRequest = None
) -> ListHackathonTracksResponse:
r"""
Args:
request (ListHackathonTracksRequest):
The request object; initialized to empty instance if not specified.
"""
def export_enriched_hackathon_write_ups_csv(self, request: ExportEnrichedHackathonWriteUpsCsvRequest = None) -> ExportEnrichedHackathonWriteUpsCsvResponse:
r"""
Args:
request (ExportEnrichedHackathonWriteUpsCsvRequest):
The request object; initialized to empty instance if not specified.
"""

if request is None:
request = ListHackathonTracksRequest()
if request is None:
request = ExportEnrichedHackathonWriteUpsCsvRequest()

return self._client.call(
"competitions.HackathonService",
"ListHackathonTracks",
request,
ListHackathonTracksResponse,
)
return self._client.call("competitions.HackathonService", "ExportEnrichedHackathonWriteUpsCsv", request, ExportEnrichedHackathonWriteUpsCsvResponse)
Loading