clearml-agent/clearml_agent/backend_api/schema/action.py
2020-12-22 21:21:29 +02:00

39 lines
1.3 KiB
Python

import re
from functools import partial
import attr
from attr.converters import optional as optional_converter
from attr.validators import instance_of, optional, and_
from six import string_types
# noinspection PyTypeChecker
sequence = instance_of((list, tuple))
def sequence_of(types):
def validator(_, attrib, value):
assert all(isinstance(x, types) for x in value), attrib.name
return and_(sequence, validator)
@attr.s
class Action(object):
name = attr.ib()
version = attr.ib()
service = attr.ib()
definitions_keys = attr.ib(validator=sequence)
authorize = attr.ib(validator=instance_of(bool), default=True)
log_data = attr.ib(validator=instance_of(bool), default=True)
log_result_data = attr.ib(validator=instance_of(bool), default=True)
internal = attr.ib(default=False)
allow_roles = attr.ib(default=None, validator=optional(sequence_of(string_types)))
request = attr.ib(validator=optional(instance_of(dict)), default=None)
batch_request = attr.ib(validator=optional(instance_of(dict)), default=None)
response = attr.ib(validator=optional(instance_of(dict)), default=None)
method = attr.ib(default=None)
description = attr.ib(
default=None,
validator=optional(instance_of(string_types)),
)