7
7
8
8
import sys
9
9
import datetime
10
+ from enum import IntEnum
10
11
import locale as _locale
11
12
from itertools import repeat
12
13
16
17
"timegm" , "month_name" , "month_abbr" , "day_name" , "day_abbr" ,
17
18
"Calendar" , "TextCalendar" , "HTMLCalendar" , "LocaleTextCalendar" ,
18
19
"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" ,
20
24
"SATURDAY" , "SUNDAY" ]
21
25
22
26
# Exception raised for bad input (with string parameter for details)
@@ -38,8 +42,34 @@ def __str__(self):
38
42
39
43
40
44
# 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 ]
43
73
44
74
# Number of days per month (except for February in leap years)
45
75
mdays = [0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ]
@@ -95,9 +125,6 @@ def __len__(self):
95
125
month_name = _localized_month ('%B' )
96
126
month_abbr = _localized_month ('%b' )
97
127
98
- # Constants for weekdays
99
- (MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIDAY , SATURDAY , SUNDAY ) = range (7 )
100
-
101
128
102
129
def isleap (year ):
103
130
"""Return True for leap years, False for non-leap years."""
@@ -125,12 +152,12 @@ def monthrange(year, month):
125
152
if not 1 <= month <= 12 :
126
153
raise IllegalMonthError (month )
127
154
day1 = weekday (year , month , 1 )
128
- ndays = mdays [month ] + (month == February and isleap (year ))
155
+ ndays = mdays [month ] + (month == FEBRUARY and isleap (year ))
129
156
return day1 , ndays
130
157
131
158
132
159
def _monthlen (year , month ):
133
- return mdays [month ] + (month == February and isleap (year ))
160
+ return mdays [month ] + (month == FEBRUARY and isleap (year ))
134
161
135
162
136
163
def _prevmonth (year , month ):
@@ -262,7 +289,7 @@ def yeardatescalendar(self, year, width=3):
262
289
"""
263
290
months = [
264
291
self .monthdatescalendar (year , i )
265
- for i in range (January , January + 12 )
292
+ for i in range (JANUARY , JANUARY + 12 )
266
293
]
267
294
return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
268
295
@@ -275,7 +302,7 @@ def yeardays2calendar(self, year, width=3):
275
302
"""
276
303
months = [
277
304
self .monthdays2calendar (year , i )
278
- for i in range (January , January + 12 )
305
+ for i in range (JANUARY , JANUARY + 12 )
279
306
]
280
307
return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
281
308
@@ -287,7 +314,7 @@ def yeardayscalendar(self, year, width=3):
287
314
"""
288
315
months = [
289
316
self .monthdayscalendar (year , i )
290
- for i in range (January , January + 12 )
317
+ for i in range (JANUARY , JANUARY + 12 )
291
318
]
292
319
return [months [i :i + width ] for i in range (0 , len (months ), width ) ]
293
320
@@ -509,7 +536,7 @@ def formatyear(self, theyear, width=3):
509
536
a ('\n ' )
510
537
a ('<tr><th colspan="%d" class="%s">%s</th></tr>' % (
511
538
width , self .cssclass_year_head , theyear ))
512
- for i in range (January , January + 12 , width ):
539
+ for i in range (JANUARY , JANUARY + 12 , width ):
513
540
# months in this row
514
541
months = range (i , min (i + width , 13 ))
515
542
a ('<tr>' )
0 commit comments