We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
In the calendar module, IllegalMonthError is not handled properly. For months greater than 12, an IndexError is raised instead.
IllegalMonthError
formatmonthname do not raise IndexError for negative integer because list support negative integer indexing.
formatmonthname
>>> 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 main branch
macOS
The text was updated successfully, but these errors were encountered:
I think it'd make sense to raise IllegalMonthError in both cases. Would you like to send a PR?
Sorry, something went wrong.
pythongh-126476: Raise IllegalMonthError for Calendar.formatmonth m…
e8ed750
…ethod when the input month is not corret
@Zheaoli Also add the validation for arguments, right after get options. Because the same issue happening for cli.
if options.month is not None and options.month not in range(1, 13): parser.error(IllegalMonthError(options.month).__str__()) sys.exit(1)
Yes, but @Zheaoli already did it.
@Zheaoli For future reference, it's a good idea to let an issue author send a PR if asked, especially for first time contributors.
Successfully merging a pull request may close this issue.
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.CPython versions tested on:
CPython main branch
Operating systems tested on:
macOS
Linked PRs
IllegalMonthError
for calendar.formatmonth method when the input month is not corret #126484The text was updated successfully, but these errors were encountered: