class NewScheduleSchema(ObjectSchema): """ This schedule schema is the "true" schedule schema; however we use a backwards-compatible one to support old-style schedules. """ class Meta: object_class = prefect.schedules.Schedule clocks = fields.Nested(ClockSchema, required=True, many=True) filters = fields.List( StatefulFunctionReference( valid_functions=FILTERS, reject_invalid=True, allow_none=True ) ) or_filters = fields.List( StatefulFunctionReference( valid_functions=FILTERS, reject_invalid=True, allow_none=True ) ) not_filters = fields.List( StatefulFunctionReference( valid_functions=FILTERS, reject_invalid=True, allow_none=True ) ) adjustments = fields.List( StatefulFunctionReference( valid_functions=ADJUSTMENTS, reject_invalid=True, allow_none=True ) )
class ScheduleSchema(ObjectSchema): """ The serialization schema for Schedule types """ class Meta: object_class = prefect.schedules.Schedule clocks = fields.Nested(ClockSchema, required=True, many=True) filters = fields.List( StatefulFunctionReference( valid_functions=FILTERS, reject_invalid=True, allow_none=True ) ) or_filters = fields.List( StatefulFunctionReference( valid_functions=FILTERS, reject_invalid=True, allow_none=True ) ) not_filters = fields.List( StatefulFunctionReference( valid_functions=FILTERS, reject_invalid=True, allow_none=True ) ) adjustments = fields.List( StatefulFunctionReference( valid_functions=ADJUSTMENTS, reject_invalid=True, allow_none=True ) )
class TaskSchema(TaskMethodsMixin, ObjectSchema): class Meta: object_class = lambda: prefect.core.Task exclude_fields = ["type", "inputs", "outputs"] type = fields.Function(lambda task: to_qualified_name(type(task)), lambda x: x) name = fields.String(allow_none=True) slug = fields.String(allow_none=True) description = fields.String(allow_none=True) tags = fields.List(fields.String()) max_retries = fields.Integer(allow_none=True) retry_delay = fields.TimeDelta(allow_none=True) inputs = fields.Method("load_inputs", allow_none=True) outputs = fields.Method("load_outputs", allow_none=True) timeout = fields.Integer(allow_none=True) trigger = StatefulFunctionReference( valid_functions=[ prefect.triggers.all_finished, prefect.triggers.manual_only, prefect.triggers.always_run, prefect.triggers.all_successful, prefect.triggers.all_failed, prefect.triggers.any_successful, prefect.triggers.any_failed, prefect.triggers.some_failed, prefect.triggers.some_successful, ], # don't reject custom functions, just leave them as strings reject_invalid=False, allow_none=True, ) skip_on_upstream_skip = fields.Boolean(allow_none=True) cache_for = fields.TimeDelta(allow_none=True) cache_key = fields.String(allow_none=True) cache_validator = StatefulFunctionReference( valid_functions=[ prefect.engine.cache_validators.never_use, prefect.engine.cache_validators.duration_only, prefect.engine.cache_validators.all_inputs, prefect.engine.cache_validators.all_parameters, prefect.engine.cache_validators.partial_inputs_only, prefect.engine.cache_validators.partial_parameters_only, ], # don't reject custom functions, just leave them as strings reject_invalid=False, allow_none=True, ) auto_generated = fields.Boolean(allow_none=True)
class Schema(marshmallow.Schema): f = StatefulFunctionReference(valid_functions=[outer]) f_allow_invalid = StatefulFunctionReference( valid_functions=[outer], reject_invalid=False ) f_none = StatefulFunctionReference(valid_functions=[outer], allow_none=True)