mirror of
https://github.com/clearml/clearml
synced 2025-05-05 21:34:25 +00:00
13603 lines
431 KiB
Python
13603 lines
431 KiB
Python
"""
|
|
tasks service
|
|
|
|
Provides a management API for tasks in the system.
|
|
"""
|
|
import six
|
|
from datetime import datetime
|
|
import enum
|
|
|
|
from dateutil.parser import parse as parse_datetime
|
|
|
|
from clearml.backend_api.session import (
|
|
Request,
|
|
BatchRequest,
|
|
Response,
|
|
NonStrictDataModel,
|
|
schema_property,
|
|
StringEnum,
|
|
)
|
|
|
|
|
|
class MultiFieldPatternData(NonStrictDataModel):
|
|
"""
|
|
:param pattern: Pattern string (regex)
|
|
:type pattern: str
|
|
:param fields: List of field names
|
|
:type fields: Sequence[str]
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"fields": {
|
|
"description": "List of field names",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"pattern": {
|
|
"description": "Pattern string (regex)",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, pattern=None, fields=None, **kwargs):
|
|
super(MultiFieldPatternData, self).__init__(**kwargs)
|
|
self.pattern = pattern
|
|
self.fields = fields
|
|
|
|
@schema_property("pattern")
|
|
def pattern(self):
|
|
return self._property_pattern
|
|
|
|
@pattern.setter
|
|
def pattern(self, value):
|
|
if value is None:
|
|
self._property_pattern = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "pattern", six.string_types)
|
|
self._property_pattern = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "fields", six.string_types, is_array=True)
|
|
self._property_fields = value
|
|
|
|
|
|
class ModelTypeEnum(StringEnum):
|
|
input = "input"
|
|
output = "output"
|
|
|
|
|
|
class TaskModelItem(NonStrictDataModel):
|
|
"""
|
|
:param name: The task model name
|
|
:type name: str
|
|
:param model: The model ID
|
|
:type model: str
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {"description": "The task model name", "type": "string"},
|
|
},
|
|
"required": ["name", "model"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, name, model, **kwargs):
|
|
super(TaskModelItem, self).__init__(**kwargs)
|
|
self.name = name
|
|
self.model = model
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("model")
|
|
def model(self):
|
|
return self._property_model
|
|
|
|
@model.setter
|
|
def model(self, value):
|
|
if value is None:
|
|
self._property_model = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "model", six.string_types)
|
|
self._property_model = value
|
|
|
|
|
|
class Script(NonStrictDataModel):
|
|
"""
|
|
:param binary: Binary to use when running the script
|
|
:type binary: str
|
|
:param repository: Name of the repository where the script is located
|
|
:type repository: str
|
|
:param tag: Repository tag
|
|
:type tag: str
|
|
:param branch: Repository branch id If not provided and tag not provided,
|
|
default repository branch is used.
|
|
:type branch: str
|
|
:param version_num: Version (changeset) number. Optional (default is head
|
|
version) Unused if tag is provided.
|
|
:type version_num: str
|
|
:param entry_point: Path to execute within the repository
|
|
:type entry_point: str
|
|
:param working_dir: Path to the folder from which to run the script Default -
|
|
root folder of repository
|
|
:type working_dir: str
|
|
:param requirements: A JSON object containing requirements strings by key
|
|
:type requirements: dict
|
|
:param diff: Uncommitted changes found in the repository when task was run
|
|
:type diff: str
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"binary": {
|
|
"default": "python",
|
|
"description": "Binary to use when running the script",
|
|
"type": ["string", "null"],
|
|
},
|
|
"branch": {
|
|
"description": (
|
|
"Repository branch id If not provided and tag not provided, default repository branch is used."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"diff": {
|
|
"description": "Uncommitted changes found in the repository when task was run",
|
|
"type": ["string", "null"],
|
|
},
|
|
"entry_point": {
|
|
"description": "Path to execute within the repository",
|
|
"type": ["string", "null"],
|
|
},
|
|
"repository": {
|
|
"description": "Name of the repository where the script is located",
|
|
"type": ["string", "null"],
|
|
},
|
|
"requirements": {
|
|
"description": "A JSON object containing requirements strings by key",
|
|
"type": ["object", "null"],
|
|
},
|
|
"tag": {"description": "Repository tag", "type": ["string", "null"]},
|
|
"version_num": {
|
|
"description": (
|
|
"Version (changeset) number. Optional (default is head version) Unused if tag is provided."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"working_dir": {
|
|
"description": "Path to the folder from which to run the script Default - root folder of repository",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
binary="python",
|
|
repository=None,
|
|
tag=None,
|
|
branch=None,
|
|
version_num=None,
|
|
entry_point=None,
|
|
working_dir=None,
|
|
requirements=None,
|
|
diff=None,
|
|
**kwargs
|
|
):
|
|
super(Script, self).__init__(**kwargs)
|
|
self.binary = binary
|
|
self.repository = repository
|
|
self.tag = tag
|
|
self.branch = branch
|
|
self.version_num = version_num
|
|
self.entry_point = entry_point
|
|
self.working_dir = working_dir
|
|
self.requirements = requirements
|
|
self.diff = diff
|
|
|
|
@schema_property("binary")
|
|
def binary(self):
|
|
return self._property_binary
|
|
|
|
@binary.setter
|
|
def binary(self, value):
|
|
if value is None:
|
|
self._property_binary = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "binary", six.string_types)
|
|
self._property_binary = value
|
|
|
|
@schema_property("repository")
|
|
def repository(self):
|
|
return self._property_repository
|
|
|
|
@repository.setter
|
|
def repository(self, value):
|
|
if value is None:
|
|
self._property_repository = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "repository", six.string_types)
|
|
self._property_repository = value
|
|
|
|
@schema_property("tag")
|
|
def tag(self):
|
|
return self._property_tag
|
|
|
|
@tag.setter
|
|
def tag(self, value):
|
|
if value is None:
|
|
self._property_tag = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tag", six.string_types)
|
|
self._property_tag = value
|
|
|
|
@schema_property("branch")
|
|
def branch(self):
|
|
return self._property_branch
|
|
|
|
@branch.setter
|
|
def branch(self, value):
|
|
if value is None:
|
|
self._property_branch = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "branch", six.string_types)
|
|
self._property_branch = value
|
|
|
|
@schema_property("version_num")
|
|
def version_num(self):
|
|
return self._property_version_num
|
|
|
|
@version_num.setter
|
|
def version_num(self, value):
|
|
if value is None:
|
|
self._property_version_num = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "version_num", six.string_types)
|
|
self._property_version_num = value
|
|
|
|
@schema_property("entry_point")
|
|
def entry_point(self):
|
|
return self._property_entry_point
|
|
|
|
@entry_point.setter
|
|
def entry_point(self, value):
|
|
if value is None:
|
|
self._property_entry_point = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "entry_point", six.string_types)
|
|
self._property_entry_point = value
|
|
|
|
@schema_property("working_dir")
|
|
def working_dir(self):
|
|
return self._property_working_dir
|
|
|
|
@working_dir.setter
|
|
def working_dir(self, value):
|
|
if value is None:
|
|
self._property_working_dir = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "working_dir", six.string_types)
|
|
self._property_working_dir = value
|
|
|
|
@schema_property("requirements")
|
|
def requirements(self):
|
|
return self._property_requirements
|
|
|
|
@requirements.setter
|
|
def requirements(self, value):
|
|
if value is None:
|
|
self._property_requirements = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "requirements", (dict,))
|
|
self._property_requirements = value
|
|
|
|
@schema_property("diff")
|
|
def diff(self):
|
|
return self._property_diff
|
|
|
|
@diff.setter
|
|
def diff(self, value):
|
|
if value is None:
|
|
self._property_diff = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "diff", six.string_types)
|
|
self._property_diff = value
|
|
|
|
|
|
class Output(NonStrictDataModel):
|
|
"""
|
|
:param destination: Storage id. This is where output files will be stored.
|
|
:type destination: str
|
|
:param model: Model id.
|
|
:type model: str
|
|
:param result: Task result. Values: 'success', 'failure'
|
|
:type result: str
|
|
:param error: Last error text
|
|
:type error: str
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"destination": {
|
|
"description": "Storage id. This is where output files will be stored.",
|
|
"type": ["string", "null"],
|
|
},
|
|
"error": {"description": "Last error text", "type": ["string", "null"]},
|
|
"model": {"description": "Model id.", "type": ["string", "null"]},
|
|
"result": {
|
|
"description": "Task result. Values: 'success', 'failure'",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, destination=None, model=None, result=None, error=None, **kwargs):
|
|
super(Output, self).__init__(**kwargs)
|
|
self.destination = destination
|
|
self.model = model
|
|
self.result = result
|
|
self.error = error
|
|
|
|
@schema_property("destination")
|
|
def destination(self):
|
|
return self._property_destination
|
|
|
|
@destination.setter
|
|
def destination(self, value):
|
|
if value is None:
|
|
self._property_destination = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "destination", six.string_types)
|
|
self._property_destination = value
|
|
|
|
@schema_property("model")
|
|
def model(self):
|
|
return self._property_model
|
|
|
|
@model.setter
|
|
def model(self, value):
|
|
if value is None:
|
|
self._property_model = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "model", six.string_types)
|
|
self._property_model = value
|
|
|
|
@schema_property("result")
|
|
def result(self):
|
|
return self._property_result
|
|
|
|
@result.setter
|
|
def result(self, value):
|
|
if value is None:
|
|
self._property_result = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "result", six.string_types)
|
|
self._property_result = value
|
|
|
|
@schema_property("error")
|
|
def error(self):
|
|
return self._property_error
|
|
|
|
@error.setter
|
|
def error(self, value):
|
|
if value is None:
|
|
self._property_error = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "error", six.string_types)
|
|
self._property_error = value
|
|
|
|
|
|
class ArtifactTypeData(NonStrictDataModel):
|
|
"""
|
|
:param preview: Description or textual data
|
|
:type preview: str
|
|
:param content_type: System defined raw data content type
|
|
:type content_type: str
|
|
:param data_hash: Hash of raw data, without any headers or descriptive parts
|
|
:type data_hash: str
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, preview=None, content_type=None, data_hash=None, **kwargs):
|
|
super(ArtifactTypeData, self).__init__(**kwargs)
|
|
self.preview = preview
|
|
self.content_type = content_type
|
|
self.data_hash = data_hash
|
|
|
|
@schema_property("preview")
|
|
def preview(self):
|
|
return self._property_preview
|
|
|
|
@preview.setter
|
|
def preview(self, value):
|
|
if value is None:
|
|
self._property_preview = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "preview", six.string_types)
|
|
self._property_preview = value
|
|
|
|
@schema_property("content_type")
|
|
def content_type(self):
|
|
return self._property_content_type
|
|
|
|
@content_type.setter
|
|
def content_type(self, value):
|
|
if value is None:
|
|
self._property_content_type = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "content_type", six.string_types)
|
|
self._property_content_type = value
|
|
|
|
@schema_property("data_hash")
|
|
def data_hash(self):
|
|
return self._property_data_hash
|
|
|
|
@data_hash.setter
|
|
def data_hash(self, value):
|
|
if value is None:
|
|
self._property_data_hash = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "data_hash", six.string_types)
|
|
self._property_data_hash = value
|
|
|
|
|
|
class ArtifactModeEnum(StringEnum):
|
|
input = "input"
|
|
output = "output"
|
|
|
|
|
|
class Artifact(NonStrictDataModel):
|
|
"""
|
|
:param key: Entry key
|
|
:type key: str
|
|
:param type: System defined type
|
|
:type type: str
|
|
:param mode: System defined input/output indication
|
|
:type mode: ArtifactModeEnum
|
|
:param uri: Raw data location
|
|
:type uri: str
|
|
:param content_size: Raw data length in bytes
|
|
:type content_size: int
|
|
:param hash: Hash of entire raw data
|
|
:type hash: str
|
|
:param timestamp: Epoch time when artifact was created
|
|
:type timestamp: int
|
|
:param type_data: Additional fields defined by the system
|
|
:type type_data: ArtifactTypeData
|
|
:param display_data: User-defined list of key/value pairs, sorted
|
|
:type display_data: Sequence[Sequence[str]]
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {"description": "Hash of entire raw data", "type": "string"},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {"description": "System defined type", "type": "string"},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
key,
|
|
type,
|
|
mode=None,
|
|
uri=None,
|
|
content_size=None,
|
|
hash=None,
|
|
timestamp=None,
|
|
type_data=None,
|
|
display_data=None,
|
|
**kwargs
|
|
):
|
|
super(Artifact, self).__init__(**kwargs)
|
|
self.key = key
|
|
self.type = type
|
|
self.mode = mode
|
|
self.uri = uri
|
|
self.content_size = content_size
|
|
self.hash = hash
|
|
self.timestamp = timestamp
|
|
self.type_data = type_data
|
|
self.display_data = display_data
|
|
|
|
@schema_property("key")
|
|
def key(self):
|
|
return self._property_key
|
|
|
|
@key.setter
|
|
def key(self, value):
|
|
if value is None:
|
|
self._property_key = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "key", six.string_types)
|
|
self._property_key = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "type", six.string_types)
|
|
self._property_type = value
|
|
|
|
@schema_property("mode")
|
|
def mode(self):
|
|
return self._property_mode
|
|
|
|
@mode.setter
|
|
def mode(self, value):
|
|
if value is None:
|
|
self._property_mode = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = ArtifactModeEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "mode", enum.Enum)
|
|
self._property_mode = value
|
|
|
|
@schema_property("uri")
|
|
def uri(self):
|
|
return self._property_uri
|
|
|
|
@uri.setter
|
|
def uri(self, value):
|
|
if value is None:
|
|
self._property_uri = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "uri", six.string_types)
|
|
self._property_uri = value
|
|
|
|
@schema_property("content_size")
|
|
def content_size(self):
|
|
return self._property_content_size
|
|
|
|
@content_size.setter
|
|
def content_size(self, value):
|
|
if value is None:
|
|
self._property_content_size = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "content_size", six.integer_types)
|
|
self._property_content_size = value
|
|
|
|
@schema_property("hash")
|
|
def hash(self):
|
|
return self._property_hash
|
|
|
|
@hash.setter
|
|
def hash(self, value):
|
|
if value is None:
|
|
self._property_hash = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "hash", six.string_types)
|
|
self._property_hash = value
|
|
|
|
@schema_property("timestamp")
|
|
def timestamp(self):
|
|
return self._property_timestamp
|
|
|
|
@timestamp.setter
|
|
def timestamp(self, value):
|
|
if value is None:
|
|
self._property_timestamp = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "timestamp", six.integer_types)
|
|
self._property_timestamp = value
|
|
|
|
@schema_property("type_data")
|
|
def type_data(self):
|
|
return self._property_type_data
|
|
|
|
@type_data.setter
|
|
def type_data(self, value):
|
|
if value is None:
|
|
self._property_type_data = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = ArtifactTypeData.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "type_data", ArtifactTypeData)
|
|
self._property_type_data = value
|
|
|
|
@schema_property("display_data")
|
|
def display_data(self):
|
|
return self._property_display_data
|
|
|
|
@display_data.setter
|
|
def display_data(self, value):
|
|
if value is None:
|
|
self._property_display_data = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "display_data", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "display_data", (list, tuple), is_array=True)
|
|
self._property_display_data = value
|
|
|
|
|
|
class ArtifactId(NonStrictDataModel):
|
|
"""
|
|
:param key: Entry key
|
|
:type key: str
|
|
:param mode: System defined input/output indication
|
|
:type mode: ArtifactModeEnum
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
},
|
|
"required": ["key"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, key, mode=None, **kwargs):
|
|
super(ArtifactId, self).__init__(**kwargs)
|
|
self.key = key
|
|
self.mode = mode
|
|
|
|
@schema_property("key")
|
|
def key(self):
|
|
return self._property_key
|
|
|
|
@key.setter
|
|
def key(self, value):
|
|
if value is None:
|
|
self._property_key = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "key", six.string_types)
|
|
self._property_key = value
|
|
|
|
@schema_property("mode")
|
|
def mode(self):
|
|
return self._property_mode
|
|
|
|
@mode.setter
|
|
def mode(self, value):
|
|
if value is None:
|
|
self._property_mode = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = ArtifactModeEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "mode", enum.Enum)
|
|
self._property_mode = value
|
|
|
|
|
|
class TaskModels(NonStrictDataModel):
|
|
"""
|
|
:param input: The list of task input models
|
|
:type input: Sequence[TaskModelItem]
|
|
:param output: The list of task output models
|
|
:type output: Sequence[TaskModelItem]
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"input": {
|
|
"description": "The list of task input models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"output": {
|
|
"description": "The list of task output models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, input=None, output=None, **kwargs):
|
|
super(TaskModels, self).__init__(**kwargs)
|
|
self.input = input
|
|
self.output = output
|
|
|
|
@schema_property("input")
|
|
def input(self):
|
|
return self._property_input
|
|
|
|
@input.setter
|
|
def input(self, value):
|
|
if value is None:
|
|
self._property_input = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "input", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [TaskModelItem.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "input", TaskModelItem, is_array=True)
|
|
self._property_input = value
|
|
|
|
@schema_property("output")
|
|
def output(self):
|
|
return self._property_output
|
|
|
|
@output.setter
|
|
def output(self, value):
|
|
if value is None:
|
|
self._property_output = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "output", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [TaskModelItem.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "output", TaskModelItem, is_array=True)
|
|
self._property_output = value
|
|
|
|
|
|
class Execution(NonStrictDataModel):
|
|
"""
|
|
:param queue: Queue ID where task was queued.
|
|
:type queue: str
|
|
:param parameters: Json object containing the Task parameters
|
|
:type parameters: dict
|
|
:param model_desc: Json object representing the Model descriptors
|
|
:type model_desc: dict
|
|
:param model_labels: Json object representing the ids of the labels in the
|
|
model. The keys are the layers' names and the values are the IDs. Not
|
|
applicable for Register (Import) tasks. Mandatory for Training tasks
|
|
:type model_labels: dict
|
|
:param framework: Framework related to the task. Case insensitive. Mandatory
|
|
for Training tasks.
|
|
:type framework: str
|
|
:param artifacts: Task artifacts
|
|
:type artifacts: Sequence[Artifact]
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Task artifacts",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"framework": {
|
|
"description": "Framework related to the task. Case insensitive. Mandatory for Training tasks. ",
|
|
"type": ["string", "null"],
|
|
},
|
|
"model_desc": {
|
|
"additionalProperties": True,
|
|
"description": "Json object representing the Model descriptors",
|
|
"type": ["object", "null"],
|
|
},
|
|
"model_labels": {
|
|
"additionalProperties": {"type": "integer"},
|
|
"description": (
|
|
"Json object representing the ids of the labels in the model.\n The keys are the layers'"
|
|
" names and the values are the IDs.\n Not applicable for Register (Import) tasks.\n "
|
|
" Mandatory for Training tasks"
|
|
),
|
|
"type": ["object", "null"],
|
|
},
|
|
"parameters": {
|
|
"additionalProperties": True,
|
|
"description": "Json object containing the Task parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue": {
|
|
"description": "Queue ID where task was queued.",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
queue=None,
|
|
parameters=None,
|
|
model_desc=None,
|
|
model_labels=None,
|
|
framework=None,
|
|
artifacts=None,
|
|
**kwargs
|
|
):
|
|
super(Execution, self).__init__(**kwargs)
|
|
self.queue = queue
|
|
self.parameters = parameters
|
|
self.model_desc = model_desc
|
|
self.model_labels = model_labels
|
|
self.framework = framework
|
|
self.artifacts = artifacts
|
|
|
|
@schema_property("queue")
|
|
def queue(self):
|
|
return self._property_queue
|
|
|
|
@queue.setter
|
|
def queue(self, value):
|
|
if value is None:
|
|
self._property_queue = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "queue", six.string_types)
|
|
self._property_queue = value
|
|
|
|
@schema_property("parameters")
|
|
def parameters(self):
|
|
return self._property_parameters
|
|
|
|
@parameters.setter
|
|
def parameters(self, value):
|
|
if value is None:
|
|
self._property_parameters = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "parameters", (dict,))
|
|
self._property_parameters = value
|
|
|
|
@schema_property("model_desc")
|
|
def model_desc(self):
|
|
return self._property_model_desc
|
|
|
|
@model_desc.setter
|
|
def model_desc(self, value):
|
|
if value is None:
|
|
self._property_model_desc = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "model_desc", (dict,))
|
|
self._property_model_desc = value
|
|
|
|
@schema_property("model_labels")
|
|
def model_labels(self):
|
|
return self._property_model_labels
|
|
|
|
@model_labels.setter
|
|
def model_labels(self, value):
|
|
if value is None:
|
|
self._property_model_labels = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "model_labels", (dict,))
|
|
self._property_model_labels = value
|
|
|
|
@schema_property("framework")
|
|
def framework(self):
|
|
return self._property_framework
|
|
|
|
@framework.setter
|
|
def framework(self, value):
|
|
if value is None:
|
|
self._property_framework = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "framework", six.string_types)
|
|
self._property_framework = value
|
|
|
|
@schema_property("artifacts")
|
|
def artifacts(self):
|
|
return self._property_artifacts
|
|
|
|
@artifacts.setter
|
|
def artifacts(self, value):
|
|
if value is None:
|
|
self._property_artifacts = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "artifacts", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [Artifact.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "artifacts", Artifact, is_array=True)
|
|
self._property_artifacts = value
|
|
|
|
|
|
class TaskStatusEnum(StringEnum):
|
|
created = "created"
|
|
queued = "queued"
|
|
in_progress = "in_progress"
|
|
stopped = "stopped"
|
|
published = "published"
|
|
publishing = "publishing"
|
|
closed = "closed"
|
|
failed = "failed"
|
|
completed = "completed"
|
|
unknown = "unknown"
|
|
|
|
|
|
class TaskTypeEnum(StringEnum):
|
|
training = "training"
|
|
testing = "testing"
|
|
inference = "inference"
|
|
data_processing = "data_processing"
|
|
application = "application"
|
|
monitor = "monitor"
|
|
controller = "controller"
|
|
optimizer = "optimizer"
|
|
service = "service"
|
|
qc = "qc"
|
|
custom = "custom"
|
|
|
|
|
|
class LastMetricsEvent(NonStrictDataModel):
|
|
"""
|
|
:param metric: Metric name
|
|
:type metric: str
|
|
:param variant: Variant name
|
|
:type variant: str
|
|
:param value: Last value reported
|
|
:type value: float
|
|
:param min_value: Minimum value reported
|
|
:type min_value: float
|
|
:param min_value_iteration: The iteration at which the minimum value was
|
|
reported
|
|
:type min_value_iteration: int
|
|
:param max_value: Maximum value reported
|
|
:type max_value: float
|
|
:param max_value_iteration: The iteration at which the maximum value was
|
|
reported
|
|
:type max_value_iteration: int
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"max_value": {
|
|
"description": "Maximum value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"max_value_iteration": {
|
|
"description": "The iteration at which the maximum value was reported",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"metric": {"description": "Metric name", "type": ["string", "null"]},
|
|
"min_value": {
|
|
"description": "Minimum value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"min_value_iteration": {
|
|
"description": "The iteration at which the minimum value was reported",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"value": {"description": "Last value reported", "type": ["number", "null"]},
|
|
"variant": {"description": "Variant name", "type": ["string", "null"]},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
metric=None,
|
|
variant=None,
|
|
value=None,
|
|
min_value=None,
|
|
min_value_iteration=None,
|
|
max_value=None,
|
|
max_value_iteration=None,
|
|
**kwargs
|
|
):
|
|
super(LastMetricsEvent, self).__init__(**kwargs)
|
|
self.metric = metric
|
|
self.variant = variant
|
|
self.value = value
|
|
self.min_value = min_value
|
|
self.min_value_iteration = min_value_iteration
|
|
self.max_value = max_value
|
|
self.max_value_iteration = max_value_iteration
|
|
|
|
@schema_property("metric")
|
|
def metric(self):
|
|
return self._property_metric
|
|
|
|
@metric.setter
|
|
def metric(self, value):
|
|
if value is None:
|
|
self._property_metric = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "metric", six.string_types)
|
|
self._property_metric = value
|
|
|
|
@schema_property("variant")
|
|
def variant(self):
|
|
return self._property_variant
|
|
|
|
@variant.setter
|
|
def variant(self, value):
|
|
if value is None:
|
|
self._property_variant = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "variant", six.string_types)
|
|
self._property_variant = value
|
|
|
|
@schema_property("value")
|
|
def value(self):
|
|
return self._property_value
|
|
|
|
@value.setter
|
|
def value(self, value):
|
|
if value is None:
|
|
self._property_value = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "value", six.integer_types + (float,))
|
|
self._property_value = value
|
|
|
|
@schema_property("min_value")
|
|
def min_value(self):
|
|
return self._property_min_value
|
|
|
|
@min_value.setter
|
|
def min_value(self, value):
|
|
if value is None:
|
|
self._property_min_value = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "min_value", six.integer_types + (float,))
|
|
self._property_min_value = value
|
|
|
|
@schema_property("min_value_iteration")
|
|
def min_value_iteration(self):
|
|
return self._property_min_value_iteration
|
|
|
|
@min_value_iteration.setter
|
|
def min_value_iteration(self, value):
|
|
if value is None:
|
|
self._property_min_value_iteration = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "min_value_iteration", six.integer_types)
|
|
self._property_min_value_iteration = value
|
|
|
|
@schema_property("max_value")
|
|
def max_value(self):
|
|
return self._property_max_value
|
|
|
|
@max_value.setter
|
|
def max_value(self, value):
|
|
if value is None:
|
|
self._property_max_value = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "max_value", six.integer_types + (float,))
|
|
self._property_max_value = value
|
|
|
|
@schema_property("max_value_iteration")
|
|
def max_value_iteration(self):
|
|
return self._property_max_value_iteration
|
|
|
|
@max_value_iteration.setter
|
|
def max_value_iteration(self, value):
|
|
if value is None:
|
|
self._property_max_value_iteration = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "max_value_iteration", six.integer_types)
|
|
self._property_max_value_iteration = value
|
|
|
|
|
|
class LastMetricsVariants(NonStrictDataModel):
|
|
"""
|
|
Last metric events, one for each variant hash
|
|
|
|
"""
|
|
|
|
_schema = {
|
|
"additionalProperties": {"$ref": "#/definitions/last_metrics_event"},
|
|
"description": "Last metric events, one for each variant hash",
|
|
"type": "object",
|
|
}
|
|
|
|
|
|
class ParamsItem(NonStrictDataModel):
|
|
"""
|
|
:param section: Section that the parameter belongs to
|
|
:type section: str
|
|
:param name: Name of the parameter. The combination of section and name should
|
|
be unique
|
|
:type name: str
|
|
:param value: Value of the parameter
|
|
:type value: str
|
|
:param type: Type of the parameter. Optional
|
|
:type type: str
|
|
:param description: The parameter description. Optional
|
|
:type description: str
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, section=None, name=None, value=None, type=None, description=None, **kwargs):
|
|
super(ParamsItem, self).__init__(**kwargs)
|
|
self.section = section
|
|
self.name = name
|
|
self.value = value
|
|
self.type = type
|
|
self.description = description
|
|
|
|
@schema_property("section")
|
|
def section(self):
|
|
return self._property_section
|
|
|
|
@section.setter
|
|
def section(self, value):
|
|
if value is None:
|
|
self._property_section = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "section", six.string_types)
|
|
self._property_section = value
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("value")
|
|
def value(self):
|
|
return self._property_value
|
|
|
|
@value.setter
|
|
def value(self, value):
|
|
if value is None:
|
|
self._property_value = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "value", six.string_types)
|
|
self._property_value = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "type", six.string_types)
|
|
self._property_type = value
|
|
|
|
@schema_property("description")
|
|
def description(self):
|
|
return self._property_description
|
|
|
|
@description.setter
|
|
def description(self, value):
|
|
if value is None:
|
|
self._property_description = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "description", six.string_types)
|
|
self._property_description = value
|
|
|
|
|
|
class ConfigurationItem(NonStrictDataModel):
|
|
"""
|
|
:param name: Name of the parameter. Should be unique
|
|
:type name: str
|
|
:param value: Value of the parameter
|
|
:type value: str
|
|
:param type: Type of the parameter. Optional
|
|
:type type: str
|
|
:param description: The parameter description. Optional
|
|
:type description: str
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, name=None, value=None, type=None, description=None, **kwargs):
|
|
super(ConfigurationItem, self).__init__(**kwargs)
|
|
self.name = name
|
|
self.value = value
|
|
self.type = type
|
|
self.description = description
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("value")
|
|
def value(self):
|
|
return self._property_value
|
|
|
|
@value.setter
|
|
def value(self, value):
|
|
if value is None:
|
|
self._property_value = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "value", six.string_types)
|
|
self._property_value = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "type", six.string_types)
|
|
self._property_type = value
|
|
|
|
@schema_property("description")
|
|
def description(self):
|
|
return self._property_description
|
|
|
|
@description.setter
|
|
def description(self, value):
|
|
if value is None:
|
|
self._property_description = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "description", six.string_types)
|
|
self._property_description = value
|
|
|
|
|
|
class ParamKey(NonStrictDataModel):
|
|
"""
|
|
:param section: Section that the parameter belongs to
|
|
:type section: str
|
|
:param name: Name of the parameter. If the name is ommitted then the
|
|
corresponding operation is performed on the whole section
|
|
:type name: str
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"name": {
|
|
"description": (
|
|
"Name of the parameter. If the name is ommitted then the corresponding operation is performed on"
|
|
" the whole section"
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, section=None, name=None, **kwargs):
|
|
super(ParamKey, self).__init__(**kwargs)
|
|
self.section = section
|
|
self.name = name
|
|
|
|
@schema_property("section")
|
|
def section(self):
|
|
return self._property_section
|
|
|
|
@section.setter
|
|
def section(self, value):
|
|
if value is None:
|
|
self._property_section = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "section", six.string_types)
|
|
self._property_section = value
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
|
|
class SectionParams(dict, NonStrictDataModel):
|
|
"""
|
|
Task section params
|
|
|
|
"""
|
|
|
|
_schema = {
|
|
# 'additionalProperties': {'$ref': '#/definitions/params_item'},
|
|
"additionalProperties": True,
|
|
"description": "Task section params",
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.assert_isinstance(args, "section_params", dict, is_array=True)
|
|
kwargs.update(args)
|
|
self.assert_isinstance(kwargs.values(), "params", (ParamsItem, dict), is_array=True)
|
|
for k, v in kwargs.items():
|
|
if isinstance(v, dict):
|
|
kwargs[k] = ParamsItem(**v)
|
|
super(SectionParams, self).__init__(**kwargs)
|
|
|
|
|
|
class ReplaceHyperparamsEnum(StringEnum):
|
|
none = "none"
|
|
section = "section"
|
|
all = "all"
|
|
|
|
|
|
class Task(NonStrictDataModel):
|
|
"""
|
|
:param id: Task id
|
|
:type id: str
|
|
:param name: Task Name
|
|
:type name: str
|
|
:param user: Associated user id
|
|
:type user: str
|
|
:param company: Company ID
|
|
:type company: str
|
|
:param type: Type of task. Values: 'training', 'testing'
|
|
:type type: TaskTypeEnum
|
|
:param status:
|
|
:type status: TaskStatusEnum
|
|
:param comment: Free text comment
|
|
:type comment: str
|
|
:param created: Task creation time (UTC)
|
|
:type created: datetime.datetime
|
|
:param started: Task start time (UTC)
|
|
:type started: datetime.datetime
|
|
:param completed: Task end time (UTC)
|
|
:type completed: datetime.datetime
|
|
:param active_duration: Task duration time (seconds)
|
|
:type active_duration: int
|
|
:param parent: Parent task id
|
|
:type parent: str
|
|
:param project: Project ID of the project to which this task is assigned
|
|
:type project: str
|
|
:param output: Task output params
|
|
:type output: Output
|
|
:param execution: Task execution params
|
|
:type execution: Execution
|
|
:param container: Docker container parameters
|
|
:type container: dict
|
|
:param models: Task models
|
|
:type models: TaskModels
|
|
:param script: Script info
|
|
:type script: Script
|
|
:param tags: User-defined tags list
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags list. This field is reserved for system use,
|
|
please don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param status_changed: Last status change time
|
|
:type status_changed: datetime.datetime
|
|
:param status_message: free text string representing info about the status
|
|
:type status_message: str
|
|
:param status_reason: Reason for last status change
|
|
:type status_reason: str
|
|
:param published: Task publish time
|
|
:type published: datetime.datetime
|
|
:param last_worker: ID of last worker that handled the task
|
|
:type last_worker: str
|
|
:param last_worker_report: Last time a worker reported while working on this
|
|
task
|
|
:type last_worker_report: datetime.datetime
|
|
:param last_update: Last time this task was created, edited, changed or events
|
|
for this task were reported
|
|
:type last_update: datetime.datetime
|
|
:param last_change: Last time any update was done to the task
|
|
:type last_change: datetime.datetime
|
|
:param last_iteration: Last iteration reported for this task
|
|
:type last_iteration: int
|
|
:param last_metrics: Last metric variants (hash to events), one for each metric
|
|
hash
|
|
:type last_metrics: dict
|
|
:param hyperparams: Task hyper params per section
|
|
:type hyperparams: dict
|
|
:param configuration: Task configuration params
|
|
:type configuration: dict
|
|
:param runtime: Task runtime mapping
|
|
:type runtime: dict
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"active_duration": {
|
|
"description": "Task duration time (seconds)",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"comment": {"description": "Free text comment", "type": ["string", "null"]},
|
|
"company": {"description": "Company ID", "type": ["string", "null"]},
|
|
"completed": {
|
|
"description": "Task end time (UTC)",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"configuration": {
|
|
"additionalProperties": {"$ref": "#/definitions/configuration_item"},
|
|
"description": "Task configuration params",
|
|
"type": ["object", "null"],
|
|
},
|
|
"container": {
|
|
"additionalProperties": {"type": ["string", "null"]},
|
|
"description": "Docker container parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"created": {
|
|
"description": "Task creation time (UTC) ",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"execution": {
|
|
"description": "Task execution params",
|
|
"oneOf": [{"$ref": "#/definitions/execution"}, {"type": "null"}],
|
|
},
|
|
"hyperparams": {
|
|
"additionalProperties": {"$ref": "#/definitions/section_params"},
|
|
"description": "Task hyper params per section",
|
|
"type": ["object", "null"],
|
|
},
|
|
"id": {"description": "Task id", "type": ["string", "null"]},
|
|
"last_change": {
|
|
"description": "Last time any update was done to the task",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_iteration": {
|
|
"description": "Last iteration reported for this task",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"last_metrics": {
|
|
"additionalProperties": {"$ref": "#/definitions/last_metrics_variants"},
|
|
"description": "Last metric variants (hash to events), one for each metric hash",
|
|
"type": ["object", "null"],
|
|
},
|
|
"last_update": {
|
|
"description": "Last time this task was created, edited, changed or events for this task were reported",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_worker": {
|
|
"description": "ID of last worker that handled the task",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_worker_report": {
|
|
"description": "Last time a worker reported while working on this task",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"models": {
|
|
"description": "Task models",
|
|
"oneOf": [{"$ref": "#/definitions/task_models"}, {"type": "null"}],
|
|
},
|
|
"name": {"description": "Task Name", "type": ["string", "null"]},
|
|
"output": {
|
|
"description": "Task output params",
|
|
"oneOf": [{"$ref": "#/definitions/output"}, {"type": "null"}],
|
|
},
|
|
"parent": {"description": "Parent task id", "type": ["string", "null"]},
|
|
"project": {
|
|
"description": "Project ID of the project to which this task is assigned",
|
|
"type": ["string", "null"],
|
|
},
|
|
"published": {
|
|
"description": "Task publish time",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"runtime": {
|
|
"additionalProperties": True,
|
|
"description": "Task runtime mapping",
|
|
"type": ["object", "null"],
|
|
},
|
|
"script": {
|
|
"description": "Script info",
|
|
"oneOf": [{"$ref": "#/definitions/script"}, {"type": "null"}],
|
|
},
|
|
"started": {
|
|
"description": "Task start time (UTC)",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status": {
|
|
"description": "",
|
|
"oneOf": [{"$ref": "#/definitions/task_status_enum"}, {"type": "null"}],
|
|
},
|
|
"status_changed": {
|
|
"description": "Last status change time",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "free text string representing info about the status",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for last status change",
|
|
"type": ["string", "null"],
|
|
},
|
|
"system_tags": {
|
|
"description": "System tags list. This field is reserved for system use, please don't use it.",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"tags": {
|
|
"description": "User-defined tags list",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of task. Values: 'training', 'testing'",
|
|
"oneOf": [{"$ref": "#/definitions/task_type_enum"}, {"type": "null"}],
|
|
},
|
|
"user": {"description": "Associated user id", "type": ["string", "null"]},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
id=None,
|
|
name=None,
|
|
user=None,
|
|
company=None,
|
|
type=None,
|
|
status=None,
|
|
comment=None,
|
|
created=None,
|
|
started=None,
|
|
completed=None,
|
|
active_duration=None,
|
|
parent=None,
|
|
project=None,
|
|
output=None,
|
|
execution=None,
|
|
container=None,
|
|
models=None,
|
|
script=None,
|
|
tags=None,
|
|
system_tags=None,
|
|
status_changed=None,
|
|
status_message=None,
|
|
status_reason=None,
|
|
published=None,
|
|
last_worker=None,
|
|
last_worker_report=None,
|
|
last_update=None,
|
|
last_change=None,
|
|
last_iteration=None,
|
|
last_metrics=None,
|
|
hyperparams=None,
|
|
configuration=None,
|
|
runtime=None,
|
|
**kwargs
|
|
):
|
|
super(Task, self).__init__(**kwargs)
|
|
self.id = id
|
|
self.name = name
|
|
self.user = user
|
|
self.company = company
|
|
self.type = type
|
|
self.status = status
|
|
self.comment = comment
|
|
self.created = created
|
|
self.started = started
|
|
self.completed = completed
|
|
self.active_duration = active_duration
|
|
self.parent = parent
|
|
self.project = project
|
|
self.output = output
|
|
self.execution = execution
|
|
self.container = container
|
|
self.models = models
|
|
self.script = script
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.status_changed = status_changed
|
|
self.status_message = status_message
|
|
self.status_reason = status_reason
|
|
self.published = published
|
|
self.last_worker = last_worker
|
|
self.last_worker_report = last_worker_report
|
|
self.last_update = last_update
|
|
self.last_change = last_change
|
|
self.last_iteration = last_iteration
|
|
self.last_metrics = last_metrics
|
|
self.hyperparams = hyperparams
|
|
self.configuration = configuration
|
|
self.runtime = runtime
|
|
|
|
@schema_property("id")
|
|
def id(self):
|
|
return self._property_id
|
|
|
|
@id.setter
|
|
def id(self, value):
|
|
if value is None:
|
|
self._property_id = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "id", six.string_types)
|
|
self._property_id = value
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("user")
|
|
def user(self):
|
|
return self._property_user
|
|
|
|
@user.setter
|
|
def user(self, value):
|
|
if value is None:
|
|
self._property_user = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "user", six.string_types)
|
|
self._property_user = value
|
|
|
|
@schema_property("company")
|
|
def company(self):
|
|
return self._property_company
|
|
|
|
@company.setter
|
|
def company(self, value):
|
|
if value is None:
|
|
self._property_company = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "company", six.string_types)
|
|
self._property_company = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = TaskTypeEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "type", enum.Enum)
|
|
self._property_type = value
|
|
|
|
@schema_property("status")
|
|
def status(self):
|
|
return self._property_status
|
|
|
|
@status.setter
|
|
def status(self, value):
|
|
if value is None:
|
|
self._property_status = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = TaskStatusEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "status", enum.Enum)
|
|
self._property_status = value
|
|
|
|
@schema_property("comment")
|
|
def comment(self):
|
|
return self._property_comment
|
|
|
|
@comment.setter
|
|
def comment(self, value):
|
|
if value is None:
|
|
self._property_comment = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "comment", six.string_types)
|
|
self._property_comment = value
|
|
|
|
@schema_property("created")
|
|
def created(self):
|
|
return self._property_created
|
|
|
|
@created.setter
|
|
def created(self, value):
|
|
if value is None:
|
|
self._property_created = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "created", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_created = value
|
|
|
|
@schema_property("started")
|
|
def started(self):
|
|
return self._property_started
|
|
|
|
@started.setter
|
|
def started(self, value):
|
|
if value is None:
|
|
self._property_started = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "started", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_started = value
|
|
|
|
@schema_property("completed")
|
|
def completed(self):
|
|
return self._property_completed
|
|
|
|
@completed.setter
|
|
def completed(self, value):
|
|
if value is None:
|
|
self._property_completed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "completed", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_completed = value
|
|
|
|
@schema_property("active_duration")
|
|
def active_duration(self):
|
|
return self._property_active_duration
|
|
|
|
@active_duration.setter
|
|
def active_duration(self, value):
|
|
if value is None:
|
|
self._property_active_duration = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "active_duration", six.integer_types)
|
|
self._property_active_duration = value
|
|
|
|
@schema_property("parent")
|
|
def parent(self):
|
|
return self._property_parent
|
|
|
|
@parent.setter
|
|
def parent(self, value):
|
|
if value is None:
|
|
self._property_parent = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "parent", six.string_types)
|
|
self._property_parent = value
|
|
|
|
@schema_property("project")
|
|
def project(self):
|
|
return self._property_project
|
|
|
|
@project.setter
|
|
def project(self, value):
|
|
if value is None:
|
|
self._property_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project", six.string_types)
|
|
self._property_project = value
|
|
|
|
@schema_property("output")
|
|
def output(self):
|
|
return self._property_output
|
|
|
|
@output.setter
|
|
def output(self, value):
|
|
if value is None:
|
|
self._property_output = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Output.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "output", Output)
|
|
self._property_output = value
|
|
|
|
@schema_property("execution")
|
|
def execution(self):
|
|
return self._property_execution
|
|
|
|
@execution.setter
|
|
def execution(self, value):
|
|
if value is None:
|
|
self._property_execution = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Execution.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "execution", Execution)
|
|
self._property_execution = value
|
|
|
|
@schema_property("container")
|
|
def container(self):
|
|
return self._property_container
|
|
|
|
@container.setter
|
|
def container(self, value):
|
|
if value is None:
|
|
self._property_container = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "container", (dict,))
|
|
self._property_container = value
|
|
|
|
@schema_property("models")
|
|
def models(self):
|
|
return self._property_models
|
|
|
|
@models.setter
|
|
def models(self, value):
|
|
if value is None:
|
|
self._property_models = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = TaskModels.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "models", TaskModels)
|
|
self._property_models = value
|
|
|
|
@schema_property("script")
|
|
def script(self):
|
|
return self._property_script
|
|
|
|
@script.setter
|
|
def script(self, value):
|
|
if value is None:
|
|
self._property_script = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Script.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "script", Script)
|
|
self._property_script = value
|
|
|
|
@schema_property("tags")
|
|
def tags(self):
|
|
return self._property_tags
|
|
|
|
@tags.setter
|
|
def tags(self, value):
|
|
if value is None:
|
|
self._property_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tags", six.string_types, is_array=True)
|
|
self._property_tags = value
|
|
|
|
@schema_property("system_tags")
|
|
def system_tags(self):
|
|
return self._property_system_tags
|
|
|
|
@system_tags.setter
|
|
def system_tags(self, value):
|
|
if value is None:
|
|
self._property_system_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "system_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "system_tags", six.string_types, is_array=True)
|
|
self._property_system_tags = value
|
|
|
|
@schema_property("status_changed")
|
|
def status_changed(self):
|
|
return self._property_status_changed
|
|
|
|
@status_changed.setter
|
|
def status_changed(self, value):
|
|
if value is None:
|
|
self._property_status_changed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_changed", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_status_changed = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("published")
|
|
def published(self):
|
|
return self._property_published
|
|
|
|
@published.setter
|
|
def published(self, value):
|
|
if value is None:
|
|
self._property_published = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "published", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_published = value
|
|
|
|
@schema_property("last_worker")
|
|
def last_worker(self):
|
|
return self._property_last_worker
|
|
|
|
@last_worker.setter
|
|
def last_worker(self, value):
|
|
if value is None:
|
|
self._property_last_worker = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "last_worker", six.string_types)
|
|
self._property_last_worker = value
|
|
|
|
@schema_property("last_worker_report")
|
|
def last_worker_report(self):
|
|
return self._property_last_worker_report
|
|
|
|
@last_worker_report.setter
|
|
def last_worker_report(self, value):
|
|
if value is None:
|
|
self._property_last_worker_report = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "last_worker_report", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_last_worker_report = value
|
|
|
|
@schema_property("last_update")
|
|
def last_update(self):
|
|
return self._property_last_update
|
|
|
|
@last_update.setter
|
|
def last_update(self, value):
|
|
if value is None:
|
|
self._property_last_update = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "last_update", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_last_update = value
|
|
|
|
@schema_property("last_change")
|
|
def last_change(self):
|
|
return self._property_last_change
|
|
|
|
@last_change.setter
|
|
def last_change(self, value):
|
|
if value is None:
|
|
self._property_last_change = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "last_change", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_last_change = value
|
|
|
|
@schema_property("last_iteration")
|
|
def last_iteration(self):
|
|
return self._property_last_iteration
|
|
|
|
@last_iteration.setter
|
|
def last_iteration(self, value):
|
|
if value is None:
|
|
self._property_last_iteration = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "last_iteration", six.integer_types)
|
|
self._property_last_iteration = value
|
|
|
|
@schema_property("last_metrics")
|
|
def last_metrics(self):
|
|
return self._property_last_metrics
|
|
|
|
@last_metrics.setter
|
|
def last_metrics(self, value):
|
|
if value is None:
|
|
self._property_last_metrics = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "last_metrics", (dict,))
|
|
self._property_last_metrics = value
|
|
|
|
@schema_property("hyperparams")
|
|
def hyperparams(self):
|
|
return self._property_hyperparams
|
|
|
|
@hyperparams.setter
|
|
def hyperparams(self, value):
|
|
if value is None:
|
|
self._property_hyperparams = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "hyperparams", dict)
|
|
self.assert_isinstance(value.keys(), "hyperparams_keys", six.string_types, is_array=True)
|
|
self.assert_isinstance(value.values(), "hyperparams_values", (SectionParams, dict), is_array=True)
|
|
value = dict((k, SectionParams(**v) if isinstance(v, dict) else v) for k, v in value.items())
|
|
|
|
self._property_hyperparams = value
|
|
|
|
@schema_property("configuration")
|
|
def configuration(self):
|
|
return self._property_configuration
|
|
|
|
@configuration.setter
|
|
def configuration(self, value):
|
|
if value is None:
|
|
self._property_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configuration", dict)
|
|
self.assert_isinstance(value.keys(), "configuration_keys", six.string_types, is_array=True)
|
|
self.assert_isinstance(
|
|
value.values(),
|
|
"configuration_values",
|
|
(ConfigurationItem, dict),
|
|
is_array=True,
|
|
)
|
|
|
|
value = dict((k, ConfigurationItem(**v) if isinstance(v, dict) else v) for k, v in value.items())
|
|
|
|
self._property_configuration = value
|
|
|
|
@schema_property("runtime")
|
|
def runtime(self):
|
|
return self._property_runtime
|
|
|
|
@runtime.setter
|
|
def runtime(self, value):
|
|
if value is None:
|
|
self._property_runtime = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "runtime", (dict,))
|
|
self._property_runtime = value
|
|
|
|
|
|
class TaskUrls(NonStrictDataModel):
|
|
"""
|
|
:param model_urls:
|
|
:type model_urls: Sequence[str]
|
|
:param event_urls:
|
|
:type event_urls: Sequence[str]
|
|
:param artifact_urls:
|
|
:type artifact_urls: Sequence[str]
|
|
"""
|
|
|
|
_schema = {
|
|
"properties": {
|
|
"artifact_urls": {"items": {"type": "string"}, "type": ["array", "null"]},
|
|
"event_urls": {"items": {"type": "string"}, "type": ["array", "null"]},
|
|
"model_urls": {"items": {"type": "string"}, "type": ["array", "null"]},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, model_urls=None, event_urls=None, artifact_urls=None, **kwargs):
|
|
super(TaskUrls, self).__init__(**kwargs)
|
|
self.model_urls = model_urls
|
|
self.event_urls = event_urls
|
|
self.artifact_urls = artifact_urls
|
|
|
|
@schema_property("model_urls")
|
|
def model_urls(self):
|
|
return self._property_model_urls
|
|
|
|
@model_urls.setter
|
|
def model_urls(self, value):
|
|
if value is None:
|
|
self._property_model_urls = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "model_urls", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "model_urls", six.string_types, is_array=True)
|
|
self._property_model_urls = value
|
|
|
|
@schema_property("event_urls")
|
|
def event_urls(self):
|
|
return self._property_event_urls
|
|
|
|
@event_urls.setter
|
|
def event_urls(self, value):
|
|
if value is None:
|
|
self._property_event_urls = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "event_urls", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "event_urls", six.string_types, is_array=True)
|
|
self._property_event_urls = value
|
|
|
|
@schema_property("artifact_urls")
|
|
def artifact_urls(self):
|
|
return self._property_artifact_urls
|
|
|
|
@artifact_urls.setter
|
|
def artifact_urls(self, value):
|
|
if value is None:
|
|
self._property_artifact_urls = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "artifact_urls", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "artifact_urls", six.string_types, is_array=True)
|
|
self._property_artifact_urls = value
|
|
|
|
|
|
class AddOrUpdateArtifactsRequest(Request):
|
|
"""
|
|
Update existing artifacts (search by key/mode) and add new ones
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param artifacts: Artifacts to add or update
|
|
:type artifacts: Sequence[Artifact]
|
|
:param force: If set to True then both new and running task artifacts can be
|
|
edited. Otherwise only the new task ones. Default is False
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "add_or_update_artifacts"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact": {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {
|
|
"description": "Hash of entire raw data",
|
|
"type": "string",
|
|
},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {
|
|
"description": "System defined type",
|
|
"type": "string",
|
|
},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
"artifact_type_data": {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
},
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Artifacts to add or update",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": "array",
|
|
},
|
|
"force": {
|
|
"description": (
|
|
"If set to True then both new and running task artifacts can be edited. Otherwise only the new task"
|
|
" ones. Default is False"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task", "artifacts"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, artifacts, force=None, **kwargs):
|
|
super(AddOrUpdateArtifactsRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.artifacts = artifacts
|
|
self.force = force
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("artifacts")
|
|
def artifacts(self):
|
|
return self._property_artifacts
|
|
|
|
@artifacts.setter
|
|
def artifacts(self, value):
|
|
if value is None:
|
|
self._property_artifacts = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "artifacts", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [Artifact.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "artifacts", Artifact, is_array=True)
|
|
self._property_artifacts = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
|
|
class AddOrUpdateArtifactsResponse(Response):
|
|
"""
|
|
Response of tasks.add_or_update_artifacts endpoint.
|
|
|
|
:param updated: Indicates if the task was updated successfully
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "add_or_update_artifacts"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Indicates if the task was updated successfully",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(AddOrUpdateArtifactsResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class AddOrUpdateModelRequest(Request):
|
|
"""
|
|
Add or update task model
|
|
|
|
:param task: ID of the task
|
|
:type task: str
|
|
:param name: The task model name
|
|
:type name: str
|
|
:param model: The model ID
|
|
:type model: str
|
|
:param type: The task model type
|
|
:type type: ModelTypeEnum
|
|
:param iteration: Iteration (used to update task statistics)
|
|
:type iteration: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "add_or_update_model"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {"model_type_enum": {"enum": ["input", "output"], "type": "string"}},
|
|
"properties": {
|
|
"iteration": {
|
|
"description": "Iteration (used to update task statistics)",
|
|
"type": "integer",
|
|
},
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {"description": "The task model name", "type": "string"},
|
|
"task": {"description": "ID of the task", "type": "string"},
|
|
"type": {
|
|
"$ref": "#/definitions/model_type_enum",
|
|
"description": "The task model type",
|
|
},
|
|
},
|
|
"required": ["task", "name", "model", "type"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, name, model, type, iteration=None, **kwargs):
|
|
super(AddOrUpdateModelRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.name = name
|
|
self.model = model
|
|
self.type = type
|
|
self.iteration = iteration
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("model")
|
|
def model(self):
|
|
return self._property_model
|
|
|
|
@model.setter
|
|
def model(self, value):
|
|
if value is None:
|
|
self._property_model = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "model", six.string_types)
|
|
self._property_model = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = ModelTypeEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "type", enum.Enum)
|
|
self._property_type = value
|
|
|
|
@schema_property("iteration")
|
|
def iteration(self):
|
|
return self._property_iteration
|
|
|
|
@iteration.setter
|
|
def iteration(self, value):
|
|
if value is None:
|
|
self._property_iteration = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "iteration", six.integer_types)
|
|
self._property_iteration = value
|
|
|
|
|
|
class AddOrUpdateModelResponse(Response):
|
|
"""
|
|
Response of tasks.add_or_update_model endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "add_or_update_model"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(AddOrUpdateModelResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class ArchiveRequest(Request):
|
|
"""
|
|
Archive tasks.
|
|
If a task is queued it will first be dequeued and then archived.
|
|
|
|
|
|
:param tasks: List of task ids
|
|
:type tasks: Sequence[str]
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "archive"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"tasks": {
|
|
"description": "List of task ids",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
},
|
|
"required": ["tasks"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, tasks, status_reason=None, status_message=None, **kwargs):
|
|
super(ArchiveRequest, self).__init__(**kwargs)
|
|
self.tasks = tasks
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("tasks")
|
|
def tasks(self):
|
|
return self._property_tasks
|
|
|
|
@tasks.setter
|
|
def tasks(self, value):
|
|
if value is None:
|
|
self._property_tasks = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tasks", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tasks", six.string_types, is_array=True)
|
|
self._property_tasks = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class ArchiveResponse(Response):
|
|
"""
|
|
Response of tasks.archive endpoint.
|
|
|
|
:param archived: Indicates number of archived tasks
|
|
:type archived: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "archive"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"archived": {
|
|
"description": "Indicates number of archived tasks",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, archived=None, **kwargs):
|
|
super(ArchiveResponse, self).__init__(**kwargs)
|
|
self.archived = archived
|
|
|
|
@schema_property("archived")
|
|
def archived(self):
|
|
return self._property_archived
|
|
|
|
@archived.setter
|
|
def archived(self, value):
|
|
if value is None:
|
|
self._property_archived = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "archived", six.integer_types)
|
|
self._property_archived = value
|
|
|
|
|
|
class ArchiveManyRequest(Request):
|
|
"""
|
|
Archive tasks
|
|
|
|
:param ids: IDs of the tasks to archive
|
|
:type ids: Sequence[str]
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "archive_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"ids": {
|
|
"description": "IDs of the tasks to archive",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids, status_reason=None, status_message=None, **kwargs):
|
|
super(ArchiveManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class ArchiveManyResponse(Response):
|
|
"""
|
|
Response of tasks.archive_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "archive_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"archived": {
|
|
"description": "Indicates whether the task was archived",
|
|
"type": "boolean",
|
|
},
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, **kwargs):
|
|
super(ArchiveManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
|
|
class CloneRequest(Request):
|
|
"""
|
|
Clone an existing task
|
|
|
|
:param task: ID of the task
|
|
:type task: str
|
|
:param new_task_name: The name of the cloned task. If not provided then taken
|
|
from the original task
|
|
:type new_task_name: str
|
|
:param new_task_comment: The comment of the cloned task. If not provided then
|
|
taken from the original task
|
|
:type new_task_comment: str
|
|
:param new_task_tags: The user-defined tags of the cloned task. If not provided
|
|
then taken from the original task
|
|
:type new_task_tags: Sequence[str]
|
|
:param new_task_system_tags: The system tags of the cloned task. If not
|
|
provided then empty
|
|
:type new_task_system_tags: Sequence[str]
|
|
:param new_task_parent: The parent of the cloned task. If not provided then
|
|
taken from the original task
|
|
:type new_task_parent: str
|
|
:param new_task_project: The project of the cloned task. If not provided then
|
|
taken from the original task
|
|
:type new_task_project: str
|
|
:param new_task_hyperparams: The hyper params for the new task. If not provided
|
|
then taken from the original task
|
|
:type new_task_hyperparams: dict
|
|
:param new_task_configuration: The configuration for the new task. If not
|
|
provided then taken from the original task
|
|
:type new_task_configuration: dict
|
|
:param execution_overrides: The execution params for the cloned task. The
|
|
params not specified are taken from the original task
|
|
:type execution_overrides: Execution
|
|
:param validate_references: If set to 'false' then the task fields that are
|
|
copied from the original task are not validated. The default is false.
|
|
:type validate_references: bool
|
|
:param new_project_name: Clone task to a new project by this name (only if
|
|
`new_task_project` is not provided). If a project by this name already exists,
|
|
task will be cloned to existing project.
|
|
:type new_project_name: str
|
|
:param new_task_input_models: The list of input models for the cloned task. If
|
|
not specifed then copied from the original task
|
|
:type new_task_input_models: Sequence[TaskModelItem]
|
|
:param new_task_container: The docker container properties for the new task. If
|
|
not provided then taken from the original task
|
|
:type new_task_container: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "clone"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact": {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {
|
|
"description": "Hash of entire raw data",
|
|
"type": "string",
|
|
},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {
|
|
"description": "System defined type",
|
|
"type": "string",
|
|
},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
"artifact_type_data": {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"execution": {
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Task artifacts",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"framework": {
|
|
"description": (
|
|
"Framework related to the task. Case insensitive. Mandatory for Training tasks. "
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"model_desc": {
|
|
"additionalProperties": True,
|
|
"description": "Json object representing the Model descriptors",
|
|
"type": ["object", "null"],
|
|
},
|
|
"model_labels": {
|
|
"additionalProperties": {"type": "integer"},
|
|
"description": (
|
|
"Json object representing the ids of the labels in the model.\n The keys are the"
|
|
" layers' names and the values are the IDs.\n Not applicable for Register"
|
|
" (Import) tasks.\n Mandatory for Training tasks"
|
|
),
|
|
"type": ["object", "null"],
|
|
},
|
|
"parameters": {
|
|
"additionalProperties": True,
|
|
"description": "Json object containing the Task parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue": {
|
|
"description": "Queue ID where task was queued.",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"section_params": {
|
|
"additionalProperties": {"$ref": "#/definitions/params_item"},
|
|
"description": "Task section params",
|
|
"type": "object",
|
|
},
|
|
"task_model_item": {
|
|
"properties": {
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {
|
|
"description": "The task model name",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["name", "model"],
|
|
"type": "object",
|
|
},
|
|
},
|
|
"properties": {
|
|
"execution_overrides": {
|
|
"$ref": "#/definitions/execution",
|
|
"description": (
|
|
"The execution params for the cloned task. The params not specified are taken from the original "
|
|
"task"
|
|
),
|
|
},
|
|
"new_project_name": {
|
|
"description": (
|
|
"Clone task to a new project by this name (only if `new_task_project` is not provided). If a"
|
|
" project by this name already exists, task will be cloned to existing project."
|
|
),
|
|
"type": "string",
|
|
},
|
|
"new_task_comment": {
|
|
"description": "The comment of the cloned task. If not provided then taken from the original task",
|
|
"type": "string",
|
|
},
|
|
"new_task_configuration": {
|
|
"additionalProperties": {"$ref": "#/definitions/configuration_item"},
|
|
"description": "The configuration for the new task. If not provided then taken from the original task",
|
|
"type": "object",
|
|
},
|
|
"new_task_container": {
|
|
"additionalProperties": {"type": ["string", "null"]},
|
|
"description": (
|
|
"The docker container properties for the new task. If not provided then taken from the "
|
|
"original task"
|
|
),
|
|
"type": "object",
|
|
},
|
|
"new_task_hyperparams": {
|
|
"additionalProperties": {"$ref": "#/definitions/section_params"},
|
|
"description": "The hyper params for the new task. If not provided then taken from the original task",
|
|
"type": "object",
|
|
},
|
|
"new_task_input_models": {
|
|
"description": (
|
|
"The list of input models for the cloned task. If not specifed then copied from the original task"
|
|
),
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": "array",
|
|
},
|
|
"new_task_name": {
|
|
"description": "The name of the cloned task. If not provided then taken from the original task",
|
|
"type": "string",
|
|
},
|
|
"new_task_parent": {
|
|
"description": "The parent of the cloned task. If not provided then taken from the original task",
|
|
"type": "string",
|
|
},
|
|
"new_task_project": {
|
|
"description": "The project of the cloned task. If not provided then taken from the original task",
|
|
"type": "string",
|
|
},
|
|
"new_task_system_tags": {
|
|
"description": "The system tags of the cloned task. If not provided then empty",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"new_task_tags": {
|
|
"description": (
|
|
"The user-defined tags of the cloned task. If not provided then taken from the original task"
|
|
),
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "ID of the task", "type": "string"},
|
|
"validate_references": {
|
|
"description": (
|
|
"If set to 'false' then the task fields that are copied from the original task are not validated."
|
|
" The default is false."
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
task,
|
|
new_task_name=None,
|
|
new_task_comment=None,
|
|
new_task_tags=None,
|
|
new_task_system_tags=None,
|
|
new_task_parent=None,
|
|
new_task_project=None,
|
|
new_task_hyperparams=None,
|
|
new_task_configuration=None,
|
|
execution_overrides=None,
|
|
validate_references=None,
|
|
new_project_name=None,
|
|
new_task_input_models=None,
|
|
new_task_container=None,
|
|
**kwargs
|
|
):
|
|
super(CloneRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.new_task_name = new_task_name
|
|
self.new_task_comment = new_task_comment
|
|
self.new_task_tags = new_task_tags
|
|
self.new_task_system_tags = new_task_system_tags
|
|
self.new_task_parent = new_task_parent
|
|
self.new_task_project = new_task_project
|
|
self.new_task_hyperparams = new_task_hyperparams
|
|
self.new_task_configuration = new_task_configuration
|
|
self.execution_overrides = execution_overrides
|
|
self.validate_references = validate_references
|
|
self.new_project_name = new_project_name
|
|
self.new_task_input_models = new_task_input_models
|
|
self.new_task_container = new_task_container
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("new_task_name")
|
|
def new_task_name(self):
|
|
return self._property_new_task_name
|
|
|
|
@new_task_name.setter
|
|
def new_task_name(self, value):
|
|
if value is None:
|
|
self._property_new_task_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_name", six.string_types)
|
|
self._property_new_task_name = value
|
|
|
|
@schema_property("new_task_comment")
|
|
def new_task_comment(self):
|
|
return self._property_new_task_comment
|
|
|
|
@new_task_comment.setter
|
|
def new_task_comment(self, value):
|
|
if value is None:
|
|
self._property_new_task_comment = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_comment", six.string_types)
|
|
self._property_new_task_comment = value
|
|
|
|
@schema_property("new_task_tags")
|
|
def new_task_tags(self):
|
|
return self._property_new_task_tags
|
|
|
|
@new_task_tags.setter
|
|
def new_task_tags(self, value):
|
|
if value is None:
|
|
self._property_new_task_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "new_task_tags", six.string_types, is_array=True)
|
|
self._property_new_task_tags = value
|
|
|
|
@schema_property("new_task_system_tags")
|
|
def new_task_system_tags(self):
|
|
return self._property_new_task_system_tags
|
|
|
|
@new_task_system_tags.setter
|
|
def new_task_system_tags(self, value):
|
|
if value is None:
|
|
self._property_new_task_system_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_system_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "new_task_system_tags", six.string_types, is_array=True)
|
|
self._property_new_task_system_tags = value
|
|
|
|
@schema_property("new_task_parent")
|
|
def new_task_parent(self):
|
|
return self._property_new_task_parent
|
|
|
|
@new_task_parent.setter
|
|
def new_task_parent(self, value):
|
|
if value is None:
|
|
self._property_new_task_parent = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_parent", six.string_types)
|
|
self._property_new_task_parent = value
|
|
|
|
@schema_property("new_task_project")
|
|
def new_task_project(self):
|
|
return self._property_new_task_project
|
|
|
|
@new_task_project.setter
|
|
def new_task_project(self, value):
|
|
if value is None:
|
|
self._property_new_task_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_project", six.string_types)
|
|
self._property_new_task_project = value
|
|
|
|
@schema_property("new_task_hyperparams")
|
|
def new_task_hyperparams(self):
|
|
return self._property_new_task_hyperparams
|
|
|
|
@new_task_hyperparams.setter
|
|
def new_task_hyperparams(self, value):
|
|
if value is None:
|
|
self._property_new_task_hyperparams = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_hyperparams", (dict,))
|
|
self._property_new_task_hyperparams = value
|
|
|
|
@schema_property("new_task_configuration")
|
|
def new_task_configuration(self):
|
|
return self._property_new_task_configuration
|
|
|
|
@new_task_configuration.setter
|
|
def new_task_configuration(self, value):
|
|
if value is None:
|
|
self._property_new_task_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_configuration", (dict,))
|
|
self._property_new_task_configuration = value
|
|
|
|
@schema_property("execution_overrides")
|
|
def execution_overrides(self):
|
|
return self._property_execution_overrides
|
|
|
|
@execution_overrides.setter
|
|
def execution_overrides(self, value):
|
|
if value is None:
|
|
self._property_execution_overrides = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Execution.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "execution_overrides", Execution)
|
|
self._property_execution_overrides = value
|
|
|
|
@schema_property("validate_references")
|
|
def validate_references(self):
|
|
return self._property_validate_references
|
|
|
|
@validate_references.setter
|
|
def validate_references(self, value):
|
|
if value is None:
|
|
self._property_validate_references = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "validate_references", (bool,))
|
|
self._property_validate_references = value
|
|
|
|
@schema_property("new_project_name")
|
|
def new_project_name(self):
|
|
return self._property_new_project_name
|
|
|
|
@new_project_name.setter
|
|
def new_project_name(self, value):
|
|
if value is None:
|
|
self._property_new_project_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_project_name", six.string_types)
|
|
self._property_new_project_name = value
|
|
|
|
@schema_property("new_task_input_models")
|
|
def new_task_input_models(self):
|
|
return self._property_new_task_input_models
|
|
|
|
@new_task_input_models.setter
|
|
def new_task_input_models(self, value):
|
|
if value is None:
|
|
self._property_new_task_input_models = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_input_models", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [TaskModelItem.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "new_task_input_models", TaskModelItem, is_array=True)
|
|
self._property_new_task_input_models = value
|
|
|
|
@schema_property("new_task_container")
|
|
def new_task_container(self):
|
|
return self._property_new_task_container
|
|
|
|
@new_task_container.setter
|
|
def new_task_container(self, value):
|
|
if value is None:
|
|
self._property_new_task_container = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_task_container", (dict,))
|
|
self._property_new_task_container = value
|
|
|
|
|
|
class CloneResponse(Response):
|
|
"""
|
|
Response of tasks.clone endpoint.
|
|
|
|
:param id: ID of the new task
|
|
:type id: str
|
|
:param new_project: In case the new_project_name was specified returns the
|
|
target project details
|
|
:type new_project: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "clone"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"id": {"description": "ID of the new task", "type": ["string", "null"]},
|
|
"new_project": {
|
|
"description": "In case the new_project_name was specified returns the target project details",
|
|
"properties": {
|
|
"id": {
|
|
"description": "The ID of the target project",
|
|
"type": "string",
|
|
},
|
|
"name": {
|
|
"description": "The name of the target project",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": ["object", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, id=None, new_project=None, **kwargs):
|
|
super(CloneResponse, self).__init__(**kwargs)
|
|
self.id = id
|
|
self.new_project = new_project
|
|
|
|
@schema_property("id")
|
|
def id(self):
|
|
return self._property_id
|
|
|
|
@id.setter
|
|
def id(self, value):
|
|
if value is None:
|
|
self._property_id = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "id", six.string_types)
|
|
self._property_id = value
|
|
|
|
@schema_property("new_project")
|
|
def new_project(self):
|
|
return self._property_new_project
|
|
|
|
@new_project.setter
|
|
def new_project(self, value):
|
|
if value is None:
|
|
self._property_new_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "new_project", (dict,))
|
|
self._property_new_project = value
|
|
|
|
|
|
class CloseRequest(Request):
|
|
"""
|
|
Indicates that task is closed
|
|
|
|
:param force: Allows forcing state change even if transition is not supported
|
|
:type force: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "close"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "Allows forcing state change even if transition is not supported",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, force=False, status_reason=None, status_message=None, **kwargs):
|
|
super(CloseRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class CloseResponse(Response):
|
|
"""
|
|
Response of tasks.close endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "close"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(CloseResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class CompletedRequest(Request):
|
|
"""
|
|
Signal a task has completed
|
|
|
|
:param force: If not true, call fails if the task status is not
|
|
in_progress/stopped
|
|
:type force: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
:param publish: If set and the task is completed successfully then it is
|
|
published
|
|
:type publish: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "completed"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not in_progress/stopped",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"publish": {
|
|
"default": False,
|
|
"description": "If set and the task is completed successfully then it is published",
|
|
"type": "boolean",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, force=False, status_reason=None, status_message=None, publish=False, **kwargs):
|
|
super(CompletedRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
self.publish = publish
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("publish")
|
|
def publish(self):
|
|
return self._property_publish
|
|
|
|
@publish.setter
|
|
def publish(self, value):
|
|
if value is None:
|
|
self._property_publish = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "publish", (bool,))
|
|
self._property_publish = value
|
|
|
|
|
|
class CompletedResponse(Response):
|
|
"""
|
|
Response of tasks.completed endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
:param published: Number of tasks published (0 or 1)
|
|
:type published: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "completed"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"published": {
|
|
"description": "Number of tasks published (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, published=None, **kwargs):
|
|
super(CompletedResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
self.published = published
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
@schema_property("published")
|
|
def published(self):
|
|
return self._property_published
|
|
|
|
@published.setter
|
|
def published(self, value):
|
|
if value is None:
|
|
self._property_published = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "published", six.integer_types)
|
|
self._property_published = value
|
|
|
|
|
|
class CreateRequest(Request):
|
|
"""
|
|
Create a new task
|
|
|
|
:param name: Task name. Unique within the company.
|
|
:type name: str
|
|
:param tags: User-defined tags list
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags list. This field is reserved for system use,
|
|
please don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param type: Type of task
|
|
:type type: TaskTypeEnum
|
|
:param comment: Free text comment
|
|
:type comment: str
|
|
:param parent: Parent task id Must be a completed task.
|
|
:type parent: str
|
|
:param project: Project ID of the project to which this task is assigned Must
|
|
exist[ab]
|
|
:type project: str
|
|
:param output_dest: Output storage id Must be a reference to an existing
|
|
storage.
|
|
:type output_dest: str
|
|
:param execution: Task execution params
|
|
:type execution: Execution
|
|
:param script: Script info
|
|
:type script: Script
|
|
:param hyperparams: Task hyper params per section
|
|
:type hyperparams: dict
|
|
:param configuration: Task configuration params
|
|
:type configuration: dict
|
|
:param models: Task models
|
|
:type models: TaskModels
|
|
:param container: Docker container parameters
|
|
:type container: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "create"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact": {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {
|
|
"description": "Hash of entire raw data",
|
|
"type": "string",
|
|
},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {
|
|
"description": "System defined type",
|
|
"type": "string",
|
|
},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
"artifact_type_data": {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"execution": {
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Task artifacts",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"framework": {
|
|
"description": (
|
|
"Framework related to the task. Case insensitive. Mandatory for Training tasks. "
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"model_desc": {
|
|
"additionalProperties": True,
|
|
"description": "Json object representing the Model descriptors",
|
|
"type": ["object", "null"],
|
|
},
|
|
"model_labels": {
|
|
"additionalProperties": {"type": "integer"},
|
|
"description": (
|
|
"Json object representing the ids of the labels in the model.\n The keys are the"
|
|
" layers' names and the values are the IDs.\n Not applicable for Register"
|
|
" (Import) tasks.\n Mandatory for Training tasks"
|
|
),
|
|
"type": ["object", "null"],
|
|
},
|
|
"parameters": {
|
|
"additionalProperties": True,
|
|
"description": "Json object containing the Task parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue": {
|
|
"description": "Queue ID where task was queued.",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"script": {
|
|
"properties": {
|
|
"binary": {
|
|
"default": "python",
|
|
"description": "Binary to use when running the script",
|
|
"type": ["string", "null"],
|
|
},
|
|
"branch": {
|
|
"description": (
|
|
"Repository branch id If not provided and tag not provided, default repository branch "
|
|
"is used."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"diff": {
|
|
"description": "Uncommitted changes found in the repository when task was run",
|
|
"type": ["string", "null"],
|
|
},
|
|
"entry_point": {
|
|
"description": "Path to execute within the repository",
|
|
"type": ["string", "null"],
|
|
},
|
|
"repository": {
|
|
"description": "Name of the repository where the script is located",
|
|
"type": ["string", "null"],
|
|
},
|
|
"requirements": {
|
|
"description": "A JSON object containing requirements strings by key",
|
|
"type": ["object", "null"],
|
|
},
|
|
"tag": {
|
|
"description": "Repository tag",
|
|
"type": ["string", "null"],
|
|
},
|
|
"version_num": {
|
|
"description": (
|
|
"Version (changeset) number. Optional (default is head version) Unused if tag is provided."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"working_dir": {
|
|
"description": (
|
|
"Path to the folder from which to run the script Default - root folder of repository"
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"section_params": {
|
|
"additionalProperties": {"$ref": "#/definitions/params_item"},
|
|
"description": "Task section params",
|
|
"type": "object",
|
|
},
|
|
"task_model_item": {
|
|
"properties": {
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {
|
|
"description": "The task model name",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["name", "model"],
|
|
"type": "object",
|
|
},
|
|
"task_models": {
|
|
"properties": {
|
|
"input": {
|
|
"description": "The list of task input models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"output": {
|
|
"description": "The list of task output models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_type_enum": {
|
|
"enum": [
|
|
"training",
|
|
"testing",
|
|
"inference",
|
|
"data_processing",
|
|
"application",
|
|
"monitor",
|
|
"controller",
|
|
"optimizer",
|
|
"service",
|
|
"qc",
|
|
"custom",
|
|
],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"properties": {
|
|
"comment": {"description": "Free text comment ", "type": "string"},
|
|
"configuration": {
|
|
"additionalProperties": {"$ref": "#/definitions/configuration_item"},
|
|
"description": "Task configuration params",
|
|
"type": "object",
|
|
},
|
|
"container": {
|
|
"additionalProperties": {"type": ["string", "null"]},
|
|
"description": "Docker container parameters",
|
|
"type": "object",
|
|
},
|
|
"execution": {
|
|
"$ref": "#/definitions/execution",
|
|
"description": "Task execution params",
|
|
},
|
|
"hyperparams": {
|
|
"additionalProperties": {"$ref": "#/definitions/section_params"},
|
|
"description": "Task hyper params per section",
|
|
"type": "object",
|
|
},
|
|
"models": {
|
|
"$ref": "#/definitions/task_models",
|
|
"description": "Task models",
|
|
},
|
|
"name": {
|
|
"description": "Task name. Unique within the company.",
|
|
"type": "string",
|
|
},
|
|
"output_dest": {
|
|
"description": "Output storage id Must be a reference to an existing storage.",
|
|
"type": "string",
|
|
},
|
|
"parent": {
|
|
"description": "Parent task id Must be a completed task.",
|
|
"type": "string",
|
|
},
|
|
"project": {
|
|
"description": "Project ID of the project to which this task is assigned Must exist[ab]",
|
|
"type": "string",
|
|
},
|
|
"script": {"$ref": "#/definitions/script", "description": "Script info"},
|
|
"system_tags": {
|
|
"description": "System tags list. This field is reserved for system use, please don't use it.",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"tags": {
|
|
"description": "User-defined tags list",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/task_type_enum",
|
|
"description": "Type of task",
|
|
},
|
|
},
|
|
"required": ["name", "type"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
name,
|
|
type,
|
|
tags=None,
|
|
system_tags=None,
|
|
comment=None,
|
|
parent=None,
|
|
project=None,
|
|
input=None,
|
|
output_dest=None,
|
|
execution=None,
|
|
script=None,
|
|
hyperparams=None,
|
|
configuration=None,
|
|
models=None,
|
|
container=None,
|
|
**kwargs
|
|
):
|
|
super(CreateRequest, self).__init__(**kwargs)
|
|
self.name = name
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.type = type
|
|
self.comment = comment
|
|
self.parent = parent
|
|
self.project = project
|
|
self.input = input
|
|
self.output_dest = output_dest
|
|
self.execution = execution
|
|
self.script = script
|
|
self.hyperparams = hyperparams
|
|
self.configuration = configuration
|
|
self.models = models
|
|
self.container = container
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("tags")
|
|
def tags(self):
|
|
return self._property_tags
|
|
|
|
@tags.setter
|
|
def tags(self, value):
|
|
if value is None:
|
|
self._property_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tags", six.string_types, is_array=True)
|
|
self._property_tags = value
|
|
|
|
@schema_property("system_tags")
|
|
def system_tags(self):
|
|
return self._property_system_tags
|
|
|
|
@system_tags.setter
|
|
def system_tags(self, value):
|
|
if value is None:
|
|
self._property_system_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "system_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "system_tags", six.string_types, is_array=True)
|
|
self._property_system_tags = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = TaskTypeEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "type", enum.Enum)
|
|
self._property_type = value
|
|
|
|
@schema_property("comment")
|
|
def comment(self):
|
|
return self._property_comment
|
|
|
|
@comment.setter
|
|
def comment(self, value):
|
|
if value is None:
|
|
self._property_comment = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "comment", six.string_types)
|
|
self._property_comment = value
|
|
|
|
@schema_property("parent")
|
|
def parent(self):
|
|
return self._property_parent
|
|
|
|
@parent.setter
|
|
def parent(self, value):
|
|
if value is None:
|
|
self._property_parent = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "parent", six.string_types)
|
|
self._property_parent = value
|
|
|
|
@schema_property("project")
|
|
def project(self):
|
|
return self._property_project
|
|
|
|
@project.setter
|
|
def project(self, value):
|
|
if value is None:
|
|
self._property_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project", six.string_types)
|
|
self._property_project = value
|
|
|
|
@schema_property("input")
|
|
def input(self):
|
|
return self._property_input
|
|
|
|
@input.setter
|
|
def input(self, value):
|
|
self._property_input = value
|
|
|
|
@schema_property("output_dest")
|
|
def output_dest(self):
|
|
return self._property_output_dest
|
|
|
|
@output_dest.setter
|
|
def output_dest(self, value):
|
|
if value is None:
|
|
self._property_output_dest = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "output_dest", six.string_types)
|
|
self._property_output_dest = value
|
|
|
|
@schema_property("execution")
|
|
def execution(self):
|
|
return self._property_execution
|
|
|
|
@execution.setter
|
|
def execution(self, value):
|
|
if value is None:
|
|
self._property_execution = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Execution.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "execution", Execution)
|
|
self._property_execution = value
|
|
|
|
@schema_property("script")
|
|
def script(self):
|
|
return self._property_script
|
|
|
|
@script.setter
|
|
def script(self, value):
|
|
if value is None:
|
|
self._property_script = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Script.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "script", Script)
|
|
self._property_script = value
|
|
|
|
@schema_property("hyperparams")
|
|
def hyperparams(self):
|
|
return self._property_hyperparams
|
|
|
|
@hyperparams.setter
|
|
def hyperparams(self, value):
|
|
if value is None:
|
|
self._property_hyperparams = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "hyperparams", dict)
|
|
self.assert_isinstance(value.keys(), "hyperparams_keys", six.string_types, is_array=True)
|
|
self.assert_isinstance(value.values(), "hyperparams_values", (SectionParams, dict), is_array=True)
|
|
value = dict((k, SectionParams(**v) if isinstance(v, dict) else v) for k, v in value.items())
|
|
|
|
self._property_hyperparams = value
|
|
|
|
@schema_property("configuration")
|
|
def configuration(self):
|
|
return self._property_configuration
|
|
|
|
@configuration.setter
|
|
def configuration(self, value):
|
|
if value is None:
|
|
self._property_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configuration", dict)
|
|
self.assert_isinstance(value.keys(), "configuration_keys", six.string_types, is_array=True)
|
|
self.assert_isinstance(
|
|
value.values(),
|
|
"configuration_values",
|
|
(ConfigurationItem, dict),
|
|
is_array=True,
|
|
)
|
|
|
|
value = dict((k, ConfigurationItem(**v) if isinstance(v, dict) else v) for k, v in value.items())
|
|
|
|
self._property_configuration = value
|
|
|
|
@schema_property("models")
|
|
def models(self):
|
|
return self._property_models
|
|
|
|
@models.setter
|
|
def models(self, value):
|
|
if value is None:
|
|
self._property_models = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = TaskModels.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "models", TaskModels)
|
|
self._property_models = value
|
|
|
|
@schema_property("container")
|
|
def container(self):
|
|
return self._property_container
|
|
|
|
@container.setter
|
|
def container(self, value):
|
|
if value is None:
|
|
self._property_container = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "container", (dict,))
|
|
self._property_container = value
|
|
|
|
|
|
class CreateResponse(Response):
|
|
"""
|
|
Response of tasks.create endpoint.
|
|
|
|
:param id: ID of the task
|
|
:type id: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "create"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {"id": {"description": "ID of the task", "type": ["string", "null"]}},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, id=None, **kwargs):
|
|
super(CreateResponse, self).__init__(**kwargs)
|
|
self.id = id
|
|
|
|
@schema_property("id")
|
|
def id(self):
|
|
return self._property_id
|
|
|
|
@id.setter
|
|
def id(self, value):
|
|
if value is None:
|
|
self._property_id = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "id", six.string_types)
|
|
self._property_id = value
|
|
|
|
|
|
class DeleteRequest(Request):
|
|
"""
|
|
Delete a task along with any information stored for it (statistics, frame updates etc.)
|
|
Unless Force flag is provided, operation will fail if task has objects associated with it - i.e. children tasks and projects.
|
|
Models that refer to the deleted task will be updated with a task ID indicating a deleted task.
|
|
|
|
|
|
:param move_to_trash: Move task to trash instead of deleting it. For internal
|
|
use only, tasks in the trash are not visible from the API and cannot be
|
|
restored!
|
|
:type move_to_trash: bool
|
|
:param force: If not true, call fails if the task status is 'in_progress'
|
|
:type force: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
:param return_file_urls: If set to 'true' then return the urls of the files
|
|
that were uploaded by this task. Default value is 'false'
|
|
:type return_file_urls: bool
|
|
:param delete_output_models: If set to 'true' then delete output models of this
|
|
task that are not referenced by other tasks. Default value is 'true'
|
|
:type delete_output_models: bool
|
|
:param delete_external_artifacts: If set to 'true' then BE will try to delete
|
|
the extenal artifacts associated with the task from the fileserver (if
|
|
configured to do so)
|
|
:type delete_external_artifacts: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"delete_external_artifacts": {
|
|
"default": True,
|
|
"description": (
|
|
"If set to 'true' then BE will try to delete the extenal artifacts associated with the task from"
|
|
" the fileserver (if configured to do so)"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"delete_output_models": {
|
|
"description": (
|
|
"If set to 'true' then delete output models of this task that are not referenced by other tasks."
|
|
" Default value is 'true'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is 'in_progress'",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"move_to_trash": {
|
|
"default": False,
|
|
"description": (
|
|
"Move task to trash instead of deleting it. For internal use only, tasks in the trash are not"
|
|
" visible from the API and cannot be restored!"
|
|
),
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"return_file_urls": {
|
|
"description": (
|
|
"If set to 'true' then return the urls of the files that were uploaded by this task. Default "
|
|
"value is 'false'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
task,
|
|
move_to_trash=False,
|
|
force=False,
|
|
status_reason=None,
|
|
status_message=None,
|
|
return_file_urls=None,
|
|
delete_output_models=None,
|
|
delete_external_artifacts=True,
|
|
**kwargs
|
|
):
|
|
super(DeleteRequest, self).__init__(**kwargs)
|
|
self.move_to_trash = move_to_trash
|
|
self.force = force
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
self.return_file_urls = return_file_urls
|
|
self.delete_output_models = delete_output_models
|
|
self.delete_external_artifacts = delete_external_artifacts
|
|
|
|
@schema_property("move_to_trash")
|
|
def move_to_trash(self):
|
|
return self._property_move_to_trash
|
|
|
|
@move_to_trash.setter
|
|
def move_to_trash(self, value):
|
|
if value is None:
|
|
self._property_move_to_trash = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "move_to_trash", (bool,))
|
|
self._property_move_to_trash = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("return_file_urls")
|
|
def return_file_urls(self):
|
|
return self._property_return_file_urls
|
|
|
|
@return_file_urls.setter
|
|
def return_file_urls(self, value):
|
|
if value is None:
|
|
self._property_return_file_urls = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "return_file_urls", (bool,))
|
|
self._property_return_file_urls = value
|
|
|
|
@schema_property("delete_output_models")
|
|
def delete_output_models(self):
|
|
return self._property_delete_output_models
|
|
|
|
@delete_output_models.setter
|
|
def delete_output_models(self, value):
|
|
if value is None:
|
|
self._property_delete_output_models = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_output_models", (bool,))
|
|
self._property_delete_output_models = value
|
|
|
|
@schema_property("delete_external_artifacts")
|
|
def delete_external_artifacts(self):
|
|
return self._property_delete_external_artifacts
|
|
|
|
@delete_external_artifacts.setter
|
|
def delete_external_artifacts(self, value):
|
|
if value is None:
|
|
self._property_delete_external_artifacts = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_external_artifacts", (bool,))
|
|
self._property_delete_external_artifacts = value
|
|
|
|
|
|
class DeleteResponse(Response):
|
|
"""
|
|
Response of tasks.delete endpoint.
|
|
|
|
:param deleted: Indicates whether the task was deleted
|
|
:type deleted: bool
|
|
:param updated_children: Number of child tasks whose parent property was
|
|
updated
|
|
:type updated_children: int
|
|
:param updated_models: Number of models whose task property was updated
|
|
:type updated_models: int
|
|
:param events: Response from events.delete_for_task
|
|
:type events: dict
|
|
:param urls: The urls of the files that were uploaded by this task. Returned if
|
|
the 'return_file_urls' was set to 'true'
|
|
:type urls: TaskUrls
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"task_urls": {
|
|
"properties": {
|
|
"artifact_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"event_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"model_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"deleted": {
|
|
"description": "Indicates whether the task was deleted",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"events": {
|
|
"additionalProperties": True,
|
|
"description": "Response from events.delete_for_task",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated_children": {
|
|
"description": "Number of child tasks whose parent property was updated",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"updated_models": {
|
|
"description": "Number of models whose task property was updated",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"urls": {
|
|
"description": (
|
|
"The urls of the files that were uploaded by this task. Returned if the 'return_file_urls' was set"
|
|
" to 'true'"
|
|
),
|
|
"oneOf": [{"$ref": "#/definitions/task_urls"}, {"type": "null"}],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, deleted=None, updated_children=None, updated_models=None, events=None, urls=None, **kwargs):
|
|
super(DeleteResponse, self).__init__(**kwargs)
|
|
self.deleted = deleted
|
|
self.updated_children = updated_children
|
|
self.updated_models = updated_models
|
|
self.events = events
|
|
self.urls = urls
|
|
|
|
@schema_property("deleted")
|
|
def deleted(self):
|
|
return self._property_deleted
|
|
|
|
@deleted.setter
|
|
def deleted(self, value):
|
|
if value is None:
|
|
self._property_deleted = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "deleted", (bool,))
|
|
self._property_deleted = value
|
|
|
|
@schema_property("updated_children")
|
|
def updated_children(self):
|
|
return self._property_updated_children
|
|
|
|
@updated_children.setter
|
|
def updated_children(self, value):
|
|
if value is None:
|
|
self._property_updated_children = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated_children", six.integer_types)
|
|
self._property_updated_children = value
|
|
|
|
@schema_property("updated_models")
|
|
def updated_models(self):
|
|
return self._property_updated_models
|
|
|
|
@updated_models.setter
|
|
def updated_models(self, value):
|
|
if value is None:
|
|
self._property_updated_models = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated_models", six.integer_types)
|
|
self._property_updated_models = value
|
|
|
|
@schema_property("events")
|
|
def events(self):
|
|
return self._property_events
|
|
|
|
@events.setter
|
|
def events(self, value):
|
|
if value is None:
|
|
self._property_events = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "events", (dict,))
|
|
self._property_events = value
|
|
|
|
@schema_property("urls")
|
|
def urls(self):
|
|
return self._property_urls
|
|
|
|
@urls.setter
|
|
def urls(self, value):
|
|
if value is None:
|
|
self._property_urls = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = TaskUrls.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "urls", TaskUrls)
|
|
self._property_urls = value
|
|
|
|
|
|
class DeleteArtifactsRequest(Request):
|
|
"""
|
|
Delete existing artifacts (search by key/mode)
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param artifacts: Artifacts to delete
|
|
:type artifacts: Sequence[ArtifactId]
|
|
:param force: If set to True then both new and running task artifacts can be
|
|
deleted. Otherwise only the new task ones. Default is False
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_artifacts"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact_id": {
|
|
"properties": {
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
},
|
|
"required": ["key"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Artifacts to delete",
|
|
"items": {"$ref": "#/definitions/artifact_id"},
|
|
"type": "array",
|
|
},
|
|
"force": {
|
|
"description": (
|
|
"If set to True then both new and running task artifacts can be deleted. Otherwise only the new"
|
|
" task ones. Default is False"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task", "artifacts"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, artifacts, force=None, **kwargs):
|
|
super(DeleteArtifactsRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.artifacts = artifacts
|
|
self.force = force
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("artifacts")
|
|
def artifacts(self):
|
|
return self._property_artifacts
|
|
|
|
@artifacts.setter
|
|
def artifacts(self, value):
|
|
if value is None:
|
|
self._property_artifacts = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "artifacts", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [ArtifactId.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "artifacts", ArtifactId, is_array=True)
|
|
self._property_artifacts = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
|
|
class DeleteArtifactsResponse(Response):
|
|
"""
|
|
Response of tasks.delete_artifacts endpoint.
|
|
|
|
:param deleted: Indicates if the task was updated successfully
|
|
:type deleted: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_artifacts"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"deleted": {
|
|
"description": "Indicates if the task was updated successfully",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, deleted=None, **kwargs):
|
|
super(DeleteArtifactsResponse, self).__init__(**kwargs)
|
|
self.deleted = deleted
|
|
|
|
@schema_property("deleted")
|
|
def deleted(self):
|
|
return self._property_deleted
|
|
|
|
@deleted.setter
|
|
def deleted(self, value):
|
|
if value is None:
|
|
self._property_deleted = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "deleted", six.integer_types)
|
|
self._property_deleted = value
|
|
|
|
|
|
class DeleteConfigurationRequest(Request):
|
|
"""
|
|
Delete task configuration items
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param configuration: List of configuration items to delete
|
|
:type configuration: Sequence[str]
|
|
:param force: If set to True then both new and running task configuration can
|
|
be deleted. Otherwise only the new task ones. Default is False
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_configuration"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"configuration": {
|
|
"description": "List of configuration items to delete",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"force": {
|
|
"description": (
|
|
"If set to True then both new and running task configuration can be deleted. Otherwise only the new"
|
|
" task ones. Default is False"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task", "configuration"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, configuration, force=None, **kwargs):
|
|
super(DeleteConfigurationRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.configuration = configuration
|
|
self.force = force
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("configuration")
|
|
def configuration(self):
|
|
return self._property_configuration
|
|
|
|
@configuration.setter
|
|
def configuration(self, value):
|
|
if value is None:
|
|
self._property_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configuration", dict)
|
|
self.assert_isinstance(value.keys(), "configuration_keys", six.string_types, is_array=True)
|
|
self.assert_isinstance(
|
|
value.values(),
|
|
"configuration_values",
|
|
(ConfigurationItem, dict),
|
|
is_array=True,
|
|
)
|
|
|
|
value = dict((k, ConfigurationItem(**v) if isinstance(v, dict) else v) for k, v in value.items())
|
|
|
|
self._property_configuration = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
|
|
class DeleteConfigurationResponse(Response):
|
|
"""
|
|
Response of tasks.delete_configuration endpoint.
|
|
|
|
:param deleted: Indicates if the task was updated successfully
|
|
:type deleted: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_configuration"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"deleted": {
|
|
"description": "Indicates if the task was updated successfully",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, deleted=None, **kwargs):
|
|
super(DeleteConfigurationResponse, self).__init__(**kwargs)
|
|
self.deleted = deleted
|
|
|
|
@schema_property("deleted")
|
|
def deleted(self):
|
|
return self._property_deleted
|
|
|
|
@deleted.setter
|
|
def deleted(self, value):
|
|
if value is None:
|
|
self._property_deleted = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "deleted", six.integer_types)
|
|
self._property_deleted = value
|
|
|
|
|
|
class DeleteHyperParamsRequest(Request):
|
|
"""
|
|
Delete task hyper parameters
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param hyperparams: List of hyper parameters to delete. In case a parameter
|
|
with an empty name is passed all the section will be deleted
|
|
:type hyperparams: Sequence[ParamKey]
|
|
:param force: If set to True then both new and running task hyper params can be
|
|
deleted. Otherwise only the new task ones. Default is False
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_hyper_params"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"param_key": {
|
|
"properties": {
|
|
"name": {
|
|
"description": (
|
|
"Name of the parameter. If the name is ommitted then the corresponding operation is"
|
|
" performed on the whole section"
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"force": {
|
|
"description": (
|
|
"If set to True then both new and running task hyper params can be deleted. Otherwise only the new"
|
|
" task ones. Default is False"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"hyperparams": {
|
|
"description": (
|
|
"List of hyper parameters to delete. In case a parameter with an empty name is passed all the"
|
|
" section will be deleted"
|
|
),
|
|
"items": {"$ref": "#/definitions/param_key"},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task", "hyperparams"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, hyperparams, force=None, **kwargs):
|
|
super(DeleteHyperParamsRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.hyperparams = hyperparams
|
|
self.force = force
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("hyperparams")
|
|
def hyperparams(self):
|
|
return self._property_hyperparams
|
|
|
|
@hyperparams.setter
|
|
def hyperparams(self, value):
|
|
if value is None:
|
|
self._property_hyperparams = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "hyperparams", (ParamKey, dict), is_array=True)
|
|
value = [(ParamKey(**v) if isinstance(v, dict) else v) for v in value]
|
|
|
|
self._property_hyperparams = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
|
|
class DeleteHyperParamsResponse(Response):
|
|
"""
|
|
Response of tasks.delete_hyper_params endpoint.
|
|
|
|
:param deleted: Indicates if the task was updated successfully
|
|
:type deleted: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_hyper_params"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"deleted": {
|
|
"description": "Indicates if the task was updated successfully",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, deleted=None, **kwargs):
|
|
super(DeleteHyperParamsResponse, self).__init__(**kwargs)
|
|
self.deleted = deleted
|
|
|
|
@schema_property("deleted")
|
|
def deleted(self):
|
|
return self._property_deleted
|
|
|
|
@deleted.setter
|
|
def deleted(self, value):
|
|
if value is None:
|
|
self._property_deleted = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "deleted", six.integer_types)
|
|
self._property_deleted = value
|
|
|
|
|
|
class DeleteManyRequest(Request):
|
|
"""
|
|
Delete tasks
|
|
|
|
:param ids: IDs of the tasks to delete
|
|
:type ids: Sequence[str]
|
|
:param move_to_trash: Move task to trash instead of deleting it. For internal
|
|
use only, tasks in the trash are not visible from the API and cannot be
|
|
restored!
|
|
:type move_to_trash: bool
|
|
:param force: If not true, call fails if the task status is 'in_progress'
|
|
:type force: bool
|
|
:param return_file_urls: If set to 'true' then return the urls of the files
|
|
that were uploaded by the tasks. Default value is 'false'
|
|
:type return_file_urls: bool
|
|
:param delete_output_models: If set to 'true' then delete output models of the
|
|
tasks that are not referenced by other tasks. Default value is 'true'
|
|
:type delete_output_models: bool
|
|
:param delete_external_artifacts: If set to 'true' then BE will try to delete
|
|
the extenal artifacts associated with the tasks from the fileserver (if
|
|
configured to do so)
|
|
:type delete_external_artifacts: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"delete_external_artifacts": {
|
|
"default": True,
|
|
"description": (
|
|
"If set to 'true' then BE will try to delete the extenal artifacts associated with the tasks from"
|
|
" the fileserver (if configured to do so)"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"delete_output_models": {
|
|
"description": (
|
|
"If set to 'true' then delete output models of the tasks that are not referenced by other tasks."
|
|
" Default value is 'true'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is 'in_progress'",
|
|
"type": "boolean",
|
|
},
|
|
"ids": {
|
|
"description": "IDs of the tasks to delete",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"move_to_trash": {
|
|
"default": False,
|
|
"description": (
|
|
"Move task to trash instead of deleting it. For internal use only, tasks in the trash are not"
|
|
" visible from the API and cannot be restored!"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"return_file_urls": {
|
|
"description": (
|
|
"If set to 'true' then return the urls of the files that were uploaded by the tasks. Default "
|
|
"value is 'false'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
ids,
|
|
move_to_trash=False,
|
|
force=False,
|
|
return_file_urls=None,
|
|
delete_output_models=None,
|
|
delete_external_artifacts=True,
|
|
**kwargs
|
|
):
|
|
super(DeleteManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.move_to_trash = move_to_trash
|
|
self.force = force
|
|
self.return_file_urls = return_file_urls
|
|
self.delete_output_models = delete_output_models
|
|
self.delete_external_artifacts = delete_external_artifacts
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("move_to_trash")
|
|
def move_to_trash(self):
|
|
return self._property_move_to_trash
|
|
|
|
@move_to_trash.setter
|
|
def move_to_trash(self, value):
|
|
if value is None:
|
|
self._property_move_to_trash = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "move_to_trash", (bool,))
|
|
self._property_move_to_trash = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("return_file_urls")
|
|
def return_file_urls(self):
|
|
return self._property_return_file_urls
|
|
|
|
@return_file_urls.setter
|
|
def return_file_urls(self, value):
|
|
if value is None:
|
|
self._property_return_file_urls = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "return_file_urls", (bool,))
|
|
self._property_return_file_urls = value
|
|
|
|
@schema_property("delete_output_models")
|
|
def delete_output_models(self):
|
|
return self._property_delete_output_models
|
|
|
|
@delete_output_models.setter
|
|
def delete_output_models(self, value):
|
|
if value is None:
|
|
self._property_delete_output_models = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_output_models", (bool,))
|
|
self._property_delete_output_models = value
|
|
|
|
@schema_property("delete_external_artifacts")
|
|
def delete_external_artifacts(self):
|
|
return self._property_delete_external_artifacts
|
|
|
|
@delete_external_artifacts.setter
|
|
def delete_external_artifacts(self, value):
|
|
if value is None:
|
|
self._property_delete_external_artifacts = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_external_artifacts", (bool,))
|
|
self._property_delete_external_artifacts = value
|
|
|
|
|
|
class DeleteManyResponse(Response):
|
|
"""
|
|
Response of tasks.delete_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"task_urls": {
|
|
"properties": {
|
|
"artifact_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"event_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"model_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"deleted": {
|
|
"description": "Indicates whether the task was deleted",
|
|
"type": "boolean",
|
|
},
|
|
"deleted_models": {
|
|
"description": "Number of deleted output models",
|
|
"type": "integer",
|
|
},
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
"updated_children": {
|
|
"description": "Number of child tasks whose parent property was updated",
|
|
"type": "integer",
|
|
},
|
|
"updated_models": {
|
|
"description": "Number of models whose task property was updated",
|
|
"type": "integer",
|
|
},
|
|
"urls": {
|
|
"$ref": "#/definitions/task_urls",
|
|
"description": (
|
|
"The urls of the files that were uploaded by the task. Returned if the"
|
|
" 'return_file_urls' was set to 'true'"
|
|
),
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, **kwargs):
|
|
super(DeleteManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
|
|
class DeleteModelsRequest(Request):
|
|
"""
|
|
Delete models from task
|
|
|
|
:param task: ID of the task
|
|
:type task: str
|
|
:param models: The list of models to delete
|
|
:type models: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_models"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {"model_type_enum": {"enum": ["input", "output"], "type": "string"}},
|
|
"properties": {
|
|
"models": {
|
|
"description": "The list of models to delete",
|
|
"items": {
|
|
"properties": {
|
|
"name": {
|
|
"description": "The task model name",
|
|
"type": "string",
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/model_type_enum",
|
|
"description": "The task model type",
|
|
},
|
|
},
|
|
"required": ["name", "type"],
|
|
"type": "object",
|
|
},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "ID of the task", "type": "string"},
|
|
},
|
|
"required": ["task", "models"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, models, **kwargs):
|
|
super(DeleteModelsRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.models = models
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("models")
|
|
def models(self):
|
|
return self._property_models
|
|
|
|
@models.setter
|
|
def models(self, value):
|
|
if value is None:
|
|
self._property_models = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "models", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "models", (dict,), is_array=True)
|
|
self._property_models = value
|
|
|
|
|
|
class DeleteModelsResponse(Response):
|
|
"""
|
|
Response of tasks.delete_models endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "delete_models"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(DeleteModelsResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class DequeueRequest(Request):
|
|
"""
|
|
Remove a task from its queue.
|
|
Fails if task status is not queued.
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "dequeue"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, status_reason=None, status_message=None, **kwargs):
|
|
super(DequeueRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class DequeueResponse(Response):
|
|
"""
|
|
Response of tasks.dequeue endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
:param dequeued: Number of tasks dequeued (0 or 1)
|
|
:type dequeued: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "dequeue"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"dequeued": {
|
|
"description": "Number of tasks dequeued (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, dequeued=None, **kwargs):
|
|
super(DequeueResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
self.dequeued = dequeued
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
@schema_property("dequeued")
|
|
def dequeued(self):
|
|
return self._property_dequeued
|
|
|
|
@dequeued.setter
|
|
def dequeued(self, value):
|
|
if value is None:
|
|
self._property_dequeued = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "dequeued", six.integer_types)
|
|
self._property_dequeued = value
|
|
|
|
|
|
class DequeueManyRequest(Request):
|
|
"""
|
|
Dequeue tasks
|
|
|
|
:param ids: IDs of the tasks to dequeue
|
|
:type ids: Sequence[str]
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "dequeue_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"ids": {
|
|
"description": "IDs of the tasks to dequeue",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids, status_reason=None, status_message=None, **kwargs):
|
|
super(DequeueManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class DequeueManyResponse(Response):
|
|
"""
|
|
Response of tasks.dequeue_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "dequeue_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"dequeued": {
|
|
"description": "Indicates whether the task was dequeued",
|
|
"type": "boolean",
|
|
},
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": "integer",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, **kwargs):
|
|
super(DequeueManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
|
|
class EditRequest(Request):
|
|
"""
|
|
Edit task's details.
|
|
|
|
:param task: ID of the task
|
|
:type task: str
|
|
:param force: If not true, call fails if the task status is not 'created'
|
|
:type force: bool
|
|
:param name: Task name Unique within the company.
|
|
:type name: str
|
|
:param tags: User-defined tags list
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags list. This field is reserved for system use,
|
|
please don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param type: Type of task
|
|
:type type: TaskTypeEnum
|
|
:param comment: Free text comment
|
|
:type comment: str
|
|
:param parent: Parent task id Must be a completed task.
|
|
:type parent: str
|
|
:param project: Project ID of the project to which this task is assigned Must
|
|
exist[ab]
|
|
:type project: str
|
|
:param output_dest: Output storage id Must be a reference to an existing
|
|
storage.
|
|
:type output_dest: str
|
|
:param execution: Task execution params
|
|
:type execution: Execution
|
|
:param script: Script info
|
|
:type script: Script
|
|
:param hyperparams: Task hyper params per section
|
|
:type hyperparams: dict
|
|
:param configuration: Task configuration params
|
|
:type configuration: dict
|
|
:param models: Task models
|
|
:type models: TaskModels
|
|
:param container: Docker container parameters
|
|
:type container: dict
|
|
:param runtime: Task runtime mapping
|
|
:type runtime: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "edit"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact": {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {
|
|
"description": "Hash of entire raw data",
|
|
"type": "string",
|
|
},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {
|
|
"description": "System defined type",
|
|
"type": "string",
|
|
},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
"artifact_type_data": {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"execution": {
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Task artifacts",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"framework": {
|
|
"description": (
|
|
"Framework related to the task. Case insensitive. Mandatory for Training tasks. "
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"model_desc": {
|
|
"additionalProperties": True,
|
|
"description": "Json object representing the Model descriptors",
|
|
"type": ["object", "null"],
|
|
},
|
|
"model_labels": {
|
|
"additionalProperties": {"type": "integer"},
|
|
"description": (
|
|
"Json object representing the ids of the labels in the model.\n The keys are the"
|
|
" layers' names and the values are the IDs.\n Not applicable for Register"
|
|
" (Import) tasks.\n Mandatory for Training tasks"
|
|
),
|
|
"type": ["object", "null"],
|
|
},
|
|
"parameters": {
|
|
"additionalProperties": True,
|
|
"description": "Json object containing the Task parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue": {
|
|
"description": "Queue ID where task was queued.",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"script": {
|
|
"properties": {
|
|
"binary": {
|
|
"default": "python",
|
|
"description": "Binary to use when running the script",
|
|
"type": ["string", "null"],
|
|
},
|
|
"branch": {
|
|
"description": (
|
|
"Repository branch id If not provided and tag not provided, default repository branch "
|
|
"is used."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"diff": {
|
|
"description": "Uncommitted changes found in the repository when task was run",
|
|
"type": ["string", "null"],
|
|
},
|
|
"entry_point": {
|
|
"description": "Path to execute within the repository",
|
|
"type": ["string", "null"],
|
|
},
|
|
"repository": {
|
|
"description": "Name of the repository where the script is located",
|
|
"type": ["string", "null"],
|
|
},
|
|
"requirements": {
|
|
"description": "A JSON object containing requirements strings by key",
|
|
"type": ["object", "null"],
|
|
},
|
|
"tag": {
|
|
"description": "Repository tag",
|
|
"type": ["string", "null"],
|
|
},
|
|
"version_num": {
|
|
"description": (
|
|
"Version (changeset) number. Optional (default is head version) Unused if tag is provided."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"working_dir": {
|
|
"description": (
|
|
"Path to the folder from which to run the script Default - root folder of repository"
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"section_params": {
|
|
"additionalProperties": {"$ref": "#/definitions/params_item"},
|
|
"description": "Task section params",
|
|
"type": "object",
|
|
},
|
|
"task_model_item": {
|
|
"properties": {
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {
|
|
"description": "The task model name",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["name", "model"],
|
|
"type": "object",
|
|
},
|
|
"task_models": {
|
|
"properties": {
|
|
"input": {
|
|
"description": "The list of task input models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"output": {
|
|
"description": "The list of task output models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_type_enum": {
|
|
"enum": [
|
|
"training",
|
|
"testing",
|
|
"inference",
|
|
"data_processing",
|
|
"application",
|
|
"monitor",
|
|
"controller",
|
|
"optimizer",
|
|
"service",
|
|
"qc",
|
|
"custom",
|
|
],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"properties": {
|
|
"comment": {"description": "Free text comment ", "type": "string"},
|
|
"configuration": {
|
|
"additionalProperties": {"$ref": "#/definitions/configuration_item"},
|
|
"description": "Task configuration params",
|
|
"type": "object",
|
|
},
|
|
"container": {
|
|
"type": "object",
|
|
"description": "Docker container parameters",
|
|
"additionalProperties": {"type": ["string", "null"]},
|
|
},
|
|
"execution": {
|
|
"$ref": "#/definitions/execution",
|
|
"description": "Task execution params",
|
|
},
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not 'created'",
|
|
"type": "boolean",
|
|
},
|
|
"hyperparams": {
|
|
"additionalProperties": {"$ref": "#/definitions/section_params"},
|
|
"description": "Task hyper params per section",
|
|
"type": "object",
|
|
},
|
|
"models": {
|
|
"$ref": "#/definitions/task_models",
|
|
"description": "Task models",
|
|
},
|
|
"name": {
|
|
"description": "Task name Unique within the company.",
|
|
"type": "string",
|
|
},
|
|
"output_dest": {
|
|
"description": "Output storage id Must be a reference to an existing storage.",
|
|
"type": "string",
|
|
},
|
|
"parent": {
|
|
"description": "Parent task id Must be a completed task.",
|
|
"type": "string",
|
|
},
|
|
"project": {
|
|
"description": "Project ID of the project to which this task is assigned Must exist[ab]",
|
|
"type": "string",
|
|
},
|
|
"runtime": {
|
|
"additionalProperties": True,
|
|
"description": "Task runtime mapping",
|
|
"type": "object",
|
|
},
|
|
"script": {"$ref": "#/definitions/script", "description": "Script info"},
|
|
"system_tags": {
|
|
"description": "System tags list. This field is reserved for system use, please don't use it.",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"tags": {
|
|
"description": "User-defined tags list",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "ID of the task", "type": "string"},
|
|
"type": {
|
|
"$ref": "#/definitions/task_type_enum",
|
|
"description": "Type of task",
|
|
},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
task,
|
|
force=False,
|
|
name=None,
|
|
tags=None,
|
|
system_tags=None,
|
|
type=None,
|
|
comment=None,
|
|
parent=None,
|
|
project=None,
|
|
output_dest=None,
|
|
execution=None,
|
|
script=None,
|
|
hyperparams=None,
|
|
configuration=None,
|
|
models=None,
|
|
container=None,
|
|
runtime=None,
|
|
**kwargs
|
|
):
|
|
super(EditRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.force = force
|
|
self.name = name
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.type = type
|
|
self.comment = comment
|
|
self.parent = parent
|
|
self.project = project
|
|
self.output_dest = output_dest
|
|
self.execution = execution
|
|
self.script = script
|
|
self.hyperparams = hyperparams
|
|
self.configuration = configuration
|
|
self.models = models
|
|
self.container = container
|
|
self.runtime = runtime
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("tags")
|
|
def tags(self):
|
|
return self._property_tags
|
|
|
|
@tags.setter
|
|
def tags(self, value):
|
|
if value is None:
|
|
self._property_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tags", six.string_types, is_array=True)
|
|
self._property_tags = value
|
|
|
|
@schema_property("system_tags")
|
|
def system_tags(self):
|
|
return self._property_system_tags
|
|
|
|
@system_tags.setter
|
|
def system_tags(self, value):
|
|
if value is None:
|
|
self._property_system_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "system_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "system_tags", six.string_types, is_array=True)
|
|
self._property_system_tags = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = TaskTypeEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "type", enum.Enum)
|
|
self._property_type = value
|
|
|
|
@schema_property("comment")
|
|
def comment(self):
|
|
return self._property_comment
|
|
|
|
@comment.setter
|
|
def comment(self, value):
|
|
if value is None:
|
|
self._property_comment = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "comment", six.string_types)
|
|
self._property_comment = value
|
|
|
|
@schema_property("parent")
|
|
def parent(self):
|
|
return self._property_parent
|
|
|
|
@parent.setter
|
|
def parent(self, value):
|
|
if value is None:
|
|
self._property_parent = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "parent", six.string_types)
|
|
self._property_parent = value
|
|
|
|
@schema_property("project")
|
|
def project(self):
|
|
return self._property_project
|
|
|
|
@project.setter
|
|
def project(self, value):
|
|
if value is None:
|
|
self._property_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project", six.string_types)
|
|
self._property_project = value
|
|
|
|
@schema_property("output_dest")
|
|
def output_dest(self):
|
|
return self._property_output_dest
|
|
|
|
@output_dest.setter
|
|
def output_dest(self, value):
|
|
if value is None:
|
|
self._property_output_dest = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "output_dest", six.string_types)
|
|
self._property_output_dest = value
|
|
|
|
@schema_property("execution")
|
|
def execution(self):
|
|
return self._property_execution
|
|
|
|
@execution.setter
|
|
def execution(self, value):
|
|
if value is None:
|
|
self._property_execution = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Execution.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "execution", Execution)
|
|
self._property_execution = value
|
|
|
|
@schema_property("script")
|
|
def script(self):
|
|
return self._property_script
|
|
|
|
@script.setter
|
|
def script(self, value):
|
|
if value is None:
|
|
self._property_script = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Script.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "script", Script)
|
|
self._property_script = value
|
|
|
|
@schema_property("hyperparams")
|
|
def hyperparams(self):
|
|
return self._property_hyperparams
|
|
|
|
@hyperparams.setter
|
|
def hyperparams(self, value):
|
|
if value is None:
|
|
self._property_hyperparams = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "hyperparams", dict)
|
|
self.assert_isinstance(value.keys(), "hyperparams_keys", six.string_types, is_array=True)
|
|
self.assert_isinstance(value.values(), "hyperparams_values", (SectionParams, dict), is_array=True)
|
|
value = dict((k, SectionParams(**v) if isinstance(v, dict) else v) for k, v in value.items())
|
|
|
|
self._property_hyperparams = value
|
|
|
|
@schema_property("configuration")
|
|
def configuration(self):
|
|
return self._property_configuration
|
|
|
|
@configuration.setter
|
|
def configuration(self, value):
|
|
if value is None:
|
|
self._property_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configuration", dict)
|
|
self.assert_isinstance(value.keys(), "configuration_keys", six.string_types, is_array=True)
|
|
self.assert_isinstance(
|
|
value.values(),
|
|
"configuration_values",
|
|
(ConfigurationItem, dict),
|
|
is_array=True,
|
|
)
|
|
|
|
value = dict((k, ConfigurationItem(**v) if isinstance(v, dict) else v) for k, v in value.items())
|
|
|
|
self._property_configuration = value
|
|
|
|
@schema_property("models")
|
|
def models(self):
|
|
return self._property_models
|
|
|
|
@models.setter
|
|
def models(self, value):
|
|
if value is None:
|
|
self._property_models = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = TaskModels.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "models", TaskModels)
|
|
self._property_models = value
|
|
|
|
@schema_property("container")
|
|
def container(self):
|
|
return self._property_container
|
|
|
|
@container.setter
|
|
def container(self, value):
|
|
if value is None:
|
|
self._property_container = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "container", (dict,))
|
|
self._property_container = value
|
|
|
|
@schema_property("runtime")
|
|
def runtime(self):
|
|
return self._property_runtime
|
|
|
|
@runtime.setter
|
|
def runtime(self, value):
|
|
if value is None:
|
|
self._property_runtime = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "runtime", (dict,))
|
|
self._property_runtime = value
|
|
|
|
|
|
class EditResponse(Response):
|
|
"""
|
|
Response of tasks.edit endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "edit"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(EditResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class EditConfigurationRequest(Request):
|
|
"""
|
|
Add or update task configuration
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param configuration: Task configuration items. The new ones will be added and
|
|
the already existing ones will be updated
|
|
:type configuration: Sequence[ConfigurationItem]
|
|
:param replace_configuration: If set then the all the configuration items will
|
|
be replaced with the provided ones. Otherwise only the provided configuration
|
|
items will be updated or added
|
|
:type replace_configuration: bool
|
|
:param force: If set to True then both new and running task configuration can
|
|
be edited. Otherwise only the new task ones. Default is False
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "edit_configuration"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"configuration": {
|
|
"description": (
|
|
"Task configuration items. The new ones will be added and the already existing ones will be updated"
|
|
),
|
|
"items": {"$ref": "#/definitions/configuration_item"},
|
|
"type": "array",
|
|
},
|
|
"force": {
|
|
"description": (
|
|
"If set to True then both new and running task configuration can be edited. Otherwise only the new"
|
|
" task ones. Default is False"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"replace_configuration": {
|
|
"description": (
|
|
"If set then the all the configuration items will be replaced with the provided ones. Otherwise"
|
|
" only the provided configuration items will be updated or added"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task", "configuration"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, configuration, replace_configuration=None, force=None, **kwargs):
|
|
super(EditConfigurationRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.configuration = configuration
|
|
self.replace_configuration = replace_configuration
|
|
self.force = force
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("configuration")
|
|
def configuration(self):
|
|
return self._property_configuration
|
|
|
|
@configuration.setter
|
|
def configuration(self, value):
|
|
if value is None:
|
|
self._property_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configuration", (dict, ConfigurationItem), is_array=True)
|
|
value = [(ConfigurationItem(**v) if isinstance(v, dict) else v) for v in value]
|
|
|
|
self._property_configuration = value
|
|
|
|
@schema_property("replace_configuration")
|
|
def replace_configuration(self):
|
|
return self._property_replace_configuration
|
|
|
|
@replace_configuration.setter
|
|
def replace_configuration(self, value):
|
|
if value is None:
|
|
self._property_replace_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "replace_configuration", (bool,))
|
|
self._property_replace_configuration = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
|
|
class EditConfigurationResponse(Response):
|
|
"""
|
|
Response of tasks.edit_configuration endpoint.
|
|
|
|
:param updated: Indicates if the task was updated successfully
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "edit_configuration"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Indicates if the task was updated successfully",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(EditConfigurationResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class EditHyperParamsRequest(Request):
|
|
"""
|
|
Add or update task hyper parameters
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param hyperparams: Task hyper parameters. The new ones will be added and the
|
|
already existing ones will be updated
|
|
:type hyperparams: Sequence[ParamsItem]
|
|
:param replace_hyperparams: Can be set to one of the following: 'all' - all the
|
|
hyper parameters will be replaced with the provided ones 'section' - the
|
|
sections that present in the new parameters will be replaced with the provided
|
|
parameters 'none' (the default value) - only the specific parameters will be
|
|
updated or added
|
|
:type replace_hyperparams: ReplaceHyperparamsEnum
|
|
:param force: If set to True then both new and running task hyper params can be
|
|
edited. Otherwise only the new task ones. Default is False
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "edit_hyper_params"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"replace_hyperparams_enum": {
|
|
"enum": ["none", "section", "all"],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"properties": {
|
|
"force": {
|
|
"description": (
|
|
"If set to True then both new and running task hyper params can be edited. Otherwise only the new"
|
|
" task ones. Default is False"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"hyperparams": {
|
|
"description": (
|
|
"Task hyper parameters. The new ones will be added and the already existing ones will be updated"
|
|
),
|
|
"items": {"$ref": "#/definitions/params_item"},
|
|
"type": "array",
|
|
},
|
|
"replace_hyperparams": {
|
|
"$ref": "#/definitions/replace_hyperparams_enum",
|
|
"description": (
|
|
"Can be set to one of the following:\n 'all' - all the hyper parameters will be"
|
|
" replaced with the provided ones\n 'section' - the sections that present in"
|
|
" the new parameters will be replaced with the provided parameters\n 'none'"
|
|
" (the default value) - only the specific parameters will be updated or added"
|
|
),
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task", "hyperparams"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, hyperparams, replace_hyperparams=None, force=None, **kwargs):
|
|
super(EditHyperParamsRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.hyperparams = hyperparams
|
|
self.replace_hyperparams = replace_hyperparams
|
|
self.force = force
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("hyperparams")
|
|
def hyperparams(self):
|
|
return self._property_hyperparams
|
|
|
|
@hyperparams.setter
|
|
def hyperparams(self, value):
|
|
if value is None:
|
|
self._property_hyperparams = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "hyperparams", (dict, ParamsItem), is_array=True)
|
|
value = [(ParamsItem(**v) if isinstance(v, dict) else v) for v in value]
|
|
|
|
self._property_hyperparams = value
|
|
|
|
@schema_property("replace_hyperparams")
|
|
def replace_hyperparams(self):
|
|
return self._property_replace_hyperparams
|
|
|
|
@replace_hyperparams.setter
|
|
def replace_hyperparams(self, value):
|
|
if value is None:
|
|
self._property_replace_hyperparams = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = ReplaceHyperparamsEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "replace_hyperparams", enum.Enum)
|
|
self._property_replace_hyperparams = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
|
|
class EditHyperParamsResponse(Response):
|
|
"""
|
|
Response of tasks.edit_hyper_params endpoint.
|
|
|
|
:param updated: Indicates if the task was updated successfully
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "edit_hyper_params"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Indicates if the task was updated successfully",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(EditHyperParamsResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class EnqueueRequest(Request):
|
|
"""
|
|
Adds a task into a queue.
|
|
|
|
Fails if task state is not 'created'.
|
|
|
|
Fails if the following parameters in the task were not filled:
|
|
|
|
* execution.script.repository
|
|
|
|
* execution.script.entrypoint
|
|
|
|
|
|
:param queue: Queue id. If not provided and no queue name is passed then task
|
|
is added to the default queue.
|
|
:type queue: str
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
:param queue_name: The name of the queue. If the queue does not exist then it
|
|
is auto-created. Cannot be used together with the queue id
|
|
:type queue_name: str
|
|
:param verify_watched_queue: If passed then check wheter there are any workers
|
|
watching the queue
|
|
:type verify_watched_queue: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "enqueue"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"queue": {
|
|
"description": (
|
|
"Queue id. If not provided and no queue name is passed then task is added to the default queue."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"queue_name": {
|
|
"description": (
|
|
"The name of the queue. If the queue does not exist then it is auto-created. Cannot be used "
|
|
"together with the queue id"
|
|
),
|
|
"type": "string",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
"verify_watched_queue": {
|
|
"default": False,
|
|
"description": "If passed then check wheter there are any workers watching the queue",
|
|
"type": "boolean",
|
|
},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
task,
|
|
queue=None,
|
|
status_reason=None,
|
|
status_message=None,
|
|
queue_name=None,
|
|
verify_watched_queue=False,
|
|
**kwargs
|
|
):
|
|
super(EnqueueRequest, self).__init__(**kwargs)
|
|
self.queue = queue
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
self.queue_name = queue_name
|
|
self.verify_watched_queue = verify_watched_queue
|
|
|
|
@schema_property("queue")
|
|
def queue(self):
|
|
return self._property_queue
|
|
|
|
@queue.setter
|
|
def queue(self, value):
|
|
if value is None:
|
|
self._property_queue = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "queue", six.string_types)
|
|
self._property_queue = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("queue_name")
|
|
def queue_name(self):
|
|
return self._property_queue_name
|
|
|
|
@queue_name.setter
|
|
def queue_name(self, value):
|
|
if value is None:
|
|
self._property_queue_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "queue_name", six.string_types)
|
|
self._property_queue_name = value
|
|
|
|
@schema_property("verify_watched_queue")
|
|
def verify_watched_queue(self):
|
|
return self._property_verify_watched_queue
|
|
|
|
@verify_watched_queue.setter
|
|
def verify_watched_queue(self, value):
|
|
if value is None:
|
|
self._property_verify_watched_queue = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "verify_watched_queue", (bool,))
|
|
self._property_verify_watched_queue = value
|
|
|
|
|
|
class EnqueueResponse(Response):
|
|
"""
|
|
Response of tasks.enqueue endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
:param queued: Number of tasks queued (0 or 1)
|
|
:type queued: int
|
|
:param queue_watched: Returns Trueif there are workers or autscalers working
|
|
with the queue
|
|
:type queue_watched: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "enqueue"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue_watched": {
|
|
"description": "Returns Trueif there are workers or autscalers working with the queue",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"queued": {
|
|
"description": "Number of tasks queued (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, queued=None, queue_watched=None, **kwargs):
|
|
super(EnqueueResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
self.queued = queued
|
|
self.queue_watched = queue_watched
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
@schema_property("queued")
|
|
def queued(self):
|
|
return self._property_queued
|
|
|
|
@queued.setter
|
|
def queued(self, value):
|
|
if value is None:
|
|
self._property_queued = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "queued", six.integer_types)
|
|
self._property_queued = value
|
|
|
|
@schema_property("queue_watched")
|
|
def queue_watched(self):
|
|
return self._property_queue_watched
|
|
|
|
@queue_watched.setter
|
|
def queue_watched(self, value):
|
|
if value is None:
|
|
self._property_queue_watched = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "queue_watched", (bool,))
|
|
self._property_queue_watched = value
|
|
|
|
|
|
class EnqueueManyRequest(Request):
|
|
"""
|
|
Enqueue tasks
|
|
|
|
:param ids: IDs of the tasks to enqueue
|
|
:type ids: Sequence[str]
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
:param queue: Queue id. If not provided and no queue name is passed then tasks
|
|
are added to the default queue.
|
|
:type queue: str
|
|
:param validate_tasks: If set then tasks are validated before enqueue
|
|
:type validate_tasks: bool
|
|
:param queue_name: The name of the queue. If the queue does not exist then it
|
|
is auto-created. Cannot be used together with the queue id
|
|
:type queue_name: str
|
|
:param verify_watched_queue: If passed then check wheter there are any workers
|
|
watching the queue
|
|
:type verify_watched_queue: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "enqueue_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"ids": {
|
|
"description": "IDs of the tasks to enqueue",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"queue": {
|
|
"description": (
|
|
"Queue id. If not provided and no queue name is passed then tasks are added to the default queue."
|
|
),
|
|
"type": "string",
|
|
},
|
|
"queue_name": {
|
|
"description": (
|
|
"The name of the queue. If the queue does not exist then it is auto-created. Cannot be used "
|
|
"together with the queue id"
|
|
),
|
|
"type": "string",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"validate_tasks": {
|
|
"default": False,
|
|
"description": "If set then tasks are validated before enqueue",
|
|
"type": "boolean",
|
|
},
|
|
"verify_watched_queue": {
|
|
"default": False,
|
|
"description": "If passed then check wheter there are any workers watching the queue",
|
|
"type": "boolean",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
ids,
|
|
status_reason=None,
|
|
status_message=None,
|
|
queue=None,
|
|
validate_tasks=False,
|
|
queue_name=None,
|
|
verify_watched_queue=False,
|
|
**kwargs
|
|
):
|
|
super(EnqueueManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
self.queue = queue
|
|
self.validate_tasks = validate_tasks
|
|
self.queue_name = queue_name
|
|
self.verify_watched_queue = verify_watched_queue
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("queue")
|
|
def queue(self):
|
|
return self._property_queue
|
|
|
|
@queue.setter
|
|
def queue(self, value):
|
|
if value is None:
|
|
self._property_queue = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "queue", six.string_types)
|
|
self._property_queue = value
|
|
|
|
@schema_property("validate_tasks")
|
|
def validate_tasks(self):
|
|
return self._property_validate_tasks
|
|
|
|
@validate_tasks.setter
|
|
def validate_tasks(self, value):
|
|
if value is None:
|
|
self._property_validate_tasks = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "validate_tasks", (bool,))
|
|
self._property_validate_tasks = value
|
|
|
|
@schema_property("queue_name")
|
|
def queue_name(self):
|
|
return self._property_queue_name
|
|
|
|
@queue_name.setter
|
|
def queue_name(self, value):
|
|
if value is None:
|
|
self._property_queue_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "queue_name", six.string_types)
|
|
self._property_queue_name = value
|
|
|
|
@schema_property("verify_watched_queue")
|
|
def verify_watched_queue(self):
|
|
return self._property_verify_watched_queue
|
|
|
|
@verify_watched_queue.setter
|
|
def verify_watched_queue(self, value):
|
|
if value is None:
|
|
self._property_verify_watched_queue = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "verify_watched_queue", (bool,))
|
|
self._property_verify_watched_queue = value
|
|
|
|
|
|
class EnqueueManyResponse(Response):
|
|
"""
|
|
Response of tasks.enqueue_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
:param queue_watched: Returns Trueif there are workers or autscalers working
|
|
with the queue
|
|
:type queue_watched: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "enqueue_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"queue_watched": {
|
|
"description": "Returns Trueif there are workers or autscalers working with the queue",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
"queued": {
|
|
"description": "Indicates whether the task was queued",
|
|
"type": "boolean",
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": "integer",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, queue_watched=None, **kwargs):
|
|
super(EnqueueManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
self.queue_watched = queue_watched
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
@schema_property("queue_watched")
|
|
def queue_watched(self):
|
|
return self._property_queue_watched
|
|
|
|
@queue_watched.setter
|
|
def queue_watched(self, value):
|
|
if value is None:
|
|
self._property_queue_watched = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "queue_watched", (bool,))
|
|
self._property_queue_watched = value
|
|
|
|
|
|
class FailedRequest(Request):
|
|
"""
|
|
Indicates that task has failed
|
|
|
|
:param force: Allows forcing state change even if transition is not supported
|
|
:type force: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "failed"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "Allows forcing state change even if transition is not supported",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, force=False, status_reason=None, status_message=None, **kwargs):
|
|
super(FailedRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class FailedResponse(Response):
|
|
"""
|
|
Response of tasks.failed endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "failed"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(FailedResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class GetAllRequest(Request):
|
|
"""
|
|
Get all the company's tasks and all public tasks
|
|
|
|
:param id: List of IDs to filter by
|
|
:type id: Sequence[str]
|
|
:param name: Get only tasks whose name matches this pattern (python regular
|
|
expression syntax)
|
|
:type name: str
|
|
:param user: List of user IDs used to filter results by the task's creating
|
|
user
|
|
:type user: Sequence[str]
|
|
:param project: List of project IDs
|
|
:type project: Sequence[str]
|
|
:param page: Page number, returns a specific page out of the resulting list of
|
|
tasks
|
|
:type page: int
|
|
:param page_size: Page size, specifies the number of results returned in each
|
|
page (last page may contain fewer results)
|
|
:type page_size: int
|
|
:param order_by: List of field names to order by. When search_text is used,
|
|
'@text_score' can be used as a field representing the text score of returned
|
|
documents. Use '-' prefix to specify descending order. Optional, recommended
|
|
when using page. If the first order field is a hyper parameter or metric then
|
|
string values are ordered according to numeric ordering rules where applicable
|
|
:type order_by: Sequence[str]
|
|
:param type: List of task types. One or more of: 'import', 'annotation',
|
|
'training' or 'testing' (case insensitive)
|
|
:type type: Sequence[str]
|
|
:param tags: List of task user-defined tags. Use '-' prefix to exclude tags
|
|
:type tags: Sequence[str]
|
|
:param system_tags: List of task system tags. Use '-' prefix to exclude system
|
|
tags
|
|
:type system_tags: Sequence[str]
|
|
:param status: List of task status.
|
|
:type status: Sequence[TaskStatusEnum]
|
|
:param only_fields: List of task field names (nesting is supported using '.',
|
|
e.g. execution.model_labels). If provided, this list defines the query's
|
|
projection (only these fields will be returned for each result entry)
|
|
:type only_fields: Sequence[str]
|
|
:param parent: Parent ID
|
|
:type parent: str
|
|
:param status_changed: List of status changed constraint strings (utcformat,
|
|
epoch) with an optional prefix modifier (\\>,\\>=, \\<, \\<=)
|
|
:type status_changed: Sequence[str]
|
|
:param search_text: Free text search query
|
|
:type search_text: str
|
|
:param _all_: Multi-field pattern condition (all fields match pattern)
|
|
:type _all_: MultiFieldPatternData
|
|
:param _any_: Multi-field pattern condition (any field matches pattern)
|
|
:type _any_: MultiFieldPatternData
|
|
:param search_hidden: If set to 'true' then hidden tasks are included in the
|
|
search results
|
|
:type search_hidden: bool
|
|
:param scroll_id: Scroll ID returned from the previos calls to get_all
|
|
:type scroll_id: str
|
|
:param refresh_scroll: If set then all the data received with this scroll will
|
|
be requeried
|
|
:type refresh_scroll: bool
|
|
:param size: The number of tasks to retrieve
|
|
:type size: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_all"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"multi_field_pattern_data": {
|
|
"properties": {
|
|
"fields": {
|
|
"description": "List of field names",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"pattern": {
|
|
"description": "Pattern string (regex)",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_status_enum": {
|
|
"enum": [
|
|
"created",
|
|
"queued",
|
|
"in_progress",
|
|
"stopped",
|
|
"published",
|
|
"publishing",
|
|
"closed",
|
|
"failed",
|
|
"completed",
|
|
"unknown",
|
|
],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"dependencies": {"page": ["page_size"]},
|
|
"properties": {
|
|
"_all_": {
|
|
"description": "Multi-field pattern condition (all fields match pattern)",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/multi_field_pattern_data"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"_any_": {
|
|
"description": "Multi-field pattern condition (any field matches pattern)",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/multi_field_pattern_data"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"id": {
|
|
"description": "List of IDs to filter by",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Get only tasks whose name matches this pattern (python regular expression syntax)",
|
|
"type": ["string", "null"],
|
|
},
|
|
"only_fields": {
|
|
"description": (
|
|
"List of task field names (nesting is supported using '.', e.g. execution.model_labels). If"
|
|
" provided, this list defines the query's projection (only these fields will be returned for each"
|
|
" result entry)"
|
|
),
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"order_by": {
|
|
"description": (
|
|
"List of field names to order by. When search_text is used,\n '@text_score' can"
|
|
" be used as a field representing the text score of returned documents.\n Use"
|
|
" '-' prefix to specify descending order. Optional, recommended when using page.\n "
|
|
" If the first order field is a hyper parameter or metric then string values are ordered\n "
|
|
" according to numeric ordering rules where applicable"
|
|
),
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"page": {
|
|
"description": "Page number, returns a specific page out of the resulting list of tasks",
|
|
"minimum": 0,
|
|
"type": ["integer", "null"],
|
|
},
|
|
"page_size": {
|
|
"description": (
|
|
"Page size, specifies the number of results returned in each page (last page may contain fewer "
|
|
"results)"
|
|
),
|
|
"minimum": 1,
|
|
"type": ["integer", "null"],
|
|
},
|
|
"parent": {"description": "Parent ID", "type": ["string", "null"]},
|
|
"project": {
|
|
"description": "List of project IDs",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"refresh_scroll": {
|
|
"description": "If set then all the data received with this scroll will be requeried",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"scroll_id": {
|
|
"description": "Scroll ID returned from the previos calls to get_all",
|
|
"type": ["string", "null"],
|
|
},
|
|
"search_hidden": {
|
|
"default": False,
|
|
"description": "If set to 'true' then hidden tasks are included in the search results",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"search_text": {
|
|
"description": "Free text search query",
|
|
"type": ["string", "null"],
|
|
},
|
|
"size": {
|
|
"description": "The number of tasks to retrieve",
|
|
"minimum": 1,
|
|
"type": ["integer", "null"],
|
|
},
|
|
"status": {
|
|
"description": "List of task status.",
|
|
"items": {"$ref": "#/definitions/task_status_enum"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"status_changed": {
|
|
"description": (
|
|
"List of status changed constraint strings, or a single string (utcformat, epoch) with an optional prefix modifier "
|
|
"(\\>,\\>=, \\<, \\<=)"
|
|
),
|
|
"items": {"pattern": "^(>=|>|<=|<)?.*$", "type": "string"},
|
|
"type": ["string", "array", "null"],
|
|
},
|
|
"system_tags": {
|
|
"description": "List of task system tags. Use '-' prefix to exclude system tags",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"tags": {
|
|
"description": "List of task user-defined tags. Use '-' prefix to exclude tags",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"type": {
|
|
"description": (
|
|
"List of task types. One or more of: 'import', 'annotation', 'training' or "
|
|
"'testing' (case insensitive)"
|
|
),
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"user": {
|
|
"description": "List of user IDs used to filter results by the task's creating user",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
id=None,
|
|
name=None,
|
|
user=None,
|
|
project=None,
|
|
page=None,
|
|
page_size=None,
|
|
order_by=None,
|
|
type=None,
|
|
tags=None,
|
|
system_tags=None,
|
|
status=None,
|
|
only_fields=None,
|
|
parent=None,
|
|
status_changed=None,
|
|
search_text=None,
|
|
_all_=None,
|
|
_any_=None,
|
|
search_hidden=False,
|
|
scroll_id=None,
|
|
refresh_scroll=None,
|
|
size=None,
|
|
**kwargs
|
|
):
|
|
super(GetAllRequest, self).__init__(**kwargs)
|
|
self.id = id
|
|
self.name = name
|
|
self.user = user
|
|
self.project = project
|
|
self.page = page
|
|
self.page_size = page_size
|
|
self.order_by = order_by
|
|
self.type = type
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.status = status
|
|
self.only_fields = only_fields
|
|
self.parent = parent
|
|
self.status_changed = status_changed
|
|
self.search_text = search_text
|
|
self._all_ = _all_
|
|
self._any_ = _any_
|
|
self.search_hidden = search_hidden
|
|
self.scroll_id = scroll_id
|
|
self.refresh_scroll = refresh_scroll
|
|
self.size = size
|
|
|
|
@schema_property("id")
|
|
def id(self):
|
|
return self._property_id
|
|
|
|
@id.setter
|
|
def id(self, value):
|
|
if value is None:
|
|
self._property_id = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "id", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "id", six.string_types, is_array=True)
|
|
self._property_id = value
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("user")
|
|
def user(self):
|
|
return self._property_user
|
|
|
|
@user.setter
|
|
def user(self, value):
|
|
if value is None:
|
|
self._property_user = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "user", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "user", six.string_types, is_array=True)
|
|
self._property_user = value
|
|
|
|
@schema_property("project")
|
|
def project(self):
|
|
return self._property_project
|
|
|
|
@project.setter
|
|
def project(self, value):
|
|
if value is None:
|
|
self._property_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "project", six.string_types, is_array=True)
|
|
self._property_project = value
|
|
|
|
@schema_property("page")
|
|
def page(self):
|
|
return self._property_page
|
|
|
|
@page.setter
|
|
def page(self, value):
|
|
if value is None:
|
|
self._property_page = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "page", six.integer_types)
|
|
self._property_page = value
|
|
|
|
@schema_property("page_size")
|
|
def page_size(self):
|
|
return self._property_page_size
|
|
|
|
@page_size.setter
|
|
def page_size(self, value):
|
|
if value is None:
|
|
self._property_page_size = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "page_size", six.integer_types)
|
|
self._property_page_size = value
|
|
|
|
@schema_property("order_by")
|
|
def order_by(self):
|
|
return self._property_order_by
|
|
|
|
@order_by.setter
|
|
def order_by(self, value):
|
|
if value is None:
|
|
self._property_order_by = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "order_by", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "order_by", six.string_types, is_array=True)
|
|
self._property_order_by = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "type", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "type", six.string_types, is_array=True)
|
|
self._property_type = value
|
|
|
|
@schema_property("tags")
|
|
def tags(self):
|
|
return self._property_tags
|
|
|
|
@tags.setter
|
|
def tags(self, value):
|
|
if value is None:
|
|
self._property_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tags", six.string_types, is_array=True)
|
|
self._property_tags = value
|
|
|
|
@schema_property("system_tags")
|
|
def system_tags(self):
|
|
return self._property_system_tags
|
|
|
|
@system_tags.setter
|
|
def system_tags(self, value):
|
|
if value is None:
|
|
self._property_system_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "system_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "system_tags", six.string_types, is_array=True)
|
|
self._property_system_tags = value
|
|
|
|
@schema_property("status")
|
|
def status(self):
|
|
return self._property_status
|
|
|
|
@status.setter
|
|
def status(self, value):
|
|
if value is None:
|
|
self._property_status = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status", (list, tuple))
|
|
if any(isinstance(v, six.string_types) for v in value):
|
|
value = [TaskStatusEnum(v) if isinstance(v, six.string_types) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "status", TaskStatusEnum, is_array=True)
|
|
self._property_status = value
|
|
|
|
@schema_property("only_fields")
|
|
def only_fields(self):
|
|
return self._property_only_fields
|
|
|
|
@only_fields.setter
|
|
def only_fields(self, value):
|
|
if value is None:
|
|
self._property_only_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "only_fields", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "only_fields", six.string_types, is_array=True)
|
|
self._property_only_fields = value
|
|
|
|
@schema_property("parent")
|
|
def parent(self):
|
|
return self._property_parent
|
|
|
|
@parent.setter
|
|
def parent(self, value):
|
|
if value is None:
|
|
self._property_parent = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "parent", six.string_types)
|
|
self._property_parent = value
|
|
|
|
@schema_property("status_changed")
|
|
def status_changed(self):
|
|
return self._property_status_changed
|
|
|
|
@status_changed.setter
|
|
def status_changed(self, value):
|
|
if value is None:
|
|
self._property_status_changed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_changed", (str, list, tuple))
|
|
|
|
if not isinstance(value, six.string_types):
|
|
self.assert_isinstance(value, "status_changed", six.string_types, is_array=True)
|
|
|
|
self._property_status_changed = value
|
|
|
|
@schema_property("search_text")
|
|
def search_text(self):
|
|
return self._property_search_text
|
|
|
|
@search_text.setter
|
|
def search_text(self, value):
|
|
if value is None:
|
|
self._property_search_text = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "search_text", six.string_types)
|
|
self._property_search_text = value
|
|
|
|
@schema_property("_all_")
|
|
def _all_(self):
|
|
return self._property__all_
|
|
|
|
@_all_.setter
|
|
def _all_(self, value):
|
|
if value is None:
|
|
self._property__all_ = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = MultiFieldPatternData.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "_all_", MultiFieldPatternData)
|
|
self._property__all_ = value
|
|
|
|
@schema_property("_any_")
|
|
def _any_(self):
|
|
return self._property__any_
|
|
|
|
@_any_.setter
|
|
def _any_(self, value):
|
|
if value is None:
|
|
self._property__any_ = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = MultiFieldPatternData.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "_any_", MultiFieldPatternData)
|
|
self._property__any_ = value
|
|
|
|
@schema_property("search_hidden")
|
|
def search_hidden(self):
|
|
return self._property_search_hidden
|
|
|
|
@search_hidden.setter
|
|
def search_hidden(self, value):
|
|
if value is None:
|
|
self._property_search_hidden = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "search_hidden", (bool,))
|
|
self._property_search_hidden = value
|
|
|
|
@schema_property("scroll_id")
|
|
def scroll_id(self):
|
|
return self._property_scroll_id
|
|
|
|
@scroll_id.setter
|
|
def scroll_id(self, value):
|
|
if value is None:
|
|
self._property_scroll_id = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "scroll_id", six.string_types)
|
|
self._property_scroll_id = value
|
|
|
|
@schema_property("refresh_scroll")
|
|
def refresh_scroll(self):
|
|
return self._property_refresh_scroll
|
|
|
|
@refresh_scroll.setter
|
|
def refresh_scroll(self, value):
|
|
if value is None:
|
|
self._property_refresh_scroll = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "refresh_scroll", (bool,))
|
|
self._property_refresh_scroll = value
|
|
|
|
@schema_property("size")
|
|
def size(self):
|
|
return self._property_size
|
|
|
|
@size.setter
|
|
def size(self, value):
|
|
if value is None:
|
|
self._property_size = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "size", six.integer_types)
|
|
self._property_size = value
|
|
|
|
|
|
class GetAllResponse(Response):
|
|
"""
|
|
Response of tasks.get_all endpoint.
|
|
|
|
:param tasks: List of tasks
|
|
:type tasks: Sequence[Task]
|
|
:param scroll_id: Scroll ID that can be used with the next calls to get_all to
|
|
retrieve more data
|
|
:type scroll_id: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_all"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact": {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {
|
|
"description": "Hash of entire raw data",
|
|
"type": "string",
|
|
},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {
|
|
"description": "System defined type",
|
|
"type": "string",
|
|
},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
"artifact_type_data": {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"execution": {
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Task artifacts",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"framework": {
|
|
"description": (
|
|
"Framework related to the task. Case insensitive. Mandatory for Training tasks. "
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"model_desc": {
|
|
"additionalProperties": True,
|
|
"description": "Json object representing the Model descriptors",
|
|
"type": ["object", "null"],
|
|
},
|
|
"model_labels": {
|
|
"additionalProperties": {"type": "integer"},
|
|
"description": (
|
|
"Json object representing the ids of the labels in the model.\n The keys are the"
|
|
" layers' names and the values are the IDs.\n Not applicable for Register"
|
|
" (Import) tasks.\n Mandatory for Training tasks"
|
|
),
|
|
"type": ["object", "null"],
|
|
},
|
|
"parameters": {
|
|
"additionalProperties": True,
|
|
"description": "Json object containing the Task parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue": {
|
|
"description": "Queue ID where task was queued.",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"last_metrics_event": {
|
|
"properties": {
|
|
"max_value": {
|
|
"description": "Maximum value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"max_value_iteration": {
|
|
"description": "The iteration at which the maximum value was reported",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"metric": {
|
|
"description": "Metric name",
|
|
"type": ["string", "null"],
|
|
},
|
|
"min_value": {
|
|
"description": "Minimum value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"min_value_iteration": {
|
|
"description": "The iteration at which the minimum value was reported",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Last value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"variant": {
|
|
"description": "Variant name",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"last_metrics_variants": {
|
|
"additionalProperties": {"$ref": "#/definitions/last_metrics_event"},
|
|
"description": "Last metric events, one for each variant hash",
|
|
"type": "object",
|
|
},
|
|
"output": {
|
|
"properties": {
|
|
"destination": {
|
|
"description": "Storage id. This is where output files will be stored.",
|
|
"type": ["string", "null"],
|
|
},
|
|
"error": {
|
|
"description": "Last error text",
|
|
"type": ["string", "null"],
|
|
},
|
|
"model": {"description": "Model id.", "type": ["string", "null"]},
|
|
"result": {
|
|
"description": "Task result. Values: 'success', 'failure'",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"script": {
|
|
"properties": {
|
|
"binary": {
|
|
"default": "python",
|
|
"description": "Binary to use when running the script",
|
|
"type": ["string", "null"],
|
|
},
|
|
"branch": {
|
|
"description": (
|
|
"Repository branch id If not provided and tag not provided, default repository branch "
|
|
"is used."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"diff": {
|
|
"description": "Uncommitted changes found in the repository when task was run",
|
|
"type": ["string", "null"],
|
|
},
|
|
"entry_point": {
|
|
"description": "Path to execute within the repository",
|
|
"type": ["string", "null"],
|
|
},
|
|
"repository": {
|
|
"description": "Name of the repository where the script is located",
|
|
"type": ["string", "null"],
|
|
},
|
|
"requirements": {
|
|
"description": "A JSON object containing requirements strings by key",
|
|
"type": ["object", "null"],
|
|
},
|
|
"tag": {
|
|
"description": "Repository tag",
|
|
"type": ["string", "null"],
|
|
},
|
|
"version_num": {
|
|
"description": (
|
|
"Version (changeset) number. Optional (default is head version) Unused if tag is provided."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"working_dir": {
|
|
"description": (
|
|
"Path to the folder from which to run the script Default - root folder of repository"
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"section_params": {
|
|
"additionalProperties": {"$ref": "#/definitions/params_item"},
|
|
"description": "Task section params",
|
|
"type": "object",
|
|
},
|
|
"task": {
|
|
"properties": {
|
|
"active_duration": {
|
|
"description": "Task duration time (seconds)",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"comment": {
|
|
"description": "Free text comment",
|
|
"type": ["string", "null"],
|
|
},
|
|
"company": {
|
|
"description": "Company ID",
|
|
"type": ["string", "null"],
|
|
},
|
|
"completed": {
|
|
"description": "Task end time (UTC)",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"configuration": {
|
|
"additionalProperties": {"$ref": "#/definitions/configuration_item"},
|
|
"description": "Task configuration params",
|
|
"type": ["object", "null"],
|
|
},
|
|
"container": {
|
|
"type": ["object", "null"],
|
|
"description": "Docker container parameters",
|
|
"additionalProperties": {"type": ["string", "null"]},
|
|
},
|
|
"created": {
|
|
"description": "Task creation time (UTC) ",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"execution": {
|
|
"description": "Task execution params",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/execution"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"hyperparams": {
|
|
"additionalProperties": {"$ref": "#/definitions/section_params"},
|
|
"description": "Task hyper params per section",
|
|
"type": ["object", "null"],
|
|
},
|
|
"id": {"description": "Task id", "type": ["string", "null"]},
|
|
"last_change": {
|
|
"description": "Last time any update was done to the task",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_iteration": {
|
|
"description": "Last iteration reported for this task",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"last_metrics": {
|
|
"additionalProperties": {"$ref": "#/definitions/last_metrics_variants"},
|
|
"description": "Last metric variants (hash to events), one for each metric hash",
|
|
"type": ["object", "null"],
|
|
},
|
|
"last_update": {
|
|
"description": (
|
|
"Last time this task was created, edited, changed or events for this task were reported"
|
|
),
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_worker": {
|
|
"description": "ID of last worker that handled the task",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_worker_report": {
|
|
"description": "Last time a worker reported while working on this task",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"models": {
|
|
"description": "Task models",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/task_models"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"name": {"description": "Task Name", "type": ["string", "null"]},
|
|
"output": {
|
|
"description": "Task output params",
|
|
"oneOf": [{"$ref": "#/definitions/output"}, {"type": "null"}],
|
|
},
|
|
"parent": {
|
|
"description": "Parent task id",
|
|
"type": ["string", "null"],
|
|
},
|
|
"project": {
|
|
"description": "Project ID of the project to which this task is assigned",
|
|
"type": ["string", "null"],
|
|
},
|
|
"published": {
|
|
"description": "Task publish time",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"runtime": {
|
|
"additionalProperties": True,
|
|
"description": "Task runtime mapping",
|
|
"type": ["object", "null"],
|
|
},
|
|
"script": {
|
|
"description": "Script info",
|
|
"oneOf": [{"$ref": "#/definitions/script"}, {"type": "null"}],
|
|
},
|
|
"started": {
|
|
"description": "Task start time (UTC)",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status": {
|
|
"description": "",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/task_status_enum"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"status_changed": {
|
|
"description": "Last status change time",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "free text string representing info about the status",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for last status change",
|
|
"type": ["string", "null"],
|
|
},
|
|
"system_tags": {
|
|
"description": "System tags list. This field is reserved for system use, please don't use it.",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"tags": {
|
|
"description": "User-defined tags list",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of task. Values: 'training', 'testing'",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/task_type_enum"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"user": {
|
|
"description": "Associated user id",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_model_item": {
|
|
"properties": {
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {
|
|
"description": "The task model name",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["name", "model"],
|
|
"type": "object",
|
|
},
|
|
"task_models": {
|
|
"properties": {
|
|
"input": {
|
|
"description": "The list of task input models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"output": {
|
|
"description": "The list of task output models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_status_enum": {
|
|
"enum": [
|
|
"created",
|
|
"queued",
|
|
"in_progress",
|
|
"stopped",
|
|
"published",
|
|
"publishing",
|
|
"closed",
|
|
"failed",
|
|
"completed",
|
|
"unknown",
|
|
],
|
|
"type": "string",
|
|
},
|
|
"task_type_enum": {
|
|
"enum": [
|
|
"training",
|
|
"testing",
|
|
"inference",
|
|
"data_processing",
|
|
"application",
|
|
"monitor",
|
|
"controller",
|
|
"optimizer",
|
|
"service",
|
|
"qc",
|
|
"custom",
|
|
],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"properties": {
|
|
"scroll_id": {
|
|
"description": "Scroll ID that can be used with the next calls to get_all to retrieve more data",
|
|
"type": ["string", "null"],
|
|
},
|
|
"tasks": {
|
|
"description": "List of tasks",
|
|
"items": {"$ref": "#/definitions/task"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, tasks=None, scroll_id=None, **kwargs):
|
|
super(GetAllResponse, self).__init__(**kwargs)
|
|
self.tasks = tasks
|
|
self.scroll_id = scroll_id
|
|
|
|
@schema_property("tasks")
|
|
def tasks(self):
|
|
return self._property_tasks
|
|
|
|
@tasks.setter
|
|
def tasks(self, value):
|
|
if value is None:
|
|
self._property_tasks = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tasks", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [Task.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "tasks", Task, is_array=True)
|
|
self._property_tasks = value
|
|
|
|
@schema_property("scroll_id")
|
|
def scroll_id(self):
|
|
return self._property_scroll_id
|
|
|
|
@scroll_id.setter
|
|
def scroll_id(self, value):
|
|
if value is None:
|
|
self._property_scroll_id = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "scroll_id", six.string_types)
|
|
self._property_scroll_id = value
|
|
|
|
|
|
class GetByIdRequest(Request):
|
|
"""
|
|
Gets task information
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_by_id"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {"task": {"description": "Task ID", "type": "string"}},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, **kwargs):
|
|
super(GetByIdRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
|
|
class GetByIdResponse(Response):
|
|
"""
|
|
Response of tasks.get_by_id endpoint.
|
|
|
|
:param task: Task info
|
|
:type task: Task
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_by_id"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact": {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {
|
|
"description": "Hash of entire raw data",
|
|
"type": "string",
|
|
},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {
|
|
"description": "System defined type",
|
|
"type": "string",
|
|
},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
"artifact_type_data": {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"execution": {
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Task artifacts",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"framework": {
|
|
"description": (
|
|
"Framework related to the task. Case insensitive. Mandatory for Training tasks. "
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"model_desc": {
|
|
"additionalProperties": True,
|
|
"description": "Json object representing the Model descriptors",
|
|
"type": ["object", "null"],
|
|
},
|
|
"model_labels": {
|
|
"additionalProperties": {"type": "integer"},
|
|
"description": (
|
|
"Json object representing the ids of the labels in the model.\n The keys are the"
|
|
" layers' names and the values are the IDs.\n Not applicable for Register"
|
|
" (Import) tasks.\n Mandatory for Training tasks"
|
|
),
|
|
"type": ["object", "null"],
|
|
},
|
|
"parameters": {
|
|
"additionalProperties": True,
|
|
"description": "Json object containing the Task parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue": {
|
|
"description": "Queue ID where task was queued.",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"last_metrics_event": {
|
|
"properties": {
|
|
"max_value": {
|
|
"description": "Maximum value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"max_value_iteration": {
|
|
"description": "The iteration at which the maximum value was reported",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"metric": {
|
|
"description": "Metric name",
|
|
"type": ["string", "null"],
|
|
},
|
|
"min_value": {
|
|
"description": "Minimum value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"min_value_iteration": {
|
|
"description": "The iteration at which the minimum value was reported",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Last value reported",
|
|
"type": ["number", "null"],
|
|
},
|
|
"variant": {
|
|
"description": "Variant name",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"last_metrics_variants": {
|
|
"additionalProperties": {"$ref": "#/definitions/last_metrics_event"},
|
|
"description": "Last metric events, one for each variant hash",
|
|
"type": "object",
|
|
},
|
|
"output": {
|
|
"properties": {
|
|
"destination": {
|
|
"description": "Storage id. This is where output files will be stored.",
|
|
"type": ["string", "null"],
|
|
},
|
|
"error": {
|
|
"description": "Last error text",
|
|
"type": ["string", "null"],
|
|
},
|
|
"model": {"description": "Model id.", "type": ["string", "null"]},
|
|
"result": {
|
|
"description": "Task result. Values: 'success', 'failure'",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"script": {
|
|
"properties": {
|
|
"binary": {
|
|
"default": "python",
|
|
"description": "Binary to use when running the script",
|
|
"type": ["string", "null"],
|
|
},
|
|
"branch": {
|
|
"description": (
|
|
"Repository branch id If not provided and tag not provided, default repository branch "
|
|
"is used."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"diff": {
|
|
"description": "Uncommitted changes found in the repository when task was run",
|
|
"type": ["string", "null"],
|
|
},
|
|
"entry_point": {
|
|
"description": "Path to execute within the repository",
|
|
"type": ["string", "null"],
|
|
},
|
|
"repository": {
|
|
"description": "Name of the repository where the script is located",
|
|
"type": ["string", "null"],
|
|
},
|
|
"requirements": {
|
|
"description": "A JSON object containing requirements strings by key",
|
|
"type": ["object", "null"],
|
|
},
|
|
"tag": {
|
|
"description": "Repository tag",
|
|
"type": ["string", "null"],
|
|
},
|
|
"version_num": {
|
|
"description": (
|
|
"Version (changeset) number. Optional (default is head version) Unused if tag is provided."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"working_dir": {
|
|
"description": (
|
|
"Path to the folder from which to run the script Default - root folder of repository"
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"section_params": {
|
|
"additionalProperties": {"$ref": "#/definitions/params_item"},
|
|
"description": "Task section params",
|
|
"type": "object",
|
|
},
|
|
"task": {
|
|
"properties": {
|
|
"active_duration": {
|
|
"description": "Task duration time (seconds)",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"comment": {
|
|
"description": "Free text comment",
|
|
"type": ["string", "null"],
|
|
},
|
|
"company": {
|
|
"description": "Company ID",
|
|
"type": ["string", "null"],
|
|
},
|
|
"completed": {
|
|
"description": "Task end time (UTC)",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"configuration": {
|
|
"additionalProperties": {"$ref": "#/definitions/configuration_item"},
|
|
"description": "Task configuration params",
|
|
"type": ["object", "null"],
|
|
},
|
|
"container": {
|
|
"additionalProperties": {"type": ["string", "null"]},
|
|
"description": "Docker container parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"created": {
|
|
"description": "Task creation time (UTC) ",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"execution": {
|
|
"description": "Task execution params",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/execution"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"hyperparams": {
|
|
"additionalProperties": {"$ref": "#/definitions/section_params"},
|
|
"description": "Task hyper params per section",
|
|
"type": ["object", "null"],
|
|
},
|
|
"id": {"description": "Task id", "type": ["string", "null"]},
|
|
"last_change": {
|
|
"description": "Last time any update was done to the task",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_iteration": {
|
|
"description": "Last iteration reported for this task",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"last_metrics": {
|
|
"additionalProperties": {"$ref": "#/definitions/last_metrics_variants"},
|
|
"description": "Last metric variants (hash to events), one for each metric hash",
|
|
"type": ["object", "null"],
|
|
},
|
|
"last_update": {
|
|
"description": (
|
|
"Last time this task was created, edited, changed or events for this task were reported"
|
|
),
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_worker": {
|
|
"description": "ID of last worker that handled the task",
|
|
"type": ["string", "null"],
|
|
},
|
|
"last_worker_report": {
|
|
"description": "Last time a worker reported while working on this task",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"models": {
|
|
"description": "Task models",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/task_models"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"name": {"description": "Task Name", "type": ["string", "null"]},
|
|
"output": {
|
|
"description": "Task output params",
|
|
"oneOf": [{"$ref": "#/definitions/output"}, {"type": "null"}],
|
|
},
|
|
"parent": {
|
|
"description": "Parent task id",
|
|
"type": ["string", "null"],
|
|
},
|
|
"project": {
|
|
"description": "Project ID of the project to which this task is assigned",
|
|
"type": ["string", "null"],
|
|
},
|
|
"published": {
|
|
"description": "Task publish time",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"runtime": {
|
|
"additionalProperties": True,
|
|
"description": "Task runtime mapping",
|
|
"type": ["object", "null"],
|
|
},
|
|
"script": {
|
|
"description": "Script info",
|
|
"oneOf": [{"$ref": "#/definitions/script"}, {"type": "null"}],
|
|
},
|
|
"started": {
|
|
"description": "Task start time (UTC)",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status": {
|
|
"description": "",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/task_status_enum"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"status_changed": {
|
|
"description": "Last status change time",
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "free text string representing info about the status",
|
|
"type": ["string", "null"],
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for last status change",
|
|
"type": ["string", "null"],
|
|
},
|
|
"system_tags": {
|
|
"description": "System tags list. This field is reserved for system use, please don't use it.",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"tags": {
|
|
"description": "User-defined tags list",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of task. Values: 'training', 'testing'",
|
|
"oneOf": [
|
|
{"$ref": "#/definitions/task_type_enum"},
|
|
{"type": "null"},
|
|
],
|
|
},
|
|
"user": {
|
|
"description": "Associated user id",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_model_item": {
|
|
"properties": {
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {
|
|
"description": "The task model name",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["name", "model"],
|
|
"type": "object",
|
|
},
|
|
"task_models": {
|
|
"properties": {
|
|
"input": {
|
|
"description": "The list of task input models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"output": {
|
|
"description": "The list of task output models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_status_enum": {
|
|
"enum": [
|
|
"created",
|
|
"queued",
|
|
"in_progress",
|
|
"stopped",
|
|
"published",
|
|
"publishing",
|
|
"closed",
|
|
"failed",
|
|
"completed",
|
|
"unknown",
|
|
],
|
|
"type": "string",
|
|
},
|
|
"task_type_enum": {
|
|
"enum": [
|
|
"training",
|
|
"testing",
|
|
"inference",
|
|
"data_processing",
|
|
"application",
|
|
"monitor",
|
|
"controller",
|
|
"optimizer",
|
|
"service",
|
|
"qc",
|
|
"custom",
|
|
],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"properties": {
|
|
"task": {
|
|
"description": "Task info",
|
|
"oneOf": [{"$ref": "#/definitions/task"}, {"type": "null"}],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task=None, **kwargs):
|
|
super(GetByIdResponse, self).__init__(**kwargs)
|
|
self.task = task
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Task.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "task", Task)
|
|
self._property_task = value
|
|
|
|
|
|
class GetConfigurationNamesRequest(Request):
|
|
"""
|
|
Get the list of task configuration items names
|
|
|
|
:param tasks: Task IDs
|
|
:type tasks: Sequence[str]
|
|
:param skip_empty: If set to 'true' then the names for configurations with
|
|
missing values are not returned
|
|
:type skip_empty: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_configuration_names"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"skip_empty": {
|
|
"default": True,
|
|
"description": (
|
|
"If set to 'true' then the names for configurations with missing values are not returned"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"tasks": {
|
|
"description": "Task IDs",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
},
|
|
"required": ["tasks"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, tasks, skip_empty=True, **kwargs):
|
|
super(GetConfigurationNamesRequest, self).__init__(**kwargs)
|
|
self.tasks = tasks
|
|
self.skip_empty = skip_empty
|
|
|
|
@schema_property("tasks")
|
|
def tasks(self):
|
|
return self._property_tasks
|
|
|
|
@tasks.setter
|
|
def tasks(self, value):
|
|
if value is None:
|
|
self._property_tasks = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tasks", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tasks", six.string_types, is_array=True)
|
|
self._property_tasks = value
|
|
|
|
@schema_property("skip_empty")
|
|
def skip_empty(self):
|
|
return self._property_skip_empty
|
|
|
|
@skip_empty.setter
|
|
def skip_empty(self, value):
|
|
if value is None:
|
|
self._property_skip_empty = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "skip_empty", (bool,))
|
|
self._property_skip_empty = value
|
|
|
|
|
|
class GetConfigurationNamesResponse(Response):
|
|
"""
|
|
Response of tasks.get_configuration_names endpoint.
|
|
|
|
:param configurations: Names of task configuration items (keyed by task ID)
|
|
:type configurations: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_configuration_names"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"configurations": {
|
|
"description": "Names of task configuration items (keyed by task ID)",
|
|
"properties": {
|
|
"names": {
|
|
"description": "Configuration names",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"type": ["object", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, configurations=None, **kwargs):
|
|
super(GetConfigurationNamesResponse, self).__init__(**kwargs)
|
|
self.configurations = configurations
|
|
|
|
@schema_property("configurations")
|
|
def configurations(self):
|
|
return self._property_configurations
|
|
|
|
@configurations.setter
|
|
def configurations(self, value):
|
|
if value is None:
|
|
self._property_configurations = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configurations", (dict,))
|
|
self._property_configurations = value
|
|
|
|
|
|
class GetConfigurationsRequest(Request):
|
|
"""
|
|
Get the list of task configurations
|
|
|
|
:param tasks: Task IDs
|
|
:type tasks: Sequence[str]
|
|
:param names: Names of the configuration items to retreive. If not passed or
|
|
empty then all the configurations will be retrieved.
|
|
:type names: Sequence[str]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_configurations"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"names": {
|
|
"description": (
|
|
"Names of the configuration items to retreive. If not passed or empty then all the configurations"
|
|
" will be retrieved."
|
|
),
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"tasks": {
|
|
"description": "Task IDs",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
},
|
|
"required": ["tasks"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, tasks, names=None, **kwargs):
|
|
super(GetConfigurationsRequest, self).__init__(**kwargs)
|
|
self.tasks = tasks
|
|
self.names = names
|
|
|
|
@schema_property("tasks")
|
|
def tasks(self):
|
|
return self._property_tasks
|
|
|
|
@tasks.setter
|
|
def tasks(self, value):
|
|
if value is None:
|
|
self._property_tasks = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tasks", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tasks", six.string_types, is_array=True)
|
|
self._property_tasks = value
|
|
|
|
@schema_property("names")
|
|
def names(self):
|
|
return self._property_names
|
|
|
|
@names.setter
|
|
def names(self, value):
|
|
if value is None:
|
|
self._property_names = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "names", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "names", six.string_types, is_array=True)
|
|
self._property_names = value
|
|
|
|
|
|
class GetConfigurationsResponse(Response):
|
|
"""
|
|
Response of tasks.get_configurations endpoint.
|
|
|
|
:param configurations: Configurations (keyed by task ID)
|
|
:type configurations: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_configurations"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"configurations": {
|
|
"description": "Configurations (keyed by task ID)",
|
|
"items": {
|
|
"properties": {
|
|
"configuration": {
|
|
"description": "Configuration list",
|
|
"items": {"$ref": "#/definitions/configuration_item"},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, configurations=None, **kwargs):
|
|
super(GetConfigurationsResponse, self).__init__(**kwargs)
|
|
self.configurations = configurations
|
|
|
|
@schema_property("configurations")
|
|
def configurations(self):
|
|
return self._property_configurations
|
|
|
|
@configurations.setter
|
|
def configurations(self, value):
|
|
if value is None:
|
|
self._property_configurations = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configurations", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "configurations", (dict,), is_array=True)
|
|
self._property_configurations = value
|
|
|
|
|
|
class GetHyperParamsRequest(Request):
|
|
"""
|
|
Get the list of task hyper parameters
|
|
|
|
:param tasks: Task IDs
|
|
:type tasks: Sequence[str]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_hyper_params"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"tasks": {
|
|
"description": "Task IDs",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
}
|
|
},
|
|
"required": ["tasks"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, tasks, **kwargs):
|
|
super(GetHyperParamsRequest, self).__init__(**kwargs)
|
|
self.tasks = tasks
|
|
|
|
@schema_property("tasks")
|
|
def tasks(self):
|
|
return self._property_tasks
|
|
|
|
@tasks.setter
|
|
def tasks(self, value):
|
|
if value is None:
|
|
self._property_tasks = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tasks", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tasks", six.string_types, is_array=True)
|
|
self._property_tasks = value
|
|
|
|
|
|
class GetHyperParamsResponse(Response):
|
|
"""
|
|
Response of tasks.get_hyper_params endpoint.
|
|
|
|
:param params: Hyper parameters (keyed by task ID)
|
|
:type params: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_hyper_params"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"params": {
|
|
"description": "Hyper parameters (keyed by task ID)",
|
|
"items": {
|
|
"properties": {
|
|
"hyperparams": {
|
|
"description": "Hyper parameters",
|
|
"items": {"$ref": "#/definitions/params_item"},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, params=None, **kwargs):
|
|
super(GetHyperParamsResponse, self).__init__(**kwargs)
|
|
self.params = params
|
|
|
|
@schema_property("params")
|
|
def params(self):
|
|
return self._property_params
|
|
|
|
@params.setter
|
|
def params(self, value):
|
|
if value is None:
|
|
self._property_params = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "params", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "params", (dict,), is_array=True)
|
|
self._property_params = value
|
|
|
|
|
|
class GetTypesRequest(Request):
|
|
"""
|
|
Get the list of task types used in the specified projects
|
|
|
|
:param projects: The list of projects which tasks will be analyzed. If not
|
|
passed or empty then all the company and public tasks will be analyzed
|
|
:type projects: Sequence[str]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_types"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"projects": {
|
|
"description": (
|
|
"The list of projects which tasks will be analyzed. If not passed or empty then all the company and"
|
|
" public tasks will be analyzed"
|
|
),
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, projects=None, **kwargs):
|
|
super(GetTypesRequest, self).__init__(**kwargs)
|
|
self.projects = projects
|
|
|
|
@schema_property("projects")
|
|
def projects(self):
|
|
return self._property_projects
|
|
|
|
@projects.setter
|
|
def projects(self, value):
|
|
if value is None:
|
|
self._property_projects = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "projects", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "projects", six.string_types, is_array=True)
|
|
self._property_projects = value
|
|
|
|
|
|
class GetTypesResponse(Response):
|
|
"""
|
|
Response of tasks.get_types endpoint.
|
|
|
|
:param types: Unique list of the task types used in the requested projects
|
|
:type types: Sequence[str]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "get_types"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"types": {
|
|
"description": "Unique list of the task types used in the requested projects",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, types=None, **kwargs):
|
|
super(GetTypesResponse, self).__init__(**kwargs)
|
|
self.types = types
|
|
|
|
@schema_property("types") # noqa: F811
|
|
def types(self):
|
|
return self._property_types
|
|
|
|
@types.setter
|
|
def types(self, value):
|
|
if value is None:
|
|
self._property_types = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "types", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "types", six.string_types, is_array=True)
|
|
self._property_types = value
|
|
|
|
|
|
class MakePrivateRequest(Request):
|
|
"""
|
|
Convert public tasks to private
|
|
|
|
:param ids: Ids of the tasks to convert. Only the tasks originated by the
|
|
company can be converted
|
|
:type ids: Sequence[str]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "make_private"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"ids": {
|
|
"description": "Ids of the tasks to convert. Only the tasks originated by the company can be converted",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids=None, **kwargs):
|
|
super(MakePrivateRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
|
|
class MakePrivateResponse(Response):
|
|
"""
|
|
Response of tasks.make_private endpoint.
|
|
|
|
:param updated: Number of tasks updated
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "make_private"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Number of tasks updated",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(MakePrivateResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class MakePublicRequest(Request):
|
|
"""
|
|
Convert company tasks to public
|
|
|
|
:param ids: Ids of the tasks to convert
|
|
:type ids: Sequence[str]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "make_public"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"ids": {
|
|
"description": "Ids of the tasks to convert",
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids=None, **kwargs):
|
|
super(MakePublicRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
|
|
class MakePublicResponse(Response):
|
|
"""
|
|
Response of tasks.make_public endpoint.
|
|
|
|
:param updated: Number of tasks updated
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "make_public"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Number of tasks updated",
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(MakePublicResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class MoveRequest(Request):
|
|
"""
|
|
Move tasks to a project
|
|
|
|
:param ids: Tasks to move
|
|
:type ids: Sequence[str]
|
|
:param project: Target project ID. If not provided, `project_name` must be
|
|
provided. Use null for the root project
|
|
:type project: str
|
|
:param project_name: Target project name. If provided and a project with this
|
|
name does not exist, a new project will be created. If not provided, `project`
|
|
must be provided.
|
|
:type project_name: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "move"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"ids": {
|
|
"description": "Tasks to move",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"project": {
|
|
"description": (
|
|
"Target project ID. If not provided, `project_name` must be provided. Use null for the root project"
|
|
),
|
|
"type": "string",
|
|
},
|
|
"project_name": {
|
|
"description": (
|
|
"Target project name. If provided and a project with this name does not exist, a new project will"
|
|
" be created. If not provided, `project` must be provided."
|
|
),
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids, project=None, project_name=None, **kwargs):
|
|
super(MoveRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.project = project
|
|
self.project_name = project_name
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("project")
|
|
def project(self):
|
|
return self._property_project
|
|
|
|
@project.setter
|
|
def project(self, value):
|
|
if value is None:
|
|
self._property_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project", six.string_types)
|
|
self._property_project = value
|
|
|
|
@schema_property("project_name")
|
|
def project_name(self):
|
|
return self._property_project_name
|
|
|
|
@project_name.setter
|
|
def project_name(self, value):
|
|
if value is None:
|
|
self._property_project_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project_name", six.string_types)
|
|
self._property_project_name = value
|
|
|
|
|
|
class MoveResponse(Response):
|
|
"""
|
|
Response of tasks.move endpoint.
|
|
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "move"
|
|
_version = "2.23"
|
|
|
|
_schema = {"additionalProperties": True, "definitions": {}, "type": "object"}
|
|
|
|
|
|
class PingRequest(Request):
|
|
"""
|
|
Refresh the task's last update time
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "ping"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {"task": {"description": "Task ID", "type": "string"}},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, **kwargs):
|
|
super(PingRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
|
|
class PingResponse(Response):
|
|
"""
|
|
Response of tasks.ping endpoint.
|
|
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "ping"
|
|
_version = "2.23"
|
|
|
|
_schema = {"additionalProperties": False, "definitions": {}, "type": "object"}
|
|
|
|
|
|
class PublishRequest(Request):
|
|
"""
|
|
Mark a task status as published.
|
|
|
|
For Annotation tasks - if any changes were committed by this task, a new version in the dataset together with an output view are created.
|
|
|
|
For Training tasks - if a model was created, it should be set to ready.
|
|
|
|
:param force: If not true, call fails if the task status is not 'stopped'
|
|
:type force: bool
|
|
:param publish_model: Indicates that the task output model (if exists) should
|
|
be published. Optional, the default value is True.
|
|
:type publish_model: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "publish"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not 'stopped'",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"publish_model": {
|
|
"description": (
|
|
"Indicates that the task output model (if exists) should be published. Optional, the default value "
|
|
"is True."
|
|
),
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, force=False, publish_model=None, status_reason=None, status_message=None, **kwargs):
|
|
super(PublishRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.publish_model = publish_model
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("publish_model")
|
|
def publish_model(self):
|
|
return self._property_publish_model
|
|
|
|
@publish_model.setter
|
|
def publish_model(self, value):
|
|
if value is None:
|
|
self._property_publish_model = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "publish_model", (bool,))
|
|
self._property_publish_model = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class PublishResponse(Response):
|
|
"""
|
|
Response of tasks.publish endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "publish"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(PublishResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class PublishManyRequest(Request):
|
|
"""
|
|
Publish tasks
|
|
|
|
:param ids: IDs of the tasks to publish
|
|
:type ids: Sequence[str]
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
:param force: If not true, call fails if the task status is not 'stopped'
|
|
:type force: bool
|
|
:param publish_model: Indicates that the task output model (if exists) should
|
|
be published. Optional, the default value is True.
|
|
:type publish_model: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "publish_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not 'stopped'",
|
|
"type": "boolean",
|
|
},
|
|
"ids": {
|
|
"description": "IDs of the tasks to publish",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"publish_model": {
|
|
"description": (
|
|
"Indicates that the task output model (if exists) should be published. Optional, the default value "
|
|
"is True."
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids, status_reason=None, status_message=None, force=False, publish_model=None, **kwargs):
|
|
super(PublishManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
self.force = force
|
|
self.publish_model = publish_model
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("publish_model")
|
|
def publish_model(self):
|
|
return self._property_publish_model
|
|
|
|
@publish_model.setter
|
|
def publish_model(self, value):
|
|
if value is None:
|
|
self._property_publish_model = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "publish_model", (bool,))
|
|
self._property_publish_model = value
|
|
|
|
|
|
class PublishManyResponse(Response):
|
|
"""
|
|
Response of tasks.publish_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "publish_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": "integer",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, **kwargs):
|
|
super(PublishManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
|
|
class ResetRequest(Request):
|
|
"""
|
|
Reset a task to its initial state, along with any information stored for it (statistics, frame updates etc.).
|
|
|
|
:param force: If not true, call fails if the task status is 'completed'
|
|
:type force: bool
|
|
:param clear_all: Clear script and execution sections completely
|
|
:type clear_all: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
:param return_file_urls: If set to 'true' then return the urls of the files
|
|
that were uploaded by this task. Default value is 'false'
|
|
:type return_file_urls: bool
|
|
:param delete_output_models: If set to 'true' then delete output models of this
|
|
task that are not referenced by other tasks. Default value is 'true'
|
|
:type delete_output_models: bool
|
|
:param delete_external_artifacts: If set to 'true' then BE will try to delete
|
|
the extenal artifacts associated with the task from the fileserver (if
|
|
configured to do so)
|
|
:type delete_external_artifacts: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "reset"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"clear_all": {
|
|
"default": False,
|
|
"description": "Clear script and execution sections completely",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"delete_external_artifacts": {
|
|
"default": True,
|
|
"description": (
|
|
"If set to 'true' then BE will try to delete the extenal artifacts associated with the task from"
|
|
" the fileserver (if configured to do so)"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"delete_output_models": {
|
|
"description": (
|
|
"If set to 'true' then delete output models of this task that are not referenced by other tasks."
|
|
" Default value is 'true'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is 'completed'",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"return_file_urls": {
|
|
"description": (
|
|
"If set to 'true' then return the urls of the files that were uploaded by this task. Default "
|
|
"value is 'false'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
task,
|
|
force=False,
|
|
clear_all=False,
|
|
status_reason=None,
|
|
status_message=None,
|
|
return_file_urls=None,
|
|
delete_output_models=None,
|
|
delete_external_artifacts=True,
|
|
**kwargs
|
|
):
|
|
super(ResetRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.clear_all = clear_all
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
self.return_file_urls = return_file_urls
|
|
self.delete_output_models = delete_output_models
|
|
self.delete_external_artifacts = delete_external_artifacts
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("clear_all")
|
|
def clear_all(self):
|
|
return self._property_clear_all
|
|
|
|
@clear_all.setter
|
|
def clear_all(self, value):
|
|
if value is None:
|
|
self._property_clear_all = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "clear_all", (bool,))
|
|
self._property_clear_all = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("return_file_urls")
|
|
def return_file_urls(self):
|
|
return self._property_return_file_urls
|
|
|
|
@return_file_urls.setter
|
|
def return_file_urls(self, value):
|
|
if value is None:
|
|
self._property_return_file_urls = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "return_file_urls", (bool,))
|
|
self._property_return_file_urls = value
|
|
|
|
@schema_property("delete_output_models")
|
|
def delete_output_models(self):
|
|
return self._property_delete_output_models
|
|
|
|
@delete_output_models.setter
|
|
def delete_output_models(self, value):
|
|
if value is None:
|
|
self._property_delete_output_models = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_output_models", (bool,))
|
|
self._property_delete_output_models = value
|
|
|
|
@schema_property("delete_external_artifacts")
|
|
def delete_external_artifacts(self):
|
|
return self._property_delete_external_artifacts
|
|
|
|
@delete_external_artifacts.setter
|
|
def delete_external_artifacts(self, value):
|
|
if value is None:
|
|
self._property_delete_external_artifacts = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_external_artifacts", (bool,))
|
|
self._property_delete_external_artifacts = value
|
|
|
|
|
|
class ResetResponse(Response):
|
|
"""
|
|
Response of tasks.reset endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
:param dequeued: Response from queues.remove_task
|
|
:type dequeued: dict
|
|
:param events: Response from events.delete_for_task
|
|
:type events: dict
|
|
:param deleted_models: Number of output models deleted by the reset
|
|
:type deleted_models: int
|
|
:param urls: The urls of the files that were uploaded by this task. Returned if
|
|
the 'return_file_urls' was set to 'true'
|
|
:type urls: TaskUrls
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "reset"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"task_urls": {
|
|
"properties": {
|
|
"artifact_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"event_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"model_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"deleted_models": {
|
|
"description": "Number of output models deleted by the reset",
|
|
"type": ["integer", "null"],
|
|
},
|
|
"dequeued": {
|
|
"additionalProperties": True,
|
|
"description": "Response from queues.remove_task",
|
|
"type": ["object", "null"],
|
|
},
|
|
"events": {
|
|
"additionalProperties": True,
|
|
"description": "Response from events.delete_for_task",
|
|
"type": ["object", "null"],
|
|
},
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
"urls": {
|
|
"description": (
|
|
"The urls of the files that were uploaded by this task. Returned if the 'return_file_urls' was set"
|
|
" to 'true'"
|
|
),
|
|
"oneOf": [{"$ref": "#/definitions/task_urls"}, {"type": "null"}],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, dequeued=None, events=None, deleted_models=None, urls=None, **kwargs):
|
|
super(ResetResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
self.dequeued = dequeued
|
|
self.events = events
|
|
self.deleted_models = deleted_models
|
|
self.urls = urls
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
@schema_property("dequeued")
|
|
def dequeued(self):
|
|
return self._property_dequeued
|
|
|
|
@dequeued.setter
|
|
def dequeued(self, value):
|
|
if value is None:
|
|
self._property_dequeued = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "dequeued", (dict,))
|
|
self._property_dequeued = value
|
|
|
|
@schema_property("events")
|
|
def events(self):
|
|
return self._property_events
|
|
|
|
@events.setter
|
|
def events(self, value):
|
|
if value is None:
|
|
self._property_events = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "events", (dict,))
|
|
self._property_events = value
|
|
|
|
@schema_property("deleted_models")
|
|
def deleted_models(self):
|
|
return self._property_deleted_models
|
|
|
|
@deleted_models.setter
|
|
def deleted_models(self, value):
|
|
if value is None:
|
|
self._property_deleted_models = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "deleted_models", six.integer_types)
|
|
self._property_deleted_models = value
|
|
|
|
@schema_property("urls")
|
|
def urls(self):
|
|
return self._property_urls
|
|
|
|
@urls.setter
|
|
def urls(self, value):
|
|
if value is None:
|
|
self._property_urls = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = TaskUrls.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "urls", TaskUrls)
|
|
self._property_urls = value
|
|
|
|
|
|
class ResetManyRequest(Request):
|
|
"""
|
|
Reset tasks
|
|
|
|
:param ids: IDs of the tasks to reset
|
|
:type ids: Sequence[str]
|
|
:param force: If not true, call fails if the task status is 'completed'
|
|
:type force: bool
|
|
:param clear_all: Clear script and execution sections completely
|
|
:type clear_all: bool
|
|
:param return_file_urls: If set to 'true' then return the urls of the files
|
|
that were uploaded by the tasks. Default value is 'false'
|
|
:type return_file_urls: bool
|
|
:param delete_output_models: If set to 'true' then delete output models of the
|
|
tasks that are not referenced by other tasks. Default value is 'true'
|
|
:type delete_output_models: bool
|
|
:param delete_external_artifacts: If set to 'true' then BE will try to delete
|
|
the extenal artifacts associated with the tasks from the fileserver (if
|
|
configured to do so)
|
|
:type delete_external_artifacts: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "reset_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"clear_all": {
|
|
"default": False,
|
|
"description": "Clear script and execution sections completely",
|
|
"type": "boolean",
|
|
},
|
|
"delete_external_artifacts": {
|
|
"default": True,
|
|
"description": (
|
|
"If set to 'true' then BE will try to delete the extenal artifacts associated with the tasks from"
|
|
" the fileserver (if configured to do so)"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"delete_output_models": {
|
|
"description": (
|
|
"If set to 'true' then delete output models of the tasks that are not referenced by other tasks."
|
|
" Default value is 'true'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is 'completed'",
|
|
"type": "boolean",
|
|
},
|
|
"ids": {
|
|
"description": "IDs of the tasks to reset",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"return_file_urls": {
|
|
"description": (
|
|
"If set to 'true' then return the urls of the files that were uploaded by the tasks. Default "
|
|
"value is 'false'"
|
|
),
|
|
"type": "boolean",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
ids,
|
|
force=False,
|
|
clear_all=False,
|
|
return_file_urls=None,
|
|
delete_output_models=None,
|
|
delete_external_artifacts=True,
|
|
**kwargs
|
|
):
|
|
super(ResetManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.force = force
|
|
self.clear_all = clear_all
|
|
self.return_file_urls = return_file_urls
|
|
self.delete_output_models = delete_output_models
|
|
self.delete_external_artifacts = delete_external_artifacts
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("clear_all")
|
|
def clear_all(self):
|
|
return self._property_clear_all
|
|
|
|
@clear_all.setter
|
|
def clear_all(self, value):
|
|
if value is None:
|
|
self._property_clear_all = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "clear_all", (bool,))
|
|
self._property_clear_all = value
|
|
|
|
@schema_property("return_file_urls")
|
|
def return_file_urls(self):
|
|
return self._property_return_file_urls
|
|
|
|
@return_file_urls.setter
|
|
def return_file_urls(self, value):
|
|
if value is None:
|
|
self._property_return_file_urls = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "return_file_urls", (bool,))
|
|
self._property_return_file_urls = value
|
|
|
|
@schema_property("delete_output_models")
|
|
def delete_output_models(self):
|
|
return self._property_delete_output_models
|
|
|
|
@delete_output_models.setter
|
|
def delete_output_models(self, value):
|
|
if value is None:
|
|
self._property_delete_output_models = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_output_models", (bool,))
|
|
self._property_delete_output_models = value
|
|
|
|
@schema_property("delete_external_artifacts")
|
|
def delete_external_artifacts(self):
|
|
return self._property_delete_external_artifacts
|
|
|
|
@delete_external_artifacts.setter
|
|
def delete_external_artifacts(self, value):
|
|
if value is None:
|
|
self._property_delete_external_artifacts = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "delete_external_artifacts", (bool,))
|
|
self._property_delete_external_artifacts = value
|
|
|
|
|
|
class ResetManyResponse(Response):
|
|
"""
|
|
Response of tasks.reset_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "reset_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {
|
|
"task_urls": {
|
|
"properties": {
|
|
"artifact_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"event_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"model_urls": {
|
|
"items": {"type": "string"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"deleted_models": {
|
|
"description": "Number of output models deleted by the reset",
|
|
"type": "integer",
|
|
},
|
|
"dequeued": {
|
|
"description": "Indicates whether the task was dequeued",
|
|
"type": "boolean",
|
|
},
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": "integer",
|
|
},
|
|
"urls": {
|
|
"$ref": "#/definitions/task_urls",
|
|
"description": (
|
|
"The urls of the files that were uploaded by the task. Returned if the"
|
|
" 'return_file_urls' was set to 'true'"
|
|
),
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, **kwargs):
|
|
super(ResetManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
|
|
class SetRequirementsRequest(Request):
|
|
"""
|
|
Set the script requirements for a task
|
|
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param requirements: A JSON object containing requirements strings by key
|
|
:type requirements: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "set_requirements"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"requirements": {
|
|
"description": "A JSON object containing requirements strings by key",
|
|
"type": "object",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task", "requirements"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, requirements, **kwargs):
|
|
super(SetRequirementsRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.requirements = requirements
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("requirements")
|
|
def requirements(self):
|
|
return self._property_requirements
|
|
|
|
@requirements.setter
|
|
def requirements(self, value):
|
|
if value is None:
|
|
self._property_requirements = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "requirements", (dict,))
|
|
self._property_requirements = value
|
|
|
|
|
|
class SetRequirementsResponse(Response):
|
|
"""
|
|
Response of tasks.set_requirements endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "set_requirements"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(SetRequirementsResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class StartedRequest(Request):
|
|
"""
|
|
Mark a task status as in_progress. Optionally allows to set the task's execution progress.
|
|
|
|
:param force: If not true, call fails if the task status is not 'not_started'
|
|
:type force: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "started"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not 'not_started'",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, force=False, status_reason=None, status_message=None, **kwargs):
|
|
super(StartedRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class StartedResponse(Response):
|
|
"""
|
|
Response of tasks.started endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
:param started: Number of tasks started (0 or 1)
|
|
:type started: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "started"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"started": {
|
|
"description": "Number of tasks started (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, started=None, **kwargs):
|
|
super(StartedResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
self.started = started
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
@schema_property("started")
|
|
def started(self):
|
|
return self._property_started
|
|
|
|
@started.setter
|
|
def started(self, value):
|
|
if value is None:
|
|
self._property_started = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "started", six.integer_types)
|
|
self._property_started = value
|
|
|
|
|
|
class StopRequest(Request):
|
|
"""
|
|
Request to stop a running task
|
|
|
|
:param force: If not true, call fails if the task status is not 'in_progress'
|
|
:type force: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "stop"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not 'in_progress'",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, force=False, status_reason=None, status_message=None, **kwargs):
|
|
super(StopRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class StopResponse(Response):
|
|
"""
|
|
Response of tasks.stop endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "stop"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(StopResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class StopManyRequest(Request):
|
|
"""
|
|
Request to stop running tasks
|
|
|
|
:param ids: IDs of the tasks to stop
|
|
:type ids: Sequence[str]
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
:param force: If not true, call fails if the task status is not 'in_progress'
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "stop_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not 'in_progress'",
|
|
"type": "boolean",
|
|
},
|
|
"ids": {
|
|
"description": "IDs of the tasks to stop",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids, status_reason=None, status_message=None, force=False, **kwargs):
|
|
super(StopManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
self.force = force
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
|
|
class StopManyResponse(Response):
|
|
"""
|
|
Response of tasks.stop_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "stop_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": "integer",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, **kwargs):
|
|
super(StopManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
|
|
class StoppedRequest(Request):
|
|
"""
|
|
Signal a task has stopped
|
|
|
|
:param force: If not true, call fails if the task status is not 'stopped'
|
|
:type force: bool
|
|
:param task: Task ID
|
|
:type task: str
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "stopped"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"force": {
|
|
"default": False,
|
|
"description": "If not true, call fails if the task status is not 'stopped'",
|
|
"type": ["boolean", "null"],
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
"task": {"description": "Task ID", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, task, force=False, status_reason=None, status_message=None, **kwargs):
|
|
super(StoppedRequest, self).__init__(**kwargs)
|
|
self.force = force
|
|
self.task = task
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("force")
|
|
def force(self):
|
|
return self._property_force
|
|
|
|
@force.setter
|
|
def force(self, value):
|
|
if value is None:
|
|
self._property_force = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "force", (bool,))
|
|
self._property_force = value
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class StoppedResponse(Response):
|
|
"""
|
|
Response of tasks.stopped endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "stopped"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(StoppedResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class UnarchiveManyRequest(Request):
|
|
"""
|
|
Unarchive tasks
|
|
|
|
:param ids: IDs of the tasks to unarchive
|
|
:type ids: Sequence[str]
|
|
:param status_reason: Reason for status change
|
|
:type status_reason: str
|
|
:param status_message: Extra information regarding status change
|
|
:type status_message: str
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "unarchive_many"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"ids": {
|
|
"description": "IDs of the tasks to unarchive",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"status_message": {
|
|
"description": "Extra information regarding status change",
|
|
"type": "string",
|
|
},
|
|
"status_reason": {
|
|
"description": "Reason for status change",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["ids"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, ids, status_reason=None, status_message=None, **kwargs):
|
|
super(UnarchiveManyRequest, self).__init__(**kwargs)
|
|
self.ids = ids
|
|
self.status_reason = status_reason
|
|
self.status_message = status_message
|
|
|
|
@schema_property("ids")
|
|
def ids(self):
|
|
return self._property_ids
|
|
|
|
@ids.setter
|
|
def ids(self, value):
|
|
if value is None:
|
|
self._property_ids = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "ids", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "ids", six.string_types, is_array=True)
|
|
self._property_ids = value
|
|
|
|
@schema_property("status_reason")
|
|
def status_reason(self):
|
|
return self._property_status_reason
|
|
|
|
@status_reason.setter
|
|
def status_reason(self, value):
|
|
if value is None:
|
|
self._property_status_reason = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_reason", six.string_types)
|
|
self._property_status_reason = value
|
|
|
|
@schema_property("status_message")
|
|
def status_message(self):
|
|
return self._property_status_message
|
|
|
|
@status_message.setter
|
|
def status_message(self, value):
|
|
if value is None:
|
|
self._property_status_message = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_message", six.string_types)
|
|
self._property_status_message = value
|
|
|
|
|
|
class UnarchiveManyResponse(Response):
|
|
"""
|
|
Response of tasks.unarchive_many endpoint.
|
|
|
|
:param succeeded:
|
|
:type succeeded: Sequence[dict]
|
|
:param failed:
|
|
:type failed: Sequence[dict]
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "unarchive_many"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"failed": {
|
|
"items": {
|
|
"properties": {
|
|
"error": {
|
|
"description": "Error info",
|
|
"properties": {
|
|
"codes": {
|
|
"items": {"type": "integer"},
|
|
"type": "array",
|
|
},
|
|
"data": {
|
|
"additionalProperties": True,
|
|
"type": "object",
|
|
},
|
|
"msg": {"type": "string"},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"id": {
|
|
"description": "ID of the failed entity",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
"succeeded": {
|
|
"items": {
|
|
"properties": {
|
|
"id": {
|
|
"description": "ID of the succeeded entity",
|
|
"type": "string",
|
|
},
|
|
"unarchived": {
|
|
"description": "Indicates whether the task was unarchived",
|
|
"type": "boolean",
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, succeeded=None, failed=None, **kwargs):
|
|
super(UnarchiveManyResponse, self).__init__(**kwargs)
|
|
self.succeeded = succeeded
|
|
self.failed = failed
|
|
|
|
@schema_property("succeeded")
|
|
def succeeded(self):
|
|
return self._property_succeeded
|
|
|
|
@succeeded.setter
|
|
def succeeded(self, value):
|
|
if value is None:
|
|
self._property_succeeded = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "succeeded", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "succeeded", (dict,), is_array=True)
|
|
self._property_succeeded = value
|
|
|
|
@schema_property("failed")
|
|
def failed(self):
|
|
return self._property_failed
|
|
|
|
@failed.setter
|
|
def failed(self, value):
|
|
if value is None:
|
|
self._property_failed = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "failed", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "failed", (dict,), is_array=True)
|
|
self._property_failed = value
|
|
|
|
|
|
class UpdateRequest(Request):
|
|
"""
|
|
Update task's runtime parameters
|
|
|
|
:param task: ID of the task
|
|
:type task: str
|
|
:param name: Task name Unique within the company.
|
|
:type name: str
|
|
:param tags: User-defined tags list
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags list. This field is reserved for system use,
|
|
please don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param comment: Free text comment
|
|
:type comment: str
|
|
:param project: Project ID of the project to which this task is assigned
|
|
:type project: str
|
|
:param output__error: Free text error
|
|
:type output__error: str
|
|
:param created: Task creation time (UTC)
|
|
:type created: datetime.datetime
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "update"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"comment": {"description": "Free text comment ", "type": "string"},
|
|
"created": {
|
|
"description": "Task creation time (UTC) ",
|
|
"format": "date-time",
|
|
"type": "string",
|
|
},
|
|
"name": {
|
|
"description": "Task name Unique within the company.",
|
|
"type": "string",
|
|
},
|
|
"output__error": {"description": "Free text error", "type": "string"},
|
|
"project": {
|
|
"description": "Project ID of the project to which this task is assigned",
|
|
"type": "string",
|
|
},
|
|
"system_tags": {
|
|
"description": "System tags list. This field is reserved for system use, please don't use it.",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"tags": {
|
|
"description": "User-defined tags list",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"task": {"description": "ID of the task", "type": "string"},
|
|
},
|
|
"required": ["task"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
task,
|
|
name=None,
|
|
tags=None,
|
|
system_tags=None,
|
|
comment=None,
|
|
project=None,
|
|
output__error=None,
|
|
created=None,
|
|
**kwargs
|
|
):
|
|
super(UpdateRequest, self).__init__(**kwargs)
|
|
self.task = task
|
|
self.name = name
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.comment = comment
|
|
self.project = project
|
|
self.output__error = output__error
|
|
self.created = created
|
|
|
|
@schema_property("task")
|
|
def task(self):
|
|
return self._property_task
|
|
|
|
@task.setter
|
|
def task(self, value):
|
|
if value is None:
|
|
self._property_task = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "task", six.string_types)
|
|
self._property_task = value
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("tags")
|
|
def tags(self):
|
|
return self._property_tags
|
|
|
|
@tags.setter
|
|
def tags(self, value):
|
|
if value is None:
|
|
self._property_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tags", six.string_types, is_array=True)
|
|
self._property_tags = value
|
|
|
|
@schema_property("system_tags")
|
|
def system_tags(self):
|
|
return self._property_system_tags
|
|
|
|
@system_tags.setter
|
|
def system_tags(self, value):
|
|
if value is None:
|
|
self._property_system_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "system_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "system_tags", six.string_types, is_array=True)
|
|
self._property_system_tags = value
|
|
|
|
@schema_property("comment")
|
|
def comment(self):
|
|
return self._property_comment
|
|
|
|
@comment.setter
|
|
def comment(self, value):
|
|
if value is None:
|
|
self._property_comment = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "comment", six.string_types)
|
|
self._property_comment = value
|
|
|
|
@schema_property("project")
|
|
def project(self):
|
|
return self._property_project
|
|
|
|
@project.setter
|
|
def project(self, value):
|
|
if value is None:
|
|
self._property_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project", six.string_types)
|
|
self._property_project = value
|
|
|
|
@schema_property("output__error")
|
|
def output__error(self):
|
|
return self._property_output__error
|
|
|
|
@output__error.setter
|
|
def output__error(self, value):
|
|
if value is None:
|
|
self._property_output__error = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "output__error", six.string_types)
|
|
self._property_output__error = value
|
|
|
|
@schema_property("created")
|
|
def created(self):
|
|
return self._property_created
|
|
|
|
@created.setter
|
|
def created(self, value):
|
|
if value is None:
|
|
self._property_created = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "created", six.string_types + (datetime,))
|
|
if not isinstance(value, datetime):
|
|
value = parse_datetime(value)
|
|
self._property_created = value
|
|
|
|
|
|
class UpdateResponse(Response):
|
|
"""
|
|
Response of tasks.update endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "update"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"fields": {
|
|
"additionalProperties": True,
|
|
"description": "Updated fields names and values",
|
|
"type": ["object", "null"],
|
|
},
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, fields=None, **kwargs):
|
|
super(UpdateResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
self.fields = fields
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
@schema_property("fields")
|
|
def fields(self):
|
|
return self._property_fields
|
|
|
|
@fields.setter
|
|
def fields(self, value):
|
|
if value is None:
|
|
self._property_fields = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "fields", (dict,))
|
|
self._property_fields = value
|
|
|
|
|
|
class UpdateBatchRequest(BatchRequest):
|
|
"""
|
|
Updates a batch of tasks.
|
|
Headers Content type should be 'application/json-lines'.
|
|
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "update_batch"
|
|
_version = "2.23"
|
|
_batched_request_cls = UpdateRequest
|
|
|
|
|
|
class UpdateBatchResponse(Response):
|
|
"""
|
|
Response of tasks.update_batch endpoint.
|
|
|
|
:param updated: Number of tasks updated (0 or 1)
|
|
:type updated: int
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "update_batch"
|
|
_version = "2.23"
|
|
|
|
_schema = {
|
|
"definitions": {},
|
|
"properties": {
|
|
"updated": {
|
|
"description": "Number of tasks updated (0 or 1)",
|
|
"enum": [0, 1],
|
|
"type": ["integer", "null"],
|
|
}
|
|
},
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(self, updated=None, **kwargs):
|
|
super(UpdateBatchResponse, self).__init__(**kwargs)
|
|
self.updated = updated
|
|
|
|
@schema_property("updated")
|
|
def updated(self):
|
|
return self._property_updated
|
|
|
|
@updated.setter
|
|
def updated(self, value):
|
|
if value is None:
|
|
self._property_updated = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "updated", six.integer_types)
|
|
self._property_updated = value
|
|
|
|
|
|
class ValidateRequest(Request):
|
|
"""
|
|
Validate task properties (before create)
|
|
|
|
:param name: Task name. Unique within the company.
|
|
:type name: str
|
|
:param tags: User-defined tags list
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags list. This field is reserved for system use,
|
|
please don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param type: Type of task
|
|
:type type: TaskTypeEnum
|
|
:param comment: Free text comment
|
|
:type comment: str
|
|
:param parent: Parent task id Must be a completed task.
|
|
:type parent: str
|
|
:param project: Project ID of the project to which this task is assigned Must
|
|
exist[ab]
|
|
:type project: str
|
|
:param output_dest: Output storage id Must be a reference to an existing
|
|
storage.
|
|
:type output_dest: str
|
|
:param execution: Task execution params
|
|
:type execution: Execution
|
|
:param script: Script info
|
|
:type script: Script
|
|
:param hyperparams: Task hyper params per section
|
|
:type hyperparams: dict
|
|
:param configuration: Task configuration params
|
|
:type configuration: dict
|
|
:param models: Task models
|
|
:type models: TaskModels
|
|
:param container: Docker container parameters
|
|
:type container: dict
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "validate"
|
|
_version = "2.23"
|
|
_schema = {
|
|
"definitions": {
|
|
"artifact": {
|
|
"properties": {
|
|
"content_size": {
|
|
"description": "Raw data length in bytes",
|
|
"type": "integer",
|
|
},
|
|
"display_data": {
|
|
"description": "User-defined list of key/value pairs, sorted",
|
|
"items": {"items": {"type": "string"}, "type": "array"},
|
|
"type": "array",
|
|
},
|
|
"hash": {
|
|
"description": "Hash of entire raw data",
|
|
"type": "string",
|
|
},
|
|
"key": {"description": "Entry key", "type": "string"},
|
|
"mode": {
|
|
"$ref": "#/definitions/artifact_mode_enum",
|
|
"description": "System defined input/output indication",
|
|
},
|
|
"timestamp": {
|
|
"description": "Epoch time when artifact was created",
|
|
"type": "integer",
|
|
},
|
|
"type": {
|
|
"description": "System defined type",
|
|
"type": "string",
|
|
},
|
|
"type_data": {
|
|
"$ref": "#/definitions/artifact_type_data",
|
|
"description": "Additional fields defined by the system",
|
|
},
|
|
"uri": {"description": "Raw data location", "type": "string"},
|
|
},
|
|
"required": ["key", "type"],
|
|
"type": "object",
|
|
},
|
|
"artifact_mode_enum": {
|
|
"default": "output",
|
|
"enum": ["input", "output"],
|
|
"type": "string",
|
|
},
|
|
"artifact_type_data": {
|
|
"properties": {
|
|
"content_type": {
|
|
"description": "System defined raw data content type",
|
|
"type": ["string", "null"],
|
|
},
|
|
"data_hash": {
|
|
"description": "Hash of raw data, without any headers or descriptive parts",
|
|
"type": ["string", "null"],
|
|
},
|
|
"preview": {
|
|
"description": "Description or textual data",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"configuration_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. Should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"execution": {
|
|
"properties": {
|
|
"artifacts": {
|
|
"description": "Task artifacts",
|
|
"items": {"$ref": "#/definitions/artifact"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"framework": {
|
|
"description": (
|
|
"Framework related to the task. Case insensitive. Mandatory for Training tasks. "
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"model_desc": {
|
|
"additionalProperties": True,
|
|
"description": "Json object representing the Model descriptors",
|
|
"type": ["object", "null"],
|
|
},
|
|
"model_labels": {
|
|
"additionalProperties": {"type": "integer"},
|
|
"description": (
|
|
"Json object representing the ids of the labels in the model.\n The keys are the"
|
|
" layers' names and the values are the IDs.\n Not applicable for Register"
|
|
" (Import) tasks.\n Mandatory for Training tasks"
|
|
),
|
|
"type": ["object", "null"],
|
|
},
|
|
"parameters": {
|
|
"additionalProperties": True,
|
|
"description": "Json object containing the Task parameters",
|
|
"type": ["object", "null"],
|
|
},
|
|
"queue": {
|
|
"description": "Queue ID where task was queued.",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"params_item": {
|
|
"properties": {
|
|
"description": {
|
|
"description": "The parameter description. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"name": {
|
|
"description": "Name of the parameter. The combination of section and name should be unique",
|
|
"type": ["string", "null"],
|
|
},
|
|
"section": {
|
|
"description": "Section that the parameter belongs to",
|
|
"type": ["string", "null"],
|
|
},
|
|
"type": {
|
|
"description": "Type of the parameter. Optional",
|
|
"type": ["string", "null"],
|
|
},
|
|
"value": {
|
|
"description": "Value of the parameter",
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"script": {
|
|
"properties": {
|
|
"binary": {
|
|
"default": "python",
|
|
"description": "Binary to use when running the script",
|
|
"type": ["string", "null"],
|
|
},
|
|
"branch": {
|
|
"description": (
|
|
"Repository branch id If not provided and tag not provided, default repository branch "
|
|
"is used."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"diff": {
|
|
"description": "Uncommitted changes found in the repository when task was run",
|
|
"type": ["string", "null"],
|
|
},
|
|
"entry_point": {
|
|
"description": "Path to execute within the repository",
|
|
"type": ["string", "null"],
|
|
},
|
|
"repository": {
|
|
"description": "Name of the repository where the script is located",
|
|
"type": ["string", "null"],
|
|
},
|
|
"requirements": {
|
|
"description": "A JSON object containing requirements strings by key",
|
|
"type": ["object", "null"],
|
|
},
|
|
"tag": {
|
|
"description": "Repository tag",
|
|
"type": ["string", "null"],
|
|
},
|
|
"version_num": {
|
|
"description": (
|
|
"Version (changeset) number. Optional (default is head version) Unused if tag is provided."
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
"working_dir": {
|
|
"description": (
|
|
"Path to the folder from which to run the script Default - root folder of repository"
|
|
),
|
|
"type": ["string", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"section_params": {
|
|
"additionalProperties": {"$ref": "#/definitions/params_item"},
|
|
"description": "Task section params",
|
|
"type": "object",
|
|
},
|
|
"task_model_item": {
|
|
"properties": {
|
|
"model": {"description": "The model ID", "type": "string"},
|
|
"name": {
|
|
"description": "The task model name",
|
|
"type": "string",
|
|
},
|
|
},
|
|
"required": ["name", "model"],
|
|
"type": "object",
|
|
},
|
|
"task_models": {
|
|
"properties": {
|
|
"input": {
|
|
"description": "The list of task input models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
"output": {
|
|
"description": "The list of task output models",
|
|
"items": {"$ref": "#/definitions/task_model_item"},
|
|
"type": ["array", "null"],
|
|
},
|
|
},
|
|
"type": "object",
|
|
},
|
|
"task_type_enum": {
|
|
"enum": [
|
|
"training",
|
|
"testing",
|
|
"inference",
|
|
"data_processing",
|
|
"application",
|
|
"monitor",
|
|
"controller",
|
|
"optimizer",
|
|
"service",
|
|
"qc",
|
|
"custom",
|
|
],
|
|
"type": "string",
|
|
},
|
|
},
|
|
"properties": {
|
|
"comment": {"description": "Free text comment ", "type": "string"},
|
|
"configuration": {
|
|
"additionalProperties": {"$ref": "#/definitions/configuration_item"},
|
|
"description": "Task configuration params",
|
|
"type": "object",
|
|
},
|
|
"container": {
|
|
"type": "object",
|
|
"description": "Docker container parameters",
|
|
"additionalProperties": {"type": ["string", "null"]},
|
|
},
|
|
"execution": {
|
|
"$ref": "#/definitions/execution",
|
|
"description": "Task execution params",
|
|
},
|
|
"hyperparams": {
|
|
"additionalProperties": {"$ref": "#/definitions/section_params"},
|
|
"description": "Task hyper params per section",
|
|
"type": "object",
|
|
},
|
|
"models": {
|
|
"$ref": "#/definitions/task_models",
|
|
"description": "Task models",
|
|
},
|
|
"name": {
|
|
"description": "Task name. Unique within the company.",
|
|
"type": "string",
|
|
},
|
|
"output_dest": {
|
|
"description": "Output storage id Must be a reference to an existing storage.",
|
|
"type": "string",
|
|
},
|
|
"parent": {
|
|
"description": "Parent task id Must be a completed task.",
|
|
"type": "string",
|
|
},
|
|
"project": {
|
|
"description": "Project ID of the project to which this task is assigned Must exist[ab]",
|
|
"type": "string",
|
|
},
|
|
"script": {"$ref": "#/definitions/script", "description": "Script info"},
|
|
"system_tags": {
|
|
"description": "System tags list. This field is reserved for system use, please don't use it.",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"tags": {
|
|
"description": "User-defined tags list",
|
|
"items": {"type": "string"},
|
|
"type": "array",
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/task_type_enum",
|
|
"description": "Type of task",
|
|
},
|
|
},
|
|
"required": ["name", "type"],
|
|
"type": "object",
|
|
}
|
|
|
|
def __init__(
|
|
self,
|
|
name,
|
|
type,
|
|
tags=None,
|
|
system_tags=None,
|
|
comment=None,
|
|
parent=None,
|
|
project=None,
|
|
output_dest=None,
|
|
execution=None,
|
|
script=None,
|
|
hyperparams=None,
|
|
configuration=None,
|
|
models=None,
|
|
container=None,
|
|
**kwargs
|
|
):
|
|
super(ValidateRequest, self).__init__(**kwargs)
|
|
self.name = name
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.type = type
|
|
self.comment = comment
|
|
self.parent = parent
|
|
self.project = project
|
|
self.output_dest = output_dest
|
|
self.execution = execution
|
|
self.script = script
|
|
self.hyperparams = hyperparams
|
|
self.configuration = configuration
|
|
self.models = models
|
|
self.container = container
|
|
|
|
@schema_property("name")
|
|
def name(self):
|
|
return self._property_name
|
|
|
|
@name.setter
|
|
def name(self, value):
|
|
if value is None:
|
|
self._property_name = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "name", six.string_types)
|
|
self._property_name = value
|
|
|
|
@schema_property("tags")
|
|
def tags(self):
|
|
return self._property_tags
|
|
|
|
@tags.setter
|
|
def tags(self, value):
|
|
if value is None:
|
|
self._property_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "tags", six.string_types, is_array=True)
|
|
self._property_tags = value
|
|
|
|
@schema_property("system_tags")
|
|
def system_tags(self):
|
|
return self._property_system_tags
|
|
|
|
@system_tags.setter
|
|
def system_tags(self, value):
|
|
if value is None:
|
|
self._property_system_tags = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "system_tags", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "system_tags", six.string_types, is_array=True)
|
|
self._property_system_tags = value
|
|
|
|
@schema_property("type")
|
|
def type(self):
|
|
return self._property_type
|
|
|
|
@type.setter
|
|
def type(self, value):
|
|
if value is None:
|
|
self._property_type = None
|
|
return
|
|
if isinstance(value, six.string_types):
|
|
try:
|
|
value = TaskTypeEnum(value)
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
self.assert_isinstance(value, "type", enum.Enum)
|
|
self._property_type = value
|
|
|
|
@schema_property("comment")
|
|
def comment(self):
|
|
return self._property_comment
|
|
|
|
@comment.setter
|
|
def comment(self, value):
|
|
if value is None:
|
|
self._property_comment = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "comment", six.string_types)
|
|
self._property_comment = value
|
|
|
|
@schema_property("parent")
|
|
def parent(self):
|
|
return self._property_parent
|
|
|
|
@parent.setter
|
|
def parent(self, value):
|
|
if value is None:
|
|
self._property_parent = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "parent", six.string_types)
|
|
self._property_parent = value
|
|
|
|
@schema_property("project")
|
|
def project(self):
|
|
return self._property_project
|
|
|
|
@project.setter
|
|
def project(self, value):
|
|
if value is None:
|
|
self._property_project = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "project", six.string_types)
|
|
self._property_project = value
|
|
|
|
@schema_property("output_dest")
|
|
def output_dest(self):
|
|
return self._property_output_dest
|
|
|
|
@output_dest.setter
|
|
def output_dest(self, value):
|
|
if value is None:
|
|
self._property_output_dest = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "output_dest", six.string_types)
|
|
self._property_output_dest = value
|
|
|
|
@schema_property("execution")
|
|
def execution(self):
|
|
return self._property_execution
|
|
|
|
@execution.setter
|
|
def execution(self, value):
|
|
if value is None:
|
|
self._property_execution = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Execution.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "execution", Execution)
|
|
self._property_execution = value
|
|
|
|
@schema_property("script")
|
|
def script(self):
|
|
return self._property_script
|
|
|
|
@script.setter
|
|
def script(self, value):
|
|
if value is None:
|
|
self._property_script = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Script.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "script", Script)
|
|
self._property_script = value
|
|
|
|
@schema_property("hyperparams")
|
|
def hyperparams(self):
|
|
return self._property_hyperparams
|
|
|
|
@hyperparams.setter
|
|
def hyperparams(self, value):
|
|
if value is None:
|
|
self._property_hyperparams = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "hyperparams", (dict,))
|
|
self._property_hyperparams = value
|
|
|
|
@schema_property("configuration")
|
|
def configuration(self):
|
|
return self._property_configuration
|
|
|
|
@configuration.setter
|
|
def configuration(self, value):
|
|
if value is None:
|
|
self._property_configuration = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "configuration", (dict,))
|
|
self._property_configuration = value
|
|
|
|
@schema_property("models")
|
|
def models(self):
|
|
return self._property_models
|
|
|
|
@models.setter
|
|
def models(self, value):
|
|
if value is None:
|
|
self._property_models = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = TaskModels.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "models", TaskModels)
|
|
self._property_models = value
|
|
|
|
@schema_property("container")
|
|
def container(self):
|
|
return self._property_container
|
|
|
|
@container.setter
|
|
def container(self, value):
|
|
if value is None:
|
|
self._property_container = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "container", (dict,))
|
|
self._property_container = value
|
|
|
|
|
|
class ValidateResponse(Response):
|
|
"""
|
|
Response of tasks.validate endpoint.
|
|
|
|
"""
|
|
|
|
_service = "tasks"
|
|
_action = "validate"
|
|
_version = "2.23"
|
|
|
|
_schema = {"additionalProperties": False, "definitions": {}, "type": "object"}
|
|
|
|
|
|
response_mapping = {
|
|
GetByIdRequest: GetByIdResponse,
|
|
GetAllRequest: GetAllResponse,
|
|
GetTypesRequest: GetTypesResponse,
|
|
CloneRequest: CloneResponse,
|
|
AddOrUpdateModelRequest: AddOrUpdateModelResponse,
|
|
DeleteModelsRequest: DeleteModelsResponse,
|
|
CreateRequest: CreateResponse,
|
|
ValidateRequest: ValidateResponse,
|
|
UpdateRequest: UpdateResponse,
|
|
UpdateBatchRequest: UpdateBatchResponse,
|
|
EditRequest: EditResponse,
|
|
ResetRequest: ResetResponse,
|
|
ResetManyRequest: ResetManyResponse,
|
|
DeleteManyRequest: DeleteManyResponse,
|
|
DeleteRequest: DeleteResponse,
|
|
ArchiveRequest: ArchiveResponse,
|
|
ArchiveManyRequest: ArchiveManyResponse,
|
|
UnarchiveManyRequest: UnarchiveManyResponse,
|
|
StartedRequest: StartedResponse,
|
|
StopRequest: StopResponse,
|
|
StopManyRequest: StopManyResponse,
|
|
StoppedRequest: StoppedResponse,
|
|
FailedRequest: FailedResponse,
|
|
CloseRequest: CloseResponse,
|
|
PublishRequest: PublishResponse,
|
|
PublishManyRequest: PublishManyResponse,
|
|
EnqueueRequest: EnqueueResponse,
|
|
EnqueueManyRequest: EnqueueManyResponse,
|
|
DequeueRequest: DequeueResponse,
|
|
DequeueManyRequest: DequeueManyResponse,
|
|
SetRequirementsRequest: SetRequirementsResponse,
|
|
CompletedRequest: CompletedResponse,
|
|
PingRequest: PingResponse,
|
|
AddOrUpdateArtifactsRequest: AddOrUpdateArtifactsResponse,
|
|
DeleteArtifactsRequest: DeleteArtifactsResponse,
|
|
MakePublicRequest: MakePublicResponse,
|
|
MakePrivateRequest: MakePrivateResponse,
|
|
GetHyperParamsRequest: GetHyperParamsResponse,
|
|
EditHyperParamsRequest: EditHyperParamsResponse,
|
|
DeleteHyperParamsRequest: DeleteHyperParamsResponse,
|
|
GetConfigurationsRequest: GetConfigurationsResponse,
|
|
GetConfigurationNamesRequest: GetConfigurationNamesResponse,
|
|
EditConfigurationRequest: EditConfigurationResponse,
|
|
DeleteConfigurationRequest: DeleteConfigurationResponse,
|
|
MoveRequest: MoveResponse,
|
|
}
|