| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | :mod:`calendar` --- General calendar-related functions
 | 
					
						
							|  |  |  | ======================================================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. module:: calendar
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    :synopsis: Functions for working with calendars, including some emulation
 | 
					
						
							|  |  |  |               of the Unix cal program.
 | 
					
						
							| 
									
										
										
										
											2016-06-11 15:02:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | .. sectionauthor:: Drew Csillag <drew_csillag@geocities.com>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-10 03:26:08 +00:00
										 |  |  | **Source code:** :source:`Lib/calendar.py`
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-10 19:54:11 +00:00
										 |  |  | --------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | This module allows you to output calendars like the Unix :program:`cal` program,
 | 
					
						
							|  |  |  | and provides additional useful functions related to the calendar. By default,
 | 
					
						
							|  |  |  | these calendars have Monday as the first day of the week, and Sunday as the last
 | 
					
						
							|  |  |  | (the European convention). Use :func:`setfirstweekday` to set the first day of
 | 
					
						
							|  |  |  | the week to Sunday (6) or to any other weekday.  Parameters that specify dates
 | 
					
						
							|  |  |  | are given as integers. For related
 | 
					
						
							|  |  |  | functionality, see also the :mod:`datetime` and :mod:`time` modules.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 15:34:11 -04:00
										 |  |  | The functions and classes defined in this module
 | 
					
						
							|  |  |  | use an idealized calendar, the current Gregorian calendar extended indefinitely
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | in both directions.  This matches the definition of the "proleptic Gregorian"
 | 
					
						
							|  |  |  | calendar in Dershowitz and Reingold's book "Calendrical Calculations", where
 | 
					
						
							| 
									
										
										
										
											2017-10-26 15:34:11 -04:00
										 |  |  | it's the base calendar for all computations.  Zero and negative years are
 | 
					
						
							|  |  |  | interpreted as prescribed by the ISO 8601 standard.  Year 0 is 1 BC, year -1 is
 | 
					
						
							|  |  |  | 2 BC, and so on.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. class:: Calendar(firstweekday=0)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Creates a :class:`Calendar` object. *firstweekday* is an integer specifying the
 | 
					
						
							|  |  |  |    first day of the week. ``0`` is Monday (the default), ``6`` is Sunday.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    A :class:`Calendar` object provides several methods that can be used for
 | 
					
						
							|  |  |  |    preparing the calendar data for formatting. This class doesn't do any formatting
 | 
					
						
							|  |  |  |    itself. This is the job of subclasses.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    :class:`Calendar` instances have the following methods:
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 63361-63373,63375,63377-63380 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r63361 | alexandre.vassalotti | 2008-05-16 03:14:08 -0400 (Fri, 16 May 2008) | 2 lines
  Rename the test file of reprlib.
........
  r63364 | georg.brandl | 2008-05-16 05:34:48 -0400 (Fri, 16 May 2008) | 2 lines
  Make generator repr consistent with function and code object repr.
........
  r63365 | georg.brandl | 2008-05-16 05:47:29 -0400 (Fri, 16 May 2008) | 2 lines
  #2869: remove parameter from signature.
........
  r63366 | christian.heimes | 2008-05-16 06:23:31 -0400 (Fri, 16 May 2008) | 1 line
  Fixed #2870: cmathmodule.c compile error
........
  r63367 | christian.heimes | 2008-05-16 07:28:56 -0400 (Fri, 16 May 2008) | 1 line
  Following Amaury's advice
........
  r63368 | georg.brandl | 2008-05-16 09:10:15 -0400 (Fri, 16 May 2008) | 2 lines
  #2890: support os.O_ASYNC and fcntl.FASYNC.
........
  r63369 | georg.brandl | 2008-05-16 09:18:50 -0400 (Fri, 16 May 2008) | 2 lines
  #2845: fix copy2's docs.
........
  r63370 | georg.brandl | 2008-05-16 09:24:29 -0400 (Fri, 16 May 2008) | 2 lines
  Don't allow keyword arguments to reversed().
