34 lines
900 B
Python
34 lines
900 B
Python
"""
|
|
Frequency Calculator Utility
|
|
Calculates next execution time based on frequency string.
|
|
"""
|
|
|
|
from datetime import datetime, timedelta
|
|
from typing import Optional
|
|
|
|
|
|
def calculate_next_execution(frequency: str, base_time: Optional[datetime] = None) -> datetime:
|
|
"""
|
|
Calculate next execution time based on frequency.
|
|
|
|
Args:
|
|
frequency: Frequency string ('Daily', 'Weekly', 'Monthly', 'Quarterly')
|
|
base_time: Base time to calculate from (defaults to now if None)
|
|
|
|
Returns:
|
|
Next execution datetime
|
|
"""
|
|
if base_time is None:
|
|
base_time = datetime.utcnow()
|
|
|
|
frequency_map = {
|
|
'Daily': timedelta(days=1),
|
|
'Weekly': timedelta(weeks=1),
|
|
'Monthly': timedelta(days=30),
|
|
'Quarterly': timedelta(days=90)
|
|
}
|
|
|
|
delta = frequency_map.get(frequency, timedelta(days=1))
|
|
return base_time + delta
|
|
|