Home | History | Annotate | Download | only in whatsnew
      1 ****************************
      2   What's New in Python 2.6
      3 ****************************
      4 
      5 .. XXX add trademark info for Apple, Microsoft, SourceForge.
      6 
      7 :Author: A.M. Kuchling (amk at amk.ca)
      8 
      9 .. $Id$
     10    Rules for maintenance:
     11 
     12    * Anyone can add text to this document.  Do not spend very much time
     13    on the wording of your changes, because your text will probably
     14    get rewritten to some degree.
     15 
     16    * The maintainer will go through Misc/NEWS periodically and add
     17    changes; it's therefore more important to add your changes to
     18    Misc/NEWS than to this file.
     19 
     20    * This is not a complete list of every single change; completeness
     21    is the purpose of Misc/NEWS.  Some changes I consider too small
     22    or esoteric to include.  If such a change is added to the text,
     23    I'll just remove it.  (This is another reason you shouldn't spend
     24    too much time on writing your addition.)
     25 
     26    * If you want to draw your new text to the attention of the
     27    maintainer, add 'XXX' to the beginning of the paragraph or
     28    section.
     29 
     30    * It's OK to just add a fragmentary note about a change.  For
     31    example: "XXX Describe the transmogrify() function added to the
     32    socket module."  The maintainer will research the change and
     33    write the necessary text.
     34 
     35    * You can comment out your additions if you like, but it's not
     36    necessary (especially when a final release is some months away).
     37 
     38    * Credit the author of a patch or bugfix.   Just the name is
     39    sufficient; the e-mail address isn't necessary.
     40 
     41    * It's helpful to add the bug/patch number in a parenthetical comment.
     42 
     43    XXX Describe the transmogrify() function added to the socket
     44    module.
     45    (Contributed by P.Y. Developer; :issue:`12345`.)
     46 
     47    This saves the maintainer some effort going through the SVN logs
     48    when researching a change.
     49 
     50 This article explains the new features in Python 2.6, released on October 1
     51 2008.  The release schedule is described in :pep:`361`.
     52 
     53 The major theme of Python 2.6 is preparing the migration path to
     54 Python 3.0, a major redesign of the language.  Whenever possible,
     55 Python 2.6 incorporates new features and syntax from 3.0 while
     56 remaining compatible with existing code by not removing older features
     57 or syntax.  When it's not possible to do that, Python 2.6 tries to do
     58 what it can, adding compatibility functions in a
     59 :mod:`future_builtins` module and a :option:`-3` switch to warn about
     60 usages that will become unsupported in 3.0.
     61 
     62 Some significant new packages have been added to the standard library,
     63 such as the :mod:`multiprocessing` and :mod:`json` modules, but
     64 there aren't many new features that aren't related to Python 3.0 in
     65 some way.
     66 
     67 Python 2.6 also sees a number of improvements and bugfixes throughout
     68 the source.  A search through the change logs finds there were 259
     69 patches applied and 612 bugs fixed between Python 2.5 and 2.6.  Both
     70 figures are likely to be underestimates.
     71 
     72 This article doesn't attempt to provide a complete specification of
     73 the new features, but instead provides a convenient overview.  For
     74 full details, you should refer to the documentation for Python 2.6. If
     75 you want to understand the rationale for the design and
     76 implementation, refer to the PEP for a particular new feature.
     77 Whenever possible, "What's New in Python" links to the bug/patch item
     78 for each change.
     79 
     80 .. Compare with previous release in 2 - 3 sentences here.
     81    add hyperlink when the documentation becomes available online.
     82 
     83 .. ========================================================================
     84 .. Large, PEP-level features and changes should be described here.
     85 .. ========================================================================
     86 
     87 Python 3.0
     88 ================
     89 
     90 The development cycle for Python versions 2.6 and 3.0 was
     91 synchronized, with the alpha and beta releases for both versions being
     92 made on the same days.  The development of 3.0 has influenced many
     93 features in 2.6.
     94 
     95 Python 3.0 is a far-ranging redesign of Python that breaks
     96 compatibility with the 2.x series.  This means that existing Python
     97 code will need some conversion in order to run on
     98 Python 3.0.  However, not all the changes in 3.0 necessarily break
     99 compatibility.  In cases where new features won't cause existing code
    100 to break, they've been backported to 2.6 and are described in this
    101 document in the appropriate place.  Some of the 3.0-derived features
    102 are:
    103 
    104 * A :meth:`__complex__` method for converting objects to a complex number.
    105 * Alternate syntax for catching exceptions: ``except TypeError as exc``.
    106 * The addition of :func:`functools.reduce` as a synonym for the built-in
    107   :func:`reduce` function.
    108 
    109 Python 3.0 adds several new built-in functions and changes the
    110 semantics of some existing builtins.  Functions that are new in 3.0
    111 such as :func:`bin` have simply been added to Python 2.6, but existing
    112 builtins haven't been changed; instead, the :mod:`future_builtins`
    113 module has versions with the new 3.0 semantics.  Code written to be
    114 compatible with 3.0 can do ``from future_builtins import hex, map`` as
    115 necessary.
    116 
    117 A new command-line switch, :option:`-3`, enables warnings
    118 about features that will be removed in Python 3.0.  You can run code
    119 with this switch to see how much work will be necessary to port
    120 code to 3.0.  The value of this switch is available
    121 to Python code as the boolean variable :data:`sys.py3kwarning`,
    122 and to C extension code as :c:data:`Py_Py3kWarningFlag`.
    123 
    124 .. seealso::
    125 
    126    The 3xxx series of PEPs, which contains proposals for Python 3.0.
    127    :pep:`3000` describes the development process for Python 3.0.
    128    Start with :pep:`3100` that describes the general goals for Python
    129    3.0, and then explore the higher-numbered PEPS that propose
    130    specific features.
    131 
    132 
    133 Changes to the Development Process
    134 ==================================================
    135 
    136 While 2.6 was being developed, the Python development process
    137 underwent two significant changes: we switched from SourceForge's
    138 issue tracker to a customized Roundup installation, and the
    139 documentation was converted from LaTeX to reStructuredText.
    140 
    141 
    142 New Issue Tracker: Roundup
    143 --------------------------------------------------
    144 
    145 For a long time, the Python developers had been growing increasingly
    146 annoyed by SourceForge's bug tracker.  SourceForge's hosted solution
    147 doesn't permit much customization; for example, it wasn't possible to
    148 customize the life cycle of issues.
    149 
    150 The infrastructure committee of the Python Software Foundation
    151 therefore posted a call for issue trackers, asking volunteers to set
    152 up different products and import some of the bugs and patches from
    153 SourceForge.  Four different trackers were examined: `Jira
    154 <https://www.atlassian.com/software/jira/>`__,
    155 `Launchpad <https://launchpad.net/>`__,
    156 `Roundup <http://roundup.sourceforge.net/>`__, and
    157 `Trac <https://trac.edgewall.org/>`__.
    158 The committee eventually settled on Jira
    159 and Roundup as the two candidates.  Jira is a commercial product that
    160 offers no-cost hosted instances to free-software projects; Roundup
    161 is an open-source project that requires volunteers
    162 to administer it and a server to host it.
    163 
    164 After posting a call for volunteers, a new Roundup installation was
    165 set up at https://bugs.python.org.  One installation of Roundup can
    166 host multiple trackers, and this server now also hosts issue trackers
    167 for Jython and for the Python web site.  It will surely find
    168 other uses in the future.  Where possible,
    169 this edition of "What's New in Python" links to the bug/patch
    170 item for each change.
    171 
    172 Hosting of the Python bug tracker is kindly provided by
    173 `Upfront Systems <http://www.upfrontsystems.co.za/>`__
    174 of Stellenbosch, South Africa.  Martin von Loewis put a
    175 lot of effort into importing existing bugs and patches from
    176 SourceForge; his scripts for this import operation are at
    177 http://svn.python.org/view/tracker/importer/ and may be useful to
    178 other projects wishing to move from SourceForge to Roundup.
    179 
    180 .. seealso::
    181 
    182   https://bugs.python.org
    183     The Python bug tracker.
    184 
    185   http://bugs.jython.org:
    186     The Jython bug tracker.
    187 
    188   http://roundup.sourceforge.net/
    189     Roundup downloads and documentation.
    190 
    191   http://svn.python.org/view/tracker/importer/
    192     Martin von Loewis's conversion scripts.
    193 
    194 New Documentation Format: reStructuredText Using Sphinx
    195 -----------------------------------------------------------
    196 
    197 The Python documentation was written using LaTeX since the project
    198 started around 1989.  In the 1980s and early 1990s, most documentation
    199 was printed out for later study, not viewed online. LaTeX was widely
    200 used because it provided attractive printed output while remaining
    201 straightforward to write once the basic rules of the markup were
    202 learned.
    203 
    204 Today LaTeX is still used for writing publications destined for
    205 printing, but the landscape for programming tools has shifted.  We no
    206 longer print out reams of documentation; instead, we browse through it
    207 online and HTML has become the most important format to support.
    208 Unfortunately, converting LaTeX to HTML is fairly complicated and Fred
    209 L. Drake Jr., the long-time Python documentation editor, spent a lot
    210 of time maintaining the conversion process.  Occasionally people would
    211 suggest converting the documentation into SGML and later XML, but
    212 performing a good conversion is a major task and no one ever committed
    213 the time required to finish the job.
    214 
    215 During the 2.6 development cycle, Georg Brandl put a lot of effort
    216 into building a new toolchain for processing the documentation.  The
    217 resulting package is called Sphinx, and is available from
    218 http://sphinx-doc.org/.
    219 
    220 Sphinx concentrates on HTML output, producing attractively styled and
    221 modern HTML; printed output is still supported through conversion to
    222 LaTeX.  The input format is reStructuredText, a markup syntax
    223 supporting custom extensions and directives that is commonly used in
    224 the Python community.
    225 
    226 Sphinx is a standalone package that can be used for writing, and
    227 almost two dozen other projects
    228 (`listed on the Sphinx web site <http://sphinx-doc.org/examples.html>`__)
    229 have adopted Sphinx as their documentation tool.
    230 
    231 .. seealso::
    232 
    233    `Documenting Python <https://docs.python.org/devguide/documenting.html>`__
    234        Describes how to write for Python's documentation.
    235 
    236    `Sphinx <http://sphinx-doc.org/>`__
    237      Documentation and code for the Sphinx toolchain.
    238 
    239    `Docutils <http://docutils.sourceforge.net>`__
    240      The underlying reStructuredText parser and toolset.
    241 
    242 
    243 PEP 343: The 'with' statement
    244 =============================
    245 
    246 The previous version, Python 2.5, added the ':keyword:`with`'
    247 statement as an optional feature, to be enabled by a ``from __future__
    248 import with_statement`` directive.  In 2.6 the statement no longer needs to
    249 be specially enabled; this means that :keyword:`with` is now always a
    250 keyword.  The rest of this section is a copy of the corresponding
    251 section from the "What's New in Python 2.5" document; if you're
    252 familiar with the ':keyword:`with`' statement
    253 from Python 2.5, you can skip this section.
    254 
    255 The ':keyword:`with`' statement clarifies code that previously would use
    256 ``try...finally`` blocks to ensure that clean-up code is executed.  In this
    257 section, I'll discuss the statement as it will commonly be used.  In the next
    258 section, I'll examine the implementation details and show how to write objects
    259 for use with this statement.
    260 
    261 The ':keyword:`with`' statement is a control-flow structure whose basic
    262 structure is::
    263 
    264    with expression [as variable]:
    265        with-block
    266 
    267 The expression is evaluated, and it should result in an object that supports the
    268 context management protocol (that is, has :meth:`__enter__` and :meth:`__exit__`
    269 methods).
    270 
    271 The object's :meth:`__enter__` is called before *with-block* is executed and
    272 therefore can run set-up code. It also may return a value that is bound to the
    273 name *variable*, if given.  (Note carefully that *variable* is *not* assigned
    274 the result of *expression*.)
    275 
    276 After execution of the *with-block* is finished, the object's :meth:`__exit__`
    277 method is called, even if the block raised an exception, and can therefore run
    278 clean-up code.
    279 
    280 Some standard Python objects now support the context management protocol and can
    281 be used with the ':keyword:`with`' statement. File objects are one example::
    282 
    283    with open('/etc/passwd', 'r') as f:
    284        for line in f:
    285            print line
    286            ... more processing code ...
    287 
    288 After this statement has executed, the file object in *f* will have been
    289 automatically closed, even if the :keyword:`for` loop raised an exception part-
    290 way through the block.
    291 
    292 .. note::
    293 
    294    In this case, *f* is the same object created by :func:`open`, because
    295    :meth:`file.__enter__` returns *self*.
    296 
    297 The :mod:`threading` module's locks and condition variables  also support the
    298 ':keyword:`with`' statement::
    299 
    300    lock = threading.Lock()
    301    with lock:
    302        # Critical section of code
    303        ...
    304 
    305 The lock is acquired before the block is executed and always released once  the
    306 block is complete.
    307 
    308 The :func:`localcontext` function in the :mod:`decimal` module makes it easy
    309 to save and restore the current decimal context, which encapsulates the desired
    310 precision and rounding characteristics for computations::
    311 
    312    from decimal import Decimal, Context, localcontext
    313 
    314    # Displays with default precision of 28 digits
    315    v = Decimal('578')
    316    print v.sqrt()
    317 
    318    with localcontext(Context(prec=16)):
    319        # All code in this block uses a precision of 16 digits.
    320        # The original context is restored on exiting the block.
    321        print v.sqrt()
    322 
    323 
    324 .. _new-26-context-managers:
    325 
    326 Writing Context Managers
    327 ------------------------
    328 
    329 Under the hood, the ':keyword:`with`' statement is fairly complicated. Most
    330 people will only use ':keyword:`with`' in company with existing objects and
    331 don't need to know these details, so you can skip the rest of this section if
    332 you like.  Authors of new objects will need to understand the details of the
    333 underlying implementation and should keep reading.
    334 
    335 A high-level explanation of the context management protocol is:
    336 
    337 * The expression is evaluated and should result in an object called a "context
    338   manager".  The context manager must have :meth:`__enter__` and :meth:`__exit__`
    339   methods.
    340 
    341 * The context manager's :meth:`__enter__` method is called.  The value returned
    342   is assigned to *VAR*.  If no ``as VAR`` clause is present, the value is simply
    343   discarded.
    344 
    345 * The code in *BLOCK* is executed.
    346 
    347 * If *BLOCK* raises an exception, the context manager's :meth:`__exit__` method
    348   is called with three arguments, the exception details (``type, value, traceback``,
    349   the same values returned by :func:`sys.exc_info`, which can also be ``None``
    350   if no exception occurred).  The method's return value controls whether an exception
    351   is re-raised: any false value re-raises the exception, and ``True`` will result
    352   in suppressing it.  You'll only rarely want to suppress the exception, because
    353   if you do the author of the code containing the ':keyword:`with`' statement will
    354   never realize anything went wrong.
    355 
    356 * If *BLOCK* didn't raise an exception,  the :meth:`__exit__` method is still
    357   called, but *type*, *value*, and *traceback* are all ``None``.
    358 
    359 Let's think through an example.  I won't present detailed code but will only
    360 sketch the methods necessary for a database that supports transactions.
    361 
    362 (For people unfamiliar with database terminology: a set of changes to the
    363 database are grouped into a transaction.  Transactions can be either committed,
    364 meaning that all the changes are written into the database, or rolled back,
    365 meaning that the changes are all discarded and the database is unchanged.  See
    366 any database textbook for more information.)
    367 
    368 Let's assume there's an object representing a database connection. Our goal will
    369 be to let the user write code like this::
    370 
    371    db_connection = DatabaseConnection()
    372    with db_connection as cursor:
    373        cursor.execute('insert into ...')
    374        cursor.execute('delete from ...')
    375        # ... more operations ...
    376 
    377 The transaction should be committed if the code in the block runs flawlessly or
    378 rolled back if there's an exception. Here's the basic interface for
    379 :class:`DatabaseConnection` that I'll assume::
    380 
    381    class DatabaseConnection:
    382        # Database interface
    383        def cursor(self):
    384            "Returns a cursor object and starts a new transaction"
    385        def commit(self):
    386            "Commits current transaction"
    387        def rollback(self):
    388            "Rolls back current transaction"
    389 
    390 The :meth:`__enter__` method is pretty easy, having only to start a new
    391 transaction.  For this application the resulting cursor object would be a useful
    392 result, so the method will return it.  The user can then add ``as cursor`` to
    393 their ':keyword:`with`' statement to bind the cursor to a variable name. ::
    394 
    395    class DatabaseConnection:
    396        ...
    397        def __enter__(self):
    398            # Code to start a new transaction
    399            cursor = self.cursor()
    400            return cursor
    401 
    402 The :meth:`__exit__` method is the most complicated because it's where most of
    403 the work has to be done.  The method has to check if an exception occurred.  If
    404 there was no exception, the transaction is committed.  The transaction is rolled
    405 back if there was an exception.
    406 
    407 In the code below, execution will just fall off the end of the function,
    408 returning the default value of ``None``.  ``None`` is false, so the exception
    409 will be re-raised automatically.  If you wished, you could be more explicit and
    410 add a :keyword:`return` statement at the marked location. ::
    411 
    412    class DatabaseConnection:
    413        ...
    414        def __exit__(self, type, value, tb):
    415            if tb is None:
    416                # No exception, so commit
    417                self.commit()
    418            else:
    419                # Exception occurred, so rollback.
    420                self.rollback()
    421                # return False
    422 
    423 
    424 .. _module-contextlib:
    425 
    426 The contextlib module
    427 ---------------------
    428 
    429 The :mod:`contextlib` module provides some functions and a decorator that
    430 are useful when writing objects for use with the ':keyword:`with`' statement.
    431 
    432 The decorator is called :func:`contextmanager`, and lets you write a single
    433 generator function instead of defining a new class.  The generator should yield
    434 exactly one value.  The code up to the :keyword:`yield` will be executed as the
    435 :meth:`__enter__` method, and the value yielded will be the method's return
    436 value that will get bound to the variable in the ':keyword:`with`' statement's
    437 :keyword:`as` clause, if any.  The code after the :keyword:`yield` will be
    438 executed in the :meth:`__exit__` method.  Any exception raised in the block will
    439 be raised by the :keyword:`yield` statement.
    440 
    441 Using this decorator, our database example from the previous section
    442 could be written as::
    443 
    444    from contextlib import contextmanager
    445 
    446    @contextmanager
    447    def db_transaction(connection):
    448        cursor = connection.cursor()
    449        try:
    450            yield cursor
    451        except:
    452            connection.rollback()
    453            raise
    454        else:
    455            connection.commit()
    456 
    457    db = DatabaseConnection()
    458    with db_transaction(db) as cursor:
    459        ...
    460 
    461 The :mod:`contextlib` module also has a ``nested(mgr1, mgr2, ...)`` function
    462 that combines a number of context managers so you don't need to write nested
    463 ':keyword:`with`' statements.  In this example, the single ':keyword:`with`'
    464 statement both starts a database transaction and acquires a thread lock::
    465 
    466    lock = threading.Lock()
    467    with nested (db_transaction(db), lock) as (cursor, locked):
    468        ...
    469 
    470 Finally, the :func:`closing` function returns its argument so that it can be
    471 bound to a variable, and calls the argument's ``.close()`` method at the end
    472 of the block. ::
    473 
    474    import urllib, sys
    475    from contextlib import closing
    476 
    477    with closing(urllib.urlopen('http://www.yahoo.com')) as f:
    478        for line in f:
    479            sys.stdout.write(line)
    480 
    481 
    482 .. seealso::
    483 
    484    :pep:`343` - The "with" statement
    485       PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland,
    486       Guido van Rossum, and Neal Norwitz.  The PEP shows the code generated for a
    487       ':keyword:`with`' statement, which can be helpful in learning how the statement
    488       works.
    489 
    490    The documentation  for the :mod:`contextlib` module.
    491 
    492 .. ======================================================================
    493 
    494 .. _pep-0366:
    495 
    496 PEP 366: Explicit Relative Imports From a Main Module
    497 ============================================================
    498 
    499 Python's :option:`-m` switch allows running a module as a script.
    500 When you ran a module that was located inside a package, relative
    501 imports didn't work correctly.
    502 
    503 The fix for Python 2.6 adds a :attr:`__package__` attribute to
    504 modules.  When this attribute is present, relative imports will be
    505 relative to the value of this attribute instead of the
    506 :attr:`__name__` attribute.
    507 
    508 PEP 302-style importers can then set :attr:`__package__` as necessary.
    509 The :mod:`runpy` module that implements the :option:`-m` switch now
    510 does this, so relative imports will now work correctly in scripts
    511 running from inside a package.
    512 
    513 .. ======================================================================
    514 
    515 .. _pep-0370:
    516 
    517 PEP 370: Per-user ``site-packages`` Directory
    518 =====================================================
    519 
    520 When you run Python, the module search path ``sys.path`` usually
    521 includes a directory whose path ends in ``"site-packages"``.  This
    522 directory is intended to hold locally-installed packages available to
    523 all users using a machine or a particular site installation.
    524 
    525 Python 2.6 introduces a convention for user-specific site directories.
    526 The directory varies depending on the platform:
    527 
    528 * Unix and Mac OS X: :file:`~/.local/`
    529 * Windows: :file:`%APPDATA%/Python`
    530 
    531 Within this directory, there will be version-specific subdirectories,
    532 such as :file:`lib/python2.6/site-packages` on Unix/Mac OS and
    533 :file:`Python26/site-packages` on Windows.
    534 
    535 If you don't like the default directory, it can be overridden by an
    536 environment variable.  :envvar:`PYTHONUSERBASE` sets the root
    537 directory used for all Python versions supporting this feature.  On
    538 Windows, the directory for application-specific data can be changed by
    539 setting the :envvar:`APPDATA` environment variable.  You can also
    540 modify the :file:`site.py` file for your Python installation.
    541 
    542 The feature can be disabled entirely by running Python with the
    543 :option:`-s` option or setting the :envvar:`PYTHONNOUSERSITE`
    544 environment variable.
    545 
    546 .. seealso::
    547 
    548    :pep:`370` - Per-user ``site-packages`` Directory
    549      PEP written and implemented by Christian Heimes.
    550 
    551 
    552 .. ======================================================================
    553 
    554 .. _pep-0371:
    555 
    556 PEP 371: The ``multiprocessing`` Package
    557 =====================================================
    558 
    559 The new :mod:`multiprocessing` package lets Python programs create new
    560 processes that will perform a computation and return a result to the
    561 parent.  The parent and child processes can communicate using queues
    562 and pipes, synchronize their operations using locks and semaphores,
    563 and can share simple arrays of data.
    564 
    565 The :mod:`multiprocessing` module started out as an exact emulation of
    566 the :mod:`threading` module using processes instead of threads.  That
    567 goal was discarded along the path to Python 2.6, but the general
    568 approach of the module is still similar.  The fundamental class
    569 is the :class:`Process`, which is passed a callable object and
    570 a collection of arguments.  The :meth:`start` method
    571 sets the callable running in a subprocess, after which you can call
    572 the :meth:`is_alive` method to check whether the subprocess is still running
    573 and the :meth:`join` method to wait for the process to exit.
    574 
    575 Here's a simple example where the subprocess will calculate a
    576 factorial.  The function doing the calculation is written strangely so
    577 that it takes significantly longer when the input argument is a
    578 multiple of 4.
    579 
    580 ::
    581 
    582     import time
    583     from multiprocessing import Process, Queue
    584 
    585 
    586     def factorial(queue, N):
    587         "Compute a factorial."
    588         # If N is a multiple of 4, this function will take much longer.
    589         if (N % 4) == 0:
    590             time.sleep(.05 * N/4)
    591 
    592         # Calculate the result
    593         fact = 1L
    594         for i in range(1, N+1):
    595             fact = fact * i
    596 
    597         # Put the result on the queue
    598         queue.put(fact)
    599 
    600     if __name__ == '__main__':
    601         queue = Queue()
    602 
    603         N = 5
    604 
    605         p = Process(target=factorial, args=(queue, N))
    606         p.start()
    607         p.join()
    608 
    609         result = queue.get()
    610         print 'Factorial', N, '=', result
    611 
    612 A :class:`~Queue.Queue` is used to communicate the result of the factorial.
    613 The :class:`~Queue.Queue` object is stored in a global variable.
    614 The child process will use the value of the variable when the child
    615 was created; because it's a :class:`~Queue.Queue`, parent and child can use
    616 the object to communicate.  (If the parent were to change the value of
    617 the global variable, the child's value would be unaffected, and vice
    618 versa.)
    619 
    620 Two other classes, :class:`Pool` and :class:`Manager`, provide
    621 higher-level interfaces.  :class:`Pool` will create a fixed number of
    622 worker processes, and requests can then be distributed to the workers
    623 by calling :meth:`apply` or :meth:`apply_async` to add a single request,
    624 and :meth:`map` or :meth:`map_async` to add a number of
    625 requests.  The following code uses a :class:`Pool` to spread requests
    626 across 5 worker processes and retrieve a list of results::
    627 
    628     from multiprocessing import Pool
    629 
    630     def factorial(N, dictionary):
    631         "Compute a factorial."
    632         ...
    633     p = Pool(5)
    634     result = p.map(factorial, range(1, 1000, 10))
    635     for v in result:
    636         print v
    637 
    638 This produces the following output::
    639 
    640     1
    641     39916800
    642     51090942171709440000
    643     8222838654177922817725562880000000
    644     33452526613163807108170062053440751665152000000000
    645     ...
    646 
    647 The other high-level interface, the :class:`Manager` class, creates a
    648 separate server process that can hold master copies of Python data
    649 structures.  Other processes can then access and modify these data
    650 structures using proxy objects.  The following example creates a
    651 shared dictionary by calling the :meth:`dict` method; the worker
    652 processes then insert values into the dictionary.  (Locking is not
    653 done for you automatically, which doesn't matter in this example.
    654 :class:`Manager`'s methods also include :meth:`Lock`, :meth:`RLock`,
    655 and :meth:`Semaphore` to create shared locks.)
    656 
    657 ::
    658 
    659     import time
    660     from multiprocessing import Pool, Manager
    661 
    662     def factorial(N, dictionary):
    663         "Compute a factorial."
    664         # Calculate the result
    665         fact = 1L
    666         for i in range(1, N+1):
    667             fact = fact * i
    668 
    669         # Store result in dictionary
    670         dictionary[N] = fact
    671 
    672     if __name__ == '__main__':
    673         p = Pool(5)
    674         mgr = Manager()
    675         d = mgr.dict()         # Create shared dictionary
    676 
    677         # Run tasks using the pool
    678         for N in range(1, 1000, 10):
    679             p.apply_async(factorial, (N, d))
    680 
    681         # Mark pool as closed -- no more tasks can be added.
    682         p.close()
    683 
    684         # Wait for tasks to exit
    685         p.join()
    686 
    687         # Output results
    688         for k, v in sorted(d.items()):
    689             print k, v
    690 
    691 This will produce the output::
    692 
    693     1 1
    694     11 39916800
    695     21 51090942171709440000
    696     31 8222838654177922817725562880000000
    697     41 33452526613163807108170062053440751665152000000000
    698     51 15511187532873822802242430164693032110632597200169861120000...
    699 
    700 .. seealso::
    701 
    702    The documentation for the :mod:`multiprocessing` module.
    703 
    704    :pep:`371` - Addition of the multiprocessing package
    705      PEP written by Jesse Noller and Richard Oudkerk;
    706      implemented by Richard Oudkerk and Jesse Noller.
    707 
    708 
    709 .. ======================================================================
    710 
    711 .. _pep-3101:
    712 
    713 PEP 3101: Advanced String Formatting
    714 =====================================================
    715 
    716 In Python 3.0, the `%` operator is supplemented by a more powerful string
    717 formatting method, :meth:`format`.  Support for the :meth:`str.format` method
    718 has been backported to Python 2.6.
    719 
    720 In 2.6, both 8-bit and Unicode strings have a `.format()` method that
    721 treats the string as a template and takes the arguments to be formatted.
    722 The formatting template uses curly brackets (`{`, `}`) as special characters::
    723 
    724      >>> # Substitute positional argument 0 into the string.
    725      >>> "User ID: {0}".format("root")
    726      'User ID: root'
    727      >>> # Use the named keyword arguments
    728      >>> "User ID: {uid}   Last seen: {last_login}".format(
    729      ...    uid="root",
    730      ...    last_login = "5 Mar 2008 07:20")
    731      'User ID: root   Last seen: 5 Mar 2008 07:20'
    732 
    733 Curly brackets can be escaped by doubling them::
    734 
    735      >>> "Empty dict: {{}}".format()
    736      "Empty dict: {}"
    737 
    738 Field names can be integers indicating positional arguments, such as
    739 ``{0}``, ``{1}``, etc. or names of keyword arguments.  You can also
    740 supply compound field names that read attributes or access dictionary keys::
    741 
    742     >>> import sys
    743     >>> print 'Platform: {0.platform}\nPython version: {0.version}'.format(sys)
    744     Platform: darwin
    745     Python version: 2.6a1+ (trunk:61261M, Mar  5 2008, 20:29:41)
    746     [GCC 4.0.1 (Apple Computer, Inc. build 5367)]'
    747 
    748     >>> import mimetypes
    749     >>> 'Content-type: {0[.mp4]}'.format(mimetypes.types_map)
    750     'Content-type: video/mp4'
    751 
    752 Note that when using dictionary-style notation such as ``[.mp4]``, you
    753 don't need to put any quotation marks around the string; it will look
    754 up the value using ``.mp4`` as the key.  Strings beginning with a
    755 number will be converted to an integer.  You can't write more
    756 complicated expressions inside a format string.
    757 
    758 So far we've shown how to specify which field to substitute into the
    759 resulting string.  The precise formatting used is also controllable by
    760 adding a colon followed by a format specifier.  For example::
    761 
    762      >>> # Field 0: left justify, pad to 15 characters
    763      >>> # Field 1: right justify, pad to 6 characters
    764      >>> fmt = '{0:15} ${1:>6}'
    765      >>> fmt.format('Registration', 35)
    766      'Registration    $    35'
    767      >>> fmt.format('Tutorial', 50)
    768      'Tutorial        $    50'
    769      >>> fmt.format('Banquet', 125)
    770      'Banquet         $   125'
    771 
    772 Format specifiers can reference other fields through nesting::
    773 
    774     >>> fmt = '{0:{1}}'
    775     >>> width = 15
    776     >>> fmt.format('Invoice #1234', width)
    777     'Invoice #1234  '
    778     >>> width = 35
    779     >>> fmt.format('Invoice #1234', width)
    780     'Invoice #1234                      '
    781 
    782 The alignment of a field within the desired width can be specified:
    783 
    784 ================ ============================================
    785 Character        Effect
    786 ================ ============================================
    787 < (default)      Left-align
    788 >                Right-align
    789 ^                Center
    790 =                (For numeric types only) Pad after the sign.
    791 ================ ============================================
    792 
    793 Format specifiers can also include a presentation type, which
    794 controls how the value is formatted.  For example, floating-point numbers
    795 can be formatted as a general number or in exponential notation::
    796 
    797     >>> '{0:g}'.format(3.75)
    798     '3.75'
    799     >>> '{0:e}'.format(3.75)
    800     '3.750000e+00'
    801 
    802 A variety of presentation types are available.  Consult the 2.6
    803 documentation for a :ref:`complete list <formatstrings>`; here's a sample:
    804 
    805 ===== ========================================================================
    806 ``b`` Binary. Outputs the number in base 2.
    807 ``c`` Character. Converts the integer to the corresponding Unicode character
    808       before printing.
    809 ``d`` Decimal Integer. Outputs the number in base 10.
    810 ``o`` Octal format. Outputs the number in base 8.
    811 ``x`` Hex format. Outputs the number in base 16, using lower-case letters for
    812       the digits above 9.
    813 ``e`` Exponent notation. Prints the number in scientific notation using the
    814       letter 'e' to indicate the exponent.
    815 ``g`` General format. This prints the number as a fixed-point number, unless
    816       the number is too large, in which case it switches to 'e' exponent
    817       notation.
    818 ``n`` Number. This is the same as 'g' (for floats) or 'd' (for integers),
    819       except that it uses the current locale setting to insert the appropriate
    820       number separator characters.
    821 ``%`` Percentage. Multiplies the number by 100 and displays in fixed ('f')
    822       format, followed by a percent sign.
    823 ===== ========================================================================
    824 
    825 Classes and types can define a :meth:`__format__` method to control how they're
    826 formatted.  It receives a single argument, the format specifier::
    827 
    828    def __format__(self, format_spec):
    829        if isinstance(format_spec, unicode):
    830            return unicode(str(self))
    831        else:
    832            return str(self)
    833 
    834 There's also a :func:`format` builtin that will format a single
    835 value.  It calls the type's :meth:`__format__` method with the
    836 provided specifier::
    837 
    838     >>> format(75.6564, '.2f')
    839     '75.66'
    840 
    841 
    842 .. seealso::
    843 
    844    :ref:`formatstrings`
    845       The reference documentation for format fields.
    846 
    847    :pep:`3101` - Advanced String Formatting
    848       PEP written by Talin. Implemented by Eric Smith.
    849 
    850 .. ======================================================================
    851 
    852 .. _pep-3105:
    853 
    854 PEP 3105: ``print`` As a Function
    855 =====================================================
    856 
    857 The ``print`` statement becomes the :func:`print` function in Python 3.0.
    858 Making :func:`print` a function makes it possible to replace the function
    859 by doing ``def print(...)`` or importing a new function from somewhere else.
    860 
    861 Python 2.6 has a ``__future__`` import that removes ``print`` as language
    862 syntax, letting you use the functional form instead.  For example::
    863 
    864     >>> from __future__ import print_function
    865     >>> print('# of entries', len(dictionary), file=sys.stderr)
    866 
    867 The signature of the new function is::
    868 
    869     def print(*args, sep=' ', end='\n', file=None)
    870 
    871 
    872 The parameters are:
    873 
    874  * *args*: positional arguments whose values will be printed out.
    875  * *sep*: the separator, which will be printed between arguments.
    876  * *end*: the ending text, which will be printed after all of the
    877    arguments have been output.
    878  * *file*: the file object to which the output will be sent.
    879 
    880 .. seealso::
    881 
    882    :pep:`3105` - Make print a function
    883       PEP written by Georg Brandl.
    884 
    885 .. ======================================================================
    886 
    887 .. _pep-3110:
    888 
    889 PEP 3110: Exception-Handling Changes
    890 =====================================================
    891 
    892 One error that Python programmers occasionally make
    893 is writing the following code::
    894 
    895     try:
    896         ...
    897     except TypeError, ValueError:  # Wrong!
    898         ...
    899 
    900 The author is probably trying to catch both :exc:`TypeError` and
    901 :exc:`ValueError` exceptions, but this code actually does something
    902 different: it will catch :exc:`TypeError` and bind the resulting
    903 exception object to the local name ``"ValueError"``.  The
    904 :exc:`ValueError` exception will not be caught at all.  The correct
    905 code specifies a tuple of exceptions::
    906 
    907     try:
    908         ...
    909     except (TypeError, ValueError):
    910         ...
    911 
    912 This error happens because the use of the comma here is ambiguous:
    913 does it indicate two different nodes in the parse tree, or a single
    914 node that's a tuple?
    915 
    916 Python 3.0 makes this unambiguous by replacing the comma with the word
    917 "as".  To catch an exception and store the exception object in the
    918 variable ``exc``, you must write::
    919 
    920     try:
    921         ...
    922     except TypeError as exc:
    923         ...
    924 
    925 Python 3.0 will only support the use of "as", and therefore interprets
    926 the first example as catching two different exceptions.  Python 2.6
    927 supports both the comma and "as", so existing code will continue to
    928 work.  We therefore suggest using "as" when writing new Python code
    929 that will only be executed with 2.6.
    930 
    931 .. seealso::
    932 
    933    :pep:`3110` - Catching Exceptions in Python 3000
    934       PEP written and implemented by Collin Winter.
    935 
    936 .. ======================================================================
    937 
    938 .. _pep-3112:
    939 
    940 PEP 3112: Byte Literals
    941 =====================================================
    942 
    943 Python 3.0 adopts Unicode as the language's fundamental string type and
    944 denotes 8-bit literals differently, either as ``b'string'``
    945 or using a :class:`bytes` constructor.  For future compatibility,
    946 Python 2.6 adds :class:`bytes` as a synonym for the :class:`str` type,
    947 and it also supports the ``b''`` notation.
    948 
    949 
    950 The 2.6 :class:`str` differs from 3.0's :class:`bytes` type in various
    951 ways; most notably, the constructor is completely different.  In 3.0,
    952 ``bytes([65, 66, 67])`` is 3 elements long, containing the bytes
    953 representing ``ABC``; in 2.6, ``bytes([65, 66, 67])`` returns the
    954 12-byte string representing the :func:`str` of the list.
    955 
    956 The primary use of :class:`bytes` in 2.6 will be to write tests of
    957 object type such as ``isinstance(x, bytes)``.  This will help the 2to3
    958 converter, which can't tell whether 2.x code intends strings to
    959 contain either characters or 8-bit bytes; you can now
    960 use either :class:`bytes` or :class:`str` to represent your intention
    961 exactly, and the resulting code will also be correct in Python 3.0.
    962 
    963 There's also a ``__future__`` import that causes all string literals
    964 to become Unicode strings.  This means that ``\u`` escape sequences
    965 can be used to include Unicode characters::
    966 
    967 
    968     from __future__ import unicode_literals
    969 
    970     s = ('\u751f\u3080\u304e\u3000\u751f\u3054'
    971          '\u3081\u3000\u751f\u305f\u307e\u3054')
    972 
    973     print len(s)               # 12 Unicode characters
    974 
    975 At the C level, Python 3.0 will rename the existing 8-bit
    976 string type, called :c:type:`PyStringObject` in Python 2.x,
    977 to :c:type:`PyBytesObject`.  Python 2.6 uses ``#define``
    978 to support using the names :c:func:`PyBytesObject`,
    979 :c:func:`PyBytes_Check`, :c:func:`PyBytes_FromStringAndSize`,
    980 and all the other functions and macros used with strings.
    981 
    982 Instances of the :class:`bytes` type are immutable just
    983 as strings are.  A new :class:`bytearray` type stores a mutable
    984 sequence of bytes::
    985 
    986     >>> bytearray([65, 66, 67])
    987     bytearray(b'ABC')
    988     >>> b = bytearray(u'\u21ef\u3244', 'utf-8')
    989     >>> b
    990     bytearray(b'\xe2\x87\xaf\xe3\x89\x84')
    991     >>> b[0] = '\xe3'
    992     >>> b
    993     bytearray(b'\xe3\x87\xaf\xe3\x89\x84')
    994     >>> unicode(str(b), 'utf-8')
    995     u'\u31ef \u3244'
    996 
    997 Byte arrays support most of the methods of string types, such as
    998 :meth:`startswith`/:meth:`endswith`, :meth:`find`/:meth:`rfind`,
    999 and some of the methods of lists, such as :meth:`append`,
   1000 :meth:`pop`,  and :meth:`reverse`.
   1001 
   1002 ::
   1003 
   1004     >>> b = bytearray('ABC')
   1005     >>> b.append('d')
   1006     >>> b.append(ord('e'))
   1007     >>> b
   1008     bytearray(b'ABCde')
   1009 
   1010 There's also a corresponding C API, with
   1011 :c:func:`PyByteArray_FromObject`,
   1012 :c:func:`PyByteArray_FromStringAndSize`,
   1013 and various other functions.
   1014 
   1015 .. seealso::
   1016 
   1017    :pep:`3112` - Bytes literals in Python 3000
   1018       PEP written by Jason Orendorff; backported to 2.6 by Christian Heimes.
   1019 
   1020 .. ======================================================================
   1021 
   1022 .. _pep-3116:
   1023 
   1024 PEP 3116: New I/O Library
   1025 =====================================================
   1026 
   1027 Python's built-in file objects support a number of methods, but
   1028 file-like objects don't necessarily support all of them.  Objects that
   1029 imitate files usually support :meth:`read` and :meth:`write`, but they
   1030 may not support :meth:`readline`, for example.  Python 3.0 introduces
   1031 a layered I/O library in the :mod:`io` module that separates buffering
   1032 and text-handling features from the fundamental read and write
   1033 operations.
   1034 
   1035 There are three levels of abstract base classes provided by
   1036 the :mod:`io` module:
   1037 
   1038 * :class:`RawIOBase` defines raw I/O operations: :meth:`read`,
   1039   :meth:`readinto`,
   1040   :meth:`write`, :meth:`seek`, :meth:`tell`, :meth:`truncate`,
   1041   and :meth:`close`.
   1042   Most of the methods of this class will often map to a single system call.
   1043   There are also :meth:`readable`, :meth:`writable`, and :meth:`seekable`
   1044   methods for determining what operations a given object will allow.
   1045 
   1046   Python 3.0 has concrete implementations of this class for files and
   1047   sockets, but Python 2.6 hasn't restructured its file and socket objects
   1048   in this way.
   1049 
   1050   .. XXX should 2.6 register them in io.py?
   1051 
   1052 * :class:`BufferedIOBase` is an abstract base class that
   1053   buffers data in memory to reduce the number of
   1054   system calls used, making I/O processing more efficient.
   1055   It supports all of the methods of :class:`RawIOBase`,
   1056   and adds a :attr:`raw` attribute holding the underlying raw object.
   1057 
   1058   There are five concrete classes implementing this ABC.
   1059   :class:`BufferedWriter` and :class:`BufferedReader` are for objects
   1060   that support write-only or read-only usage that have a :meth:`seek`
   1061   method for random access.  :class:`BufferedRandom` objects support
   1062   read and write access upon the same underlying stream, and
   1063   :class:`BufferedRWPair` is for objects such as TTYs that have both
   1064   read and write operations acting upon unconnected streams of data.
   1065   The :class:`BytesIO` class supports reading, writing, and seeking
   1066   over an in-memory buffer.
   1067 
   1068   .. index::
   1069      single: universal newlines; What's new
   1070 
   1071 * :class:`TextIOBase`: Provides functions for reading and writing
   1072   strings (remember, strings will be Unicode in Python 3.0),
   1073   and supporting :term:`universal newlines`.  :class:`TextIOBase` defines
   1074   the :meth:`readline` method and supports iteration upon
   1075   objects.
   1076 
   1077   There are two concrete implementations.  :class:`TextIOWrapper`
   1078   wraps a buffered I/O object, supporting all of the methods for
   1079   text I/O and adding a :attr:`buffer` attribute for access
   1080   to the underlying object.  :class:`~StringIO.StringIO` simply buffers
   1081   everything in memory without ever writing anything to disk.
   1082 
   1083   (In Python 2.6, :class:`io.StringIO` is implemented in
   1084   pure Python, so it's pretty slow.   You should therefore stick with the
   1085   existing :mod:`StringIO` module or :mod:`cStringIO` for now.  At some
   1086   point Python 3.0's :mod:`io` module will be rewritten into C for speed,
   1087   and perhaps the C implementation will be  backported to the 2.x releases.)
   1088 
   1089 In Python 2.6, the underlying implementations haven't been
   1090 restructured to build on top of the :mod:`io` module's classes.  The
   1091 module is being provided to make it easier to write code that's
   1092 forward-compatible with 3.0, and to save developers the effort of writing
   1093 their own implementations of buffering and text I/O.
   1094 
   1095 .. seealso::
   1096 
   1097    :pep:`3116` - New I/O
   1098       PEP written by Daniel Stutzbach, Mike Verdone, and Guido van Rossum.
   1099       Code by Guido van Rossum, Georg Brandl, Walter Doerwald,
   1100       Jeremy Hylton, Martin von Loewis, Tony Lownds, and others.
   1101 
   1102 .. ======================================================================
   1103 
   1104 .. _pep-3118:
   1105 
   1106 PEP 3118: Revised Buffer Protocol
   1107 =====================================================
   1108 
   1109 The buffer protocol is a C-level API that lets Python types
   1110 exchange pointers into their internal representations.  A
   1111 memory-mapped file can be viewed as a buffer of characters, for
   1112 example, and this lets another module such as :mod:`re`
   1113 treat memory-mapped files as a string of characters to be searched.
   1114 
   1115 The primary users of the buffer protocol are numeric-processing
   1116 packages such as NumPy, which expose the internal representation
   1117 of arrays so that callers can write data directly into an array instead
   1118 of going through a slower API.  This PEP updates the buffer protocol in light of experience
   1119 from NumPy development, adding a number of new features
   1120 such as indicating the shape of an array or locking a memory region.
   1121 
   1122 The most important new C API function is
   1123 ``PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags)``, which
   1124 takes an object and a set of flags, and fills in the
   1125 ``Py_buffer`` structure with information
   1126 about the object's memory representation.  Objects
   1127 can use this operation to lock memory in place
   1128 while an external caller could be modifying the contents,
   1129 so there's a corresponding ``PyBuffer_Release(Py_buffer *view)`` to
   1130 indicate that the external caller is done.
   1131 
   1132 .. XXX PyObject_GetBuffer not documented in c-api
   1133 
   1134 The *flags* argument to :c:func:`PyObject_GetBuffer` specifies
   1135 constraints upon the memory returned.  Some examples are:
   1136 
   1137  * :const:`PyBUF_WRITABLE` indicates that the memory must be writable.
   1138 
   1139  * :const:`PyBUF_LOCK` requests a read-only or exclusive lock on the memory.
   1140 
   1141  * :const:`PyBUF_C_CONTIGUOUS` and :const:`PyBUF_F_CONTIGUOUS`
   1142    requests a C-contiguous (last dimension varies the fastest) or
   1143    Fortran-contiguous (first dimension varies the fastest) array layout.
   1144 
   1145 Two new argument codes for :c:func:`PyArg_ParseTuple`,
   1146 ``s*`` and ``z*``, return locked buffer objects for a parameter.
   1147 
   1148 .. seealso::
   1149 
   1150    :pep:`3118` - Revising the buffer protocol
   1151       PEP written by Travis Oliphant and Carl Banks; implemented by
   1152       Travis Oliphant.
   1153 
   1154 
   1155 .. ======================================================================
   1156 
   1157 .. _pep-3119:
   1158 
   1159 PEP 3119: Abstract Base Classes
   1160 =====================================================
   1161 
   1162 Some object-oriented languages such as Java support interfaces,
   1163 declaring that a class has a given set of methods or supports a given
   1164 access protocol.  Abstract Base Classes (or ABCs) are an equivalent
   1165 feature for Python. The ABC support consists of an :mod:`abc` module
   1166 containing a metaclass called :class:`ABCMeta`, special handling of
   1167 this metaclass by the :func:`isinstance` and :func:`issubclass`
   1168 builtins, and a collection of basic ABCs that the Python developers
   1169 think will be widely useful.  Future versions of Python will probably
   1170 add more ABCs.
   1171 
   1172 Let's say you have a particular class and wish to know whether it supports
   1173 dictionary-style access.  The phrase "dictionary-style" is vague, however.
   1174 It probably means that accessing items with ``obj[1]`` works.
   1175 Does it imply that setting items with ``obj[2] = value`` works?
   1176 Or that the object will have :meth:`keys`, :meth:`values`, and :meth:`items`
   1177 methods?  What about the iterative variants  such as :meth:`iterkeys`?  :meth:`copy`
   1178 and :meth:`update`?  Iterating over the object with :func:`iter`?
   1179 
   1180 The Python 2.6 :mod:`collections` module includes a number of
   1181 different ABCs that represent these distinctions.  :class:`Iterable`
   1182 indicates that a class defines :meth:`__iter__`, and
   1183 :class:`Container` means the class defines a :meth:`__contains__`
   1184 method and therefore supports ``x in y`` expressions.  The basic
   1185 dictionary interface of getting items, setting items, and
   1186 :meth:`keys`, :meth:`values`, and :meth:`items`, is defined by the
   1187 :class:`MutableMapping` ABC.
   1188 
   1189 You can derive your own classes from a particular ABC
   1190 to indicate they support that ABC's interface::
   1191 
   1192     import collections
   1193 
   1194     class Storage(collections.MutableMapping):
   1195         ...
   1196 
   1197 
   1198 Alternatively, you could write the class without deriving from
   1199 the desired ABC and instead register the class by
   1200 calling the ABC's :meth:`register` method::
   1201 
   1202     import collections
   1203 
   1204     class Storage:
   1205         ...
   1206 
   1207     collections.MutableMapping.register(Storage)
   1208 
   1209 For classes that you write, deriving from the ABC is probably clearer.
   1210 The :meth:`register`  method is useful when you've written a new
   1211 ABC that can describe an existing type or class, or if you want
   1212 to declare that some third-party class implements an ABC.
   1213 For example, if you defined a :class:`PrintableType` ABC,
   1214 it's legal to do::
   1215 
   1216   # Register Python's types
   1217   PrintableType.register(int)
   1218   PrintableType.register(float)
   1219   PrintableType.register(str)
   1220 
   1221 Classes should obey the semantics specified by an ABC, but
   1222 Python can't check this; it's up to the class author to
   1223 understand the ABC's requirements and to implement the code accordingly.
   1224 
   1225 To check whether an object supports a particular interface, you can
   1226 now write::
   1227 
   1228     def func(d):
   1229         if not isinstance(d, collections.MutableMapping):
   1230             raise ValueError("Mapping object expected, not %r" % d)
   1231 
   1232 Don't feel that you must now begin writing lots of checks as in the
   1233 above example.  Python has a strong tradition of duck-typing, where
   1234 explicit type-checking is never done and code simply calls methods on
   1235 an object, trusting that those methods will be there and raising an
   1236 exception if they aren't.  Be judicious in checking for ABCs and only
   1237 do it where it's absolutely necessary.
   1238 
   1239 You can write your own ABCs by using ``abc.ABCMeta`` as the
   1240 metaclass in a class definition::
   1241 
   1242     from abc import ABCMeta, abstractmethod
   1243 
   1244     class Drawable():
   1245         __metaclass__ = ABCMeta
   1246 
   1247         @abstractmethod
   1248         def draw(self, x, y, scale=1.0):
   1249             pass
   1250 
   1251         def draw_doubled(self, x, y):
   1252             self.draw(x, y, scale=2.0)
   1253 
   1254 
   1255     class Square(Drawable):
   1256         def draw(self, x, y, scale):
   1257             ...
   1258 
   1259 
   1260 In the :class:`Drawable` ABC above, the :meth:`draw_doubled` method
   1261 renders the object at twice its size and can be implemented in terms
   1262 of other methods described in :class:`Drawable`.  Classes implementing
   1263 this ABC therefore don't need to provide their own implementation
   1264 of :meth:`draw_doubled`, though they can do so.  An implementation
   1265 of :meth:`draw` is necessary, though; the ABC can't provide
   1266 a useful generic implementation.
   1267 
   1268 You can apply the ``@abstractmethod`` decorator to methods such as
   1269 :meth:`draw` that must be implemented; Python will then raise an
   1270 exception for classes that don't define the method.
   1271 Note that the exception is only raised when you actually
   1272 try to create an instance of a subclass lacking the method::
   1273 
   1274     >>> class Circle(Drawable):
   1275     ...     pass
   1276     ...
   1277     >>> c = Circle()
   1278     Traceback (most recent call last):
   1279       File "<stdin>", line 1, in <module>
   1280     TypeError: Can't instantiate abstract class Circle with abstract methods draw
   1281     >>>
   1282 
   1283 Abstract data attributes can be declared using the
   1284 ``@abstractproperty`` decorator::
   1285 
   1286     from abc import abstractproperty
   1287     ...
   1288 
   1289     @abstractproperty
   1290     def readonly(self):
   1291        return self._x
   1292 
   1293 Subclasses must then define a :meth:`readonly` property.
   1294 
   1295 .. seealso::
   1296 
   1297    :pep:`3119` - Introducing Abstract Base Classes
   1298       PEP written by Guido van Rossum and Talin.
   1299       Implemented by Guido van Rossum.
   1300       Backported to 2.6 by Benjamin Aranguren, with Alex Martelli.
   1301 
   1302 .. ======================================================================
   1303 
   1304 .. _pep-3127:
   1305 
   1306 PEP 3127: Integer Literal Support and Syntax
   1307 =====================================================
   1308 
   1309 Python 3.0 changes the syntax for octal (base-8) integer literals,
   1310 prefixing them with "0o" or "0O" instead of a leading zero, and adds
   1311 support for binary (base-2) integer literals, signalled by a "0b" or
   1312 "0B" prefix.
   1313 
   1314 Python 2.6 doesn't drop support for a leading 0 signalling
   1315 an octal number, but it does add support for "0o" and "0b"::
   1316 
   1317     >>> 0o21, 2*8 + 1
   1318     (17, 17)
   1319     >>> 0b101111
   1320     47
   1321 
   1322 The :func:`oct` builtin still returns numbers
   1323 prefixed with a leading zero, and a new :func:`bin`
   1324 builtin returns the binary representation for a number::
   1325 
   1326     >>> oct(42)
   1327     '052'
   1328     >>> future_builtins.oct(42)
   1329     '0o52'
   1330     >>> bin(173)
   1331     '0b10101101'
   1332 
   1333 The :func:`int` and :func:`long` builtins will now accept the "0o"
   1334 and "0b" prefixes when base-8 or base-2 are requested, or when the
   1335 *base* argument is zero (signalling that the base used should be
   1336 determined from the string)::
   1337 
   1338     >>> int ('0o52', 0)
   1339     42
   1340     >>> int('1101', 2)
   1341     13
   1342     >>> int('0b1101', 2)
   1343     13
   1344     >>> int('0b1101', 0)
   1345     13
   1346 
   1347 
   1348 .. seealso::
   1349 
   1350    :pep:`3127` - Integer Literal Support and Syntax
   1351       PEP written by Patrick Maupin; backported to 2.6 by
   1352       Eric Smith.
   1353 
   1354 .. ======================================================================
   1355 
   1356 .. _pep-3129:
   1357 
   1358 PEP 3129: Class Decorators
   1359 =====================================================
   1360 
   1361 Decorators have been extended from functions to classes.  It's now legal to
   1362 write::
   1363 
   1364   @foo
   1365   @bar
   1366   class A:
   1367     pass
   1368 
   1369 This is equivalent to::
   1370 
   1371   class A:
   1372     pass
   1373 
   1374   A = foo(bar(A))
   1375 
   1376 .. seealso::
   1377 
   1378    :pep:`3129` - Class Decorators
   1379       PEP written by Collin Winter.
   1380 
   1381 .. ======================================================================
   1382 
   1383 .. _pep-3141:
   1384 
   1385 PEP 3141: A Type Hierarchy for Numbers
   1386 =====================================================
   1387 
   1388 Python 3.0 adds several abstract base classes for numeric types
   1389 inspired by Scheme's numeric tower.  These classes were backported to
   1390 2.6 as the :mod:`numbers` module.
   1391 
   1392 The most general ABC is :class:`Number`.  It defines no operations at
   1393 all, and only exists to allow checking if an object is a number by
   1394 doing ``isinstance(obj, Number)``.
   1395 
   1396 :class:`Complex` is a subclass of :class:`Number`.  Complex numbers
   1397 can undergo the basic operations of addition, subtraction,
   1398 multiplication, division, and exponentiation, and you can retrieve the
   1399 real and imaginary parts and obtain a number's conjugate.  Python's built-in
   1400 complex type is an implementation of :class:`Complex`.
   1401 
   1402 :class:`Real` further derives from :class:`Complex`, and adds
   1403 operations that only work on real numbers: :func:`floor`, :func:`trunc`,
   1404 rounding, taking the remainder mod N, floor division,
   1405 and comparisons.
   1406 
   1407 :class:`Rational` numbers derive from :class:`Real`, have
   1408 :attr:`numerator` and :attr:`denominator` properties, and can be
   1409 converted to floats.  Python 2.6 adds a simple rational-number class,
   1410 :class:`Fraction`, in the :mod:`fractions` module.  (It's called
   1411 :class:`Fraction` instead of :class:`Rational` to avoid
   1412 a name clash with :class:`numbers.Rational`.)
   1413 
   1414 :class:`Integral` numbers derive from :class:`Rational`, and
   1415 can be shifted left and right with ``<<`` and ``>>``,
   1416 combined using bitwise operations such as ``&`` and ``|``,
   1417 and can be used as array indexes and slice boundaries.
   1418 
   1419 In Python 3.0, the PEP slightly redefines the existing builtins
   1420 :func:`round`, :func:`math.floor`, :func:`math.ceil`, and adds a new
   1421 one, :func:`math.trunc`, that's been backported to Python 2.6.
   1422 :func:`math.trunc` rounds toward zero, returning the closest
   1423 :class:`Integral` that's between the function's argument and zero.
   1424 
   1425 .. seealso::
   1426 
   1427    :pep:`3141` - A Type Hierarchy for Numbers
   1428       PEP written by Jeffrey Yasskin.
   1429 
   1430    `Scheme's numerical tower <https://www.gnu.org/software/guile/manual/html_node/Numerical-Tower.html#Numerical-Tower>`__, from the Guile manual.
   1431 
   1432    `Scheme's number datatypes <http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2>`__ from the R5RS Scheme specification.
   1433 
   1434 
   1435 The :mod:`fractions` Module
   1436 --------------------------------------------------
   1437 
   1438 To fill out the hierarchy of numeric types, the :mod:`fractions`
   1439 module provides a rational-number class.  Rational numbers store their
   1440 values as a numerator and denominator forming a fraction, and can
   1441 exactly represent numbers such as ``2/3`` that floating-point numbers
   1442 can only approximate.
   1443 
   1444 The :class:`Fraction` constructor takes two :class:`Integral` values
   1445 that will be the numerator and denominator of the resulting fraction. ::
   1446 
   1447     >>> from fractions import Fraction
   1448     >>> a = Fraction(2, 3)
   1449     >>> b = Fraction(2, 5)
   1450     >>> float(a), float(b)
   1451     (0.66666666666666663, 0.40000000000000002)
   1452     >>> a+b
   1453     Fraction(16, 15)
   1454     >>> a/b
   1455     Fraction(5, 3)
   1456 
   1457 For converting floating-point numbers to rationals,
   1458 the float type now has an :meth:`as_integer_ratio()` method that returns
   1459 the numerator and denominator for a fraction that evaluates to the same
   1460 floating-point value::
   1461 
   1462     >>> (2.5) .as_integer_ratio()
   1463     (5, 2)
   1464     >>> (3.1415) .as_integer_ratio()
   1465     (7074029114692207L, 2251799813685248L)
   1466     >>> (1./3) .as_integer_ratio()
   1467     (6004799503160661L, 18014398509481984L)
   1468 
   1469 Note that values that can only be approximated by floating-point
   1470 numbers, such as 1./3, are not simplified to the number being
   1471 approximated; the fraction attempts to match the floating-point value
   1472 **exactly**.
   1473 
   1474 The :mod:`fractions` module is based upon an implementation by Sjoerd
   1475 Mullender that was in Python's :file:`Demo/classes/` directory for a
   1476 long time.  This implementation was significantly updated by Jeffrey
   1477 Yasskin.
   1478 
   1479 
   1480 Other Language Changes
   1481 ======================
   1482 
   1483 Some smaller changes made to the core Python language are:
   1484 
   1485 * Directories and zip archives containing a :file:`__main__.py` file
   1486   can now be executed directly by passing their name to the
   1487   interpreter. The directory or zip archive is automatically inserted
   1488   as the first entry in sys.path.  (Suggestion and initial patch by
   1489   Andy Chu, subsequently revised by Phillip J. Eby and Nick Coghlan;
   1490   :issue:`1739468`.)
   1491 
   1492 * The :func:`hasattr` function was catching and ignoring all errors,
   1493   under the assumption that they meant a :meth:`__getattr__` method
   1494   was failing somehow and the return value of :func:`hasattr` would
   1495   therefore be ``False``.  This logic shouldn't be applied to
   1496   :exc:`KeyboardInterrupt` and :exc:`SystemExit`, however; Python 2.6
   1497   will no longer discard such exceptions when :func:`hasattr`
   1498   encounters them.  (Fixed by Benjamin Peterson; :issue:`2196`.)
   1499 
   1500 * When calling a function using the ``**`` syntax to provide keyword
   1501   arguments, you are no longer required to use a Python dictionary;
   1502   any mapping will now work::
   1503 
   1504     >>> def f(**kw):
   1505     ...    print sorted(kw)
   1506     ...
   1507     >>> ud=UserDict.UserDict()
   1508     >>> ud['a'] = 1
   1509     >>> ud['b'] = 'string'
   1510     >>> f(**ud)
   1511     ['a', 'b']
   1512 
   1513   (Contributed by Alexander Belopolsky; :issue:`1686487`.)
   1514 
   1515   It's also become legal to provide keyword arguments after a ``*args`` argument
   1516   to a function call. ::
   1517 
   1518     >>> def f(*args, **kw):
   1519     ...     print args, kw
   1520     ...
   1521     >>> f(1,2,3, *(4,5,6), keyword=13)
   1522     (1, 2, 3, 4, 5, 6) {'keyword': 13}
   1523 
   1524   Previously this would have been a syntax error.
   1525   (Contributed by Amaury Forgeot d'Arc; :issue:`3473`.)
   1526 
   1527 * A new builtin, ``next(iterator, [default])`` returns the next item
   1528   from the specified iterator.  If the *default* argument is supplied,
   1529   it will be returned if *iterator* has been exhausted; otherwise,
   1530   the :exc:`StopIteration` exception will be raised.  (Backported
   1531   in :issue:`2719`.)
   1532 
   1533 * Tuples now have :meth:`index` and :meth:`count` methods matching the
   1534   list type's :meth:`index` and :meth:`count` methods::
   1535 
   1536     >>> t = (0,1,2,3,4,0,1,2)
   1537     >>> t.index(3)
   1538     3
   1539     >>> t.count(0)
   1540     2
   1541 
   1542   (Contributed by Raymond Hettinger)
   1543 
   1544 * The built-in types now have improved support for extended slicing syntax,
   1545   accepting various combinations of ``(start, stop, step)``.
   1546   Previously, the support was partial and certain corner cases wouldn't work.
   1547   (Implemented by Thomas Wouters.)
   1548 
   1549   .. Revision 57619
   1550 
   1551 * Properties now have three attributes, :attr:`getter`, :attr:`setter`
   1552   and :attr:`deleter`, that are decorators providing useful shortcuts
   1553   for adding a getter, setter or deleter function to an existing
   1554   property. You would use them like this::
   1555 
   1556     class C(object):
   1557         @property
   1558         def x(self):
   1559             return self._x
   1560 
   1561         @x.setter
   1562         def x(self, value):
   1563             self._x = value
   1564 
   1565         @x.deleter
   1566         def x(self):
   1567             del self._x
   1568 
   1569     class D(C):
   1570         @C.x.getter
   1571         def x(self):
   1572             return self._x * 2
   1573 
   1574         @x.setter
   1575         def x(self, value):
   1576             self._x = value / 2
   1577 
   1578 * Several methods of the built-in set types now accept multiple iterables:
   1579   :meth:`intersection`,
   1580   :meth:`intersection_update`,
   1581   :meth:`union`, :meth:`update`,
   1582   :meth:`difference` and :meth:`difference_update`.
   1583 
   1584   ::
   1585 
   1586     >>> s=set('1234567890')
   1587     >>> s.intersection('abc123', 'cdf246')  # Intersection between all inputs
   1588     set(['2'])
   1589     >>> s.difference('246', '789')
   1590     set(['1', '0', '3', '5'])
   1591 
   1592   (Contributed by Raymond Hettinger.)
   1593 
   1594 * Many floating-point features were added.  The :func:`float` function
   1595   will now turn the string ``nan`` into an
   1596   IEEE 754 Not A Number value, and ``+inf`` and ``-inf`` into
   1597   positive or negative infinity.  This works on any platform with
   1598   IEEE 754 semantics.  (Contributed by Christian Heimes; :issue:`1635`.)
   1599 
   1600   Other functions in the :mod:`math` module, :func:`isinf` and
   1601   :func:`isnan`, return true if their floating-point argument is
   1602   infinite or Not A Number.  (:issue:`1640`)
   1603 
   1604   Conversion functions were added to convert floating-point numbers
   1605   into hexadecimal strings (:issue:`3008`).  These functions
   1606   convert floats to and from a string representation without
   1607   introducing rounding errors from the conversion between decimal and
   1608   binary.  Floats have a :meth:`hex` method that returns a string
   1609   representation, and the ``float.fromhex()`` method converts a string
   1610   back into a number::
   1611 
   1612       >>> a = 3.75
   1613       >>> a.hex()
   1614       '0x1.e000000000000p+1'
   1615       >>> float.fromhex('0x1.e000000000000p+1')
   1616       3.75
   1617       >>> b=1./3
   1618       >>> b.hex()
   1619       '0x1.5555555555555p-2'
   1620 
   1621 * A numerical nicety: when creating a complex number from two floats
   1622   on systems that support signed zeros (-0 and +0), the
   1623   :func:`complex` constructor will now preserve the sign
   1624   of the zero.  (Fixed by Mark T. Dickinson; :issue:`1507`.)
   1625 
   1626 * Classes that inherit a :meth:`__hash__` method from a parent class
   1627   can set ``__hash__ = None`` to indicate that the class isn't
   1628   hashable.  This will make ``hash(obj)`` raise a :exc:`TypeError`
   1629   and the class will not be indicated as implementing the
   1630   :class:`Hashable` ABC.
   1631 
   1632   You should do this when you've defined a :meth:`__cmp__` or
   1633   :meth:`__eq__` method that compares objects by their value rather
   1634   than by identity.  All objects have a default hash method that uses
   1635   ``id(obj)`` as the hash value.  There's no tidy way to remove the
   1636   :meth:`__hash__` method inherited from a parent class, so
   1637   assigning ``None`` was implemented as an override.  At the
   1638   C level, extensions can set ``tp_hash`` to
   1639   :c:func:`PyObject_HashNotImplemented`.
   1640   (Fixed by Nick Coghlan and Amaury Forgeot d'Arc; :issue:`2235`.)
   1641 
   1642 * The :exc:`GeneratorExit` exception now subclasses
   1643   :exc:`BaseException` instead of :exc:`Exception`.  This means
   1644   that an exception handler that does ``except Exception:``
   1645   will not inadvertently catch :exc:`GeneratorExit`.
   1646   (Contributed by Chad Austin; :issue:`1537`.)
   1647 
   1648 * Generator objects now have a :attr:`gi_code` attribute that refers to
   1649   the original code object backing the generator.
   1650   (Contributed by Collin Winter; :issue:`1473257`.)
   1651 
   1652 * The :func:`compile` built-in function now accepts keyword arguments
   1653   as well as positional parameters.  (Contributed by Thomas Wouters;
   1654   :issue:`1444529`.)
   1655 
   1656 * The :func:`complex` constructor now accepts strings containing
   1657   parenthesized complex numbers, meaning that ``complex(repr(cplx))``
   1658   will now round-trip values.  For example, ``complex('(3+4j)')``
   1659   now returns the value (3+4j).  (:issue:`1491866`)
   1660 
   1661 * The string :meth:`translate` method now accepts ``None`` as the
   1662   translation table parameter, which is treated as the identity
   1663   transformation.   This makes it easier to carry out operations
   1664   that only delete characters.  (Contributed by Bengt Richter and
   1665   implemented by Raymond Hettinger; :issue:`1193128`.)
   1666 
   1667 * The built-in :func:`dir` function now checks for a :meth:`__dir__`
   1668   method on the objects it receives.  This method must return a list
   1669   of strings containing the names of valid attributes for the object,
   1670   and lets the object control the value that :func:`dir` produces.
   1671   Objects that have :meth:`__getattr__` or :meth:`__getattribute__`
   1672   methods can use this to advertise pseudo-attributes they will honor.
   1673   (:issue:`1591665`)
   1674 
   1675 * Instance method objects have new attributes for the object and function
   1676   comprising the method; the new synonym for :attr:`im_self` is
   1677   :attr:`__self__`, and :attr:`im_func` is also available as :attr:`__func__`.
   1678   The old names are still supported in Python 2.6, but are gone in 3.0.
   1679 
   1680 * An obscure change: when you use the :func:`locals` function inside a
   1681   :keyword:`class` statement, the resulting dictionary no longer returns free
   1682   variables.  (Free variables, in this case, are variables referenced in the
   1683   :keyword:`class` statement  that aren't attributes of the class.)
   1684 
   1685 .. ======================================================================
   1686 
   1687 
   1688 Optimizations
   1689 -------------
   1690 
   1691 * The :mod:`warnings` module has been rewritten in C.  This makes
   1692   it possible to invoke warnings from the parser, and may also
   1693   make the interpreter's startup faster.
   1694   (Contributed by Neal Norwitz and Brett Cannon; :issue:`1631171`.)
   1695 
   1696 * Type objects now have a cache of methods that can reduce
   1697   the work required to find the correct method implementation
   1698   for a particular class; once cached, the interpreter doesn't need to
   1699   traverse base classes to figure out the right method to call.
   1700   The cache is cleared if a base class or the class itself is modified,
   1701   so the cache should remain correct even in the face of Python's dynamic
   1702   nature.
   1703   (Original optimization implemented by Armin Rigo, updated for
   1704   Python 2.6 by Kevin Jacobs; :issue:`1700288`.)
   1705 
   1706   By default, this change is only applied to types that are included with
   1707   the Python core.  Extension modules may not necessarily be compatible with
   1708   this cache,
   1709   so they must explicitly add :c:macro:`Py_TPFLAGS_HAVE_VERSION_TAG`
   1710   to the module's ``tp_flags`` field to enable the method cache.
   1711   (To be compatible with the method cache, the extension module's code
   1712   must not directly access and modify the ``tp_dict`` member of
   1713   any of the types it implements.  Most modules don't do this,
   1714   but it's impossible for the Python interpreter to determine that.
   1715   See :issue:`1878` for some discussion.)
   1716 
   1717 * Function calls that use keyword arguments are significantly faster
   1718   by doing a quick pointer comparison, usually saving the time of a
   1719   full string comparison.  (Contributed by Raymond Hettinger, after an
   1720   initial implementation by Antoine Pitrou; :issue:`1819`.)
   1721 
   1722 * All of the functions in the :mod:`struct` module have been rewritten in
   1723   C, thanks to work at the Need For Speed sprint.
   1724   (Contributed by Raymond Hettinger.)
   1725 
   1726 * Some of the standard built-in types now set a bit in their type
   1727   objects.  This speeds up checking whether an object is a subclass of
   1728   one of these types.  (Contributed by Neal Norwitz.)
   1729 
   1730 * Unicode strings now use faster code for detecting
   1731   whitespace and line breaks; this speeds up the :meth:`split` method
   1732   by about 25% and :meth:`splitlines` by 35%.
   1733   (Contributed by Antoine Pitrou.)  Memory usage is reduced
   1734   by using pymalloc for the Unicode string's data.
   1735 
   1736 * The ``with`` statement now stores the :meth:`__exit__` method on the stack,
   1737   producing a small speedup.  (Implemented by Jeffrey Yasskin.)
   1738 
   1739 * To reduce memory usage, the garbage collector will now clear internal
   1740   free lists when garbage-collecting the highest generation of objects.
   1741   This may return memory to the operating system sooner.
   1742 
   1743 .. ======================================================================
   1744 
   1745 .. _new-26-interpreter:
   1746 
   1747 Interpreter Changes
   1748 -------------------------------
   1749 
   1750 Two command-line options have been reserved for use by other Python
   1751 implementations.  The :option:`-J` switch has been reserved for use by
   1752 Jython for Jython-specific options, such as switches that are passed to
   1753 the underlying JVM.  :option:`-X` has been reserved for options
   1754 specific to a particular implementation of Python such as CPython,
   1755 Jython, or IronPython.  If either option is used with Python 2.6, the
   1756 interpreter will report that the option isn't currently used.
   1757 
   1758 Python can now be prevented from writing :file:`.pyc` or :file:`.pyo`
   1759 files by supplying the :option:`-B` switch to the Python interpreter,
   1760 or by setting the :envvar:`PYTHONDONTWRITEBYTECODE` environment
   1761 variable before running the interpreter.  This setting is available to
   1762 Python programs as the ``sys.dont_write_bytecode`` variable, and
   1763 Python code can change the value to modify the interpreter's
   1764 behaviour.  (Contributed by Neal Norwitz and Georg Brandl.)
   1765 
   1766 The encoding used for standard input, output, and standard error can
   1767 be specified by setting the :envvar:`PYTHONIOENCODING` environment
   1768 variable before running the interpreter.  The value should be a string
   1769 in the form ``<encoding>`` or ``<encoding>:<errorhandler>``.
   1770 The *encoding* part specifies the encoding's name, e.g. ``utf-8`` or
   1771 ``latin-1``; the optional *errorhandler* part specifies
   1772 what to do with characters that can't be handled by the encoding,
   1773 and  should be one of "error", "ignore", or "replace".   (Contributed
   1774 by Martin von Loewis.)
   1775 
   1776 .. ======================================================================
   1777 
   1778 New and Improved Modules
   1779 ========================
   1780 
   1781 As in every release, Python's standard library received a number of
   1782 enhancements and bug fixes.  Here's a partial list of the most notable
   1783 changes, sorted alphabetically by module name. Consult the
   1784 :file:`Misc/NEWS` file in the source tree for a more complete list of
   1785 changes, or look through the Subversion logs for all the details.
   1786 
   1787 * The :mod:`asyncore` and :mod:`asynchat` modules are
   1788   being actively maintained again, and a number of patches and bugfixes
   1789   were applied.  (Maintained by Josiah Carlson; see :issue:`1736190` for
   1790   one patch.)
   1791 
   1792 * The :mod:`bsddb` module also has a new maintainer, Jess Cea Avion, and the package
   1793   is now available as a standalone package.  The web page for the package is
   1794   `www.jcea.es/programacion/pybsddb.htm
   1795   <https://www.jcea.es/programacion/pybsddb.htm>`__.
   1796   The plan is to remove the package from the standard library
   1797   in Python 3.0, because its pace of releases is much more frequent than
   1798   Python's.
   1799 
   1800   The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol
   1801   available, instead of restricting itself to protocol 1.
   1802   (Contributed by W. Barnes.)
   1803 
   1804 * The :mod:`cgi` module will now read variables from the query string
   1805   of an HTTP POST request.  This makes it possible to use form actions
   1806   with URLs that include query strings such as
   1807   "/cgi-bin/add.py?category=1".  (Contributed by Alexandre Fiori and
   1808   Nubis; :issue:`1817`.)
   1809 
   1810   The :func:`parse_qs` and :func:`parse_qsl` functions have been
   1811   relocated from the :mod:`cgi` module to the :mod:`urlparse` module.
   1812   The versions still available in the :mod:`cgi` module will
   1813   trigger :exc:`PendingDeprecationWarning` messages in 2.6
   1814   (:issue:`600362`).
   1815 
   1816 * The :mod:`cmath` module underwent extensive revision,
   1817   contributed by Mark Dickinson and Christian Heimes.
   1818   Five new functions were added:
   1819 
   1820   * :func:`polar` converts a complex number to polar form, returning
   1821     the modulus and argument of the complex number.
   1822 
   1823   * :func:`rect` does the opposite, turning a modulus, argument pair
   1824     back into the corresponding complex number.
   1825 
   1826   * :func:`phase` returns the argument (also called the angle) of a complex
   1827     number.
   1828 
   1829   * :func:`isnan` returns True if either
   1830     the real or imaginary part of its argument is a NaN.
   1831 
   1832   * :func:`isinf` returns True if either the real or imaginary part of
   1833     its argument is infinite.
   1834 
   1835   The revisions also improved the numerical soundness of the
   1836   :mod:`cmath` module.  For all functions, the real and imaginary
   1837   parts of the results are accurate to within a few units of least
   1838   precision (ulps) whenever possible.  See :issue:`1381` for the
   1839   details.  The branch cuts for :func:`asinh`, :func:`atanh`: and
   1840   :func:`atan` have also been corrected.
   1841 
   1842   The tests for the module have been greatly expanded; nearly 2000 new
   1843   test cases exercise the algebraic functions.
   1844 
   1845   On IEEE 754 platforms, the :mod:`cmath` module now handles IEEE 754
   1846   special values and floating-point exceptions in a manner consistent
   1847   with Annex 'G' of the C99 standard.
   1848 
   1849 * A new data type in the :mod:`collections` module: :class:`namedtuple(typename,
   1850   fieldnames)` is a factory function that creates subclasses of the standard tuple
   1851   whose fields are accessible by name as well as index.  For example::
   1852 
   1853      >>> var_type = collections.namedtuple('variable',
   1854      ...             'id name type size')
   1855      >>> # Names are separated by spaces or commas.
   1856      >>> # 'id, name, type, size' would also work.
   1857      >>> var_type._fields
   1858      ('id', 'name', 'type', 'size')
   1859 
   1860      >>> var = var_type(1, 'frequency', 'int', 4)
   1861      >>> print var[0], var.id    # Equivalent
   1862      1 1
   1863      >>> print var[2], var.type  # Equivalent
   1864      int int
   1865      >>> var._asdict()
   1866      {'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
   1867      >>> v2 = var._replace(name='amplitude')
   1868      >>> v2
   1869      variable(id=1, name='amplitude', type='int', size=4)
   1870 
   1871   Several places in the standard library that returned tuples have
   1872   been modified to return :class:`namedtuple` instances.  For example,
   1873   the :meth:`Decimal.as_tuple` method now returns a named tuple with
   1874   :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
   1875 
   1876   (Contributed by Raymond Hettinger.)
   1877 
   1878 * Another change to the :mod:`collections` module is that the
   1879   :class:`deque` type now supports an optional *maxlen* parameter;
   1880   if supplied, the deque's size will be restricted to no more
   1881   than *maxlen* items.  Adding more items to a full deque causes
   1882   old items to be discarded.
   1883 
   1884   ::
   1885 
   1886     >>> from collections import deque
   1887     >>> dq=deque(maxlen=3)
   1888     >>> dq
   1889     deque([], maxlen=3)
   1890     >>> dq.append(1); dq.append(2); dq.append(3)
   1891     >>> dq
   1892     deque([1, 2, 3], maxlen=3)
   1893     >>> dq.append(4)
   1894     >>> dq
   1895     deque([2, 3, 4], maxlen=3)
   1896 
   1897   (Contributed by Raymond Hettinger.)
   1898 
   1899 * The :mod:`Cookie` module's :class:`Morsel` objects now support an
   1900   :attr:`httponly` attribute.  In some browsers. cookies with this attribute
   1901   set cannot be accessed or manipulated by JavaScript code.
   1902   (Contributed by Arvin Schnell; :issue:`1638033`.)
   1903 
   1904 * A new window method in the :mod:`curses` module,
   1905   :meth:`chgat`, changes the display attributes for a certain number of
   1906   characters on a single line.  (Contributed by Fabian Kreutz.)
   1907 
   1908   ::
   1909 
   1910      # Boldface text starting at y=0,x=21
   1911      # and affecting the rest of the line.
   1912      stdscr.chgat(0, 21, curses.A_BOLD)
   1913 
   1914   The :class:`Textbox` class in the :mod:`curses.textpad` module
   1915   now supports editing in insert mode as well as overwrite mode.
   1916   Insert mode is enabled by supplying a true value for the *insert_mode*
   1917   parameter when creating the :class:`Textbox` instance.
   1918 
   1919 * The :mod:`datetime` module's :meth:`strftime` methods now support a
   1920   ``%f`` format code that expands to the number of microseconds in the
   1921   object, zero-padded on
   1922   the left to six places.  (Contributed by Skip Montanaro; :issue:`1158`.)
   1923 
   1924 * The :mod:`decimal` module was updated to version 1.66 of
   1925   `the General Decimal Specification <http://speleotrove.com/decimal/decarith.html>`__.  New features
   1926   include some methods for some basic mathematical functions such as
   1927   :meth:`exp` and :meth:`log10`::
   1928 
   1929     >>> Decimal(1).exp()
   1930     Decimal("2.718281828459045235360287471")
   1931     >>> Decimal("2.7182818").ln()
   1932     Decimal("0.9999999895305022877376682436")
   1933     >>> Decimal(1000).log10()
   1934     Decimal("3")
   1935 
   1936   The :meth:`as_tuple` method of :class:`Decimal` objects now returns a
   1937   named tuple with :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
   1938 
   1939   (Implemented by Facundo Batista and Mark Dickinson.  Named tuple
   1940   support added by Raymond Hettinger.)
   1941 
   1942 * The :mod:`difflib` module's :class:`SequenceMatcher` class
   1943   now returns named tuples representing matches,
   1944   with :attr:`a`, :attr:`b`, and :attr:`size` attributes.
   1945   (Contributed by Raymond Hettinger.)
   1946 
   1947 * An optional ``timeout`` parameter, specifying a timeout measured in
   1948   seconds, was added to the :class:`ftplib.FTP` class constructor as
   1949   well as the :meth:`connect` method.  (Added by Facundo Batista.)
   1950   Also, the :class:`FTP` class's :meth:`storbinary` and
   1951   :meth:`storlines` now take an optional *callback* parameter that
   1952   will be called with each block of data after the data has been sent.
   1953   (Contributed by Phil Schwartz; :issue:`1221598`.)
   1954 
   1955 * The :func:`reduce` built-in function is also available in the
   1956   :mod:`functools` module.  In Python 3.0, the builtin has been
   1957   dropped and :func:`reduce` is only available from :mod:`functools`;
   1958   currently there are no plans to drop the builtin in the 2.x series.
   1959   (Patched by Christian Heimes; :issue:`1739906`.)
   1960 
   1961 * When possible, the :mod:`getpass` module will now use
   1962   :file:`/dev/tty` to print a prompt message and read the password,
   1963   falling back to standard error and standard input.  If the
   1964   password may be echoed to the terminal, a warning is printed before
   1965   the prompt is displayed.  (Contributed by Gregory P. Smith.)
   1966 
   1967 * The :func:`glob.glob` function can now return Unicode filenames if
   1968   a Unicode path was used and Unicode filenames are matched within the
   1969   directory.  (:issue:`1001604`)
   1970 
   1971 * A new function in the :mod:`heapq` module, ``merge(iter1, iter2, ...)``,
   1972   takes any number of iterables returning data in sorted
   1973   order, and returns a new generator that returns the contents of all
   1974   the iterators, also in sorted order.  For example::
   1975 
   1976       >>> list(heapq.merge([1, 3, 5, 9], [2, 8, 16]))
   1977       [1, 2, 3, 5, 8, 9, 16]
   1978 
   1979   Another new function, ``heappushpop(heap, item)``,
   1980   pushes *item* onto *heap*, then pops off and returns the smallest item.
   1981   This is more efficient than making a call to :func:`heappush` and then
   1982   :func:`heappop`.
   1983 
   1984   :mod:`heapq` is now implemented to only use less-than comparison,
   1985   instead of the less-than-or-equal comparison it previously used.
   1986   This makes :mod:`heapq`'s usage of a type match the
   1987   :meth:`list.sort` method.
   1988   (Contributed by Raymond Hettinger.)
   1989 
   1990 * An optional ``timeout`` parameter, specifying a timeout measured in
   1991   seconds, was added to the :class:`httplib.HTTPConnection` and
   1992   :class:`HTTPSConnection` class constructors.  (Added by Facundo
   1993   Batista.)
   1994 
   1995 * Most of the :mod:`inspect` module's functions, such as
   1996   :func:`getmoduleinfo` and :func:`getargs`, now return named tuples.
   1997   In addition to behaving like tuples, the elements of the  return value
   1998   can also be accessed as attributes.
   1999   (Contributed by Raymond Hettinger.)
   2000 
   2001   Some new functions in the module include
   2002   :func:`isgenerator`, :func:`isgeneratorfunction`,
   2003   and :func:`isabstract`.
   2004 
   2005 * The :mod:`itertools` module gained several new functions.
   2006 
   2007   ``izip_longest(iter1, iter2, ...[, fillvalue])`` makes tuples from
   2008   each of the elements; if some of the iterables are shorter than
   2009   others, the missing values are set to *fillvalue*.  For example::
   2010 
   2011      >>> tuple(itertools.izip_longest([1,2,3], [1,2,3,4,5]))
   2012      ((1, 1), (2, 2), (3, 3), (None, 4), (None, 5))
   2013 
   2014   ``product(iter1, iter2, ..., [repeat=N])`` returns the Cartesian product
   2015   of the supplied iterables, a set of tuples containing
   2016   every possible combination of the elements returned from each iterable. ::
   2017 
   2018      >>> list(itertools.product([1,2,3], [4,5,6]))
   2019      [(1, 4), (1, 5), (1, 6),
   2020       (2, 4), (2, 5), (2, 6),
   2021       (3, 4), (3, 5), (3, 6)]
   2022 
   2023   The optional *repeat* keyword argument is used for taking the
   2024   product of an iterable or a set of iterables with themselves,
   2025   repeated *N* times.  With a single iterable argument, *N*-tuples
   2026   are returned::
   2027 
   2028      >>> list(itertools.product([1,2], repeat=3))
   2029      [(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
   2030       (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
   2031 
   2032   With two iterables, *2N*-tuples are returned. ::
   2033 
   2034      >>> list(itertools.product([1,2], [3,4], repeat=2))
   2035      [(1, 3, 1, 3), (1, 3, 1, 4), (1, 3, 2, 3), (1, 3, 2, 4),
   2036       (1, 4, 1, 3), (1, 4, 1, 4), (1, 4, 2, 3), (1, 4, 2, 4),
   2037       (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),
   2038       (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]
   2039 
   2040   ``combinations(iterable, r)`` returns sub-sequences of length *r* from
   2041   the elements of *iterable*. ::
   2042 
   2043     >>> list(itertools.combinations('123', 2))
   2044     [('1', '2'), ('1', '3'), ('2', '3')]
   2045     >>> list(itertools.combinations('123', 3))
   2046     [('1', '2', '3')]
   2047     >>> list(itertools.combinations('1234', 3))
   2048     [('1', '2', '3'), ('1', '2', '4'),
   2049      ('1', '3', '4'), ('2', '3', '4')]
   2050 
   2051   ``permutations(iter[, r])`` returns all the permutations of length *r* of
   2052   the iterable's elements.  If *r* is not specified, it will default to the
   2053   number of elements produced by the iterable. ::
   2054 
   2055     >>> list(itertools.permutations([1,2,3,4], 2))
   2056     [(1, 2), (1, 3), (1, 4),
   2057      (2, 1), (2, 3), (2, 4),
   2058      (3, 1), (3, 2), (3, 4),
   2059      (4, 1), (4, 2), (4, 3)]
   2060 
   2061   ``itertools.chain(*iterables)`` is an existing function in
   2062   :mod:`itertools` that gained a new constructor in Python 2.6.
   2063   ``itertools.chain.from_iterable(iterable)`` takes a single
   2064   iterable that should return other iterables.  :func:`chain` will
   2065   then return all the elements of the first iterable, then
   2066   all the elements of the second, and so on. ::
   2067 
   2068     >>> list(itertools.chain.from_iterable([[1,2,3], [4,5,6]]))
   2069     [1, 2, 3, 4, 5, 6]
   2070 
   2071   (All contributed by Raymond Hettinger.)
   2072 
   2073 * The :mod:`logging` module's :class:`FileHandler` class
   2074   and its subclasses :class:`WatchedFileHandler`, :class:`RotatingFileHandler`,
   2075   and :class:`TimedRotatingFileHandler` now
   2076   have an optional *delay* parameter to their constructors.  If *delay*
   2077   is true, opening of the log file is deferred until the first
   2078   :meth:`emit` call is made.  (Contributed by Vinay Sajip.)
   2079 
   2080   :class:`TimedRotatingFileHandler` also has a *utc* constructor
   2081   parameter.  If the argument is true, UTC time will be used
   2082   in determining when midnight occurs and in generating filenames;
   2083   otherwise local time will be used.
   2084 
   2085 * Several new functions were added to the :mod:`math` module:
   2086 
   2087   * :func:`~math.isinf` and :func:`~math.isnan` determine whether a given float
   2088     is a (positive or negative) infinity or a NaN (Not a Number), respectively.
   2089 
   2090   * :func:`~math.copysign` copies the sign bit of an IEEE 754 number,
   2091     returning the absolute value of *x* combined with the sign bit of
   2092     *y*.  For example, ``math.copysign(1, -0.0)`` returns -1.0.
   2093     (Contributed by Christian Heimes.)
   2094 
   2095   * :func:`~math.factorial` computes the factorial of a number.
   2096     (Contributed by Raymond Hettinger; :issue:`2138`.)
   2097 
   2098   * :func:`~math.fsum` adds up the stream of numbers from an iterable,
   2099     and is careful to avoid loss of precision through using partial sums.
   2100     (Contributed by Jean Brouwers, Raymond Hettinger, and Mark Dickinson;
   2101     :issue:`2819`.)
   2102 
   2103   * :func:`~math.acosh`, :func:`~math.asinh`
   2104     and :func:`~math.atanh` compute the inverse hyperbolic functions.
   2105 
   2106   * :func:`~math.log1p` returns the natural logarithm of *1+x*
   2107     (base *e*).
   2108 
   2109   * :func:`trunc` rounds a number toward zero, returning the closest
   2110     :class:`Integral` that's between the function's argument and zero.
   2111     Added as part of the backport of
   2112     `PEP 3141's type hierarchy for numbers <#pep-3141>`__.
   2113 
   2114 * The :mod:`math` module has been improved to give more consistent
   2115   behaviour across platforms, especially with respect to handling of
   2116   floating-point exceptions and IEEE 754 special values.
   2117 
   2118   Whenever possible, the module follows the recommendations of the C99
   2119   standard about 754's special values.  For example, ``sqrt(-1.)``
   2120   should now give a :exc:`ValueError` across almost all platforms,
   2121   while ``sqrt(float('NaN'))`` should return a NaN on all IEEE 754
   2122   platforms.  Where Annex 'F' of the C99 standard recommends signaling
   2123   'divide-by-zero' or 'invalid', Python will raise :exc:`ValueError`.
   2124   Where Annex 'F' of the C99 standard recommends signaling 'overflow',
   2125   Python will raise :exc:`OverflowError`.  (See :issue:`711019` and
   2126   :issue:`1640`.)
   2127 
   2128   (Contributed by Christian Heimes and Mark Dickinson.)
   2129 
   2130 * :class:`~mmap.mmap` objects now have a :meth:`rfind` method that searches for a
   2131   substring beginning at the end of the string and searching
   2132   backwards.  The :meth:`find` method also gained an *end* parameter
   2133   giving an index at which to stop searching.
   2134   (Contributed by John Lenton.)
   2135 
   2136 * The :mod:`operator` module gained a
   2137   :func:`methodcaller` function that takes a name and an optional
   2138   set of arguments, returning a callable that will call
   2139   the named function on any arguments passed to it.  For example::
   2140 
   2141     >>> # Equivalent to lambda s: s.replace('old', 'new')
   2142     >>> replacer = operator.methodcaller('replace', 'old', 'new')
   2143     >>> replacer('old wine in old bottles')
   2144     'new wine in new bottles'
   2145 
   2146   (Contributed by Georg Brandl, after a suggestion by Gregory Petrosyan.)
   2147 
   2148   The :func:`attrgetter` function now accepts dotted names and performs
   2149   the corresponding attribute lookups::
   2150 
   2151     >>> inst_name = operator.attrgetter(
   2152     ...        '__class__.__name__')
   2153     >>> inst_name('')
   2154     'str'
   2155     >>> inst_name(help)
   2156     '_Helper'
   2157 
   2158   (Contributed by Georg Brandl, after a suggestion by Barry Warsaw.)
   2159 
   2160 * The :mod:`os` module now wraps several new system calls.
   2161   ``fchmod(fd, mode)`` and ``fchown(fd, uid, gid)`` change the mode
   2162   and ownership of an opened file, and ``lchmod(path, mode)`` changes
   2163   the mode of a symlink.  (Contributed by Georg Brandl and Christian
   2164   Heimes.)
   2165 
   2166   :func:`chflags` and :func:`lchflags` are wrappers for the
   2167   corresponding system calls (where they're available), changing the
   2168   flags set on a file.  Constants for the flag values are defined in
   2169   the :mod:`stat` module; some possible values include
   2170   :const:`UF_IMMUTABLE` to signal the file may not be changed and
   2171   :const:`UF_APPEND` to indicate that data can only be appended to the
   2172   file.  (Contributed by M. Levinson.)
   2173 
   2174   ``os.closerange(low, high)`` efficiently closes all file descriptors
   2175   from *low* to *high*, ignoring any errors and not including *high* itself.
   2176   This function is now used by the :mod:`subprocess` module to make starting
   2177   processes faster.  (Contributed by Georg Brandl; :issue:`1663329`.)
   2178 
   2179 * The ``os.environ`` object's :meth:`clear` method will now unset the
   2180   environment variables using :func:`os.unsetenv` in addition to clearing
   2181   the object's keys.  (Contributed by Martin Horcicka; :issue:`1181`.)
   2182 
   2183 * The :func:`os.walk` function now has a ``followlinks`` parameter. If
   2184   set to True, it will follow symlinks pointing to directories and
   2185   visit the directory's contents.  For backward compatibility, the
   2186   parameter's default value is false.  Note that the function can fall
   2187   into an infinite recursion if there's a symlink that points to a
   2188   parent directory.  (:issue:`1273829`)
   2189 
   2190 * In the :mod:`os.path` module, the :func:`splitext` function
   2191   has been changed to not split on leading period characters.
   2192   This produces better results when operating on Unix's dot-files.
   2193   For example, ``os.path.splitext('.ipython')``
   2194   now returns ``('.ipython', '')`` instead of ``('', '.ipython')``.
   2195   (:issue:`1115886`)
   2196 
   2197   A new function, ``os.path.relpath(path, start='.')``, returns a relative path
   2198   from the ``start`` path, if it's supplied, or from the current
   2199   working directory to the destination ``path``.  (Contributed by
   2200   Richard Barran; :issue:`1339796`.)
   2201 
   2202   On Windows, :func:`os.path.expandvars` will now expand environment variables
   2203   given in the form "%var%", and "~user" will be expanded into the
   2204   user's home directory path.  (Contributed by Josiah Carlson;
   2205   :issue:`957650`.)
   2206 
   2207 * The Python debugger provided by the :mod:`pdb` module
   2208   gained a new command: "run" restarts the Python program being debugged
   2209   and can optionally take new command-line arguments for the program.
   2210   (Contributed by Rocky Bernstein; :issue:`1393667`.)
   2211 
   2212 * The :func:`pdb.post_mortem` function, used to begin debugging a
   2213   traceback, will now use the traceback returned by :func:`sys.exc_info`
   2214   if no traceback is supplied.   (Contributed by Facundo Batista;
   2215   :issue:`1106316`.)
   2216 
   2217 * The :mod:`pickletools` module now has an :func:`optimize` function
   2218   that takes a string containing a pickle and removes some unused
   2219   opcodes, returning a shorter pickle that contains the same data structure.
   2220   (Contributed by Raymond Hettinger.)
   2221 
   2222 * A :func:`get_data` function was added to the :mod:`pkgutil`
   2223   module that returns the contents of resource files included
   2224   with an installed Python package.  For example::
   2225 
   2226     >>> import pkgutil
   2227     >>> print pkgutil.get_data('test', 'exception_hierarchy.txt')
   2228     BaseException
   2229      +-- SystemExit
   2230      +-- KeyboardInterrupt
   2231      +-- GeneratorExit
   2232      +-- Exception
   2233           +-- StopIteration
   2234           +-- StandardError
   2235      ...
   2236 
   2237   (Contributed by Paul Moore; :issue:`2439`.)
   2238 
   2239 * The :mod:`pyexpat` module's :class:`Parser` objects now allow setting
   2240   their :attr:`buffer_size` attribute to change the size of the buffer
   2241   used to hold character data.
   2242   (Contributed by Achim Gaedke; :issue:`1137`.)
   2243 
   2244 * The :mod:`Queue` module now provides queue variants that retrieve entries
   2245   in different orders.  The :class:`PriorityQueue` class stores
   2246   queued items in a heap and retrieves them in priority order,
   2247   and :class:`LifoQueue` retrieves the most recently added entries first,
   2248   meaning that it behaves like a stack.
   2249   (Contributed by Raymond Hettinger.)
   2250 
   2251 * The :mod:`random` module's :class:`Random` objects can
   2252   now be pickled on a 32-bit system and unpickled on a 64-bit
   2253   system, and vice versa.  Unfortunately, this change also means
   2254   that Python 2.6's :class:`Random` objects can't be unpickled correctly
   2255   on earlier versions of Python.
   2256   (Contributed by Shawn Ligocki; :issue:`1727780`.)
   2257 
   2258   The new ``triangular(low, high, mode)`` function returns random
   2259   numbers following a triangular distribution.   The returned values
   2260   are between *low* and *high*, not including *high* itself, and
   2261   with *mode* as the most frequently occurring value
   2262   in the distribution.  (Contributed by Wladmir van der Laan and
   2263   Raymond Hettinger; :issue:`1681432`.)
   2264 
   2265 * Long regular expression searches carried out by the  :mod:`re`
   2266   module will check for signals being delivered, so
   2267   time-consuming searches can now be interrupted.
   2268   (Contributed by Josh Hoyt and Ralf Schmitt; :issue:`846388`.)
   2269 
   2270   The regular expression module is implemented by compiling bytecodes
   2271   for a tiny regex-specific virtual machine.  Untrusted code
   2272   could create malicious strings of bytecode directly and cause crashes,
   2273   so Python 2.6 includes a verifier for the regex bytecode.
   2274   (Contributed by Guido van Rossum from work for Google App Engine;
   2275   :issue:`3487`.)
   2276 
   2277 * The :mod:`rlcompleter` module's :meth:`Completer.complete()` method
   2278   will now ignore exceptions triggered while evaluating a name.
   2279   (Fixed by Lorenz Quack; :issue:`2250`.)
   2280 
   2281 * The :mod:`sched` module's :class:`scheduler` instances now
   2282   have a read-only :attr:`queue` attribute that returns the
   2283   contents of the scheduler's queue, represented as a list of
   2284   named tuples with the fields ``(time, priority, action, argument)``.
   2285   (Contributed by Raymond Hettinger; :issue:`1861`.)
   2286 
   2287 * The :mod:`select` module now has wrapper functions
   2288   for the Linux :c:func:`epoll` and BSD :c:func:`kqueue` system calls.
   2289   :meth:`modify` method was added to the existing :class:`poll`
   2290   objects; ``pollobj.modify(fd, eventmask)`` takes a file descriptor
   2291   or file object and an event mask, modifying the recorded event mask
   2292   for that file.
   2293   (Contributed by Christian Heimes; :issue:`1657`.)
   2294 
   2295 * The :func:`shutil.copytree` function now has an optional *ignore* argument
   2296   that takes a callable object.  This callable will receive each directory path
   2297   and a list of the directory's contents, and returns a list of names that
   2298   will be ignored, not copied.
   2299 
   2300   The :mod:`shutil` module also provides an :func:`ignore_patterns`
   2301   function for use with this new parameter.  :func:`ignore_patterns`
   2302   takes an arbitrary number of glob-style patterns and returns a
   2303   callable that will ignore any files and directories that match any
   2304   of these patterns.  The following example copies a directory tree,
   2305   but skips both :file:`.svn` directories and Emacs backup files,
   2306   which have names ending with '~'::
   2307 
   2308       shutil.copytree('Doc/library', '/tmp/library',
   2309                       ignore=shutil.ignore_patterns('*~', '.svn'))
   2310 
   2311   (Contributed by Tarek Ziad; :issue:`2663`.)
   2312 
   2313 * Integrating signal handling with GUI handling event loops
   2314   like those used by Tkinter or GTk+ has long been a problem; most
   2315   software ends up polling, waking up every fraction of a second to check
   2316   if any GUI events have occurred.
   2317   The :mod:`signal` module can now make this more efficient.
   2318   Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor
   2319   to be used; when a signal is received, a byte is written to that
   2320   file descriptor.  There's also a C-level function,
   2321   :c:func:`PySignal_SetWakeupFd`, for setting the descriptor.
   2322 
   2323   Event loops will use this by opening a pipe to create two descriptors,
   2324   one for reading and one for writing.  The writable descriptor
   2325   will be passed to :func:`set_wakeup_fd`, and the readable descriptor
   2326   will be added to the list of descriptors monitored by the event loop via
   2327   :c:func:`select` or :c:func:`poll`.
   2328   On receiving a signal, a byte will be written and the main event loop
   2329   will be woken up, avoiding the need to poll.
   2330 
   2331   (Contributed by Adam Olsen; :issue:`1583`.)
   2332 
   2333   The :func:`siginterrupt` function is now available from Python code,
   2334   and allows changing whether signals can interrupt system calls or not.
   2335   (Contributed by Ralf Schmitt.)
   2336 
   2337   The :func:`setitimer` and :func:`getitimer` functions have also been
   2338   added (where they're available).  :func:`setitimer`
   2339   allows setting interval timers that will cause a signal to be
   2340   delivered to the process after a specified time, measured in
   2341   wall-clock time, consumed process time, or combined process+system
   2342   time.  (Contributed by Guilherme Polo; :issue:`2240`.)
   2343 
   2344 * The :mod:`smtplib` module now supports SMTP over SSL thanks to the
   2345   addition of the :class:`SMTP_SSL` class. This class supports an
   2346   interface identical to the existing :class:`SMTP` class.
   2347   (Contributed by Monty Taylor.)  Both class constructors also have an
   2348   optional ``timeout`` parameter that specifies a timeout for the
   2349   initial connection attempt, measured in seconds.  (Contributed by
   2350   Facundo Batista.)
   2351 
   2352   An implementation of the LMTP protocol (:rfc:`2033`) was also added
   2353   to the module.  LMTP is used in place of SMTP when transferring
   2354   e-mail between agents that don't manage a mail queue.  (LMTP
   2355   implemented by Leif Hedstrom; :issue:`957003`.)
   2356 
   2357   :meth:`SMTP.starttls` now complies with :rfc:`3207` and forgets any
   2358   knowledge obtained from the server not obtained from the TLS
   2359   negotiation itself.  (Patch contributed by Bill Fenner;
   2360   :issue:`829951`.)
   2361 
   2362 * The :mod:`socket` module now supports TIPC (http://tipc.sourceforge.net/),
   2363   a high-performance non-IP-based protocol designed for use in clustered
   2364   environments.  TIPC addresses are 4- or 5-tuples.
   2365   (Contributed by Alberto Bertogli; :issue:`1646`.)
   2366 
   2367   A new function, :func:`create_connection`, takes an address and
   2368   connects to it using an optional timeout value, returning the
   2369   connected socket object.  This function also looks up the address's
   2370   type and connects to it using IPv4 or IPv6 as appropriate.  Changing
   2371   your code to use :func:`create_connection` instead of
   2372   ``socket(socket.AF_INET, ...)`` may be all that's required to make
   2373   your code work with IPv6.
   2374 
   2375 * The base classes in the :mod:`SocketServer` module now support
   2376   calling a :meth:`handle_timeout` method after a span of inactivity
   2377   specified by the server's :attr:`timeout` attribute.  (Contributed
   2378   by Michael Pomraning.)  The :meth:`serve_forever` method
   2379   now takes an optional poll interval measured in seconds,
   2380   controlling how often the server will check for a shutdown request.
   2381   (Contributed by Pedro Werneck and Jeffrey Yasskin;
   2382   :issue:`742598`, :issue:`1193577`.)
   2383 
   2384 * The :mod:`sqlite3` module, maintained by Gerhard Haering,
   2385   has been updated from version 2.3.2 in Python 2.5 to
   2386   version 2.4.1.
   2387 
   2388 * The :mod:`struct` module now supports the C99 :c:type:`_Bool` type,
   2389   using the format character ``'?'``.
   2390   (Contributed by David Remahl.)
   2391 
   2392 * The :class:`Popen` objects provided by the :mod:`subprocess` module
   2393   now have :meth:`terminate`, :meth:`kill`, and :meth:`send_signal` methods.
   2394   On Windows, :meth:`send_signal` only supports the :const:`SIGTERM`
   2395   signal, and all these methods are aliases for the Win32 API function
   2396   :c:func:`TerminateProcess`.
   2397   (Contributed by Christian Heimes.)
   2398 
   2399 * A new variable in the :mod:`sys` module, :attr:`float_info`, is an
   2400   object containing information derived from the :file:`float.h` file
   2401   about the platform's floating-point support.  Attributes of this
   2402   object include :attr:`mant_dig` (number of digits in the mantissa),
   2403   :attr:`epsilon` (smallest difference between 1.0 and the next
   2404   largest value representable), and several others.  (Contributed by
   2405   Christian Heimes; :issue:`1534`.)
   2406 
   2407   Another new variable, :attr:`dont_write_bytecode`, controls whether Python
   2408   writes any :file:`.pyc` or :file:`.pyo` files on importing a module.
   2409   If this variable is true, the compiled files are not written.  The
   2410   variable is initially set on start-up by supplying the :option:`-B`
   2411   switch to the Python interpreter, or by setting the
   2412   :envvar:`PYTHONDONTWRITEBYTECODE` environment variable before
   2413   running the interpreter.  Python code can subsequently
   2414   change the value of this variable to control whether bytecode files
   2415   are written or not.
   2416   (Contributed by Neal Norwitz and Georg Brandl.)
   2417 
   2418   Information about the command-line arguments supplied to the Python
   2419   interpreter is available by reading attributes of a named
   2420   tuple available as ``sys.flags``.  For example, the :attr:`verbose`
   2421   attribute is true if Python
   2422   was executed in verbose mode, :attr:`debug` is true in debugging mode, etc.
   2423   These attributes are all read-only.
   2424   (Contributed by Christian Heimes.)
   2425 
   2426   A new function, :func:`getsizeof`, takes a Python object and returns
   2427   the amount of memory used by the object, measured in bytes.  Built-in
   2428   objects return correct results; third-party extensions may not,
   2429   but can define a :meth:`__sizeof__` method to return the
   2430   object's size.
   2431   (Contributed by Robert Schuppenies; :issue:`2898`.)
   2432 
   2433   It's now possible to determine the current profiler and tracer functions
   2434   by calling :func:`sys.getprofile` and :func:`sys.gettrace`.
   2435   (Contributed by Georg Brandl; :issue:`1648`.)
   2436 
   2437 * The :mod:`tarfile` module now supports POSIX.1-2001 (pax) tarfiles in
   2438   addition to the POSIX.1-1988 (ustar) and GNU tar formats that were
   2439   already supported.  The default format is GNU tar; specify the
   2440   ``format`` parameter to open a file using a different format::
   2441 
   2442     tar = tarfile.open("output.tar", "w",
   2443                        format=tarfile.PAX_FORMAT)
   2444 
   2445   The new ``encoding`` and ``errors`` parameters specify an encoding and
   2446   an error handling scheme for character conversions.  ``'strict'``,
   2447   ``'ignore'``, and ``'replace'`` are the three standard ways Python can
   2448   handle errors,;
   2449   ``'utf-8'`` is a special value that replaces bad characters with
   2450   their UTF-8 representation.  (Character conversions occur because the
   2451   PAX format supports Unicode filenames, defaulting to UTF-8 encoding.)
   2452 
   2453   The :meth:`TarFile.add` method now accepts an ``exclude`` argument that's
   2454   a function that can be used to exclude certain filenames from
   2455   an archive.
   2456   The function must take a filename and return true if the file
   2457   should be excluded or false if it should be archived.
   2458   The function is applied to both the name initially passed to :meth:`add`
   2459   and to the names of files in recursively-added directories.
   2460 
   2461   (All changes contributed by Lars Gustbel).
   2462 
   2463 * An optional ``timeout`` parameter was added to the
   2464   :class:`telnetlib.Telnet` class constructor, specifying a timeout
   2465   measured in seconds.  (Added by Facundo Batista.)
   2466 
   2467 * The :class:`tempfile.NamedTemporaryFile` class usually deletes
   2468   the temporary file it created when the file is closed.  This
   2469   behaviour can now be changed by passing ``delete=False`` to the
   2470   constructor.  (Contributed by Damien Miller; :issue:`1537850`.)
   2471 
   2472   A new class, :class:`SpooledTemporaryFile`, behaves like
   2473   a temporary file but stores its data in memory until a maximum size is
   2474   exceeded.  On reaching that limit, the contents will be written to
   2475   an on-disk temporary file.  (Contributed by Dustin J. Mitchell.)
   2476 
   2477   The :class:`NamedTemporaryFile` and :class:`SpooledTemporaryFile` classes
   2478   both work as context managers, so you can write
   2479   ``with tempfile.NamedTemporaryFile() as tmp: ...``.
   2480   (Contributed by Alexander Belopolsky; :issue:`2021`.)
   2481 
   2482 * The :mod:`test.test_support` module gained a number
   2483   of context managers useful for writing tests.
   2484   :func:`EnvironmentVarGuard` is a
   2485   context manager that temporarily changes environment variables and
   2486   automatically restores them to their old values.
   2487 
   2488   Another context manager, :class:`TransientResource`, can surround calls
   2489   to resources that may or may not be available; it will catch and
   2490   ignore a specified list of exceptions.  For example,
   2491   a network test may ignore certain failures when connecting to an
   2492   external web site::
   2493 
   2494       with test_support.TransientResource(IOError,
   2495                                       errno=errno.ETIMEDOUT):
   2496           f = urllib.urlopen('https://sf.net')
   2497           ...
   2498 
   2499   Finally, :func:`check_warnings` resets the :mod:`warning` module's
   2500   warning filters and returns an object that will record all warning
   2501   messages triggered (:issue:`3781`)::
   2502 
   2503       with test_support.check_warnings() as wrec:
   2504           warnings.simplefilter("always")
   2505           # ... code that triggers a warning ...
   2506           assert str(wrec.message) == "function is outdated"
   2507           assert len(wrec.warnings) == 1, "Multiple warnings raised"
   2508 
   2509   (Contributed by Brett Cannon.)
   2510 
   2511 * The :mod:`textwrap` module can now preserve existing whitespace
   2512   at the beginnings and ends of the newly-created lines
   2513   by specifying ``drop_whitespace=False``
   2514   as an argument::
   2515 
   2516     >>> S = """This  sentence  has a bunch   of
   2517     ...   extra   whitespace."""
   2518     >>> print textwrap.fill(S, width=15)
   2519     This  sentence
   2520     has a bunch
   2521     of    extra
   2522     whitespace.
   2523     >>> print textwrap.fill(S, drop_whitespace=False, width=15)
   2524     This  sentence
   2525       has a bunch
   2526        of    extra
   2527        whitespace.
   2528     >>>
   2529 
   2530   (Contributed by Dwayne Bailey; :issue:`1581073`.)
   2531 
   2532 * The :mod:`threading` module API is being changed to use properties
   2533   such as :attr:`daemon` instead of :meth:`setDaemon` and
   2534   :meth:`isDaemon` methods, and some methods have been renamed to use
   2535   underscores instead of camel-case; for example, the
   2536   :meth:`activeCount` method is renamed to :meth:`active_count`.  Both
   2537   the 2.6 and 3.0 versions of the module support the same properties
   2538   and renamed methods, but don't remove the old methods.  No date has been set
   2539   for the deprecation of the old APIs in Python 3.x; the old APIs won't
   2540   be removed in any 2.x version.
   2541   (Carried out by several people, most notably Benjamin Peterson.)
   2542 
   2543   The :mod:`threading` module's :class:`Thread` objects
   2544   gained an :attr:`ident` property that returns the thread's
   2545   identifier, a nonzero integer.  (Contributed by Gregory P. Smith;
   2546   :issue:`2871`.)
   2547 
   2548 * The :mod:`timeit` module now accepts callables as well as strings
   2549   for the statement being timed and for the setup code.
   2550   Two convenience functions were added for creating
   2551   :class:`Timer` instances:
   2552   ``repeat(stmt, setup, time, repeat, number)`` and
   2553   ``timeit(stmt, setup, time, number)`` create an instance and call
   2554   the corresponding method. (Contributed by Erik Demaine;
   2555   :issue:`1533909`.)
   2556 
   2557 * The :mod:`Tkinter` module now accepts lists and tuples for options,
   2558   separating the elements by spaces before passing the resulting value to
   2559   Tcl/Tk.
   2560   (Contributed by Guilherme Polo; :issue:`2906`.)
   2561 
   2562 * The :mod:`turtle` module for turtle graphics was greatly enhanced by
   2563   Gregor Lingl.  New features in the module include:
   2564 
   2565   * Better animation of turtle movement and rotation.
   2566   * Control over turtle movement using the new :meth:`delay`,
   2567     :meth:`tracer`, and :meth:`speed` methods.
   2568   * The ability to set new shapes for the turtle, and to
   2569     define a new coordinate system.
   2570   * Turtles now have an :meth:`undo()` method that can roll back actions.
   2571   * Simple support for reacting to input events such as mouse and keyboard
   2572     activity, making it possible to write simple games.
   2573   * A :file:`turtle.cfg` file can be used to customize the starting appearance
   2574     of the turtle's screen.
   2575   * The module's docstrings can be replaced by new docstrings that have been
   2576     translated into another language.
   2577 
   2578   (:issue:`1513695`)
   2579 
   2580 * An optional ``timeout`` parameter was added to the
   2581   :func:`urllib.urlopen` function and the
   2582   :class:`urllib.ftpwrapper` class constructor, as well as the
   2583   :func:`urllib2.urlopen` function.  The parameter specifies a timeout
   2584   measured in seconds.   For example::
   2585 
   2586      >>> u = urllib2.urlopen("http://slow.example.com",
   2587                              timeout=3)
   2588      Traceback (most recent call last):
   2589        ...
   2590      urllib2.URLError: <urlopen error timed out>
   2591      >>>
   2592 
   2593   (Added by Facundo Batista.)
   2594 
   2595 * The Unicode database provided by the :mod:`unicodedata` module
   2596   has been updated to version 5.1.0.  (Updated by
   2597   Martin von Loewis; :issue:`3811`.)
   2598 
   2599 * The :mod:`warnings` module's :func:`formatwarning` and :func:`showwarning`
   2600   gained an optional *line* argument that can be used to supply the
   2601   line of source code.  (Added as part of :issue:`1631171`, which re-implemented
   2602   part of the :mod:`warnings` module in C code.)
   2603 
   2604   A new function, :func:`catch_warnings`, is a context manager
   2605   intended for testing purposes that lets you temporarily modify the
   2606   warning filters and then restore their original values (:issue:`3781`).
   2607 
   2608 * The XML-RPC :class:`~SimpleXMLRPCServer.SimpleXMLRPCServer` and :class:`~DocXMLRPCServer.DocXMLRPCServer`
   2609   classes can now be prevented from immediately opening and binding to
   2610   their socket by passing True as the ``bind_and_activate``
   2611   constructor parameter.  This can be used to modify the instance's
   2612   :attr:`allow_reuse_address` attribute before calling the
   2613   :meth:`server_bind` and :meth:`server_activate` methods to
   2614   open the socket and begin listening for connections.
   2615   (Contributed by Peter Parente; :issue:`1599845`.)
   2616 
   2617   :class:`~SimpleXMLRPCServer.SimpleXMLRPCServer` also has a :attr:`_send_traceback_header`
   2618   attribute; if true, the exception and formatted traceback are returned
   2619   as HTTP headers "X-Exception" and "X-Traceback".  This feature is
   2620   for debugging purposes only and should not be used on production servers
   2621   because the tracebacks might reveal passwords or other sensitive
   2622   information.  (Contributed by Alan McIntyre as part of his
   2623   project for Google's Summer of Code 2007.)
   2624 
   2625 * The :mod:`xmlrpclib` module no longer automatically converts
   2626   :class:`datetime.date` and :class:`datetime.time` to the
   2627   :class:`xmlrpclib.DateTime` type; the conversion semantics were
   2628   not necessarily correct for all applications.  Code using
   2629   :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time`
   2630   instances. (:issue:`1330538`)  The code can also handle
   2631   dates before 1900 (contributed by Ralf Schmitt; :issue:`2014`)
   2632   and 64-bit integers represented by using ``<i8>`` in XML-RPC responses
   2633   (contributed by Riku Lindblad; :issue:`2985`).
   2634 
   2635 * The :mod:`zipfile` module's :class:`ZipFile` class now has
   2636   :meth:`extract` and :meth:`extractall` methods that will unpack
   2637   a single file or all the files in the archive to the current directory, or
   2638   to a specified directory::
   2639 
   2640     z = zipfile.ZipFile('python-251.zip')
   2641 
   2642     # Unpack a single file, writing it relative
   2643     # to the /tmp directory.
   2644     z.extract('Python/sysmodule.c', '/tmp')
   2645 
   2646     # Unpack all the files in the archive.
   2647     z.extractall()
   2648 
   2649   (Contributed by Alan McIntyre; :issue:`467924`.)
   2650 
   2651   The :meth:`open`, :meth:`read` and :meth:`extract` methods can now
   2652   take either a filename or a :class:`ZipInfo` object.  This is useful when an
   2653   archive accidentally contains a duplicated filename.
   2654   (Contributed by Graham Horler; :issue:`1775025`.)
   2655 
   2656   Finally, :mod:`zipfile` now supports using Unicode filenames
   2657   for archived files.  (Contributed by Alexey Borzenkov; :issue:`1734346`.)
   2658 
   2659 .. ======================================================================
   2660 .. whole new modules get described in subsections here
   2661 
   2662 The :mod:`ast` module
   2663 ----------------------
   2664 
   2665 The :mod:`ast` module provides an Abstract Syntax Tree
   2666 representation of Python code, and Armin Ronacher
   2667 contributed a set of helper functions that perform a variety of
   2668 common tasks.  These will be useful for HTML templating
   2669 packages, code analyzers, and similar tools that process
   2670 Python code.
   2671 
   2672 The :func:`parse` function takes an expression and returns an AST.
   2673 The :func:`dump` function outputs a representation of a tree, suitable
   2674 for debugging::
   2675 
   2676     import ast
   2677 
   2678     t = ast.parse("""
   2679     d = {}
   2680     for i in 'abcdefghijklm':
   2681         d[i + i] = ord(i) - ord('a') + 1
   2682     print d
   2683     """)
   2684     print ast.dump(t)
   2685 
   2686 This outputs a deeply nested tree::
   2687 
   2688     Module(body=[
   2689       Assign(targets=[
   2690         Name(id='d', ctx=Store())
   2691        ], value=Dict(keys=[], values=[]))
   2692       For(target=Name(id='i', ctx=Store()),
   2693           iter=Str(s='abcdefghijklm'), body=[
   2694         Assign(targets=[
   2695           Subscript(value=
   2696             Name(id='d', ctx=Load()),
   2697               slice=
   2698               Index(value=
   2699                 BinOp(left=Name(id='i', ctx=Load()), op=Add(),
   2700                  right=Name(id='i', ctx=Load()))), ctx=Store())
   2701          ], value=
   2702          BinOp(left=
   2703           BinOp(left=
   2704            Call(func=
   2705             Name(id='ord', ctx=Load()), args=[
   2706               Name(id='i', ctx=Load())
   2707              ], keywords=[], starargs=None, kwargs=None),
   2708            op=Sub(), right=Call(func=
   2709             Name(id='ord', ctx=Load()), args=[
   2710               Str(s='a')
   2711              ], keywords=[], starargs=None, kwargs=None)),
   2712            op=Add(), right=Num(n=1)))
   2713         ], orelse=[])
   2714        Print(dest=None, values=[
   2715          Name(id='d', ctx=Load())
   2716        ], nl=True)
   2717      ])
   2718 
   2719 The :func:`literal_eval` method takes a string or an AST
   2720 representing a literal expression, parses and evaluates it, and
   2721 returns the resulting value.  A literal expression is a Python
   2722 expression containing only strings, numbers, dictionaries,
   2723 etc. but no statements or function calls.  If you need to
   2724 evaluate an expression but cannot accept the security risk of using an
   2725 :func:`eval` call, :func:`literal_eval` will handle it safely::
   2726 
   2727     >>> literal = '("a", "b", {2:4, 3:8, 1:2})'
   2728     >>> print ast.literal_eval(literal)
   2729     ('a', 'b', {1: 2, 2: 4, 3: 8})
   2730     >>> print ast.literal_eval('"a" + "b"')
   2731     Traceback (most recent call last):
   2732       ...
   2733     ValueError: malformed string
   2734 
   2735 The module also includes :class:`NodeVisitor` and
   2736 :class:`NodeTransformer` classes for traversing and modifying an AST,
   2737 and functions for common transformations such as changing line
   2738 numbers.
   2739 
   2740 .. ======================================================================
   2741 
   2742 The :mod:`future_builtins` module
   2743 --------------------------------------
   2744 
   2745 Python 3.0 makes many changes to the repertoire of built-in
   2746 functions, and most of the changes can't be introduced in the Python
   2747 2.x series because they would break compatibility.
   2748 The :mod:`future_builtins` module provides versions
   2749 of these built-in functions that can be imported when writing
   2750 3.0-compatible code.
   2751 
   2752 The functions in this module currently include:
   2753 
   2754 * ``ascii(obj)``: equivalent to :func:`repr`.  In Python 3.0,
   2755   :func:`repr` will return a Unicode string, while :func:`ascii` will
   2756   return a pure ASCII bytestring.
   2757 
   2758 * ``filter(predicate, iterable)``,
   2759   ``map(func, iterable1, ...)``: the 3.0 versions
   2760   return iterators, unlike the 2.x builtins which return lists.
   2761 
   2762 * ``hex(value)``, ``oct(value)``: instead of calling the
   2763   :meth:`__hex__` or :meth:`__oct__` methods, these versions will
   2764   call the :meth:`__index__` method and convert the result to hexadecimal
   2765   or octal.  :func:`oct` will use the new ``0o`` notation for its
   2766   result.
   2767 
   2768 .. ======================================================================
   2769 
   2770 The :mod:`json` module: JavaScript Object Notation
   2771 --------------------------------------------------------------------
   2772 
   2773 The new :mod:`json` module supports the encoding and decoding of Python types in
   2774 JSON (Javascript Object Notation). JSON is a lightweight interchange format
   2775 often used in web applications. For more information about JSON, see
   2776 http://www.json.org.
   2777 
   2778 :mod:`json` comes with support for decoding and encoding most built-in Python
   2779 types. The following example encodes and decodes a dictionary::
   2780 
   2781        >>> import json
   2782        >>> data = {"spam": "foo", "parrot": 42}
   2783        >>> in_json = json.dumps(data) # Encode the data
   2784        >>> in_json
   2785        '{"parrot": 42, "spam": "foo"}'
   2786        >>> json.loads(in_json) # Decode into a Python object
   2787        {"spam": "foo", "parrot": 42}
   2788 
   2789 It's also possible to write your own decoders and encoders to support
   2790 more types. Pretty-printing of the JSON strings is also supported.
   2791 
   2792 :mod:`json` (originally called simplejson) was written by Bob
   2793 Ippolito.
   2794 
   2795 
   2796 .. ======================================================================
   2797 
   2798 The :mod:`plistlib` module: A Property-List Parser
   2799 --------------------------------------------------
   2800 
   2801 The ``.plist`` format is commonly used on Mac OS X to
   2802 store basic data types (numbers, strings, lists,
   2803 and dictionaries) by serializing them into an XML-based format.
   2804 It resembles the XML-RPC serialization of data types.
   2805 
   2806 Despite being primarily used on Mac OS X, the format
   2807 has nothing Mac-specific about it and the Python implementation works
   2808 on any platform that Python supports, so the :mod:`plistlib` module
   2809 has been promoted to the standard library.
   2810 
   2811 Using the module is simple::
   2812 
   2813     import sys
   2814     import plistlib
   2815     import datetime
   2816 
   2817     # Create data structure
   2818     data_struct = dict(lastAccessed=datetime.datetime.now(),
   2819                        version=1,
   2820                        categories=('Personal','Shared','Private'))
   2821 
   2822     # Create string containing XML.
   2823     plist_str = plistlib.writePlistToString(data_struct)
   2824     new_struct = plistlib.readPlistFromString(plist_str)
   2825     print data_struct
   2826     print new_struct
   2827 
   2828     # Write data structure to a file and read it back.
   2829     plistlib.writePlist(data_struct, '/tmp/customizations.plist')
   2830     new_struct = plistlib.readPlist('/tmp/customizations.plist')
   2831 
   2832     # read/writePlist accepts file-like objects as well as paths.
   2833     plistlib.writePlist(data_struct, sys.stdout)
   2834 
   2835 .. ======================================================================
   2836 
   2837 ctypes Enhancements
   2838 --------------------------------------------------
   2839 
   2840 Thomas Heller continued to maintain and enhance the
   2841 :mod:`ctypes` module.
   2842 
   2843 :mod:`ctypes` now supports a :class:`c_bool` datatype
   2844 that represents the C99 ``bool`` type.  (Contributed by David Remahl;
   2845 :issue:`1649190`.)
   2846 
   2847 The :mod:`ctypes` string, buffer and array types have improved
   2848 support for extended slicing syntax,
   2849 where various combinations of ``(start, stop, step)`` are supplied.
   2850 (Implemented by Thomas Wouters.)
   2851 
   2852 .. Revision 57769
   2853 
   2854 All :mod:`ctypes` data types now support
   2855 :meth:`from_buffer` and :meth:`from_buffer_copy`
   2856 methods that create a ctypes instance based on a
   2857 provided buffer object.  :meth:`from_buffer_copy` copies
   2858 the contents of the object,
   2859 while :meth:`from_buffer` will share the same memory area.
   2860 
   2861 A new calling convention tells :mod:`ctypes` to clear the ``errno`` or
   2862 Win32 LastError variables at the outset of each wrapped call.
   2863 (Implemented by Thomas Heller; :issue:`1798`.)
   2864 
   2865 You can now retrieve the Unix ``errno`` variable after a function
   2866 call.  When creating a wrapped function, you can supply
   2867 ``use_errno=True`` as a keyword parameter to the :func:`DLL` function
   2868 and then call the module-level methods :meth:`set_errno` and
   2869 :meth:`get_errno` to set and retrieve the error value.
   2870 
   2871 The Win32 LastError variable is similarly supported by
   2872 the :func:`DLL`, :func:`OleDLL`, and :func:`WinDLL` functions.
   2873 You supply ``use_last_error=True`` as a keyword parameter
   2874 and then call the module-level methods :meth:`set_last_error`
   2875 and :meth:`get_last_error`.
   2876 
   2877 The :func:`byref` function, used to retrieve a pointer to a ctypes
   2878 instance, now has an optional *offset* parameter that is a byte
   2879 count that will be added to the returned pointer.
   2880 
   2881 .. ======================================================================
   2882 
   2883 Improved SSL Support
   2884 --------------------------------------------------
   2885 
   2886 Bill Janssen made extensive improvements to Python 2.6's support for
   2887 the Secure Sockets Layer by adding a new module, :mod:`ssl`, that's
   2888 built atop the `OpenSSL <https://www.openssl.org/>`__ library.
   2889 This new module provides more control over the protocol negotiated,
   2890 the X.509 certificates used, and has better support for writing SSL
   2891 servers (as opposed to clients) in Python.  The existing SSL support
   2892 in the :mod:`socket` module hasn't been removed and continues to work,
   2893 though it will be removed in Python 3.0.
   2894 
   2895 To use the new module, you must first create a TCP connection in the
   2896 usual way and then pass it to the :func:`ssl.wrap_socket` function.
   2897 It's possible to specify whether a certificate is required, and to
   2898 obtain certificate info by calling the :meth:`getpeercert` method.
   2899 
   2900 .. seealso::
   2901 
   2902    The documentation for the :mod:`ssl` module.
   2903 
   2904 .. ======================================================================
   2905 
   2906 Deprecations and Removals
   2907 =========================
   2908 
   2909 * String exceptions have been removed.  Attempting to use them raises a
   2910   :exc:`TypeError`.
   2911 
   2912 * Changes to the :class:`Exception` interface
   2913   as dictated by :pep:`352` continue to be made.  For 2.6,
   2914   the :attr:`message` attribute is being deprecated in favor of the
   2915   :attr:`args` attribute.
   2916 
   2917 * (3.0-warning mode) Python 3.0 will feature a reorganized standard
   2918   library that will drop many outdated modules and rename others.
   2919   Python 2.6 running in 3.0-warning mode will warn about these modules
   2920   when they are imported.
   2921 
   2922   The list of deprecated modules is:
   2923   :mod:`audiodev`,
   2924   :mod:`bgenlocations`,
   2925   :mod:`buildtools`,
   2926   :mod:`bundlebuilder`,
   2927   :mod:`Canvas`,
   2928   :mod:`compiler`,
   2929   :mod:`dircache`,
   2930   :mod:`dl`,
   2931   :mod:`fpformat`,
   2932   :mod:`gensuitemodule`,
   2933   :mod:`ihooks`,
   2934   :mod:`imageop`,
   2935   :mod:`imgfile`,
   2936   :mod:`linuxaudiodev`,
   2937   :mod:`mhlib`,
   2938   :mod:`mimetools`,
   2939   :mod:`multifile`,
   2940   :mod:`new`,
   2941   :mod:`pure`,
   2942   :mod:`statvfs`,
   2943   :mod:`sunaudiodev`,
   2944   :mod:`test.testall`, and
   2945   :mod:`toaiff`.
   2946 
   2947 * The :mod:`gopherlib` module has been removed.
   2948 
   2949 * The :mod:`MimeWriter` module and :mod:`mimify` module
   2950   have been deprecated; use the :mod:`email`
   2951   package instead.
   2952 
   2953 * The :mod:`md5` module has been deprecated; use the :mod:`hashlib` module
   2954   instead.
   2955 
   2956 * The :mod:`posixfile` module has been deprecated; :func:`fcntl.lockf`
   2957   provides better locking.
   2958 
   2959 * The :mod:`popen2` module has been deprecated; use the :mod:`subprocess`
   2960   module.
   2961 
   2962 * The :mod:`rgbimg` module has been removed.
   2963 
   2964 * The :mod:`sets` module has been deprecated; it's better to
   2965   use the built-in :class:`set` and :class:`frozenset` types.
   2966 
   2967 * The :mod:`sha` module has been deprecated; use the :mod:`hashlib` module
   2968   instead.
   2969 
   2970 
   2971 .. ======================================================================
   2972 
   2973 
   2974 Build and C API Changes
   2975 =======================
   2976 
   2977 Changes to Python's build process and to the C API include:
   2978 
   2979 * Python now must be compiled with C89 compilers (after 19
   2980   years!).  This means that the Python source tree has dropped its
   2981   own implementations of :c:func:`memmove` and :c:func:`strerror`, which
   2982   are in the C89 standard library.
   2983 
   2984 * Python 2.6 can be built with Microsoft Visual Studio 2008 (version
   2985   9.0), and this is the new default compiler.  See the
   2986   :file:`PCbuild` directory for the build files.  (Implemented by
   2987   Christian Heimes.)
   2988 
   2989 * On Mac OS X, Python 2.6 can be compiled as a 4-way universal build.
   2990   The :program:`configure` script
   2991   can take a :option:`!--with-universal-archs=[32-bit|64-bit|all]`
   2992   switch, controlling whether the binaries are built for 32-bit
   2993   architectures (x86, PowerPC), 64-bit (x86-64 and PPC-64), or both.
   2994   (Contributed by Ronald Oussoren.)
   2995 
   2996 * The BerkeleyDB module now has a C API object, available as
   2997   ``bsddb.db.api``.   This object can be used by other C extensions
   2998   that wish to use the :mod:`bsddb` module for their own purposes.
   2999   (Contributed by Duncan Grisby.)
   3000 
   3001 * The new buffer interface, previously described in
   3002   `the PEP 3118 section <#pep-3118-revised-buffer-protocol>`__,
   3003   adds :c:func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release`,
   3004   as well as a few other functions.
   3005 
   3006 * Python's use of the C stdio library is now thread-safe, or at least
   3007   as thread-safe as the underlying library is.  A long-standing potential
   3008   bug occurred if one thread closed a file object while another thread
   3009   was reading from or writing to the object.  In 2.6 file objects
   3010   have a reference count, manipulated by the
   3011   :c:func:`PyFile_IncUseCount` and :c:func:`PyFile_DecUseCount`
   3012   functions.  File objects can't be closed unless the reference count
   3013   is zero.  :c:func:`PyFile_IncUseCount` should be called while the GIL
   3014   is still held, before carrying out an I/O operation using the
   3015   ``FILE *`` pointer, and :c:func:`PyFile_DecUseCount` should be called
   3016   immediately after the GIL is re-acquired.
   3017   (Contributed by Antoine Pitrou and Gregory P. Smith.)
   3018 
   3019 * Importing modules simultaneously in two different threads no longer
   3020   deadlocks; it will now raise an :exc:`ImportError`.  A new API
   3021   function, :c:func:`PyImport_ImportModuleNoBlock`, will look for a
   3022   module in ``sys.modules`` first, then try to import it after
   3023   acquiring an import lock.  If the import lock is held by another
   3024   thread, an :exc:`ImportError` is raised.
   3025   (Contributed by Christian Heimes.)
   3026 
   3027 * Several functions return information about the platform's
   3028   floating-point support.  :c:func:`PyFloat_GetMax` returns
   3029   the maximum representable floating point value,
   3030   and :c:func:`PyFloat_GetMin` returns the minimum
   3031   positive value.  :c:func:`PyFloat_GetInfo` returns an object
   3032   containing more information from the :file:`float.h` file, such as
   3033   ``"mant_dig"`` (number of digits in the mantissa), ``"epsilon"``
   3034   (smallest difference between 1.0 and the next largest value
   3035   representable), and several others.
   3036   (Contributed by Christian Heimes; :issue:`1534`.)
   3037 
   3038 * C functions and methods that use
   3039   :c:func:`PyComplex_AsCComplex` will now accept arguments that
   3040   have a :meth:`__complex__` method.  In particular, the functions in the
   3041   :mod:`cmath` module will now accept objects with this method.
   3042   This is a backport of a Python 3.0 change.
   3043   (Contributed by Mark Dickinson; :issue:`1675423`.)
   3044 
   3045 * Python's C API now includes two functions for case-insensitive string
   3046   comparisons, ``PyOS_stricmp(char*, char*)``
   3047   and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``.
   3048   (Contributed by Christian Heimes; :issue:`1635`.)
   3049 
   3050 * Many C extensions define their own little macro for adding
   3051   integers and strings to the module's dictionary in the
   3052   ``init*`` function.  Python 2.6 finally defines standard macros
   3053   for adding values to a module, :c:macro:`PyModule_AddStringMacro`
   3054   and :c:macro:`PyModule_AddIntMacro()`.  (Contributed by
   3055   Christian Heimes.)
   3056 
   3057 * Some macros were renamed in both 3.0 and 2.6 to make it clearer that
   3058   they are macros,
   3059   not functions.  :c:macro:`Py_Size()` became :c:macro:`Py_SIZE()`,
   3060   :c:macro:`Py_Type()` became :c:macro:`Py_TYPE()`, and
   3061   :c:macro:`Py_Refcnt()` became :c:macro:`Py_REFCNT()`.
   3062   The mixed-case macros are still available
   3063   in Python 2.6 for backward compatibility.
   3064   (:issue:`1629`)
   3065 
   3066 * Distutils now places C extensions it builds in a
   3067   different directory when running on a debug version of Python.
   3068   (Contributed by Collin Winter; :issue:`1530959`.)
   3069 
   3070 * Several basic data types, such as integers and strings, maintain
   3071   internal free lists of objects that can be re-used.  The data
   3072   structures for these free lists now follow a naming convention: the
   3073   variable is always named ``free_list``, the counter is always named
   3074   ``numfree``, and a macro ``Py<typename>_MAXFREELIST`` is
   3075   always defined.
   3076 
   3077 * A new Makefile target, "make patchcheck", prepares the Python source tree
   3078   for making a patch: it fixes trailing whitespace in all modified
   3079   ``.py`` files, checks whether the documentation has been changed,
   3080   and reports whether the :file:`Misc/ACKS` and :file:`Misc/NEWS` files
   3081   have been updated.
   3082   (Contributed by Brett Cannon.)
   3083 
   3084   Another new target, "make profile-opt", compiles a Python binary
   3085   using GCC's profile-guided optimization.  It compiles Python with
   3086   profiling enabled, runs the test suite to obtain a set of profiling
   3087   results, and then compiles using these results for optimization.
   3088   (Contributed by Gregory P. Smith.)
   3089 
   3090 .. ======================================================================
   3091 
   3092 Port-Specific Changes: Windows
   3093 -----------------------------------
   3094 
   3095 * The support for Windows 95, 98, ME and NT4 has been dropped.
   3096   Python 2.6 requires at least Windows 2000 SP4.
   3097 
   3098 * The new default compiler on Windows is Visual Studio 2008 (version
   3099   9.0). The build directories for Visual Studio 2003 (version 7.1) and
   3100   2005 (version 8.0) were moved into the PC/ directory. The new
   3101   :file:`PCbuild` directory supports cross compilation for X64, debug
   3102   builds and Profile Guided Optimization (PGO). PGO builds are roughly
   3103   10% faster than normal builds.  (Contributed by Christian Heimes
   3104   with help from Amaury Forgeot d'Arc and Martin von Loewis.)
   3105 
   3106 * The :mod:`msvcrt` module now supports
   3107   both the normal and wide char variants of the console I/O
   3108   API.  The :func:`getwch` function reads a keypress and returns a Unicode
   3109   value, as does the :func:`getwche` function.  The :func:`putwch` function
   3110   takes a Unicode character and writes it to the console.
   3111   (Contributed by Christian Heimes.)
   3112 
   3113 * :func:`os.path.expandvars` will now expand environment variables in
   3114   the form "%var%", and "~user" will be expanded into the user's home
   3115   directory path.  (Contributed by Josiah Carlson; :issue:`957650`.)
   3116 
   3117 * The :mod:`socket` module's socket objects now have an
   3118   :meth:`ioctl` method that provides a limited interface to the
   3119   :c:func:`WSAIoctl` system interface.
   3120 
   3121 * The :mod:`_winreg` module now has a function,
   3122   :func:`ExpandEnvironmentStrings`,
   3123   that expands environment variable references such as ``%NAME%``
   3124   in an input string.  The handle objects provided by this
   3125   module now support the context protocol, so they can be used
   3126   in :keyword:`with` statements. (Contributed by Christian Heimes.)
   3127 
   3128   :mod:`_winreg` also has better support for x64 systems,
   3129   exposing the :func:`DisableReflectionKey`, :func:`EnableReflectionKey`,
   3130   and :func:`QueryReflectionKey` functions, which enable and disable
   3131   registry reflection for 32-bit processes running on 64-bit systems.
   3132   (:issue:`1753245`)
   3133 
   3134 * The :mod:`msilib` module's :class:`Record` object
   3135   gained :meth:`GetInteger` and :meth:`GetString` methods that
   3136   return field values as an integer or a string.
   3137   (Contributed by Floris Bruynooghe; :issue:`2125`.)
   3138 
   3139 .. ======================================================================
   3140 
   3141 Port-Specific Changes: Mac OS X
   3142 -----------------------------------
   3143 
   3144 * When compiling a framework build of Python, you can now specify the
   3145   framework name to be used by providing the
   3146   :option:`!--with-framework-name=` option to the
   3147   :program:`configure` script.
   3148 
   3149 * The :mod:`macfs` module has been removed.  This in turn required the
   3150   :func:`macostools.touched` function to be removed because it depended on the
   3151   :mod:`macfs` module.  (:issue:`1490190`)
   3152 
   3153 * Many other Mac OS modules have been deprecated and will be removed in
   3154   Python 3.0:
   3155   :mod:`_builtinSuites`,
   3156   :mod:`aepack`,
   3157   :mod:`aetools`,
   3158   :mod:`aetypes`,
   3159   :mod:`applesingle`,
   3160   :mod:`appletrawmain`,
   3161   :mod:`appletrunner`,
   3162   :mod:`argvemulator`,
   3163   :mod:`Audio_mac`,
   3164   :mod:`autoGIL`,
   3165   :mod:`Carbon`,
   3166   :mod:`cfmfile`,
   3167   :mod:`CodeWarrior`,
   3168   :mod:`ColorPicker`,
   3169   :mod:`EasyDialogs`,
   3170   :mod:`Explorer`,
   3171   :mod:`Finder`,
   3172   :mod:`FrameWork`,
   3173   :mod:`findertools`,
   3174   :mod:`ic`,
   3175   :mod:`icglue`,
   3176   :mod:`icopen`,
   3177   :mod:`macerrors`,
   3178   :mod:`MacOS`,
   3179   :mod:`macfs`,
   3180   :mod:`macostools`,
   3181   :mod:`macresource`,
   3182   :mod:`MiniAEFrame`,
   3183   :mod:`Nav`,
   3184   :mod:`Netscape`,
   3185   :mod:`OSATerminology`,
   3186   :mod:`pimp`,
   3187   :mod:`PixMapWrapper`,
   3188   :mod:`StdSuites`,
   3189   :mod:`SystemEvents`,
   3190   :mod:`Terminal`, and
   3191   :mod:`terminalcommand`.
   3192 
   3193 .. ======================================================================
   3194 
   3195 Port-Specific Changes: IRIX
   3196 -----------------------------------
   3197 
   3198 A number of old IRIX-specific modules were deprecated and will
   3199 be removed in Python 3.0:
   3200 :mod:`al` and :mod:`AL`,
   3201 :mod:`cd`,
   3202 :mod:`cddb`,
   3203 :mod:`cdplayer`,
   3204 :mod:`CL` and :mod:`cl`,
   3205 :mod:`DEVICE`,
   3206 :mod:`ERRNO`,
   3207 :mod:`FILE`,
   3208 :mod:`FL` and :mod:`fl`,
   3209 :mod:`flp`,
   3210 :mod:`fm`,
   3211 :mod:`GET`,
   3212 :mod:`GLWS`,
   3213 :mod:`GL` and :mod:`gl`,
   3214 :mod:`IN`,
   3215 :mod:`IOCTL`,
   3216 :mod:`jpeg`,
   3217 :mod:`panelparser`,
   3218 :mod:`readcd`,
   3219 :mod:`SV` and :mod:`sv`,
   3220 :mod:`torgb`,
   3221 :mod:`videoreader`, and
   3222 :mod:`WAIT`.
   3223 
   3224 .. ======================================================================
   3225 
   3226 
   3227 Porting to Python 2.6
   3228 =====================
   3229 
   3230 This section lists previously described changes and other bugfixes
   3231 that may require changes to your code:
   3232 
   3233 * Classes that aren't supposed to be hashable should
   3234   set ``__hash__ = None`` in their definitions to indicate
   3235   the fact.
   3236 
   3237 * String exceptions have been removed.  Attempting to use them raises a
   3238   :exc:`TypeError`.
   3239 
   3240 * The :meth:`__init__` method of :class:`collections.deque`
   3241   now clears any existing contents of the deque
   3242   before adding elements from the iterable.  This change makes the
   3243   behavior match ``list.__init__()``.
   3244 
   3245 * :meth:`object.__init__` previously accepted arbitrary arguments and
   3246   keyword arguments, ignoring them.  In Python 2.6, this is no longer
   3247   allowed and will result in a :exc:`TypeError`.  This will affect
   3248   :meth:`__init__` methods that end up calling the corresponding
   3249   method on :class:`object` (perhaps through using :func:`super`).
   3250   See :issue:`1683368` for discussion.
   3251 
   3252 * The :class:`Decimal` constructor now accepts leading and trailing
   3253   whitespace when passed a string.  Previously it would raise an
   3254   :exc:`InvalidOperation` exception.  On the other hand, the
   3255   :meth:`create_decimal` method of :class:`Context` objects now
   3256   explicitly disallows extra whitespace, raising a
   3257   :exc:`ConversionSyntax` exception.
   3258 
   3259 * Due to an implementation accident, if you passed a file path to
   3260   the built-in  :func:`__import__` function, it would actually import
   3261   the specified file.  This was never intended to work, however, and
   3262   the implementation now explicitly checks for this case and raises
   3263   an :exc:`ImportError`.
   3264 
   3265 * C API: the :c:func:`PyImport_Import` and :c:func:`PyImport_ImportModule`
   3266   functions now default to absolute imports, not relative imports.
   3267   This will affect C extensions that import other modules.
   3268 
   3269 * C API: extension data types that shouldn't be hashable
   3270   should define their ``tp_hash`` slot to
   3271   :c:func:`PyObject_HashNotImplemented`.
   3272 
   3273 * The :mod:`socket` module exception :exc:`socket.error` now inherits
   3274   from :exc:`IOError`.  Previously it wasn't a subclass of
   3275   :exc:`StandardError` but now it is, through :exc:`IOError`.
   3276   (Implemented by Gregory P. Smith; :issue:`1706815`.)
   3277 
   3278 * The :mod:`xmlrpclib` module no longer automatically converts
   3279   :class:`datetime.date` and :class:`datetime.time` to the
   3280   :class:`xmlrpclib.DateTime` type; the conversion semantics were
   3281   not necessarily correct for all applications.  Code using
   3282   :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time`
   3283   instances. (:issue:`1330538`)
   3284 
   3285 * (3.0-warning mode) The :class:`Exception` class now warns
   3286   when accessed using slicing or index access; having
   3287   :class:`Exception` behave like a tuple is being phased out.
   3288 
   3289 * (3.0-warning mode) inequality comparisons between two dictionaries
   3290   or two objects that don't implement comparison methods are reported
   3291   as warnings.  ``dict1 == dict2`` still works, but ``dict1 < dict2``
   3292   is being phased out.
   3293 
   3294   Comparisons between cells, which are an implementation detail of Python's
   3295   scoping rules, also cause warnings because such comparisons are forbidden
   3296   entirely in 3.0.
   3297 
   3298 .. ======================================================================
   3299 
   3300 
   3301 .. _26acks:
   3302 
   3303 Acknowledgements
   3304 ================
   3305 
   3306 The author would like to thank the following people for offering
   3307 suggestions, corrections and assistance with various drafts of this
   3308 article: Georg Brandl, Steve Brown, Nick Coghlan, Ralph Corderoy,
   3309 Jim Jewett, Kent Johnson, Chris Lambacher,  Martin Michlmayr,
   3310 Antoine Pitrou, Brian Warner.
   3311 
   3312