mirror of
https://github.com/clearml/clearml
synced 2025-02-01 09:36:49 +00:00
2156 lines
68 KiB
Python
2156 lines
68 KiB
Python
"""
|
|
projects service
|
|
|
|
Provides support for defining Projects containing Tasks, Models and Dataset Versions.
|
|
"""
|
|
from datetime import datetime
|
|
|
|
import six
|
|
from dateutil.parser import parse as parse_datetime
|
|
|
|
from ....backend_api.session import NonStrictDataModel, Request, Response, schema_property
|
|
|
|
|
|
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 Project(NonStrictDataModel):
|
|
"""
|
|
:param id: Project id
|
|
:type id: str
|
|
:param name: Project name
|
|
:type name: str
|
|
:param description: Project description
|
|
:type description: str
|
|
:param user: Associated user id
|
|
:type user: str
|
|
:param company: Company id
|
|
:type company: str
|
|
:param created: Creation time
|
|
:type created: datetime.datetime
|
|
:param tags: User-defined tags
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags. This field is reserved for system use, please
|
|
don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param default_output_destination: The default output destination URL for new
|
|
tasks under this project
|
|
:type default_output_destination: str
|
|
:param last_update: Last project update time. Reflects the last time the
|
|
project metadata was changed or a task in this project has changed status
|
|
:type last_update: datetime.datetime
|
|
"""
|
|
_schema = {
|
|
'properties': {
|
|
'company': {'description': 'Company id', 'type': ['string', 'null']},
|
|
'created': {
|
|
'description': 'Creation time',
|
|
'format': 'date-time',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'default_output_destination': {
|
|
'description': 'The default output destination URL for new tasks under this project',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'description': {
|
|
'description': 'Project description',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'id': {'description': 'Project id', 'type': ['string', 'null']},
|
|
'last_update': {
|
|
'description': 'Last project update time. Reflects the last time the project metadata was changed or a task in this project has changed status',
|
|
'format': 'date-time',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'name': {'description': 'Project name', 'type': ['string', 'null']},
|
|
'system_tags': {
|
|
'description': "System tags. This field is reserved for system use, please don't use it.",
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'tags': {
|
|
'description': 'User-defined tags',
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'user': {
|
|
'description': 'Associated user id',
|
|
'type': ['string', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, id=None, name=None, description=None, user=None, company=None, created=None, tags=None, system_tags=None, default_output_destination=None, last_update=None, **kwargs):
|
|
super(Project, self).__init__(**kwargs)
|
|
self.id = id
|
|
self.name = name
|
|
self.description = description
|
|
self.user = user
|
|
self.company = company
|
|
self.created = created
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.default_output_destination = default_output_destination
|
|
self.last_update = last_update
|
|
|
|
@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('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
|
|
|
|
@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('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('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('default_output_destination')
|
|
def default_output_destination(self):
|
|
return self._property_default_output_destination
|
|
|
|
@default_output_destination.setter
|
|
def default_output_destination(self, value):
|
|
if value is None:
|
|
self._property_default_output_destination = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "default_output_destination", six.string_types)
|
|
self._property_default_output_destination = 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
|
|
|
|
|
|
class StatsStatusCount(NonStrictDataModel):
|
|
"""
|
|
:param total_runtime: Total run time of all tasks in project (in seconds)
|
|
:type total_runtime: int
|
|
:param status_count: Status counts
|
|
:type status_count: dict
|
|
"""
|
|
_schema = {
|
|
'properties': {
|
|
'status_count': {
|
|
'description': 'Status counts',
|
|
'properties': {
|
|
'closed': {
|
|
'description': "Number of 'closed' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'created': {
|
|
'description': "Number of 'created' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'failed': {
|
|
'description': "Number of 'failed' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'in_progress': {
|
|
'description': "Number of 'in_progress' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'published': {
|
|
'description': "Number of 'published' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'queued': {
|
|
'description': "Number of 'queued' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'stopped': {
|
|
'description': "Number of 'stopped' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'unknown': {
|
|
'description': "Number of 'unknown' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
},
|
|
'type': ['object', 'null'],
|
|
},
|
|
'total_runtime': {
|
|
'description': 'Total run time of all tasks in project (in seconds)',
|
|
'type': ['integer', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, total_runtime=None, status_count=None, **kwargs):
|
|
super(StatsStatusCount, self).__init__(**kwargs)
|
|
self.total_runtime = total_runtime
|
|
self.status_count = status_count
|
|
|
|
@schema_property('total_runtime')
|
|
def total_runtime(self):
|
|
return self._property_total_runtime
|
|
|
|
@total_runtime.setter
|
|
def total_runtime(self, value):
|
|
if value is None:
|
|
self._property_total_runtime = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "total_runtime", six.integer_types)
|
|
self._property_total_runtime = value
|
|
|
|
@schema_property('status_count')
|
|
def status_count(self):
|
|
return self._property_status_count
|
|
|
|
@status_count.setter
|
|
def status_count(self, value):
|
|
if value is None:
|
|
self._property_status_count = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "status_count", (dict,))
|
|
self._property_status_count = value
|
|
|
|
|
|
class Stats(NonStrictDataModel):
|
|
"""
|
|
:param active: Stats for active tasks
|
|
:type active: StatsStatusCount
|
|
:param archived: Stats for archived tasks
|
|
:type archived: StatsStatusCount
|
|
"""
|
|
_schema = {
|
|
'properties': {
|
|
'active': {
|
|
'description': 'Stats for active tasks',
|
|
'oneOf': [
|
|
{'$ref': '#/definitions/stats_status_count'},
|
|
{'type': 'null'},
|
|
],
|
|
},
|
|
'archived': {
|
|
'description': 'Stats for archived tasks',
|
|
'oneOf': [
|
|
{'$ref': '#/definitions/stats_status_count'},
|
|
{'type': 'null'},
|
|
],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, active=None, archived=None, **kwargs):
|
|
super(Stats, self).__init__(**kwargs)
|
|
self.active = active
|
|
self.archived = archived
|
|
|
|
@schema_property('active')
|
|
def active(self):
|
|
return self._property_active
|
|
|
|
@active.setter
|
|
def active(self, value):
|
|
if value is None:
|
|
self._property_active = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = StatsStatusCount.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "active", StatsStatusCount)
|
|
self._property_active = value
|
|
|
|
@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, dict):
|
|
value = StatsStatusCount.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "archived", StatsStatusCount)
|
|
self._property_archived = value
|
|
|
|
|
|
class ProjectsGetAllResponseSingle(NonStrictDataModel):
|
|
"""
|
|
:param id: Project id
|
|
:type id: str
|
|
:param name: Project name
|
|
:type name: str
|
|
:param description: Project description
|
|
:type description: str
|
|
:param user: Associated user id
|
|
:type user: str
|
|
:param company: Company id
|
|
:type company: str
|
|
:param created: Creation time
|
|
:type created: datetime.datetime
|
|
:param tags: User-defined tags
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags. This field is reserved for system use, please
|
|
don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param default_output_destination: The default output destination URL for new
|
|
tasks under this project
|
|
:type default_output_destination: str
|
|
:param stats: Additional project stats
|
|
:type stats: Stats
|
|
"""
|
|
_schema = {
|
|
'properties': {
|
|
'company': {'description': 'Company id', 'type': ['string', 'null']},
|
|
'created': {
|
|
'description': 'Creation time',
|
|
'format': 'date-time',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'default_output_destination': {
|
|
'description': 'The default output destination URL for new tasks under this project',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'description': {
|
|
'description': 'Project description',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'id': {'description': 'Project id', 'type': ['string', 'null']},
|
|
'name': {'description': 'Project name', 'type': ['string', 'null']},
|
|
'stats': {
|
|
'description': 'Additional project stats',
|
|
'oneOf': [{'$ref': '#/definitions/stats'}, {'type': 'null'}],
|
|
},
|
|
'system_tags': {
|
|
'description': "System tags. This field is reserved for system use, please don't use it.",
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'tags': {
|
|
'description': 'User-defined tags',
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'user': {
|
|
'description': 'Associated user id',
|
|
'type': ['string', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, id=None, name=None, description=None, user=None, company=None, created=None, tags=None, system_tags=None, default_output_destination=None, stats=None, **kwargs):
|
|
super(ProjectsGetAllResponseSingle, self).__init__(**kwargs)
|
|
self.id = id
|
|
self.name = name
|
|
self.description = description
|
|
self.user = user
|
|
self.company = company
|
|
self.created = created
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.default_output_destination = default_output_destination
|
|
self.stats = stats
|
|
|
|
@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('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
|
|
|
|
@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('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('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('default_output_destination')
|
|
def default_output_destination(self):
|
|
return self._property_default_output_destination
|
|
|
|
@default_output_destination.setter
|
|
def default_output_destination(self, value):
|
|
if value is None:
|
|
self._property_default_output_destination = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "default_output_destination", six.string_types)
|
|
self._property_default_output_destination = value
|
|
|
|
@schema_property('stats')
|
|
def stats(self):
|
|
return self._property_stats
|
|
|
|
@stats.setter
|
|
def stats(self, value):
|
|
if value is None:
|
|
self._property_stats = None
|
|
return
|
|
if isinstance(value, dict):
|
|
value = Stats.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "stats", Stats)
|
|
self._property_stats = value
|
|
|
|
|
|
class MetricVariantResult(NonStrictDataModel):
|
|
"""
|
|
:param metric: Metric name
|
|
:type metric: str
|
|
:param metric_hash: Metric name hash. Used instead of the metric name when
|
|
categorizing last metrics events in task objects.
|
|
:type metric_hash: str
|
|
:param variant: Variant name
|
|
:type variant: str
|
|
:param variant_hash: Variant name hash. Used instead of the variant name when
|
|
categorizing last metrics events in task objects.
|
|
:type variant_hash: str
|
|
"""
|
|
_schema = {
|
|
'properties': {
|
|
'metric': {'description': 'Metric name', 'type': ['string', 'null']},
|
|
'metric_hash': {
|
|
'description': 'Metric name hash. Used instead of the metric name when categorizing\n last metrics events in task objects.',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'variant': {'description': 'Variant name', 'type': ['string', 'null']},
|
|
'variant_hash': {
|
|
'description': 'Variant name hash. Used instead of the variant name when categorizing\n last metrics events in task objects.',
|
|
'type': ['string', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, metric=None, metric_hash=None, variant=None, variant_hash=None, **kwargs):
|
|
super(MetricVariantResult, self).__init__(**kwargs)
|
|
self.metric = metric
|
|
self.metric_hash = metric_hash
|
|
self.variant = variant
|
|
self.variant_hash = variant_hash
|
|
|
|
@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('metric_hash')
|
|
def metric_hash(self):
|
|
return self._property_metric_hash
|
|
|
|
@metric_hash.setter
|
|
def metric_hash(self, value):
|
|
if value is None:
|
|
self._property_metric_hash = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "metric_hash", six.string_types)
|
|
self._property_metric_hash = 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('variant_hash')
|
|
def variant_hash(self):
|
|
return self._property_variant_hash
|
|
|
|
@variant_hash.setter
|
|
def variant_hash(self, value):
|
|
if value is None:
|
|
self._property_variant_hash = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "variant_hash", six.string_types)
|
|
self._property_variant_hash = value
|
|
|
|
|
|
class CreateRequest(Request):
|
|
"""
|
|
Create a new project
|
|
|
|
:param name: Project name Unique within the company.
|
|
:type name: str
|
|
:param description: Project description.
|
|
:type description: str
|
|
:param tags: User-defined tags
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags. This field is reserved for system use, please
|
|
don't use it.
|
|
:type system_tags: Sequence[str]
|
|
:param default_output_destination: The default output destination URL for new
|
|
tasks under this project
|
|
:type default_output_destination: str
|
|
"""
|
|
|
|
_service = "projects"
|
|
_action = "create"
|
|
_version = "1.5"
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'default_output_destination': {
|
|
'description': 'The default output destination URL for new tasks under this project',
|
|
'type': 'string',
|
|
},
|
|
'description': {
|
|
'description': 'Project description. ',
|
|
'type': 'string',
|
|
},
|
|
'name': {
|
|
'description': 'Project name Unique within the company.',
|
|
'type': 'string',
|
|
},
|
|
'system_tags': {
|
|
'description': "System tags. This field is reserved for system use, please don't use it.",
|
|
'items': {'type': 'string'},
|
|
'type': 'array',
|
|
},
|
|
'tags': {
|
|
'description': 'User-defined tags',
|
|
'items': {'type': 'string'},
|
|
'type': 'array',
|
|
},
|
|
},
|
|
'required': ['name', 'description'],
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, name, description, tags=None, system_tags=None, default_output_destination=None, **kwargs):
|
|
super(CreateRequest, self).__init__(**kwargs)
|
|
self.name = name
|
|
self.description = description
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.default_output_destination = default_output_destination
|
|
|
|
@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('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
|
|
|
|
@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('default_output_destination')
|
|
def default_output_destination(self):
|
|
return self._property_default_output_destination
|
|
|
|
@default_output_destination.setter
|
|
def default_output_destination(self, value):
|
|
if value is None:
|
|
self._property_default_output_destination = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "default_output_destination", six.string_types)
|
|
self._property_default_output_destination = value
|
|
|
|
|
|
class CreateResponse(Response):
|
|
"""
|
|
Response of projects.create endpoint.
|
|
|
|
:param id: Project id
|
|
:type id: str
|
|
"""
|
|
_service = "projects"
|
|
_action = "create"
|
|
_version = "1.5"
|
|
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'id': {'description': 'Project id', '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):
|
|
"""
|
|
Deletes a project
|
|
|
|
:param project: Project id
|
|
:type project: str
|
|
:param force: If not true, fails if project has tasks. If true, and project has
|
|
tasks, they will be unassigned
|
|
:type force: bool
|
|
"""
|
|
|
|
_service = "projects"
|
|
_action = "delete"
|
|
_version = "1.5"
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'force': {
|
|
'default': False,
|
|
'description': 'If not true, fails if project has tasks.\n If true, and project has tasks, they will be unassigned',
|
|
'type': 'boolean',
|
|
},
|
|
'project': {'description': 'Project id', 'type': 'string'},
|
|
},
|
|
'required': ['project'],
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, project, force=False, **kwargs):
|
|
super(DeleteRequest, self).__init__(**kwargs)
|
|
self.project = project
|
|
self.force = force
|
|
|
|
@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('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 DeleteResponse(Response):
|
|
"""
|
|
Response of projects.delete endpoint.
|
|
|
|
:param deleted: Number of projects deleted (0 or 1)
|
|
:type deleted: int
|
|
:param disassociated_tasks: Number of tasks disassociated from the deleted
|
|
project
|
|
:type disassociated_tasks: int
|
|
"""
|
|
_service = "projects"
|
|
_action = "delete"
|
|
_version = "1.5"
|
|
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'deleted': {
|
|
'description': 'Number of projects deleted (0 or 1)',
|
|
'type': ['integer', 'null'],
|
|
},
|
|
'disassociated_tasks': {
|
|
'description': 'Number of tasks disassociated from the deleted project',
|
|
'type': ['integer', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, deleted=None, disassociated_tasks=None, **kwargs):
|
|
super(DeleteResponse, self).__init__(**kwargs)
|
|
self.deleted = deleted
|
|
self.disassociated_tasks = disassociated_tasks
|
|
|
|
@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
|
|
|
|
@schema_property('disassociated_tasks')
|
|
def disassociated_tasks(self):
|
|
return self._property_disassociated_tasks
|
|
|
|
@disassociated_tasks.setter
|
|
def disassociated_tasks(self, value):
|
|
if value is None:
|
|
self._property_disassociated_tasks = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "disassociated_tasks", six.integer_types)
|
|
self._property_disassociated_tasks = value
|
|
|
|
|
|
class GetAllRequest(Request):
|
|
"""
|
|
Get all the company's projects and all public projects
|
|
|
|
:param id: List of IDs to filter by
|
|
:type id: Sequence[str]
|
|
:param name: Get only projects whose name matches this pattern (python regular
|
|
expression syntax)
|
|
:type name: str
|
|
:param description: Get only projects whose description matches this pattern
|
|
(python regular expression syntax)
|
|
:type description: str
|
|
:param tags: User-defined tags list used to filter results. Prepend '-' to tag
|
|
name to indicate exclusion
|
|
:type tags: Sequence[str]
|
|
:param system_tags: System tags list used to filter results. Prepend '-' to
|
|
system tag name to indicate exclusion
|
|
:type system_tags: Sequence[str]
|
|
: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
|
|
:type order_by: Sequence[str]
|
|
:param page: Page number, returns a specific page out of the resulting list of
|
|
dataviews
|
|
: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 search_text: Free text search query
|
|
:type search_text: str
|
|
:param only_fields: List of document's 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 _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
|
|
"""
|
|
|
|
_service = "projects"
|
|
_action = "get_all"
|
|
_version = "1.5"
|
|
_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',
|
|
},
|
|
},
|
|
'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'},
|
|
],
|
|
},
|
|
'description': {
|
|
'description': 'Get only projects whose description matches this pattern (python regular expression syntax)',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'id': {
|
|
'description': 'List of IDs to filter by',
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'name': {
|
|
'description': 'Get only projects whose name matches this pattern (python regular expression syntax)',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'only_fields': {
|
|
'description': "List of document's 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, '@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",
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'page': {
|
|
'description': 'Page number, returns a specific page out of the resulting list of dataviews',
|
|
'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'],
|
|
},
|
|
'search_text': {
|
|
'description': 'Free text search query',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'system_tags': {
|
|
'description': "System tags list used to filter results. Prepend '-' to system tag name to indicate exclusion",
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'tags': {
|
|
'description': "User-defined tags list used to filter results. Prepend '-' to tag name to indicate exclusion",
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, id=None, name=None, description=None, tags=None, system_tags=None, order_by=None, page=None, page_size=None, search_text=None, only_fields=None, _all_=None, _any_=None, **kwargs):
|
|
super(GetAllRequest, self).__init__(**kwargs)
|
|
self.id = id
|
|
self.name = name
|
|
self.description = description
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.order_by = order_by
|
|
self.page = page
|
|
self.page_size = page_size
|
|
self.search_text = search_text
|
|
self.only_fields = only_fields
|
|
self._all_ = _all_
|
|
self._any_ = _any_
|
|
|
|
@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('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
|
|
|
|
@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('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('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('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('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('_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
|
|
|
|
|
|
class GetAllResponse(Response):
|
|
"""
|
|
Response of projects.get_all endpoint.
|
|
|
|
:param projects: Projects list
|
|
:type projects: Sequence[ProjectsGetAllResponseSingle]
|
|
"""
|
|
_service = "projects"
|
|
_action = "get_all"
|
|
_version = "1.5"
|
|
|
|
_schema = {
|
|
'definitions': {
|
|
'projects_get_all_response_single': {
|
|
'properties': {
|
|
'company': {
|
|
'description': 'Company id',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'created': {
|
|
'description': 'Creation time',
|
|
'format': 'date-time',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'default_output_destination': {
|
|
'description': 'The default output destination URL for new tasks under this project',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'description': {
|
|
'description': 'Project description',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'id': {'description': 'Project id', 'type': ['string', 'null']},
|
|
'name': {
|
|
'description': 'Project name',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'stats': {
|
|
'description': 'Additional project stats',
|
|
'oneOf': [
|
|
{'$ref': '#/definitions/stats'},
|
|
{'type': 'null'},
|
|
],
|
|
},
|
|
'system_tags': {
|
|
'description': "System tags. This field is reserved for system use, please don't use it.",
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'tags': {
|
|
'description': 'User-defined tags',
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'user': {
|
|
'description': 'Associated user id',
|
|
'type': ['string', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
},
|
|
'stats': {
|
|
'properties': {
|
|
'active': {
|
|
'description': 'Stats for active tasks',
|
|
'oneOf': [
|
|
{'$ref': '#/definitions/stats_status_count'},
|
|
{'type': 'null'},
|
|
],
|
|
},
|
|
'archived': {
|
|
'description': 'Stats for archived tasks',
|
|
'oneOf': [
|
|
{'$ref': '#/definitions/stats_status_count'},
|
|
{'type': 'null'},
|
|
],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
},
|
|
'stats_status_count': {
|
|
'properties': {
|
|
'status_count': {
|
|
'description': 'Status counts',
|
|
'properties': {
|
|
'closed': {
|
|
'description': "Number of 'closed' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'created': {
|
|
'description': "Number of 'created' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'failed': {
|
|
'description': "Number of 'failed' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'in_progress': {
|
|
'description': "Number of 'in_progress' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'published': {
|
|
'description': "Number of 'published' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'queued': {
|
|
'description': "Number of 'queued' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'stopped': {
|
|
'description': "Number of 'stopped' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
'unknown': {
|
|
'description': "Number of 'unknown' tasks in project",
|
|
'type': 'integer',
|
|
},
|
|
},
|
|
'type': ['object', 'null'],
|
|
},
|
|
'total_runtime': {
|
|
'description': 'Total run time of all tasks in project (in seconds)',
|
|
'type': ['integer', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
},
|
|
},
|
|
'properties': {
|
|
'projects': {
|
|
'description': 'Projects list',
|
|
'items': {
|
|
'$ref': '#/definitions/projects_get_all_response_single',
|
|
},
|
|
'type': ['array', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, projects=None, **kwargs):
|
|
super(GetAllResponse, 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))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [ProjectsGetAllResponseSingle.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "projects", ProjectsGetAllResponseSingle, is_array=True)
|
|
self._property_projects = value
|
|
|
|
|
|
class GetByIdRequest(Request):
|
|
"""
|
|
:param project: Project id
|
|
:type project: str
|
|
"""
|
|
|
|
_service = "projects"
|
|
_action = "get_by_id"
|
|
_version = "1.5"
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {'project': {'description': 'Project id', 'type': 'string'}},
|
|
'required': ['project'],
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, project, **kwargs):
|
|
super(GetByIdRequest, self).__init__(**kwargs)
|
|
self.project = project
|
|
|
|
@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
|
|
|
|
|
|
class GetByIdResponse(Response):
|
|
"""
|
|
Response of projects.get_by_id endpoint.
|
|
|
|
:param project: Project info
|
|
:type project: Project
|
|
"""
|
|
_service = "projects"
|
|
_action = "get_by_id"
|
|
_version = "1.5"
|
|
|
|
_schema = {
|
|
'definitions': {
|
|
'project': {
|
|
'properties': {
|
|
'company': {
|
|
'description': 'Company id',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'created': {
|
|
'description': 'Creation time',
|
|
'format': 'date-time',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'default_output_destination': {
|
|
'description': 'The default output destination URL for new tasks under this project',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'description': {
|
|
'description': 'Project description',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'id': {'description': 'Project id', 'type': ['string', 'null']},
|
|
'last_update': {
|
|
'description': 'Last project update time. Reflects the last time the project metadata was changed or a task in this project has changed status',
|
|
'format': 'date-time',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'name': {
|
|
'description': 'Project name',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'system_tags': {
|
|
'description': "System tags. This field is reserved for system use, please don't use it.",
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'tags': {
|
|
'description': 'User-defined tags',
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'user': {
|
|
'description': 'Associated user id',
|
|
'type': ['string', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
},
|
|
},
|
|
'properties': {
|
|
'project': {
|
|
'description': 'Project info',
|
|
'oneOf': [{'$ref': '#/definitions/project'}, {'type': 'null'}],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, project=None, **kwargs):
|
|
super(GetByIdResponse, self).__init__(**kwargs)
|
|
self.project = project
|
|
|
|
@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
|
|
if isinstance(value, dict):
|
|
value = Project.from_dict(value)
|
|
else:
|
|
self.assert_isinstance(value, "project", Project)
|
|
self._property_project = value
|
|
|
|
|
|
class GetHyperParametersRequest(Request):
|
|
"""
|
|
Get a list of all hyper parameter names used in tasks within the given project.
|
|
|
|
:param project: Project ID
|
|
:type project: str
|
|
:param page: Page number
|
|
:type page: int
|
|
:param page_size: Page size
|
|
:type page_size: int
|
|
"""
|
|
|
|
_service = "projects"
|
|
_action = "get_hyper_parameters"
|
|
_version = "2.2"
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'page': {
|
|
'default': 0,
|
|
'description': 'Page number',
|
|
'type': 'integer',
|
|
},
|
|
'page_size': {
|
|
'default': 500,
|
|
'description': 'Page size',
|
|
'type': 'integer',
|
|
},
|
|
'project': {'description': 'Project ID', 'type': 'string'},
|
|
},
|
|
'required': ['project'],
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, project, page=0, page_size=500, **kwargs):
|
|
super(GetHyperParametersRequest, self).__init__(**kwargs)
|
|
self.project = project
|
|
self.page = page
|
|
self.page_size = page_size
|
|
|
|
@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('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
|
|
|
|
|
|
class GetHyperParametersResponse(Response):
|
|
"""
|
|
Response of projects.get_hyper_parameters endpoint.
|
|
|
|
:param parameters: A list of hyper parameter names
|
|
:type parameters: Sequence[str]
|
|
:param remaining: Remaining results
|
|
:type remaining: int
|
|
:param total: Total number of results
|
|
:type total: int
|
|
"""
|
|
_service = "projects"
|
|
_action = "get_hyper_parameters"
|
|
_version = "2.2"
|
|
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'parameters': {
|
|
'description': 'A list of hyper parameter names',
|
|
'items': {'type': 'string'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
'remaining': {
|
|
'description': 'Remaining results',
|
|
'type': ['integer', 'null'],
|
|
},
|
|
'total': {
|
|
'description': 'Total number of results',
|
|
'type': ['integer', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, parameters=None, remaining=None, total=None, **kwargs):
|
|
super(GetHyperParametersResponse, self).__init__(**kwargs)
|
|
self.parameters = parameters
|
|
self.remaining = remaining
|
|
self.total = total
|
|
|
|
@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", (list, tuple))
|
|
|
|
self.assert_isinstance(value, "parameters", six.string_types, is_array=True)
|
|
self._property_parameters = value
|
|
|
|
@schema_property('remaining')
|
|
def remaining(self):
|
|
return self._property_remaining
|
|
|
|
@remaining.setter
|
|
def remaining(self, value):
|
|
if value is None:
|
|
self._property_remaining = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "remaining", six.integer_types)
|
|
self._property_remaining = value
|
|
|
|
@schema_property('total')
|
|
def total(self):
|
|
return self._property_total
|
|
|
|
@total.setter
|
|
def total(self, value):
|
|
if value is None:
|
|
self._property_total = None
|
|
return
|
|
if isinstance(value, float) and value.is_integer():
|
|
value = int(value)
|
|
|
|
self.assert_isinstance(value, "total", six.integer_types)
|
|
self._property_total = value
|
|
|
|
|
|
class GetUniqueMetricVariantsRequest(Request):
|
|
"""
|
|
Get all metric/variant pairs reported for tasks in a specific project.
|
|
If no project is specified, metrics/variant paris reported for all tasks will be returned.
|
|
If the project does not exist, an empty list will be returned.
|
|
|
|
:param project: Project ID
|
|
:type project: str
|
|
"""
|
|
|
|
_service = "projects"
|
|
_action = "get_unique_metric_variants"
|
|
_version = "1.6"
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'project': {'description': 'Project ID', 'type': ['string', 'null']},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, project=None, **kwargs):
|
|
super(GetUniqueMetricVariantsRequest, self).__init__(**kwargs)
|
|
self.project = project
|
|
|
|
@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
|
|
|
|
|
|
class GetUniqueMetricVariantsResponse(Response):
|
|
"""
|
|
Response of projects.get_unique_metric_variants endpoint.
|
|
|
|
:param metrics: A list of metric variants reported for tasks in this project
|
|
:type metrics: Sequence[MetricVariantResult]
|
|
"""
|
|
_service = "projects"
|
|
_action = "get_unique_metric_variants"
|
|
_version = "1.6"
|
|
|
|
_schema = {
|
|
'definitions': {
|
|
'metric_variant_result': {
|
|
'properties': {
|
|
'metric': {
|
|
'description': 'Metric name',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'metric_hash': {
|
|
'description': 'Metric name hash. Used instead of the metric name when categorizing\n last metrics events in task objects.',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'variant': {
|
|
'description': 'Variant name',
|
|
'type': ['string', 'null'],
|
|
},
|
|
'variant_hash': {
|
|
'description': 'Variant name hash. Used instead of the variant name when categorizing\n last metrics events in task objects.',
|
|
'type': ['string', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
},
|
|
},
|
|
'properties': {
|
|
'metrics': {
|
|
'description': 'A list of metric variants reported for tasks in this project',
|
|
'items': {'$ref': '#/definitions/metric_variant_result'},
|
|
'type': ['array', 'null'],
|
|
},
|
|
},
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, metrics=None, **kwargs):
|
|
super(GetUniqueMetricVariantsResponse, self).__init__(**kwargs)
|
|
self.metrics = metrics
|
|
|
|
@schema_property('metrics')
|
|
def metrics(self):
|
|
return self._property_metrics
|
|
|
|
@metrics.setter
|
|
def metrics(self, value):
|
|
if value is None:
|
|
self._property_metrics = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "metrics", (list, tuple))
|
|
if any(isinstance(v, dict) for v in value):
|
|
value = [MetricVariantResult.from_dict(v) if isinstance(v, dict) else v for v in value]
|
|
else:
|
|
self.assert_isinstance(value, "metrics", MetricVariantResult, is_array=True)
|
|
self._property_metrics = value
|
|
|
|
|
|
class UpdateRequest(Request):
|
|
"""
|
|
Update project information
|
|
|
|
:param project: Project id
|
|
:type project: str
|
|
:param name: Project name. Unique within the company.
|
|
:type name: str
|
|
:param description: Project description
|
|
:type description: 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 default_output_destination: The default output destination URL for new
|
|
tasks under this project
|
|
:type default_output_destination: str
|
|
"""
|
|
|
|
_service = "projects"
|
|
_action = "update"
|
|
_version = "1.5"
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'default_output_destination': {
|
|
'description': 'The default output destination URL for new tasks under this project',
|
|
'type': 'string',
|
|
},
|
|
'description': {
|
|
'description': 'Project description',
|
|
'type': 'string',
|
|
},
|
|
'name': {
|
|
'description': 'Project name. Unique within the company.',
|
|
'type': 'string',
|
|
},
|
|
'project': {'description': 'Project id', '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',
|
|
},
|
|
},
|
|
'required': ['project'],
|
|
'type': 'object',
|
|
}
|
|
|
|
def __init__(
|
|
self, project, name=None, description=None, tags=None, system_tags=None, default_output_destination=None, **kwargs):
|
|
super(UpdateRequest, self).__init__(**kwargs)
|
|
self.project = project
|
|
self.name = name
|
|
self.description = description
|
|
self.tags = tags
|
|
self.system_tags = system_tags
|
|
self.default_output_destination = default_output_destination
|
|
|
|
@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('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('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
|
|
|
|
@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('default_output_destination')
|
|
def default_output_destination(self):
|
|
return self._property_default_output_destination
|
|
|
|
@default_output_destination.setter
|
|
def default_output_destination(self, value):
|
|
if value is None:
|
|
self._property_default_output_destination = None
|
|
return
|
|
|
|
self.assert_isinstance(value, "default_output_destination", six.string_types)
|
|
self._property_default_output_destination = value
|
|
|
|
|
|
class UpdateResponse(Response):
|
|
"""
|
|
Response of projects.update endpoint.
|
|
|
|
:param updated: Number of projects updated (0 or 1)
|
|
:type updated: int
|
|
:param fields: Updated fields names and values
|
|
:type fields: dict
|
|
"""
|
|
_service = "projects"
|
|
_action = "update"
|
|
_version = "1.5"
|
|
|
|
_schema = {
|
|
'definitions': {},
|
|
'properties': {
|
|
'fields': {
|
|
'additionalProperties': True,
|
|
'description': 'Updated fields names and values',
|
|
'type': ['object', 'null'],
|
|
},
|
|
'updated': {
|
|
'description': 'Number of projects 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
|
|
|
|
|
|
response_mapping = {
|
|
CreateRequest: CreateResponse,
|
|
GetByIdRequest: GetByIdResponse,
|
|
GetAllRequest: GetAllResponse,
|
|
UpdateRequest: UpdateResponse,
|
|
DeleteRequest: DeleteResponse,
|
|
GetUniqueMetricVariantsRequest: GetUniqueMetricVariantsResponse,
|
|
GetHyperParametersRequest: GetHyperParametersResponse,
|
|
}
|