****************************
  What's New in Python 2.7
****************************

:Author: A.M. Kuchling (amk at amk.ca)
:Release: |release|
:Date: |today|

.. $Id$
   Rules for maintenance:

   * Anyone can add text to this document.  Do not spend very much time
   on the wording of your changes, because your text will probably
   get rewritten to some degree.

   * The maintainer will go through Misc/NEWS periodically and add
   changes; it's therefore more important to add your changes to
   Misc/NEWS than to this file.

   * This is not a complete list of every single change; completeness
   is the purpose of Misc/NEWS.  Some changes I consider too small
   or esoteric to include.  If such a change is added to the text,
   I'll just remove it.  (This is another reason you shouldn't spend
   too much time on writing your addition.)

   * If you want to draw your new text to the attention of the
   maintainer, add 'XXX' to the beginning of the paragraph or
   section.

   * It's OK to just add a fragmentary note about a change.  For
   example: "XXX Describe the transmogrify() function added to the
   socket module."  The maintainer will research the change and
   write the necessary text.

   * You can comment out your additions if you like, but it's not
   necessary (especially when a final release is some months away).

   * Credit the author of a patch or bugfix.   Just the name is
   sufficient; the e-mail address isn't necessary.

   * It's helpful to add the bug/patch number in a parenthetical comment.

   XXX Describe the transmogrify() function added to the socket
   module.
   (Contributed by P.Y. Developer; :issue:`12345`.)

   This saves the maintainer some effort going through the SVN logs
   when researching a change.

This article explains the new features in Python 2.7.
No release schedule has been decided yet for 2.7.

.. Compare with previous release in 2 - 3 sentences here.
   add hyperlink when the documentation becomes available online.

.. ========================================================================
.. Large, PEP-level features and changes should be described here.
.. Should there be a new section here for 3k migration?
.. Or perhaps a more general section describing module changes/deprecation?
.. ========================================================================



Other Language Changes
======================

Some smaller changes made to the core Python language are:

* List of changes to be written here.

.. ======================================================================


Optimizations
-------------

To be written.

.. ======================================================================

New, Improved, and Deprecated Modules
=====================================

As in every release, Python's standard library received a number of
enhancements and bug fixes.  Here's a partial list of the most notable
changes, sorted alphabetically by module name. Consult the
:file:`Misc/NEWS` file in the source tree for a more complete list of
changes, or look through the Subversion logs for all the details.

* A new function in the :mod:`subprocess` module,
  :func:`check_output`, runs a command with a specified set of arguments
  and returns the command's output as a string if the command runs without
  error, or raises a :exc:`CalledProcessError` exception otherwise.

  ::

    >>> subprocess.check_output(['df', '-h', '.'])
    'Filesystem     Size   Used  Avail Capacity  Mounted on\n
    /dev/disk0s2    52G    49G   3.0G    94%    /\n'

    >>> subprocess.check_output(['df', '-h', '/bogus'])
      ...
    subprocess.CalledProcessError: Command '['df', '-h', '/bogus']' returned non-zero exit status 1

  (Contributed by Gregory P. Smith.)


.. ======================================================================
.. whole new modules get described in subsections here

ttk: Themed Widgets for Tk
--------------------------

Tcl/Tk 8.5 includes a set of themed widgets that re-implement basic Tk
widgets but have a more customizable appearance and can therefore more
closely resemble the native platform's widgets.  This widget
set was originally called Tile, but was renamed to Ttk (for "themed Tk")
on being added to Tcl/Tck release 8.5.

XXX write a brief discussion and an example here.

The :mod:`ttk` module was written by Guilherme Polo and added in
:issue:`2983`.  An alternate version called ``Tile.py``, written by
Martin Franklin and maintained by Kevin Walzer, was proposed for
inclusion in :issue:`2618`, but the authors argued that Guilherme
Polo's work was more comprehensive.

.. ======================================================================


Build and C API Changes
=======================

Changes to Python's build process and to the C API include:

* If you use the :file:`.gdbinit` file provided with Python,
  the "pyo" macro in the 2.7 version will now work when the thread being
  debugged doesn't hold the GIL; the macro will now acquire it before printing.
  (Contributed by haypo XXX; :issue:`3632`.)

.. ======================================================================

Port-Specific Changes: Windows
-----------------------------------

* The :mod:`msvcrt` module now contains some constants from
  the :file:`crtassem.h` header file:
  :data:`CRT_ASSEMBLY_VERSION`,
  :data:`VC_ASSEMBLY_PUBLICKEYTOKEN`,
  and :data:`LIBRARIES_ASSEMBLY_NAME_PREFIX`.
  (Added by Martin von Loewis (XXX check); :issue:`4365`.)

.. ======================================================================

Port-Specific Changes: Mac OS X
-----------------------------------


.. ======================================================================

Porting to Python 2.7
=====================

This section lists previously described changes and other bugfixes
that may require changes to your code:

To be written.

.. ======================================================================


.. _acks27:

Acknowledgements
================

The author would like to thank the following people for offering
suggestions, corrections and assistance with various drafts of this
article: no one yet.

