class ECSRunSchema(RunConfigSchemaBase): class Meta: object_class = ECSRun task_definition_path = fields.String(allow_none=True) task_definition = JSONCompatible(allow_none=True) image = fields.String(allow_none=True) env = fields.Dict(keys=fields.String(), allow_none=True) cpu = fields.String(allow_none=True) memory = fields.String(allow_none=True) task_role_arn = fields.String(allow_none=True) run_task_kwargs = JSONCompatible(allow_none=True)
class RemoteDaskEnvironmentSchema(ObjectSchema): class Meta: object_class = RemoteDaskEnvironment address = fields.String() labels = SortedList(fields.String()) metadata = JSONCompatible(allow_none=True)
class CachedSchema(SuccessSchema): class Meta: object_class = state.Cached cached_parameters = JSONCompatible(allow_none=True) cached_result_expiration = fields.DateTime(allow_none=True) hashed_inputs = fields.Dict(key=fields.Str(), values=fields.Str(), allow_none=True)
class IntervalClockSchema(ObjectSchema): class Meta: object_class = prefect.schedules.clocks.IntervalClock start_date = DateTimeTZ(allow_none=True) end_date = DateTimeTZ(allow_none=True) interval = fields.TimeDelta(precision="microseconds", required=True) parameter_defaults = fields.Dict(keys=fields.Str(), values=JSONCompatible(), allow_none=True) labels = fields.List(fields.Str(), allow_none=True) @post_dump def _interval_validation(self, data: dict, **kwargs: Any) -> dict: """ Ensures interval is at least one minute in length """ if data["interval"] / 1e6 < 60: raise ValueError( "Interval can not be less than one minute when deploying to Prefect Cloud." ) return data @post_load def create_object(self, data: dict, **kwargs: Any): if data["interval"].total_seconds() < 60: raise ValueError( "Interval can not be less than one minute when deploying to Prefect Cloud." ) base_obj = super().create_object(data) return base_obj
class DatesClockSchema(ObjectSchema): class Meta: object_class = prefect.schedules.clocks.DatesClock dates = fields.List(DateTimeTZ(), required=True) parameter_defaults = fields.Dict( key=fields.Str(), values=JSONCompatible(), allow_none=True )
class RemoteEnvironmentSchema(ObjectSchema): class Meta: object_class = RemoteEnvironment executor = fields.String(allow_none=True) executor_kwargs = fields.Dict(allow_none=True) labels = SortedList(fields.String()) metadata = JSONCompatible(allow_none=True)
class S3Schema(BaseStorageSchema): class Meta: object_class = S3 bucket = fields.String(allow_none=False) key = fields.String(allow_none=True) stored_as_script = fields.Bool(allow_none=True) client_options = fields.Dict(keys=fields.Str(), values=JSONCompatible(), allow_none=True)
class CronClockSchema(ObjectSchema): class Meta: object_class = prefect.schedules.clocks.CronClock start_date = DateTimeTZ(allow_none=True) end_date = DateTimeTZ(allow_none=True) cron = fields.String(required=True) parameter_defaults = fields.Dict( key=fields.Str(), values=JSONCompatible(), allow_none=True )
class DaskKubernetesEnvironmentSchema(ObjectSchema): class Meta: object_class = DaskKubernetesEnvironment docker_secret = fields.String(allow_none=True) labels = SortedList(fields.String()) metadata = JSONCompatible(allow_none=True) private_registry = fields.Boolean(allow_none=False) min_workers = fields.Int() max_workers = fields.Int()
class CodeCommitSchema(BaseStorageSchema): class Meta: object_class = CodeCommit repo = fields.String(allow_none=False) path = fields.String(allow_none=True) commit = fields.String(allow_none=True) client_options = fields.Dict(keys=fields.Str(), values=JSONCompatible(), allow_none=True)
class RRuleClockSchema(ObjectSchema): class Meta: object_class = prefect.schedules.clocks.RRuleClock rrule_obj = fields.Nested(RRuleBaseSchema) start_date = DateTimeTZ(allow_none=True) end_date = DateTimeTZ(allow_none=True) parameter_defaults = fields.Dict(keys=fields.Str(), values=JSONCompatible(), allow_none=True) labels = fields.List(fields.Str(), allow_none=True)
class KubernetesRunSchema(RunConfigSchemaBase): class Meta: object_class = KubernetesRun job_template_path = fields.String(allow_none=True) job_template = JSONCompatible(allow_none=True) image = fields.String(allow_none=True) env = fields.Dict(keys=fields.String(), allow_none=True) cpu_limit = fields.String(allow_none=True) cpu_request = fields.String(allow_none=True) memory_limit = fields.String(allow_none=True) memory_request = fields.String(allow_none=True)
class ParameterSchema(TaskMethodsMixin, ObjectSchema): class Meta: object_class = lambda: prefect.core.task.Parameter # type: ignore exclude_fields = ["type", "outputs", "slug"] type = fields.Function(lambda task: to_qualified_name(type(task)), lambda x: x) name = fields.String(required=True) slug = fields.String(allow_none=True) default = JSONCompatible(allow_none=True) required = fields.Boolean(allow_none=True) description = fields.String(allow_none=True) tags = fields.List(fields.String()) outputs = fields.Method("load_outputs", allow_none=True)
class KubernetesRunSchema(RunConfigSchemaBase): class Meta: object_class = KubernetesRun job_template_path = fields.String(allow_none=True) job_template = JSONCompatible(allow_none=True) image = fields.String(allow_none=True) cpu_limit = fields.String(allow_none=True) cpu_request = fields.String(allow_none=True) memory_limit = fields.String(allow_none=True) memory_request = fields.String(allow_none=True) service_account_name = fields.String(allow_none=True) image_pull_secrets = fields.List(fields.String(), allow_none=True)
class CachedSchema(SuccessSchema): class Meta: object_class = state.Cached cached_inputs = fields.Dict( key=fields.Str(), values=Nested(StateResultSchema, value_selection_fn=get_safe, attr="cached_inputs"), allow_none=True, ) cached_parameters = JSONCompatible(allow_none=True) cached_result_expiration = fields.DateTime(allow_none=True)
class S3Schema(ObjectSchema): class Meta: object_class = S3 bucket = fields.String(allow_none=False) key = fields.String(allow_none=True) flows = fields.Dict(key=fields.Str(), values=fields.Str()) client_options = fields.Dict(key=fields.Str(), values=JSONCompatible(), allow_none=True) @post_load def create_object(self, data: dict, **kwargs: Any) -> S3: flows = data.pop("flows", dict()) base_obj = super().create_object(data) base_obj.flows = flows return base_obj
class BaseStateSchema(ObjectSchema): class Meta: object_class = state.State context = fields.Dict(key=fields.Str(), values=JSONCompatible(), allow_none=True) message = fields.String(allow_none=True) _result = Nested(StateResultSchema, allow_none=False, value_selection_fn=get_safe) @post_load def create_object(self, data: dict, **kwargs: Any) -> state.State: result_obj = data.pop("_result", result.NoResult) data["result"] = result_obj base_obj = super().create_object(data) return base_obj
class CustomEnvironmentSchema(ObjectSchema): class Meta: object_class = lambda: Environment exclude_fields = ["type"] labels = SortedList(fields.String()) metadata = JSONCompatible(allow_none=True) type = fields.Function( lambda environment: to_qualified_name(type(environment)), lambda x: x ) @post_load def create_object(self, data: dict, **kwargs: Any) -> Environment: """ Because we cannot deserialize a custom class, we return an empty Base Environment with the appropriate labels. """ return Environment(labels=data.get("labels"), metadata=data.get("metadata"))
class CodeCommitSchema(ObjectSchema): class Meta: object_class = CodeCommit repo = fields.String(allow_none=False) path = fields.String(allow_none=True) commit = fields.String(allow_none=True) client_options = fields.Dict( key=fields.Str(), values=JSONCompatible(), allow_none=True ) flows = fields.Dict(key=fields.Str(), values=fields.Str()) secrets = fields.List(fields.Str(), allow_none=True) @post_load def create_object(self, data: dict, **kwargs: Any) -> CodeCommit: flows = data.pop("flows", dict()) base_obj = super().create_object(data) base_obj.flows = flows return base_obj
class LocalEnvironmentSchema(ObjectSchema): class Meta: object_class = LocalEnvironment labels = fields.List(fields.String()) metadata = JSONCompatible(allow_none=True)
class FargateTaskEnvironmentSchema(ObjectSchema): class Meta: object_class = FargateTaskEnvironment labels = SortedList(fields.String()) metadata = JSONCompatible(allow_none=True)
class KubernetesJobEnvironmentSchema(ObjectSchema): class Meta: object_class = KubernetesJobEnvironment labels = SortedList(fields.String()) metadata = JSONCompatible(allow_none=True)
class SafeResultSchema(ObjectSchema): class Meta: object_class = result.SafeResult value = JSONCompatible(allow_none=True) result_handler = fields.Nested(ResultHandlerSchema, allow_none=False)
class CachedSchema(SuccessSchema): class Meta: object_class = state.Cached cached_parameters = JSONCompatible(allow_none=True) cached_result_expiration = fields.DateTime(allow_none=True)
class Schema(marshmallow.Schema): j = JSONCompatible()