Annoyed - Python 2.2.1 BUG in calendar module

Kaleb Pederson kibab at icehouse.net
Thu Oct 3 12:59:10 EDT 2002


Ok.  I just finished a PyQt date widget wherein I created a wrapper
around the calendar module to use as my backend.  The Calendar module,
however, doesn't explicitly say that it doesn't work for dates pre-1970.
The best case is that this is a DOCUMENTATION BUG.  I would prefer to
see a more powerful date module that starts at the beginning of the
Gregorian calendar.

What the documentation does say:

>From http://www.python.org/doc/current/lib/module-calendar.html:

weekday(year, month, day)  - Returns the day of the week (0 is Monday)
for year (1970-...), month (1-12), day (1-31).

// I figured that was fine, I can avoid using that function in my
wrapper

timegm(tuple) - An unrelated but handy function that takes a time tuple
such as returned by the gmtime() function in the time module, and
returns the corresponding Unix timestamp value, assuming an epoch of
1970, and the POSIX encoding. In fact, time.gmtime() and timegm() are
each others' inverse.

// Okay, I can avoid that too, especially since it is "unrelated"

I probably should have got a clue based on the above, but I didn't....

Well, anyone have a different calendar module that isn't limited like
the Python one that happens to be available?  I would prefer one that
was API compatible.

If not, I'm off to write my own.

--Kaleb

PS: here is the traceback:

>>> import calendar
>>> calendar.monthcalendar(1969,12)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "c:\progra~1\python22\lib\calendar.py", line 122, in
monthcalendar
    day1, ndays = monthrange(year, month)
  File "c:\progra~1\python22\lib\calendar.py", line 115, in monthrange
    day1 = weekday(year, month, 1)
  File "c:\progra~1\python22\lib\calendar.py", line 106, in weekday
    secs = mktime((year, month, day, 0, 0, 0, 0, 0, 0))
OverflowError: mktime argument out of range

The error is identical under Linux





More information about the Python-list mailing list