Repeat rules specify an entry's repeat status, that is, the recurrence of the entry. There are six repeat types:
daily
: repeated daily
weekly
: repeat on the specified days of the week, such as Monday and Wednesday, etc.
monthly_by_dates
: repeat monthly on the specified dates, such as the 15th and 17th day of the month
monthly_by_days
: repeat monthly on the specified days, such as the fourth Wednesday of the month, or the last Monday of the month
yearly_by_date
: repeat yearly on the specified date, such as December 24
yearly_by_day
: repeat yearly on the specified day, such as every third Tuesday of May
There are exceptions to repeat rules. For example, you can specify the datetime value (float) in such a way that the entry is not repeated on a specific day even if the repeat rule would specify otherwise.
You must set the start and end dates (floats) of the repeat. The end date
can also be set to None
to indicate that the repeating continues
forever. You can set interval
defining how often the repeat occurs,
for example in a daily repeat: 1
means every day, 2
means
every second day, etc. You can also set the days
specifier which
lets you explicitly specify the repeat days; for example in a weekly repeat
you can set "days":[0,2]
which sets the repeat to occur on Mondays
and Wednesdays. If you do not set the days
specifier, the repeat
days are calculated automatically based on the start date.
You can modify repeat data by calling rep_data =
entry.get_repeat()
, then making changes to rep_data
dictionary, and then calling entry.set_repeat(rep_data)
.
Repeating can be cancelled by calling entry.set_repeat
with a
parameter that is interpreted to be false, such as
entry.set_repeat(None)
.
Repeat definition examples:
repeat = {"type":"daily", #repeat type "exceptions":[exception_day, exception_day+2*24*60*60], #no appointment on those days "start":appt_start_date, #start of the repeat "end":appt_start_date+30*24*60*60, #end of the repeat "interval":1} #interval (1=every day, 2=every second day etc.) repeat = {"type":"weekly", #repeat type "days":[0,1], #which days in a week (Monday, Tuesday) "exceptions":[exception_day], #no appointment on that day "start":appt_start_date, #start of the repeat "end":appt_start_date+30*24*60*60, #end of the repeat "interval":1} #interval (1=every week, 2=every second week etc.) repeat = {"type":"monthly_by_days", #repeat type # appointments on second Tuesday and last Monday of the month "days":[{"week":1, "day":1},{"week":4, "day":0}], "exceptions":[exception_day], #no appointment on that day "start":appt_start_date, #start of the repeat "end":appt_start_date+30*24*60*60, #end of the repeat "interval":1} #interval (1=every month, 2=every second month etc.) repeat = {"type":"monthly_by_dates", #repeat type "days":[0,15], # appointments on the 1st and 16th day of the month. "exceptions":[exception_day], #no appointment on that day "start":appt_start_date, #start of the repeat "end":appt_start_date+30*24*60*60, #end of the repeat "interval":1} #interval (1=every month, 2=every second month etc.) repeat = {"type":"yearly_by_date", #repeat type "exceptions":[exception_day], #no appointment on that day "start":appt_start_date, #start of the repeat "end":appt_start_date+3*365*24*60*60, #end of the repeat "interval":1} #interval (1=every year, 2=every second year etc.) repeat = {"type":"yearly_by_day", #repeat type # appointments on the second Tuesday of February "days":{"day":1, "week":1, "month":1}, "exceptions":[exception_day], #no appointment on that day "start":appt_start_date, #start of the repeat "end":appt_start_date+3*365*24*60*60, #end of the repeat "interval":1} #interval (1=every year, 2=every second year etc.)
See About this document... for information on suggesting changes.