77
88import sys
99import datetime
10+ from enum import IntEnum
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" ,
19- "MONDAY" , "TUESDAY" , "WEDNESDAY" , "THURSDAY" , "FRIDAY" ,
20+ "Weekdays" ,"Months" , "JANUARY" , "FEBRUARY" , "MARCH" ,
21+ "APRIL" , "MAY" , "JUNE" , "JULY" ,
22+ "AUGUST" , "SEPTEMBER" , "OCTOBER" , "NOVEMEMBER" , "DECEMBER" ,
23+ "MONDAY" , "TUESDAY" , "WEDNESDAY" , "THURSDAY" , "FRIDAY" ,
2024 "SATURDAY" , "SUNDAY" ]
2125
2226# Exception raised for bad input (with string parameter for details)
@@ -38,8 +42,34 @@ def __str__(self):
3842
3943
4044# Constants for months referenced later
41- January = 1
42- February = 2
45+ class Months (IntEnum ):
46+ JANUARY = 1
47+ FEBRUARY = 2
48+ MARCH = 3
49+ APRIL = 4
50+ MAY = 5
51+ JUNE = 6
52+ JULY = 7
53+ AUGUST = 8
54+ SEPTEMBER = 9
55+ OCTOBER = 10
56+ NOVEMEMBER = 11
57+ DECEMBER = 12
58+
59+ (JANUARY , FEBRUARY , MARCH , APRIL , MAY , JUNE , JULY , AUGUST , SEPTEMBER , OCTOBER , NOVEMEMBER , DECEMBER ) = [month .value for month in Months ]
60+
61+ # Constants for weekdays
62+ class Weekdays (IntEnum ):
63+ MONDAY = 0
64+ TUESDAY = 1
65+ WEDNESDAY = 2
66+ THURSDAY = 3
67+ FRIDAY = 4
68+ SATURDAY = 5
69+ SUNDAY = 6
70+
71+ # Constants for weekdays
72+ (MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIDAY , SATURDAY , SUNDAY ) = [week .value for week in Weekdays ]
4373
4474# Number of days per month (except for February in leap years)
4575mdays = [0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ]
@@ -95,9 +125,6 @@ def __len__(self):
95125month_name = _localized_month ('%B' )
96126month_abbr = _localized_month ('%b' )
97127
98- # Constants for weekdays
99- (MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIDAY , SATURDAY , SUNDAY ) = range (7 )
100-
101128
102129def isleap (year ):
103130 """Return True for leap years, False for non-leap years."""
@@ -125,12 +152,12 @@ def monthrange(year, month):
125152 if not 1 <= month <= 12 :
126153 raise IllegalMonthError (month )
127154 day1 = weekday (year , month , 1 )
128- ndays = mdays [month ] + (month == February and isleap (year ))
155+ ndays = mdays [month ] + (month == FEBRUARY and isleap (year ))
129156 return day1 , ndays
130157
131158
132159def _monthlen (year , month ):
133- return mdays [month ] + (month == February and isleap (year ))
160+ return mdays [month ] + (month == FEBRUARY and isleap (year ))
134161
135162
136163def _prevmonth (year , month ):
@@ -262,7 +289,7 @@ def yeardatescalendar(self, year, width=3):
262289 """
263290 months = [
264291 self .monthdatescalendar (year , i )
265- for i in range (January , January + 12 )
292+ for i in range (JANUARY , JANUARY + 12 )
266293 ]
267294 return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
268295
@@ -275,7 +302,7 @@ def yeardays2calendar(self, year, width=3):
275302 """
276303 months = [
277304 self .monthdays2calendar (year , i )
278- for i in range (January , January + 12 )
305+ for i in range (JANUARY , JANUARY + 12 )
279306 ]
280307 return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
281308
@@ -287,7 +314,7 @@ def yeardayscalendar(self, year, width=3):
287314 """
288315 months = [
289316 self .monthdayscalendar (year , i )
290- for i in range (January , January + 12 )
317+ for i in range (JANUARY , JANUARY + 12 )
291318 ]
292319 return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
293320
@@ -509,7 +536,7 @@ def formatyear(self, theyear, width=3):
509536 a ('\n ' )
510537 a ('<tr><th colspan="%d" class="%s">%s</th></tr>' % (
511538 width , self .cssclass_year_head , theyear ))
512- for i in range (January , January + 12 , width ):
539+ for i in range (JANUARY , JANUARY + 12 , width ):
513540 # months in this row
514541 months = range (i , min (i + width , 13 ))
515542 a ('<tr>' )
0 commit comments