home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Lib / calendar.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-06-23  |  5.8 KB  |  195 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. ctime
  5. error = 'calendar.error'
  6. January = 1
  7. February = 2
  8. mdays = [
  9.     0,
  10.     31,
  11.     28,
  12.     31,
  13.     30,
  14.     31,
  15.     30,
  16.     31,
  17.     31,
  18.     30,
  19.     31,
  20.     30,
  21.     31]
  22. day_name = [
  23.     'Monday',
  24.     'Tuesday',
  25.     'Wednesday',
  26.     'Thursday',
  27.     'Friday',
  28.     'Saturday',
  29.     'Sunday']
  30. day_abbr = [
  31.     'Mon',
  32.     'Tue',
  33.     'Wed',
  34.     'Thu',
  35.     'Fri',
  36.     'Sat',
  37.     'Sun']
  38. month_name = [
  39.     '',
  40.     'January',
  41.     'February',
  42.     'March',
  43.     'April',
  44.     'May',
  45.     'June',
  46.     'July',
  47.     'August',
  48.     'September',
  49.     'October',
  50.     'November',
  51.     'December']
  52. month_abbr = [
  53.     '   ',
  54.     'Jan',
  55.     'Feb',
  56.     'Mar',
  57.     'Apr',
  58.     'May',
  59.     'Jun',
  60.     'Jul',
  61.     'Aug',
  62.     'Sep',
  63.     'Oct',
  64.     'Nov',
  65.     'Dec']
  66.  
  67. def isleap(year):
  68.     if not year % 4 == 0 and year % 100 != 0:
  69.         pass
  70.     return year % 400 == 0
  71.  
  72.  
  73. def leapdays(y1, y2):
  74.     return (y2 + 3) / 4 - (y1 + 3) / 4
  75.  
  76.  
  77. def weekday(year, month, day):
  78.     secs = mktime((year, month, day, 0, 0, 0, 0, 0, 0))
  79.     tuple = localtime(secs)
  80.     return tuple[6]
  81.  
  82.  
  83. def monthrange(year, month):
  84.     if not None if month <= month else month <= 12:
  85.         raise ValueError, 'bad month number'
  86.     
  87.     day1 = weekday(year, month, 1)
  88.     if month == February:
  89.         pass
  90.     ndays = mdays[month] + isleap(year)
  91.     return (day1, ndays)
  92.  
  93.  
  94. def _monthcalendar(year, month):
  95.     (day1, ndays) = monthrange(year, month)
  96.     rows = []
  97.     r7 = range(7)
  98.     day = 1 - day1
  99.     while day <= ndays:
  100.         row = [
  101.             0,
  102.             0,
  103.             0,
  104.             0,
  105.             0,
  106.             0,
  107.             0]
  108.         for i in r7:
  109.             if day <= day:
  110.                 pass
  111.             elif day <= ndays:
  112.                 row[i] = day
  113.             
  114.             day = day + 1
  115.         
  116.         rows.append(row)
  117.         continue
  118.         r7
  119.     return rows
  120.  
  121. _mc_cache = { }
  122.  
  123. def monthcalendar(year, month):
  124.     key = (year, month)
  125.     if _mc_cache.has_key(key):
  126.         return _mc_cache[key]
  127.     else:
  128.         _mc_cache[key] = ret = _monthcalendar(year, month)
  129.         return ret
  130.  
  131.  
  132. def _center(str, width):
  133.     n = width - len(str)
  134.     if n <= 0:
  135.         return str
  136.     
  137.     return ' ' * ((n + 1) / 2) + str + ' ' * (n / 2)
  138.  
  139.  
  140. def prweek(week, width):
  141.     for day in week:
  142.         print _center(s, width),
  143.     
  144.  
  145.  
  146. def weekheader(width):
  147.     str = ''
  148.     if width >= 9:
  149.         names = day_name
  150.     else:
  151.         names = day_abbr
  152.     for i in range(7):
  153.         str = str + _center(names[i % 7][:width], width)
  154.     
  155.     return str
  156.  
  157.  
  158. def prmonth(year, month, w = 0, l = 0):
  159.     w = max(2, w)
  160.     l = max(1, l)
  161.     print _center(month_name[month] + ' ' + `year`, 7 * (w + 1) - 1), '\n' * l, weekheader(w), '\n' * l,
  162.     for week in monthcalendar(year, month):
  163.         prweek(week, w)
  164.         print '\n' * l,
  165.     
  166.  
  167. _colwidth = 7 * 3 - 1
  168. _spacing = ' ' * 4
  169.  
  170. def format3c(a, b, c):
  171.     print _center(a, _colwidth), _spacing, _center(b, _colwidth), _spacing, _center(c, _colwidth)
  172.  
  173.  
  174. def prcal(year):
  175.     header = weekheader(2)
  176.     format3c('', `year`, '')
  177.     for q in range(January, January + 12, 3):
  178.         print 
  179.         format3c(month_name[q], month_name[q + 1], month_name[q + 2])
  180.         format3c(header, header, header)
  181.         data = []
  182.         height = 0
  183.         for month in range(q, q + 3):
  184.             cal = monthcalendar(year, month)
  185.             data.append(cal)
  186.         
  187.         for i in range(height):
  188.             for cal in data:
  189.                 print _spacing,
  190.             
  191.             print 
  192.         
  193.     
  194.  
  195.