2008-10-10 21:49:57 -03:00
|
|
|
****************************
|
|
|
|
What's New in Python 2.7
|
|
|
|
****************************
|
|
|
|
|
|
|
|
:Author: A.M. Kuchling (amk at amk.ca)
|
|
|
|
:Release: |release|
|
|
|
|
:Date: |today|
|
|
|
|
|
2009-01-30 00:00:29 -04:00
|
|
|
.. Fix accents on Kristjan Valur Jonsson, Fuerstenau.
|
|
|
|
|
2008-10-10 21:49:57 -03:00
|
|
|
.. $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:
|
|
|
|
|
2008-12-17 12:19:07 -04:00
|
|
|
* The :func:`int` and :func:`long` types gained a ``bit_length``
|
|
|
|
method that returns the number of bits necessary to represent
|
|
|
|
its argument in binary::
|
|
|
|
|
|
|
|
>>> n = 37
|
|
|
|
>>> bin(37)
|
|
|
|
'0b100101'
|
|
|
|
>>> n.bit_length()
|
|
|
|
6
|
|
|
|
>>> n = 2**123-1
|
|
|
|
>>> n.bit_length()
|
|
|
|
123
|
|
|
|
>>> (n+1).bit_length()
|
|
|
|
124
|
|
|
|
|
|
|
|
(Contributed by Fredrik Johansson and Victor Stinner; :issue:`3439`.)
|
|
|
|
|
2008-10-10 21:49:57 -03:00
|
|
|
|
|
|
|
.. ======================================================================
|
|
|
|
|
|
|
|
|
|
|
|
Optimizations
|
|
|
|
-------------
|
|
|
|
|
2009-01-30 00:00:29 -04:00
|
|
|
A few performance enhancements have been added:
|
|
|
|
|
|
|
|
* The garbage collector now performs better when many objects are
|
|
|
|
being allocated without deallocating any. A full garbage collection
|
|
|
|
pass is only performed when the middle generation has been collected
|
|
|
|
10 times and when the number of survivor objects from the middle
|
|
|
|
generation exceeds 10% of the number of objects in the oldest
|
|
|
|
generation. The second condition was added to reduce the number
|
|
|
|
of full garbage collections as the number of objects on the heap grows,
|
|
|
|
avoiding quadratic performance when allocating very many objects.
|
|
|
|
(Suggested by Martin von Loewis and implemented by Antoine Pitrou;
|
|
|
|
:issue:`4074`.)
|
|
|
|
|
2008-10-10 21:49:57 -03:00
|
|
|
|
|
|
|
.. ======================================================================
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
2009-02-16 18:42:39 -04:00
|
|
|
* In Distutils, distutils.sdist.add_defaults now uses package_dir and data_files
|
|
|
|
to feed MANIFEST.
|
|
|
|
|
2009-01-30 00:00:29 -04:00
|
|
|
* It is not mandatory anymore to store clear text passwords in the
|
|
|
|
:file:`.pypirc` file when registering and uploading packages to PyPI. As long
|
|
|
|
as the username is present in that file, the :mod:`distutils` package will
|
|
|
|
prompt for the password if not present. (Added by tarek, with the initial
|
|
|
|
contribution of Nathan Van Gheem; :issue:`4394`.)
|
|
|
|
|
|
|
|
* The :mod:`bz2` module's :class:`BZ2File` now supports the context
|
|
|
|
management protocol, so you can write ``with bz2.BZ2File(...) as f: ...``.
|
|
|
|
(Contributed by Hagen Fuerstenau; :issue:`3860`.)
|
|
|
|
|
|
|
|
* A new :class:`Counter` class in the :mod:`collections` module is
|
|
|
|
useful for tallying data. :class:`Counter` instances behave mostly
|
|
|
|
like dictionaries but return zero for missing keys instead of
|
|
|
|
raising a :exc:`KeyError`::
|
|
|
|
|
|
|
|
>>> from collections import Counter
|
|
|
|
>>> c=Counter()
|
|
|
|
>>> for letter in 'here is a sample of english text':
|
|
|
|
... c[letter] += 1
|
|
|
|
...
|
|
|
|
>>> c
|
|
|
|
Counter({' ': 6, 'e': 5, 's': 3, 'a': 2, 'i': 2, 'h': 2,
|
|
|
|
'l': 2, 't': 2, 'g': 1, 'f': 1, 'm': 1, 'o': 1, 'n': 1,
|
|
|
|
'p': 1, 'r': 1, 'x': 1})
|
|
|
|
>>> c['e']
|
|
|
|
5
|
|
|
|
>>> c['z']
|
|
|
|
0
|
|
|
|
|
|
|
|
There are two additional :class:`Counter` methods: :meth:`most_common`
|
|
|
|
returns the N most common elements and their counts, and :meth:`elements`
|
|
|
|
returns an iterator over the contained element, repeating each element
|
|
|
|
as many times as its count::
|
|
|
|
|
|
|
|
>>> c.most_common(5)
|
|
|
|
[(' ', 6), ('e', 5), ('s', 3), ('a', 2), ('i', 2)]
|
|
|
|
>>> c.elements() ->
|
|
|
|
'a', 'a', ' ', ' ', ' ', ' ', ' ', ' ',
|
|
|
|
'e', 'e', 'e', 'e', 'e', 'g', 'f', 'i', 'i',
|
|
|
|
'h', 'h', 'm', 'l', 'l', 'o', 'n', 'p', 's',
|
|
|
|
's', 's', 'r', 't', 't', 'x']
|
|
|
|
|
|
|
|
Contributed by Raymond Hettinger; :issue:`1696199`.
|
|
|
|
|
|
|
|
* The :mod:`gzip` module's :class:`GzipFile` now supports the context
|
|
|
|
management protocol, so you can write ``with gzip.GzipFile(...) as f: ...``.
|
|
|
|
(Contributed by Hagen Fuerstenau; :issue:`3860`.)
|
|
|
|
|
|
|
|
* The :class:`io.FileIO` class now raises an :exc:`OSError` when passed
|
|
|
|
an invalid file descriptor. (Implemented by Benjamin Peterson;
|
|
|
|
:issue:`4991`.)
|
|
|
|
|
|
|
|
* The :mod:`pydoc` module now has help for the various symbols that Python
|
|
|
|
uses. You can now do ``help('<<')`` or ``help('@')``, for example.
|
|
|
|
(Contributed by David Laban; :issue:`4739`.)
|
|
|
|
|
Merged revisions 68162,68166,68171,68176,68195-68196,68210,68232 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68176 | andrew.kuchling | 2009-01-02 22:00:35 +0100 (Fri, 02 Jan 2009) | 1 line
Add various items
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68232 | georg.brandl | 2009-01-03 22:52:16 +0100 (Sat, 03 Jan 2009) | 2 lines
Grammar fix.
........
2009-01-03 18:47:39 -04:00
|
|
|
* 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.)
|
|
|
|
|
2009-01-30 00:00:29 -04:00
|
|
|
* The :func:`is_zipfile` function in the :mod:`zipfile` module will now
|
|
|
|
accept a file object, in addition to the path names accepted in earlier
|
|
|
|
versions. (Contributed by Gabriel Genellina; :issue:`4756`.)
|
2008-10-10 21:49:57 -03:00
|
|
|
|
|
|
|
.. ======================================================================
|
|
|
|
.. whole new modules get described in subsections here
|
|
|
|
|
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r69129 | benjamin.peterson | 2009-01-30 19:42:55 -0600 (Fri, 30 Jan 2009) | 1 line
check the errno in bad fd cases
........
r69130 | andrew.kuchling | 2009-01-30 20:50:09 -0600 (Fri, 30 Jan 2009) | 1 line
Add a section
........
r69131 | andrew.kuchling | 2009-01-30 21:26:02 -0600 (Fri, 30 Jan 2009) | 1 line
Text edits and markup fixes
........
r69139 | mark.dickinson | 2009-01-31 10:44:04 -0600 (Sat, 31 Jan 2009) | 2 lines
Add an extra test for long <-> float hash equivalence.
........
r69140 | benjamin.peterson | 2009-01-31 10:52:03 -0600 (Sat, 31 Jan 2009) | 1 line
PyErr_BadInternalCall() raises a SystemError, not TypeError #5112
........
r69143 | benjamin.peterson | 2009-01-31 15:00:10 -0600 (Sat, 31 Jan 2009) | 1 line
I believe the intention here was to avoid a global lookup
........
r69154 | benjamin.peterson | 2009-01-31 16:33:02 -0600 (Sat, 31 Jan 2009) | 1 line
fix indentation in comment
........
r69155 | david.goodger | 2009-01-31 16:53:46 -0600 (Sat, 31 Jan 2009) | 1 line
markup fix
........
r69156 | gregory.p.smith | 2009-01-31 16:57:30 -0600 (Sat, 31 Jan 2009) | 4 lines
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
protocol numbers are supplied outside the allowed 0-65536 range on bind()
and getservbyport().
........
r69157 | benjamin.peterson | 2009-01-31 17:43:25 -0600 (Sat, 31 Jan 2009) | 1 line
add explanatory comment
........
r69158 | benjamin.peterson | 2009-01-31 17:54:38 -0600 (Sat, 31 Jan 2009) | 1 line
more flags which only work for function blocks
........
r69159 | gregory.p.smith | 2009-01-31 18:16:01 -0600 (Sat, 31 Jan 2009) | 2 lines
Update doc wording as suggested in issue4903.
........
r69169 | guilherme.polo | 2009-01-31 20:56:16 -0600 (Sat, 31 Jan 2009) | 3 lines
Restore Tkinter.Tk._loadtk so this test doesn't fail for problems
related to ttk.
........
r69288 | georg.brandl | 2009-02-05 04:30:57 -0600 (Thu, 05 Feb 2009) | 1 line
#5153: fix typo in example.
........
r69289 | georg.brandl | 2009-02-05 04:37:07 -0600 (Thu, 05 Feb 2009) | 1 line
#5144: document that PySys_SetArgv prepends the script directory (or the empty string) to sys.path.
........
r69293 | georg.brandl | 2009-02-05 04:59:28 -0600 (Thu, 05 Feb 2009) | 1 line
#5059: fix example.
........
r69297 | georg.brandl | 2009-02-05 05:32:18 -0600 (Thu, 05 Feb 2009) | 1 line
#5015: document PythonHome API functions.
........
r69298 | georg.brandl | 2009-02-05 05:33:21 -0600 (Thu, 05 Feb 2009) | 1 line
#4827: fix callback example.
........
r69299 | georg.brandl | 2009-02-05 05:35:28 -0600 (Thu, 05 Feb 2009) | 1 line
#4820: use correct module for ctypes.util.
........
r69300 | georg.brandl | 2009-02-05 05:38:23 -0600 (Thu, 05 Feb 2009) | 1 line
#4563: disable alpha and roman lists, fixes wrong formatting of contributor list.
........
r69301 | georg.brandl | 2009-02-05 05:40:35 -0600 (Thu, 05 Feb 2009) | 1 line
#5031: fix Thread.daemon property docs.
........
r69348 | benjamin.peterson | 2009-02-05 19:47:31 -0600 (Thu, 05 Feb 2009) | 1 line
fix download link
........
2009-02-05 22:40:07 -04:00
|
|
|
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.
|
|
|
|
|
2008-10-10 21:49:57 -03:00
|
|
|
.. ======================================================================
|
|
|
|
|
|
|
|
|
|
|
|
Build and C API Changes
|
|
|
|
=======================
|
|
|
|
|
|
|
|
Changes to Python's build process and to the C API include:
|
|
|
|
|
Merged revisions 68162,68166,68171,68176,68195-68196,68210,68232 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68176 | andrew.kuchling | 2009-01-02 22:00:35 +0100 (Fri, 02 Jan 2009) | 1 line
Add various items
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68232 | georg.brandl | 2009-01-03 22:52:16 +0100 (Sat, 03 Jan 2009) | 2 lines
Grammar fix.
........
2009-01-03 18:47:39 -04:00
|
|
|
* 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.
|
2009-01-30 00:00:29 -04:00
|
|
|
(Contributed by Victor Stinner; :issue:`3632`.)
|
|
|
|
|
|
|
|
* :cfunc:`Py_AddPendingCall` is now thread safe, letting any
|
|
|
|
worker thread submit notifications to the main Python thread. This
|
|
|
|
is particularly useful for asynchronous IO operations.
|
|
|
|
(Contributed by Kristjan Valur Jonsson; :issue:`4293`.)
|
|
|
|
|
2008-10-10 21:49:57 -03:00
|
|
|
|
|
|
|
.. ======================================================================
|
|
|
|
|
|
|
|
Port-Specific Changes: Windows
|
|
|
|
-----------------------------------
|
|
|
|
|
Merged revisions 68162,68166,68171,68176,68195-68196,68210,68232 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68176 | andrew.kuchling | 2009-01-02 22:00:35 +0100 (Fri, 02 Jan 2009) | 1 line
Add various items
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68232 | georg.brandl | 2009-01-03 22:52:16 +0100 (Sat, 03 Jan 2009) | 2 lines
Grammar fix.
........
2009-01-03 18:47:39 -04:00
|
|
|
* 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`.
|
2009-01-30 00:00:29 -04:00
|
|
|
(Contributed by David Cournapeau; :issue:`4365`.)
|
|
|
|
|
|
|
|
* The new :cfunc:`_beginthreadex` API is used to start threads, and
|
|
|
|
the native thread-local storage functions are now used.
|
|
|
|
(Contributed by Kristjan Valur Jonsson; :issue:`3582`.)
|
2008-10-10 21:49:57 -03:00
|
|
|
|
|
|
|
.. ======================================================================
|
|
|
|
|
|
|
|
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.
|
|
|
|
|