Bug report
Bug description:
In the calendar module, IllegalMonthError is not handled properly. For months greater than 12, an IndexError is raised instead.
formatmonthname do not raise IndexError for negative integer because list support negative integer indexing.
>>> import calendar
>>> calendar.month(2024, -1)
Traceback (most recent call last):
File "<python-input-12>", line 1, in <module>
calendar.month(2024, -1)
~~~~~~~~~~~~~~^^^^^^^^^^
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 395, in formatmonth
for week in self.monthdays2calendar(theyear, themonth):
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 284, in monthdays2calendar
days = list(self.itermonthdays2(year, month))
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 240, in itermonthdays2
for i, d in enumerate(self.itermonthdays(year, month), self.firstweekday):
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 228, in itermonthdays
day1, ndays = monthrange(year, month)
~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 165, in monthrange
raise IllegalMonthError(month)
calendar.IllegalMonthError: bad month number -1; must be 1-12
>>> calendar.month(2024, 13)
Traceback (most recent call last):
File "<python-input-13>", line 1, in <module>
calendar.month(2024, 13)
~~~~~~~~~~~~~~^^^^^^^^^^
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 390, in formatmonth
s = self.formatmonthname(theyear, themonth, 7 * (w + 1) - 1)
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 373, in formatmonthname
s = month_name[themonth]
~~~~~~~~~~^^^^^^^^^^
File "/Users/gugu/Code/cpython/Lib/calendar.py", line 103, in __getitem__
funcs = self._months[i]
~~~~~~~~~~~~^^^
IndexError: list index out of range
CPython versions tested on:
CPython main branch
Operating systems tested on:
macOS
Linked PRs
Bug report
Bug description:
In the calendar module,
IllegalMonthErroris not handled properly. For months greater than 12, an IndexError is raised instead.formatmonthnamedo not raise IndexError for negative integer because list support negative integer indexing.CPython versions tested on:
CPython main branch
Operating systems tested on:
macOS
Linked PRs
IllegalMonthErrorfor calendar.formatmonth method when the input month is not corret #126484