Convert a ScheduleConfig into an Azure ML trigger object.
Parameters
| Name |
Type |
Description |
Default |
config
|
ScheduleConfig
|
Schedule configuration with either a cron or recurrence
definition.
|
required
|
Returns
| Type |
Description |
CronTrigger or RecurrenceTrigger
|
Azure ML trigger ready for a JobSchedule.
|
See Also
resolve_schedule : Resolves config before building.
build_job_schedule : Wraps the trigger into a schedule.
Source Code
View on GitHub
Show/Hide source
| def build_trigger(config: ScheduleConfig) -> CronTrigger | RecurrenceTrigger:
"""Convert a ``ScheduleConfig`` into an Azure ML trigger object.
Parameters
----------
config : ScheduleConfig
Schedule configuration with either a ``cron`` or ``recurrence``
definition.
Returns
-------
CronTrigger or RecurrenceTrigger
Azure ML trigger ready for a ``JobSchedule``.
See Also
--------
[resolve_schedule][kedro_azureml_pipeline.scheduler.resolve_schedule] : Resolves config before building.
[build_job_schedule][kedro_azureml_pipeline.scheduler.build_job_schedule] : Wraps the trigger into a schedule.
"""
if config.cron:
kwargs = {"expression": config.cron.expression, "time_zone": config.cron.time_zone}
if config.cron.start_time:
kwargs["start_time"] = config.cron.start_time
if config.cron.end_time:
kwargs["end_time"] = config.cron.end_time
return CronTrigger(**kwargs)
rec = config.recurrence
assert rec is not None, "ScheduleConfig must have either cron or recurrence set"
pattern: RecurrencePattern | None = None
if rec.schedule:
pattern_kwargs: dict[str, Any] = {}
if rec.schedule.hours is not None: # pragma: no branch - RecurrencePattern requires hours
pattern_kwargs["hours"] = rec.schedule.hours
if rec.schedule.minutes is not None: # pragma: no branch - RecurrencePattern requires minutes
pattern_kwargs["minutes"] = rec.schedule.minutes
if rec.schedule.week_days is not None:
pattern_kwargs["week_days"] = rec.schedule.week_days
pattern = RecurrencePattern(**pattern_kwargs)
return RecurrenceTrigger(
frequency=rec.frequency,
interval=rec.interval,
time_zone=rec.time_zone,
start_time=rec.start_time,
end_time=rec.end_time,
schedule=pattern,
)
|