On Mon, Oct 18, 2010 at 7:59 PM, Alexander Belopolsky
<[email protected]> wrote:
The most pedantic implementation of calendar.isleap() would be
from datetime import date, timedelta
def isleap(year):
  return date(year, 3, 1) - date(year, 2, 1) == timedelta(29)
Since python calendar only supports years in the range [1, 9999], the above will properly raise ValueError: year is out of range on negative or zero year. Â This also guarantees that calendar module's notion of leap year is the same as that of datetime module.
If this is found to be a worthwhile change, I would also rewrite monthrange as
def monthrange(year, month):
  first = date(year, month, 1)
  if month == 12:
    ndays = 31
  else:
    ndays = (date(year, month + 1, 1) - first).days
  return first.weekday(), ndays