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.18"
__version__ = "0.1.19"

from kagglesdk.kaggle_client import KaggleClient
from kagglesdk.kaggle_creds import KaggleCredentials
Expand Down
9 changes: 9 additions & 0 deletions kagglesdk/benchmarks/types/benchmark_enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@ class BenchmarkTaskVersionCreationState(enum.Enum):
BENCHMARK_TASK_VERSION_CREATION_STATE_RUNNING = 2
BENCHMARK_TASK_VERSION_CREATION_STATE_COMPLETED = 3
BENCHMARK_TASK_VERSION_CREATION_STATE_ERRORED = 4
BENCHMARK_TASK_VERSION_CREATION_STATE_KERNEL_WITHOUT_RUN = 5

class Modality(enum.Enum):
"""Modality types supported by a benchmark model version."""
MODALITY_UNSPECIFIED = 0
MODALITY_TEXT = 1
MODALITY_IMAGE = 2
MODALITY_VIDEO = 3
MODALITY_AUDIO = 4

class BenchmarkTaskRunState(enum.Enum):
BENCHMARK_TASK_RUN_STATE_UNSPECIFIED = 0
Expand Down
58 changes: 25 additions & 33 deletions kagglesdk/benchmarks/types/benchmark_types.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from datetime import datetime
from kagglesdk.benchmarks.types.benchmark_enums import BenchmarkModelImportanceLevel
from kagglesdk.benchmarks.types.benchmark_enums import BenchmarkModelImportanceLevel, Modality
from kagglesdk.kaggle_object import *
from kagglesdk.licenses.types.licenses_types import License
from kagglesdk.users.types.legacy_organizations_service import OrganizationCard
Expand Down Expand Up @@ -251,14 +251,10 @@ class BenchmarkModelVersion(KaggleObject):
license (License)
importance_level (BenchmarkModelImportanceLevel)
Whether this model version is run on Kaggle-maintained benchmarks
input_modalities (str)
Comma-separated input modalities supported by this model version.
Valid values: 'text', 'image', 'video', 'audio'.
Example: 'text,image'
output_modalities (str)
Comma-separated output modalities supported by this model version.
Valid values: 'text', 'image', 'video', 'audio'.
Example: 'text,image'
input_modalities (Modality)
Input modalities supported by this model version.
output_modalities (Modality)
Output modalities supported by this model version.
"""

def __init__(self):
Expand All @@ -277,8 +273,8 @@ def __init__(self):
self._name = None
self._license = None
self._importance_level = None
self._input_modalities = None
self._output_modalities = None
self._input_modalities = []
self._output_modalities = []
self._freeze()

@property
Expand Down Expand Up @@ -503,39 +499,35 @@ def importance_level(self, importance_level: Optional['BenchmarkModelImportanceL
self._importance_level = importance_level

@property
def input_modalities(self) -> str:
r"""
Comma-separated input modalities supported by this model version.
Valid values: 'text', 'image', 'video', 'audio'.
Example: 'text,image'
"""
return self._input_modalities or ""
def input_modalities(self) -> Optional[List['Modality']]:
"""Input modalities supported by this model version."""
return self._input_modalities

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

@property
def output_modalities(self) -> str:
r"""
Comma-separated output modalities supported by this model version.
Valid values: 'text', 'image', 'video', 'audio'.
Example: 'text,image'
"""
return self._output_modalities or ""
def output_modalities(self) -> Optional[List['Modality']]:
"""Output modalities supported by this model version."""
return self._output_modalities

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


Expand Down Expand Up @@ -846,8 +838,8 @@ def minus(self, minus: float):
FieldMetadata("name", "name", "_name", str, None, PredefinedSerializer(), optional=True),
FieldMetadata("license", "license", "_license", License, None, KaggleObjectSerializer()),
FieldMetadata("importanceLevel", "importance_level", "_importance_level", BenchmarkModelImportanceLevel, None, EnumSerializer(), optional=True),
FieldMetadata("inputModalities", "input_modalities", "_input_modalities", str, None, PredefinedSerializer(), optional=True),
FieldMetadata("outputModalities", "output_modalities", "_output_modalities", str, None, PredefinedSerializer(), optional=True),
FieldMetadata("inputModalities", "input_modalities", "_input_modalities", Modality, [], ListSerializer(EnumSerializer())),
FieldMetadata("outputModalities", "output_modalities", "_output_modalities", Modality, [], ListSerializer(EnumSerializer())),
]

BenchmarkResult._fields = [
Expand Down
63 changes: 62 additions & 1 deletion kagglesdk/competitions/services/competition_api_service.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
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, ApiCreateCodeSubmissionRequest, ApiCreateCodeSubmissionResponse, ApiCreateSubmissionRequest, ApiCreateSubmissionResponse, ApiDownloadDataFileRequest, ApiDownloadDataFilesRequest, ApiDownloadLeaderboardRequest, ApiGetCompetitionDataFilesSummaryRequest, ApiGetCompetitionRequest, ApiGetHackathonWriteUpRequest, ApiGetLeaderboardRequest, ApiGetLeaderboardResponse, ApiGetSubmissionRequest, ApiListCompetitionsRequest, ApiListCompetitionsResponse, ApiListDataFilesRequest, ApiListDataFilesResponse, ApiListDataTreeFilesRequest, ApiListHackathonWriteUpsRequest, ApiListSubmissionsRequest, ApiListSubmissionsResponse, ApiStartSubmissionUploadRequest, ApiStartSubmissionUploadResponse, ApiSubmission
from kagglesdk.competitions.types.competition_api_service import ApiCompetition, ApiCreateCodeSubmissionRequest, ApiCreateCodeSubmissionResponse, ApiCreateSubmissionRequest, ApiCreateSubmissionResponse, ApiDownloadDataFileRequest, ApiDownloadDataFilesRequest, ApiDownloadLeaderboardRequest, ApiGetCompetitionDataFilesSummaryRequest, ApiGetCompetitionRequest, ApiGetEpisodeAgentLogsRequest, ApiGetEpisodeReplayRequest, ApiGetHackathonOverviewRequest, ApiGetHackathonWriteUpRequest, ApiGetLeaderboardRequest, ApiGetLeaderboardResponse, ApiGetSubmissionRequest, ApiListCompetitionPagesRequest, ApiListCompetitionPagesResponse, ApiListCompetitionsRequest, ApiListCompetitionsResponse, ApiListDataFilesRequest, ApiListDataFilesResponse, ApiListDataTreeFilesRequest, ApiListHackathonWriteUpsRequest, ApiListSubmissionEpisodesRequest, ApiListSubmissionEpisodesResponse, ApiListSubmissionsRequest, ApiListSubmissionsResponse, ApiStartSubmissionUploadRequest, ApiStartSubmissionUploadResponse, ApiSubmission
from kagglesdk.competitions.types.hackathon_service import ListHackathonWriteUpsResponse
from kagglesdk.competitions.types.hackathons import HackathonWriteUp
from kagglesdk.competitions.types.page_service import ListPagesResponse
from kagglesdk.datasets.databundles.types.databundle_api_types import ApiDirectoryContent, ApiFilesSummary
from kagglesdk.kaggle_http_client import KaggleHttpClient

Expand Down Expand Up @@ -202,3 +203,63 @@ def get_hackathon_write_up(self, request: ApiGetHackathonWriteUpRequest = None)
request = ApiGetHackathonWriteUpRequest()

return self._client.call("competitions.CompetitionApiService", "GetHackathonWriteUp", request, HackathonWriteUp)

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

if request is None:
request = ApiListSubmissionEpisodesRequest()

return self._client.call("competitions.CompetitionApiService", "ListSubmissionEpisodes", request, ApiListSubmissionEpisodesResponse)

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

if request is None:
request = ApiGetEpisodeReplayRequest()

return self._client.call("competitions.CompetitionApiService", "GetEpisodeReplay", request, FileDownload)

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

if request is None:
request = ApiGetEpisodeAgentLogsRequest()

return self._client.call("competitions.CompetitionApiService", "GetEpisodeAgentLogs", request, FileDownload)

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

if request is None:
request = ApiListCompetitionPagesRequest()

return self._client.call("competitions.CompetitionApiService", "ListCompetitionPages", request, ApiListCompetitionPagesResponse)

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

if request is None:
request = ApiGetHackathonOverviewRequest()

return self._client.call("competitions.CompetitionApiService", "GetHackathonOverview", request, ListPagesResponse)
19 changes: 19 additions & 0 deletions kagglesdk/competitions/services/hackathon_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from kagglesdk.competitions.types.hackathon_service import ListHackathonTracksRequest, ListHackathonTracksResponse
from kagglesdk.kaggle_http_client import KaggleHttpClient

class HackathonClient(object):

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.
"""

if request is None:
request = ListHackathonTracksRequest()

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