'Return a 3-tuple containing ISO year, week number, and weekday.
The first ISO week of the year is the (Mon-Sun) week
containing the year\'s first Thursday; everything else derives
from that.
The first week is 1; Monday is 1 ... Sunday is 7.
ISO calendar algorithm taken from
http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm'

def isocalendar(self):

    year = self._year
    week1monday = _isoweek1monday(year)
    today = _ymd2ord(self._year, self._month, self._day)
    (week, day) = divmod((today - week1monday), 7)
    if (week < 0):
        year -= 1
        week1monday = _isoweek1monday(year)
        (week, day) = divmod((today - week1monday), 7)
    elif (week >= 52):
        if (today >= _isoweek1monday((year + 1))):
            year += 1
            week = 0
    return (year, (week + 1), (day + 1))
