|
|
|
@ -8,6 +8,7 @@ set the first day of the week (0=Monday, 6=Sunday).""" |
|
|
|
import sys |
|
|
|
import datetime |
|
|
|
import locale as _locale |
|
|
|
from itertools import repeat |
|
|
|
|
|
|
|
__all__ = ["IllegalMonthError", "IllegalWeekdayError", "setfirstweekday", |
|
|
|
"firstweekday", "isleap", "leapdays", "weekday", "monthrange", |
|
|
|
@ -174,22 +175,20 @@ class Calendar(object): |
|
|
|
Like itermonthdates(), but will yield (day number, weekday number) |
|
|
|
tuples. For days outside the specified month the day number is 0. |
|
|
|
""" |
|
|
|
for date in self.itermonthdates(year, month): |
|
|
|
if date.month != month: |
|
|
|
yield (0, date.weekday()) |
|
|
|
else: |
|
|
|
yield (date.day, date.weekday()) |
|
|
|
for i, d in enumerate(self.itermonthdays(year, month), self.firstweekday): |
|
|
|
yield d, i % 7 |
|
|
|
|
|
|
|
def itermonthdays(self, year, month): |
|
|
|
""" |
|
|
|
Like itermonthdates(), but will yield day numbers. For days outside |
|
|
|
the specified month the day number is 0. |
|
|
|
""" |
|
|
|
for date in self.itermonthdates(year, month): |
|
|
|
if date.month != month: |
|
|
|
yield 0 |
|
|
|
else: |
|
|
|
yield date.day |
|
|
|
day1, ndays = monthrange(year, month) |
|
|
|
days_before = (day1 - self.firstweekday) % 7 |
|
|
|
yield from repeat(0, days_before) |
|
|
|
yield from range(1, ndays + 1) |
|
|
|
days_after = (self.firstweekday - day1 - ndays) % 7 |
|
|
|
yield from repeat(0, days_after) |
|
|
|
|
|
|
|
def monthdatescalendar(self, year, month): |
|
|
|
""" |
|
|
|
|