........
  r63373 | georg.brandl | 2008-05-16 09:41:26 -0400 (Fri, 16 May 2008) | 2 lines
  Document O_ASYNC addition.
........
  r63380 | georg.brandl | 2008-05-16 13:33:13 -0400 (Fri, 16 May 2008) | 2 lines
  Fix reprlib docs.
........
											
										 
											2008-05-16 18:15:12 +00:00
										 |  |  |    .. method:: iterweekdays()
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return an iterator for the week day numbers that will be used for one
 | 
					
						
							|  |  |  |       week.  The first value from the iterator will be the same as the value of
 | 
					
						
							|  |  |  |       the :attr:`firstweekday` property.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    .. method:: itermonthdates(year, month)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-26 13:43:28 +02:00
										 |  |  |       Return an iterator for the month *month* (1--12) in the year *year*. This
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       iterator will return all days (as :class:`datetime.date` objects) for the
 | 
					
						
							|  |  |  |       month and all days before the start of the month or after the end of the
 | 
					
						
							|  |  |  |       month that are required to get a complete week.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-24 13:17:10 -04:00
										 |  |  |    .. method:: itermonthdays(year, month)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       Return an iterator for the month *month* in the year *year* similar to
 | 
					
						
							|  |  |  |       :meth:`itermonthdates`, but not restricted by the :class:`datetime.date`
 | 
					
						
							|  |  |  |       range. Days returned will simply be day of the month numbers.  For the
 | 
					
						
							|  |  |  |       days outside of the specified month, the day number is ``0``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    .. method:: itermonthdays2(year, month)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return an iterator for the month *month* in the year *year* similar to
 | 
					
						
							| 
									
										
										
										
											2017-10-24 13:17:10 -04:00
										 |  |  |       :meth:`itermonthdates`, but not restricted by the :class:`datetime.date`
 | 
					
						
							|  |  |  |       range. Days returned will be tuples consisting of a day of the month
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       number and a week day number.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-24 13:17:10 -04:00
										 |  |  |    .. method:: itermonthdays3(year, month)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return an iterator for the month *month* in the year *year* similar to
 | 
					
						
							| 
									
										
										
										
											2017-10-24 13:17:10 -04:00
										 |  |  |       :meth:`itermonthdates`, but not restricted by the :class:`datetime.date`
 | 
					
						
							|  |  |  |       range. Days returned will be tuples consisting of a year, a month and a day
 | 
					
						
							|  |  |  |       of the month numbers.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. method:: itermonthdays4(year, month)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       Return an iterator for the month *month* in the year *year* similar to
 | 
					
						
							|  |  |  |       :meth:`itermonthdates`, but not restricted by the :class:`datetime.date`
 | 
					
						
							|  |  |  |       range. Days returned will be tuples consisting of a year, a month, a day
 | 
					
						
							|  |  |  |       of the month, and a day of the week numbers.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    .. method:: monthdatescalendar(year, month)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a list of the weeks in the month *month* of the *year* as full
 | 
					
						
							|  |  |  |       weeks.  Weeks are lists of seven :class:`datetime.date` objects.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    .. method:: monthdays2calendar(year, month)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a list of the weeks in the month *month* of the *year* as full
 | 
					
						
							|  |  |  |       weeks.  Weeks are lists of seven tuples of day numbers and weekday
 | 
					
						
							|  |  |  |       numbers.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    .. method:: monthdayscalendar(year, month)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a list of the weeks in the month *month* of the *year* as full
 | 
					
						
							|  |  |  |       weeks.  Weeks are lists of seven day numbers.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: yeardatescalendar(year, width=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return the data for the specified year ready for formatting. The return
 | 
					
						
							|  |  |  |       value is a list of month rows. Each month row contains up to *width*
 | 
					
						
							|  |  |  |       months (defaulting to 3). Each month contains between 4 and 6 weeks and
 | 
					
						
							|  |  |  |       each week contains 1--7 days. Days are :class:`datetime.date` objects.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: yeardays2calendar(year, width=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return the data for the specified year ready for formatting (similar to
 | 
					
						
							|  |  |  |       :meth:`yeardatescalendar`). Entries in the week lists are tuples of day
 | 
					
						
							|  |  |  |       numbers and weekday numbers. Day numbers outside this month are zero.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: yeardayscalendar(year, width=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return the data for the specified year ready for formatting (similar to
 | 
					
						
							|  |  |  |       :meth:`yeardatescalendar`). Entries in the week lists are day numbers. Day
 | 
					
						
							|  |  |  |       numbers outside this month are zero.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. class:: TextCalendar(firstweekday=0)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    This class can be used to generate plain text calendars.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    :class:`TextCalendar` instances have the following methods:
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: formatmonth(theyear, themonth, w=0, l=0)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a month's calendar in a multi-line string. If *w* is provided, it
 | 
					
						
							|  |  |  |       specifies the width of the date columns, which are centered. If *l* is
 | 
					
						
							|  |  |  |       given, it specifies the number of lines that each week will use. Depends
 | 
					
						
							|  |  |  |       on the first weekday as specified in the constructor or set by the
 | 
					
						
							|  |  |  |       :meth:`setfirstweekday` method.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: prmonth(theyear, themonth, w=0, l=0)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Print a month's calendar as returned by :meth:`formatmonth`.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 76259,76326,76376-76377,76430,76471,76517 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
  r76259 | georg.brandl | 2009-11-14 05:50:51 -0600 (Sat, 14 Nov 2009) | 1 line
  Fix terminology.
................
  r76326 | georg.brandl | 2009-11-16 10:44:05 -0600 (Mon, 16 Nov 2009) | 1 line
  #7302: fix link.
................
  r76376 | georg.brandl | 2009-11-18 13:39:14 -0600 (Wed, 18 Nov 2009) | 1 line
  upcase Python
................
  r76377 | georg.brandl | 2009-11-18 14:05:15 -0600 (Wed, 18 Nov 2009) | 1 line
  Fix markup.
................
  r76430 | r.david.murray | 2009-11-20 07:29:43 -0600 (Fri, 20 Nov 2009) | 2 lines
  Issue 7363: fix indentation in socketserver udpserver example.
................
  r76471 | georg.brandl | 2009-11-23 13:53:19 -0600 (Mon, 23 Nov 2009) | 1 line
  #7345: fix arguments of formatyear().
................
  r76517 | benjamin.peterson | 2009-11-25 12:16:46 -0600 (Wed, 25 Nov 2009) | 29 lines
  Merged revisions 76160-76161,76250,76252,76447,76506 via svnmerge from
  svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
  ........
    r76160 | benjamin.peterson | 2009-11-08 18:53:48 -0600 (Sun, 08 Nov 2009) | 1 line
    undeprecate the -p option; it's useful for converting python3 sources
  ........
    r76161 | benjamin.peterson | 2009-11-08 19:05:37 -0600 (Sun, 08 Nov 2009) | 1 line
    simplify condition
  ........
    r76250 | benjamin.peterson | 2009-11-13 16:56:48 -0600 (Fri, 13 Nov 2009) | 1 line
    fix handling of a utf-8 bom #7313
  ........
    r76252 | benjamin.peterson | 2009-11-13 16:58:36 -0600 (Fri, 13 Nov 2009) | 1 line
    remove pdb turd
  ........
    r76447 | benjamin.peterson | 2009-11-22 18:17:40 -0600 (Sun, 22 Nov 2009) | 1 line
    #7375 fix nested transformations in fix_urllib
  ........
    r76506 | benjamin.peterson | 2009-11-24 18:34:31 -0600 (Tue, 24 Nov 2009) | 1 line
    use generator expressions in any()
  ........
................
											
										 
											2009-11-25 18:34:42 +00:00
										 |  |  |    .. method:: formatyear(theyear, w=2, l=1, c=6, m=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a *m*-column calendar for an entire year as a multi-line string.
 | 
					
						
							|  |  |  |       Optional parameters *w*, *l*, and *c* are for date column width, lines per
 | 
					
						
							|  |  |  |       week, and number of spaces between month columns, respectively. Depends on
 | 
					
						
							|  |  |  |       the first weekday as specified in the constructor or set by the
 | 
					
						
							|  |  |  |       :meth:`setfirstweekday` method.  The earliest year for which a calendar
 | 
					
						
							|  |  |  |       can be generated is platform-dependent.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: pryear(theyear, w=2, l=1, c=6, m=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Print the calendar for an entire year as returned by :meth:`formatyear`.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. class:: HTMLCalendar(firstweekday=0)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    This class can be used to generate HTML calendars.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-06 11:35:59 +02:00
										 |  |  |    :class:`!HTMLCalendar` instances have the following methods:
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: formatmonth(theyear, themonth, withyear=True)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a month's calendar as an HTML table. If *withyear* is true the year
 | 
					
						
							|  |  |  |       will be included in the header, otherwise just the month name will be
 | 
					
						
							|  |  |  |       used.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 76259,76326,76376-76377,76430,76471,76517 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
  r76259 | georg.brandl | 2009-11-14 05:50:51 -0600 (Sat, 14 Nov 2009) | 1 line
  Fix terminology.
................
  r76326 | georg.brandl | 2009-11-16 10:44:05 -0600 (Mon, 16 Nov 2009) | 1 line
  #7302: fix link.
................
  r76376 | georg.brandl | 2009-11-18 13:39:14 -0600 (Wed, 18 Nov 2009) | 1 line
  upcase Python
................
  r76377 | georg.brandl | 2009-11-18 14:05:15 -0600 (Wed, 18 Nov 2009) | 1 line
  Fix markup.
................
  r76430 | r.david.murray | 2009-11-20 07:29:43 -0600 (Fri, 20 Nov 2009) | 2 lines
  Issue 7363: fix indentation in socketserver udpserver example.
................
  r76471 | georg.brandl | 2009-11-23 13:53:19 -0600 (Mon, 23 Nov 2009) | 1 line
  #7345: fix arguments of formatyear().
................
  r76517 | benjamin.peterson | 2009-11-25 12:16:46 -0600 (Wed, 25 Nov 2009) | 29 lines
  Merged revisions 76160-76161,76250,76252,76447,76506 via svnmerge from
  svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
  ........
    r76160 | benjamin.peterson | 2009-11-08 18:53:48 -0600 (Sun, 08 Nov 2009) | 1 line
    undeprecate the -p option; it's useful for converting python3 sources
  ........
    r76161 | benjamin.peterson | 2009-11-08 19:05:37 -0600 (Sun, 08 Nov 2009) | 1 line
    simplify condition
  ........
    r76250 | benjamin.peterson | 2009-11-13 16:56:48 -0600 (Fri, 13 Nov 2009) | 1 line
    fix handling of a utf-8 bom #7313
  ........
    r76252 | benjamin.peterson | 2009-11-13 16:58:36 -0600 (Fri, 13 Nov 2009) | 1 line
    remove pdb turd
  ........
    r76447 | benjamin.peterson | 2009-11-22 18:17:40 -0600 (Sun, 22 Nov 2009) | 1 line
    #7375 fix nested transformations in fix_urllib
  ........
    r76506 | benjamin.peterson | 2009-11-24 18:34:31 -0600 (Tue, 24 Nov 2009) | 1 line
    use generator expressions in any()
  ........
................
											
										 
											2009-11-25 18:34:42 +00:00
										 |  |  |    .. method:: formatyear(theyear, width=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a year's calendar as an HTML table. *width* (defaulting to 3)
 | 
					
						
							|  |  |  |       specifies the number of months per row.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    .. method:: formatyearpage(theyear, width=3, css='calendar.css', encoding=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |       Return a year's calendar as a complete HTML page. *width* (defaulting to
 | 
					
						
							|  |  |  |       3) specifies the number of months per row. *css* is the name for the
 | 
					
						
							|  |  |  |       cascading style sheet to be used. :const:`None` can be passed if no style
 | 
					
						
							|  |  |  |       sheet should be used. *encoding* specifies the encoding to be used for the
 | 
					
						
							|  |  |  |       output (defaulting to the system default encoding).
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-06 11:35:59 +02:00
										 |  |  |    :class:`!HTMLCalendar` has the following attributes you can override to
 | 
					
						
							|  |  |  |    customize the CSS classes used by the calendar:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. attribute:: cssclasses
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       A list of CSS classes used for each weekday. The default class list is::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       more styles can be added for each day::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       Note that the length of this list must be seven items.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. attribute:: cssclass_noday
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The CSS class for a weekday occurring in the previous or coming month.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. attribute:: cssclasses_weekday_head
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       A list of CSS classes used for weekday names in the header row.
 | 
					
						
							|  |  |  |       The default is the same as :attr:`cssclasses`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. attribute:: cssclass_month_head
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The month's head CSS class (used by :meth:`formatmonthname`).
 | 
					
						
							|  |  |  |       The default value is ``"month"``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. attribute:: cssclass_month
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The CSS class for the whole month's table (used by :meth:`formatmonth`).
 | 
					
						
							|  |  |  |       The default value is ``"month"``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. attribute:: cssclass_year
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The CSS class for the whole year's table of tables (used by
 | 
					
						
							|  |  |  |       :meth:`formatyear`). The default value is ``"year"``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. attribute:: cssclass_year_head
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       The CSS class for the table head for the whole year (used by
 | 
					
						
							|  |  |  |       :meth:`formatyear`). The default value is ``"year"``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .. versionadded:: 3.7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Note that although the naming for the above described class attributes is
 | 
					
						
							|  |  |  |    singular (e.g. ``cssclass_month`` ``cssclass_noday``), one can replace the
 | 
					
						
							|  |  |  |    single CSS class with a space separated list of CSS classes, for example::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          "text-bold text-red"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Here is an example how :class:`!HTMLCalendar` can be customized::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        class CustomHTMLCal(calendar.HTMLCalendar):
 | 
					
						
							|  |  |  |            cssclasses = [style + " text-nowrap" for style in
 | 
					
						
							|  |  |  |                          calendar.HTMLCalendar.cssclasses]
 | 
					
						
							|  |  |  |            cssclass_month_head = "text-center month-head"
 | 
					
						
							|  |  |  |            cssclass_month = "text-center month"
 | 
					
						
							|  |  |  |            cssclass_year = "text-italic lead"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. class:: LocaleTextCalendar(firstweekday=0, locale=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    This subclass of :class:`TextCalendar` can be passed a locale name in the
 | 
					
						
							| 
									
										
										
										
											2010-10-19 18:54:25 +00:00
										 |  |  |    constructor and will return month and weekday names in the specified locale.
 | 
					
						
							|  |  |  |    If this locale includes an encoding all strings containing month and weekday
 | 
					
						
							|  |  |  |    names will be returned as unicode.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. class:: LocaleHTMLCalendar(firstweekday=0, locale=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    This subclass of :class:`HTMLCalendar` can be passed a locale name in the
 | 
					
						
							| 
									
										
										
										
											2008-04-25 01:59:09 +00:00
										 |  |  |    constructor and will return month and weekday names in the specified
 | 
					
						
							|  |  |  |    locale. If this locale includes an encoding all strings containing month and
 | 
					
						
							|  |  |  |    weekday names will be returned as unicode.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-19 18:54:25 +00:00
										 |  |  | .. note::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The :meth:`formatweekday` and :meth:`formatmonthname` methods of these two
 | 
					
						
							|  |  |  |    classes temporarily change the current locale to the given *locale*.  Because
 | 
					
						
							|  |  |  |    the current locale is a process-wide setting, they are not thread-safe.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | For simple text calendars this module provides the following functions.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: setfirstweekday(weekday)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Sets the weekday (``0`` is Monday, ``6`` is Sunday) to start each week. The
 | 
					
						
							|  |  |  |    values :const:`MONDAY`, :const:`TUESDAY`, :const:`WEDNESDAY`, :const:`THURSDAY`,
 | 
					
						
							|  |  |  |    :const:`FRIDAY`, :const:`SATURDAY`, and :const:`SUNDAY` are provided for
 | 
					
						
							|  |  |  |    convenience. For example, to set the first weekday to Sunday::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       import calendar
 | 
					
						
							|  |  |  |       calendar.setfirstweekday(calendar.SUNDAY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: firstweekday()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Returns the current setting for the weekday to start each week.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: isleap(year)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Returns :const:`True` if *year* is a leap year, otherwise :const:`False`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: leapdays(y1, y2)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Returns the number of leap years in the range from *y1* to *y2* (exclusive),
 | 
					
						
							|  |  |  |    where *y1* and *y2* are years.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-01 13:51:09 +00:00
										 |  |  |    This function works for ranges spanning a century change.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: weekday(year, month, day)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Returns the day of the week (``0`` is Monday) for *year* (``1970``--...),
 | 
					
						
							|  |  |  |    *month* (``1``--``12``), *day* (``1``--``31``).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: weekheader(n)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Return a header containing abbreviated weekday names. *n* specifies the width in
 | 
					
						
							|  |  |  |    characters for one weekday.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: monthrange(year, month)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Returns weekday of first day of the month and number of days in month,  for the
 | 
					
						
							|  |  |  |    specified *year* and *month*.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: monthcalendar(year, month)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Returns a matrix representing a month's calendar.  Each row represents a week;
 | 
					
						
							|  |  |  |    days outside of the month a represented by zeros. Each week begins with Monday
 | 
					
						
							|  |  |  |    unless set by :func:`setfirstweekday`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. function:: prmonth(theyear, themonth, w=0, l=0)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Prints a month's calendar as returned by :func:`month`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. function:: month(theyear, themonth, w=0, l=0)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Returns a month's calendar in a multi-line string using the :meth:`formatmonth`
 | 
					
						
							|  |  |  |    of the :class:`TextCalendar` class.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. function:: prcal(year, w=0, l=0, c=6, m=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Prints the calendar for an entire year as returned by  :func:`calendar`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  | .. function:: calendar(year, w=2, l=1, c=6, m=3)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 22:20:44 +00:00
										 |  |  |    Returns a 3-column calendar for an entire year as a multi-line string using
 | 
					
						
							|  |  |  |    the :meth:`formatyear` of the :class:`TextCalendar` class.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: timegm(tuple)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-13 23:09:14 +03:00
										 |  |  |    An unrelated but handy function that takes a time tuple such as returned by
 | 
					
						
							|  |  |  |    the :func:`~time.gmtime` function in the :mod:`time` module, and returns the
 | 
					
						
							|  |  |  |    corresponding Unix timestamp value, assuming an epoch of 1970, and the POSIX
 | 
					
						
							|  |  |  |    encoding.  In fact, :func:`time.gmtime` and :func:`timegm` are each others'
 | 
					
						
							|  |  |  |    inverse.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The :mod:`calendar` module exports the following data attributes:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. data:: day_name
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    An array that represents the days of the week in the current locale.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. data:: day_abbr
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    An array that represents the abbreviated days of the week in the current locale.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. data:: month_name
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    An array that represents the months of the year in the current locale.  This
 | 
					
						
							|  |  |  |    follows normal convention of January being month number 1, so it has a length of
 | 
					
						
							|  |  |  |    13 and  ``month_name[0]`` is the empty string.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. data:: month_abbr
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    An array that represents the abbreviated months of the year in the current
 | 
					
						
							|  |  |  |    locale.  This follows normal convention of January being month number 1, so it
 | 
					
						
							|  |  |  |    has a length of 13 and  ``month_abbr[0]`` is the empty string.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Module :mod:`datetime`
 | 
					
						
							|  |  |  |       Object-oriented interface to dates and times with similar functionality to the
 | 
					
						
							|  |  |  |       :mod:`time` module.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Module :mod:`time`
 | 
					
						
							|  |  |  |       Low-level time related functions.
 |