code: def isocalendar(self):
          
          year = self._year
          week1monday = _isoweek1monday(year)
          today = _ymd2ord(self._year, self._month, self._day)
          # Internally, week and day have origin 0
          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
docs: 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