77
88import sys
99import datetime
10+ from enum import IntEnum , global_enum
1011import locale as _locale
1112from itertools import repeat
1213
1617 "timegm" , "month_name" , "month_abbr" , "day_name" , "day_abbr" ,
1718 "Calendar" , "TextCalendar" , "HTMLCalendar" , "LocaleTextCalendar" ,
1819 "LocaleHTMLCalendar" , "weekheader" ,
20+ "Weekday" , "Month" , "JANUARY" , "FEBRUARY" , "MARCH" ,
21+ "APRIL" , "MAY" , "JUNE" , "JULY" ,
22+ "AUGUST" , "SEPTEMBER" , "OCTOBER" , "NOVEMEMBER" , "DECEMBER" ,
1923 "MONDAY" , "TUESDAY" , "WEDNESDAY" , "THURSDAY" , "FRIDAY" ,
2024 "SATURDAY" , "SUNDAY" ]
2125
@@ -37,6 +41,35 @@ def __str__(self):
3741 return "bad weekday number %r; must be 0 (Monday) to 6 (Sunday)" % self .weekday
3842
3943
44+ # Constants for months referenced later
45+ @global_enum
46+ class Month (IntEnum ):
47+ JANUARY = 1
48+ FEBRUARY = 2
49+ MARCH = 3
50+ APRIL = 4
51+ MAY = 5
52+ JUNE = 6
53+ JULY = 7
54+ AUGUST = 8
55+ SEPTEMBER = 9
56+ OCTOBER = 10
57+ NOVEMEMBER = 11
58+ DECEMBER = 12
59+
60+
61+ # Constants for weekdays
62+ @global_enum
63+ class Weekday (IntEnum ):
64+ MONDAY = 0
65+ TUESDAY = 1
66+ WEDNESDAY = 2
67+ THURSDAY = 3
68+ FRIDAY = 4
69+ SATURDAY = 5
70+ SUNDAY = 6
71+
72+
4073# Constants for months referenced later
4174January = 1
4275February = 2
@@ -95,9 +128,6 @@ def __len__(self):
95128month_name = _localized_month ('%B' )
96129month_abbr = _localized_month ('%b' )
97130
98- # Constants for weekdays
99- (MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIDAY , SATURDAY , SUNDAY ) = range (7 )
100-
101131
102132def isleap (year ):
103133 """Return True for leap years, False for non-leap years."""
@@ -260,10 +290,7 @@ def yeardatescalendar(self, year, width=3):
260290 Each month contains between 4 and 6 weeks and each week contains 1-7
261291 days. Days are datetime.date objects.
262292 """
263- months = [
264- self .monthdatescalendar (year , i )
265- for i in range (January , January + 12 )
266- ]
293+ months = [self .monthdatescalendar (year , m ) for m in Month ]
267294 return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
268295
269296 def yeardays2calendar (self , year , width = 3 ):
@@ -273,10 +300,7 @@ def yeardays2calendar(self, year, width=3):
273300 (day number, weekday number) tuples. Day numbers outside this month are
274301 zero.
275302 """
276- months = [
277- self .monthdays2calendar (year , i )
278- for i in range (January , January + 12 )
279- ]
303+ months = [self .monthdays2calendar (year , m ) for m in Month ]
280304 return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
281305
282306 def yeardayscalendar (self , year , width = 3 ):
@@ -285,10 +309,7 @@ def yeardayscalendar(self, year, width=3):
285309 yeardatescalendar()). Entries in the week lists are day numbers.
286310 Day numbers outside this month are zero.
287311 """
288- months = [
289- self .monthdayscalendar (year , i )
290- for i in range (January , January + 12 )
291- ]
312+ months = [self .monthdayscalendar (year , m ) for m in Month ]
292313 return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
293314
294315
0 commit comments