about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/compute/schedule.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/compute/schedule.py')
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/compute/schedule.py118
1 files changed, 118 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/compute/schedule.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/compute/schedule.py
new file mode 100644
index 00000000..49f41edf
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/compute/schedule.py
@@ -0,0 +1,118 @@
+# ---------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# ---------------------------------------------------------
+
+# pylint: disable=unused-argument
+
+from marshmallow import fields
+from marshmallow.decorators import post_load
+
+from azure.ai.ml._restclient.v2022_10_01_preview.models import ComputePowerAction, RecurrenceFrequency
+from azure.ai.ml._restclient.v2022_10_01_preview.models import ScheduleStatus as ScheduleState
+from azure.ai.ml._restclient.v2022_10_01_preview.models import TriggerType, WeekDay
+from azure.ai.ml._schema.core.fields import NestedField, StringTransformedEnum, UnionField
+from azure.ai.ml._schema.core.schema_meta import PatchedSchemaMeta
+
+
+class BaseTriggerSchema(metaclass=PatchedSchemaMeta):
+    start_time = fields.Str()
+    time_zone = fields.Str()
+
+
+class CronTriggerSchema(BaseTriggerSchema):
+    type = StringTransformedEnum(required=True, allowed_values=TriggerType.CRON)
+    expression = fields.Str(required=True)
+
+    @post_load
+    def make(self, data, **kwargs):
+        from azure.ai.ml.entities import CronTrigger
+
+        data.pop("type")
+        return CronTrigger(**data)
+
+
+class RecurrenceScheduleSchema(metaclass=PatchedSchemaMeta):
+    week_days = fields.List(
+        StringTransformedEnum(
+            allowed_values=[
+                WeekDay.SUNDAY,
+                WeekDay.MONDAY,
+                WeekDay.TUESDAY,
+                WeekDay.WEDNESDAY,
+                WeekDay.THURSDAY,
+                WeekDay.FRIDAY,
+                WeekDay.SATURDAY,
+            ],
+        )
+    )
+    hours = fields.List(fields.Int())
+    minutes = fields.List(fields.Int())
+
+    @post_load
+    def make(self, data, **kwargs):
+        from azure.ai.ml.entities import RecurrencePattern
+
+        return RecurrencePattern(**data)
+
+
+class RecurrenceTriggerSchema(BaseTriggerSchema):
+    type = StringTransformedEnum(required=True, allowed_values=TriggerType.RECURRENCE)
+    frequency = StringTransformedEnum(
+        required=True,
+        allowed_values=[
+            RecurrenceFrequency.MINUTE,
+            RecurrenceFrequency.HOUR,
+            RecurrenceFrequency.DAY,
+            RecurrenceFrequency.WEEK,
+            RecurrenceFrequency.MONTH,
+        ],
+    )
+    interval = fields.Int()
+    schedule = NestedField(RecurrenceScheduleSchema)
+
+    @post_load
+    def make(self, data, **kwargs):
+        from azure.ai.ml.entities import RecurrenceTrigger
+
+        data.pop("type")
+        return RecurrenceTrigger(**data)
+
+
+class ComputeStartStopScheduleSchema(metaclass=PatchedSchemaMeta):
+    trigger = UnionField(
+        [
+            NestedField(CronTriggerSchema()),
+            NestedField(RecurrenceTriggerSchema()),
+        ],
+    )
+    action = StringTransformedEnum(
+        required=True,
+        allowed_values=[
+            ComputePowerAction.START,
+            ComputePowerAction.STOP,
+        ],
+    )
+    state = StringTransformedEnum(
+        allowed_values=[
+            ScheduleState.ENABLED,
+            ScheduleState.DISABLED,
+        ],
+    )
+    schedule_id = fields.Str(dump_only=True)
+    provisioning_state = fields.Str(dump_only=True)
+
+    @post_load
+    def make(self, data, **kwargs):
+        from azure.ai.ml.entities import ComputeStartStopSchedule
+
+        return ComputeStartStopSchedule(**data)
+
+
+class ComputeSchedulesSchema(metaclass=PatchedSchemaMeta):
+    compute_start_stop = fields.List(NestedField(ComputeStartStopScheduleSchema))
+
+    @post_load
+    def make(self, data, **kwargs):
+        from azure.ai.ml.entities import ComputeSchedules
+
+        return ComputeSchedules(**data)