Skip to content

Commit c74af07

Browse files
committed
gh-103636: Convert Calander consts to enum and add consts for months
1 parent 6be7aee commit c74af07

File tree

1 file changed

+41
-10
lines changed

1 file changed

+41
-10
lines changed

Lib/calendar.py

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import sys
99
import datetime
10+
from enum import IntEnum, global_enum
1011
import locale as _locale
1112
from itertools import repeat
1213

@@ -16,7 +17,10 @@
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+
"Weekday", "Month", "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)
@@ -37,10 +41,40 @@ 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
4174
January = 1
4275
February = 2
4376

77+
4478
# Number of days per month (except for February in leap years)
4579
mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
4680

@@ -95,9 +129,6 @@ def __len__(self):
95129
month_name = _localized_month('%B')
96130
month_abbr = _localized_month('%b')
97131

98-
# Constants for weekdays
99-
(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
100-
101132

102133
def isleap(year):
103134
"""Return True for leap years, False for non-leap years."""
@@ -261,8 +292,8 @@ def yeardatescalendar(self, year, width=3):
261292
days. Days are datetime.date objects.
262293
"""
263294
months = [
264-
self.monthdatescalendar(year, i)
265-
for i in range(January, January+12)
295+
self.monthdatescalendar(year, m)
296+
for m in Month
266297
]
267298
return [months[i:i+width] for i in range(0, len(months), width) ]
268299

@@ -274,8 +305,8 @@ def yeardays2calendar(self, year, width=3):
274305
zero.
275306
"""
276307
months = [
277-
self.monthdays2calendar(year, i)
278-
for i in range(January, January+12)
308+
self.monthdays2calendar(year, m)
309+
for m in Month
279310
]
280311
return [months[i:i+width] for i in range(0, len(months), width) ]
281312

@@ -286,8 +317,8 @@ def yeardayscalendar(self, year, width=3):
286317
Day numbers outside this month are zero.
287318
"""
288319
months = [
289-
self.monthdayscalendar(year, i)
290-
for i in range(January, January+12)
320+
self.monthdayscalendar(year, m)
321+
for m in Month
291322
]
292323
return [months[i:i+width] for i in range(0, len(months), width) ]
293324

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy