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