blob: 07f474ddfb4d4b010997c6faf802f3e4490117d1 [file] [log] [blame]
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00001****************************
2 What's New in Python 2.7
3****************************
4
5:Author: A.M. Kuchling (amk at amk.ca)
6:Release: |release|
7:Date: |today|
8
Andrew M. Kuchling6d7dfa22010-04-11 12:49:37 +00009.. hyperlink all the methods & functions.
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +000010
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +000011.. T_STRING_INPLACE not described in main docs
12
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +000013.. $Id$
14 Rules for maintenance:
15
16 * Anyone can add text to this document. Do not spend very much time
17 on the wording of your changes, because your text will probably
18 get rewritten to some degree.
19
20 * The maintainer will go through Misc/NEWS periodically and add
21 changes; it's therefore more important to add your changes to
22 Misc/NEWS than to this file.
23
24 * This is not a complete list of every single change; completeness
25 is the purpose of Misc/NEWS. Some changes I consider too small
26 or esoteric to include. If such a change is added to the text,
27 I'll just remove it. (This is another reason you shouldn't spend
28 too much time on writing your addition.)
29
30 * If you want to draw your new text to the attention of the
31 maintainer, add 'XXX' to the beginning of the paragraph or
32 section.
33
34 * It's OK to just add a fragmentary note about a change. For
35 example: "XXX Describe the transmogrify() function added to the
36 socket module." The maintainer will research the change and
37 write the necessary text.
38
39 * You can comment out your additions if you like, but it's not
40 necessary (especially when a final release is some months away).
41
Ezio Melotti021f3342010-04-06 03:26:49 +000042 * Credit the author of a patch or bugfix. Just the name is
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +000043 sufficient; the e-mail address isn't necessary.
44
45 * It's helpful to add the bug/patch number in a parenthetical comment.
46
47 XXX Describe the transmogrify() function added to the socket
48 module.
49 (Contributed by P.Y. Developer; :issue:`12345`.)
50
51 This saves the maintainer some effort going through the SVN logs
52 when researching a change.
53
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +000054This article explains the new features in Python 2.7. The final
Andrew M. Kuchling837a5382010-05-06 17:21:59 +000055release of 2.7 is currently scheduled for July 2010; the detailed
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +000056schedule is described in :pep:`373`.
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +000057
Andrew M. Kuchling27024912010-05-12 00:38:44 +000058Numeric handling has been improved in many ways, for both
Ezio Melotti9d8d2a42010-07-03 07:43:04 +000059floating-point numbers and for the :class:`~decimal.Decimal` class.
60There are some useful additions to the standard library, such as a
61greatly enhanced :mod:`unittest` module, the :mod:`argparse` module
62for parsing command-line options, convenient :class:`~collections.OrderedDict`
63and :class:`~collections.Counter` classes in the :mod:`collections` module,
64and many other improvements.
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +000065
Andrew M. Kuchling27024912010-05-12 00:38:44 +000066Python 2.7 is planned to be the last of the 2.x releases, so we worked
67on making it a good release for the long term. To help with porting
68to Python 3, several new features from the Python 3.x series have been
69included in 2.7.
70
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +000071This article doesn't attempt to provide a complete specification of
72the new features, but instead provides a convenient overview. For
73full details, you should refer to the documentation for Python 2.7 at
74http://docs.python.org. If you want to understand the rationale for
75the design and implementation, refer to the PEP for a particular new
76feature or the issue on http://bugs.python.org in which a change was
77discussed. Whenever possible, "What's New in Python" links to the
78bug/patch item for each change.
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +000079
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +000080.. _whatsnew27-python31:
81
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +000082The Future for Python 2.x
83=========================
84
85Python 2.7 is intended to be the last major release in the 2.x series.
Andrew M. Kuchlingd1e696b2010-05-07 11:30:47 +000086The Python maintainers are planning to focus their future efforts on
87the Python 3.x series.
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +000088
89This means that 2.7 will remain in place for a long time, running
90production systems that have not been ported to Python 3.x.
91Two consequences of the long-term significance of 2.7 are:
92
93* It's very likely the 2.7 release will have a longer period of
94 maintenance compared to earlier 2.x versions. Python 2.7 will
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +000095 continue to be maintained while the transition to 3.x continues, and
96 the developers are planning to support Python 2.7 with bug-fix
97 releases beyond the typical two years.
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +000098
Andrew M. Kuchlingd1e696b2010-05-07 11:30:47 +000099* A policy decision was made to silence warnings only of interest to
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000100 developers. :exc:`DeprecationWarning` and its
Andrew M. Kuchlingd1e696b2010-05-07 11:30:47 +0000101 descendants are now ignored unless otherwise requested, preventing
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +0000102 users from seeing warnings triggered by an application. This change
103 was also made in the branch that will become Python 3.2. (Discussed
104 on stdlib-sig and carried out in :issue:`7319`.)
Andrew M. Kuchlingd1e696b2010-05-07 11:30:47 +0000105
106 In previous releases, :exc:`DeprecationWarning` messages were
107 enabled by default, providing Python developers with a clear
108 indication of where their code may break in a future major version
109 of Python.
110
111 However, there are increasingly many users of Python-based
112 applications who are not directly involved in the development of
113 those applications. :exc:`DeprecationWarning` messages are
114 irrelevant to such users, making them worry about an application
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000115 that's actually working correctly and burdening application developers
116 with responding to these concerns.
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +0000117
118 You can re-enable display of :exc:`DeprecationWarning` messages by
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000119 running Python with the :option:`-Wdefault <-W>` (short form:
120 :option:`-Wd <-W>`) switch, or by setting the :envvar:`PYTHONWARNINGS`
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000121 environment variable to ``"default"`` (or ``"d"``) before running
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +0000122 Python. Python code can also re-enable them
123 by calling ``warnings.simplefilter('default')``.
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +0000124
125
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000126Python 3.1 Features
127=======================
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +0000128
129Much as Python 2.6 incorporated features from Python 3.0,
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000130version 2.7 incorporates some of the new features
131in Python 3.1. The 2.x series continues to provide tools
132for migrating to the 3.x series.
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +0000133
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000134A partial list of 3.1 features that were backported to 2.7:
135
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +0000136* The syntax for set literals (``{1,2,3}`` is a mutable set).
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000137* Dictionary and set comprehensions (``{i: i*2 for i in range(3)}``).
Andrew M. Kuchling93c40d42010-05-10 14:18:27 +0000138* Multiple context managers in a single :keyword:`with` statement.
Andrew M. Kuchling837a5382010-05-06 17:21:59 +0000139* A new version of the :mod:`io` library, rewritten in C for performance.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000140* The ordered-dictionary type described in :ref:`pep-0372`.
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000141* The new ``","`` format specifier described in :ref:`pep-0378`.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000142* The :class:`memoryview` object.
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000143* A small subset of the :mod:`importlib` module,
144 `described below <#importlib-section>`__.
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000145* Float-to-string and string-to-float conversions now round their
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000146 results more correctly, and :func:`repr` of a floating-point
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000147 number *x* returns a result that's guaranteed to round back to the
148 same number when converted back to a string.
Andrew M. Kuchling93c40d42010-05-10 14:18:27 +0000149* The :ctype:`PyCapsule` type, used to provide a C API for extension modules.
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000150* The :cfunc:`PyLong_AsLongAndOverflow` C API function.
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +0000151
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000152Other new Python3-mode warnings include:
153
154* :func:`operator.isCallable` and :func:`operator.sequenceIncludes`,
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000155 which are not supported in 3.x, now trigger warnings.
156* The :option:`-3` switch now automatically
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000157 enables the :option:`-Qwarn <-Q>` switch that causes warnings
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000158 about using classic division with integers and long integers.
159
160
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000161
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000162.. ========================================================================
163.. Large, PEP-level features and changes should be described here.
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000164.. ========================================================================
165
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000166.. _pep-0372:
167
Andrew M. Kuchling10595a62010-05-10 14:20:12 +0000168PEP 372: Adding an Ordered Dictionary to collections
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +0000169====================================================
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +0000170
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000171Regular Python dictionaries iterate over key/value pairs in arbitrary order.
172Over the years, a number of authors have written alternative implementations
173that remember the order that the keys were originally inserted. Based on
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000174the experiences from those implementations, 2.7 introduces a new
175:class:`~collections.OrderedDict` class in the :mod:`collections` module.
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +0000176
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000177The :class:`~collections.OrderedDict` API provides the same interface as regular
178dictionaries but iterates over keys and values in a guaranteed order
Ezio Melotti021f3342010-04-06 03:26:49 +0000179depending on when a key was first inserted::
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000180
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000181 >>> from collections import OrderedDict
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000182 >>> d = OrderedDict([('first', 1),
183 ... ('second', 2),
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000184 ... ('third', 3)])
185 >>> d.items()
186 [('first', 1), ('second', 2), ('third', 3)]
187
188If a new entry overwrites an existing entry, the original insertion
189position is left unchanged::
190
191 >>> d['second'] = 4
192 >>> d.items()
193 [('first', 1), ('second', 4), ('third', 3)]
194
195Deleting an entry and reinserting it will move it to the end::
196
197 >>> del d['second']
198 >>> d['second'] = 5
199 >>> d.items()
200 [('first', 1), ('third', 3), ('second', 5)]
201
Ezio Melotti021f3342010-04-06 03:26:49 +0000202The :meth:`~collections.OrderedDict.popitem` method has an optional *last*
203argument that defaults to True. If *last* is True, the most recently
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000204added key is returned and removed; if it's False, the
205oldest key is selected::
206
207 >>> od = OrderedDict([(x,0) for x in range(20)])
208 >>> od.popitem()
209 (19, 0)
210 >>> od.popitem()
211 (18, 0)
Ezio Melotti021f3342010-04-06 03:26:49 +0000212 >>> od.popitem(last=False)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000213 (0, 0)
Ezio Melotti021f3342010-04-06 03:26:49 +0000214 >>> od.popitem(last=False)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000215 (1, 0)
216
217Comparing two ordered dictionaries checks both the keys and values,
218and requires that the insertion order was the same::
219
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000220 >>> od1 = OrderedDict([('first', 1),
221 ... ('second', 2),
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000222 ... ('third', 3)])
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000223 >>> od2 = OrderedDict([('third', 3),
224 ... ('first', 1),
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000225 ... ('second', 2)])
Ezio Melotti021f3342010-04-06 03:26:49 +0000226 >>> od1 == od2
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000227 False
228 >>> # Move 'third' key to the end
Ezio Melotti021f3342010-04-06 03:26:49 +0000229 >>> del od2['third']; od2['third'] = 3
230 >>> od1 == od2
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000231 True
232
Ezio Melotti021f3342010-04-06 03:26:49 +0000233Comparing an :class:`~collections.OrderedDict` with a regular dictionary
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000234ignores the insertion order and just compares the keys and values.
235
Ezio Melotti021f3342010-04-06 03:26:49 +0000236How does the :class:`~collections.OrderedDict` work? It maintains a
237doubly-linked list of keys, appending new keys to the list as they're inserted.
238A secondary dictionary maps keys to their corresponding list node, so
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000239deletion doesn't have to traverse the entire linked list and therefore
240remains O(1).
241
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000242The standard library now supports use of ordered dictionaries in several
Andrew M. Kuchling363dbcc2010-04-14 23:55:17 +0000243modules.
244
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000245* The :mod:`ConfigParser` module uses them by default, meaning that
246 configuration files can now read, modified, and then written back
247 in their original order.
Andrew M. Kuchling363dbcc2010-04-14 23:55:17 +0000248
249* The :meth:`~collections.somenamedtuple._asdict()` method for
250 :func:`collections.namedtuple` now returns an ordered dictionary with the
251 values appearing in the same order as the underlying tuple indices.
252
253* The :mod:`json` module's :class:`~json.JSONDecoder` class
254 constructor was extended with an *object_pairs_hook* parameter to
255 allow :class:`OrderedDict` instances to be built by the decoder.
256 Support was also added for third-party tools like
257 `PyYAML <http://pyyaml.org/>`_.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000258
Andrew M. Kuchling7fe65a02009-10-13 15:49:33 +0000259.. seealso::
260
261 :pep:`372` - Adding an ordered dictionary to collections
262 PEP written by Armin Ronacher and Raymond Hettinger;
263 implemented by Raymond Hettinger.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000264
265.. _pep-0378:
266
267PEP 378: Format Specifier for Thousands Separator
Ezio Melotti021f3342010-04-06 03:26:49 +0000268=================================================
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000269
270To make program output more readable, it can be useful to add
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000271separators to large numbers, rendering them as
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +000027218,446,744,073,709,551,616 instead of 18446744073709551616.
273
274The fully general solution for doing this is the :mod:`locale` module,
275which can use different separators ("," in North America, "." in
276Europe) and different grouping sizes, but :mod:`locale` is complicated
277to use and unsuitable for multi-threaded applications where different
278threads are producing output for different locales.
279
280Therefore, a simple comma-grouping mechanism has been added to the
Ezio Melotti021f3342010-04-06 03:26:49 +0000281mini-language used by the :meth:`str.format` method. When
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000282formatting a floating-point number, simply include a comma between the
283width and the precision::
284
Eric Smithc4663852010-04-06 14:30:15 +0000285 >>> '{:20,.2f}'.format(18446744073709551616.0)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000286 '18,446,744,073,709,551,616.00'
287
Eric Smith6a928602010-04-06 15:17:33 +0000288When formatting an integer, include the comma after the width:
289
290 >>> '{:20,d}'.format(18446744073709551616)
291 '18,446,744,073,709,551,616'
292
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000293This mechanism is not adaptable at all; commas are always used as the
294separator and the grouping is always into three-digit groups. The
295comma-formatting mechanism isn't as general as the :mod:`locale`
296module, but it's easier to use.
297
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000298.. seealso::
299
300 :pep:`378` - Format Specifier for Thousands Separator
301 PEP written by Raymond Hettinger; implemented by Eric Smith.
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000302
Andrew M. Kuchlingab21f752010-03-02 13:55:33 +0000303PEP 389: The argparse Module for Parsing Command Lines
304======================================================
305
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000306The :mod:`argparse` module for parsing command-line arguments was
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000307added as a more powerful replacement for the
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000308:mod:`optparse` module.
309
310This means Python now supports three different modules for parsing
311command-line arguments: :mod:`getopt`, :mod:`optparse`, and
312:mod:`argparse`. The :mod:`getopt` module closely resembles the C
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000313library's :cfunc:`getopt` function, so it remains useful if you're writing a
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000314Python prototype that will eventually be rewritten in C.
315:mod:`optparse` becomes redundant, but there are no plans to remove it
316because there are many scripts still using it, and there's no
317automated way to update these scripts. (Making the :mod:`argparse`
318API consistent with :mod:`optparse`'s interface was discussed but
319rejected as too messy and difficult.)
320
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000321In short, if you're writing a new script and don't need to worry
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000322about compatibility with earlier versions of Python, use
323:mod:`argparse` instead of :mod:`optparse`.
324
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000325Here's an example::
326
327 import argparse
328
329 parser = argparse.ArgumentParser(description='Command-line example.')
330
331 # Add optional switches
332 parser.add_argument('-v', action='store_true', dest='is_verbose',
333 help='produce verbose output')
334 parser.add_argument('-o', action='store', dest='output',
335 metavar='FILE',
336 help='direct output to FILE instead of stdout')
337 parser.add_argument('-C', action='store', type=int, dest='context',
338 metavar='NUM', default=0,
339 help='display NUM lines of added context')
340
341 # Allow any number of additional arguments.
342 parser.add_argument(nargs='*', action='store', dest='inputs',
343 help='input filenames (default is stdin)')
344
345 args = parser.parse_args()
346 print args.__dict__
347
348Unless you override it, :option:`-h` and :option:`--help` switches
349are automatically added, and produce neatly formatted output::
350
351 -> ./python.exe argparse-example.py --help
Andrew M. Kuchling363dbcc2010-04-14 23:55:17 +0000352 usage: argparse-example.py [-h] [-v] [-o FILE] [-C NUM] [inputs [inputs ...]]
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000353
354 Command-line example.
355
356 positional arguments:
357 inputs input filenames (default is stdin)
358
359 optional arguments:
360 -h, --help show this help message and exit
361 -v produce verbose output
362 -o FILE direct output to FILE instead of stdout
363 -C NUM display NUM lines of added context
364
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000365As with :mod:`optparse`, the command-line switches and arguments
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000366are returned as an object with attributes named by the *dest* parameters::
367
368 -> ./python.exe argparse-example.py -v
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000369 {'output': None,
370 'is_verbose': True,
371 'context': 0,
372 'inputs': []}
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000373
374 -> ./python.exe argparse-example.py -v -o /tmp/output -C 4 file1 file2
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000375 {'output': '/tmp/output',
376 'is_verbose': True,
377 'context': 4,
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000378 'inputs': ['file1', 'file2']}
379
380:mod:`argparse` has much fancier validation than :mod:`optparse`; you
381can specify an exact number of arguments as an integer, 0 or more
382arguments by passing ``'*'``, 1 or more by passing ``'+'``, or an
383optional argument with ``'?'``. A top-level parser can contain
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000384sub-parsers to define subcommands that have different sets of
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000385switches, as in ``svn commit``, ``svn checkout``, etc. You can
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000386specify an argument's type as :class:`~argparse.FileType`, which will
Andrew M. Kuchlingf03641a2010-04-14 01:14:59 +0000387automatically open files for you and understands that ``'-'`` means
388standard input or output.
Andrew M. Kuchlingab21f752010-03-02 13:55:33 +0000389
390.. seealso::
391
Georg Brandl2e9d4882010-07-03 08:42:33 +0000392 :mod:`argparse` documentation
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000393 The documentation page of the argparse module.
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000394
Georg Brandl2e9d4882010-07-03 08:42:33 +0000395 :ref:`argparse-from-optparse`
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000396 Part of the Python documentation, describing how to convert
397 code that uses :mod:`optparse`.
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000398
Andrew M. Kuchlingab21f752010-03-02 13:55:33 +0000399 :pep:`389` - argparse - New Command Line Parsing Module
400 PEP written and implemented by Steven Bethard.
401
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000402PEP 391: Dictionary-Based Configuration For Logging
403====================================================
404
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000405The :mod:`logging` module is very flexible; applications can define
Andrew M. Kuchlingb6c1aeb2010-04-14 14:28:31 +0000406a tree of logging subsystems, and each logger in this tree can filter
407out certain messages, format them differently, and direct messages to
408a varying number of handlers.
409
410All this flexibility can require a lot of configuration. You can
411write Python statements to create objects and set their properties,
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000412but a complex set-up requires verbose but boring code.
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000413:mod:`logging` also supports a :func:`~logging.fileConfig`
Andrew M. Kuchlingb6c1aeb2010-04-14 14:28:31 +0000414function that parses a file, but the file format doesn't support
415configuring filters, and it's messier to generate programmatically.
416
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000417Python 2.7 adds a :func:`~logging.dictConfig` function that
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000418uses a dictionary to configure logging. There are many ways to
419produce a dictionary from different sources: construct one with code;
420parse a file containing JSON; or use a YAML parsing library if one is
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000421installed. For more information see :ref:`logging-config-api`.
Andrew M. Kuchlingb6c1aeb2010-04-14 14:28:31 +0000422
Andrew M. Kuchling8e343862010-05-08 13:28:03 +0000423The following example configures two loggers, the root logger and a
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000424logger named "network". Messages sent to the root logger will be
Andrew M. Kuchling8e343862010-05-08 13:28:03 +0000425sent to the system log using the syslog protocol, and messages
426to the "network" logger will be written to a :file:`network.log` file
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000427that will be rotated once the log reaches 1MB.
Andrew M. Kuchling8e343862010-05-08 13:28:03 +0000428
429::
430
431 import logging
432 import logging.config
433
434 configdict = {
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000435 'version': 1, # Configuration schema in use; must be 1 for now
Andrew M. Kuchling8e343862010-05-08 13:28:03 +0000436 'formatters': {
437 'standard': {
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000438 'format': ('%(asctime)s %(name)-15s '
439 '%(levelname)-8s %(message)s')}},
Andrew M. Kuchling8e343862010-05-08 13:28:03 +0000440
441 'handlers': {'netlog': {'backupCount': 10,
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000442 'class': 'logging.handlers.RotatingFileHandler',
443 'filename': '/logs/network.log',
444 'formatter': 'standard',
445 'level': 'INFO',
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000446 'maxBytes': 1000000},
Andrew M. Kuchling8e343862010-05-08 13:28:03 +0000447 'syslog': {'class': 'logging.handlers.SysLogHandler',
448 'formatter': 'standard',
449 'level': 'ERROR'}},
450
451 # Specify all the subordinate loggers
452 'loggers': {
453 'network': {
454 'handlers': ['netlog']
455 }
456 },
457 # Specify properties of the root logger
458 'root': {
459 'handlers': ['syslog']
460 },
461 }
462
463 # Set up configuration
464 logging.config.dictConfig(configdict)
465
466 # As an example, log two error messages
467 logger = logging.getLogger('/')
468 logger.error('Database not found')
469
470 netlogger = logging.getLogger('network')
471 netlogger.error('Connection failed')
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000472
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +0000473Three smaller enhancements to the :mod:`logging` module, all
474implemented by Vinay Sajip, are:
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000475
476.. rev79293
477
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +0000478* The :class:`~logging.handlers.SysLogHandler` class now supports
479 syslogging over TCP. The constructor has a *socktype* parameter
480 giving the type of socket to use, either :const:`socket.SOCK_DGRAM`
481 for UDP or :const:`socket.SOCK_STREAM` for TCP. The default
482 protocol remains UDP.
483
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000484* :class:`~logging.Logger` instances gained a :meth:`~logging.Logger.getChild`
485 method that retrieves a descendant logger using a relative path.
486 For example, once you retrieve a logger by doing ``log = getLogger('app')``,
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000487 calling ``log.getChild('network.listen')`` is equivalent to
488 ``getLogger('app.network.listen')``.
489
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000490* The :class:`~logging.LoggerAdapter` class gained a
491 :meth:`~logging.LoggerAdapter.isEnabledFor` method that takes a
492 *level* and returns whether the underlying logger would
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000493 process a message of that level of importance.
494
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000495.. XXX: Logger objects don't have a class declaration so the link don't work
496
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000497.. seealso::
498
499 :pep:`391` - Dictionary-Based Configuration For Logging
500 PEP written and implemented by Vinay Sajip.
501
502PEP 3106: Dictionary Views
503====================================================
504
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000505The dictionary methods :meth:`~dict.keys`, :meth:`~dict.values`, and
506:meth:`~dict.items` are different in Python 3.x. They return an object
507called a :dfn:`view` instead of a fully materialized list.
Andrew M. Kuchling85f928a2010-04-15 01:42:27 +0000508
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000509It's not possible to change the return values of :meth:`~dict.keys`,
510:meth:`~dict.values`, and :meth:`~dict.items` in Python 2.7 because
511too much code would break. Instead the 3.x versions were added
512under the new names :meth:`~dict.viewkeys`, :meth:`~dict.viewvalues`,
513and :meth:`~dict.viewitems`.
Andrew M. Kuchling85f928a2010-04-15 01:42:27 +0000514
515::
516
517 >>> d = dict((i*10, chr(65+i)) for i in range(26))
518 >>> d
519 {0: 'A', 130: 'N', 10: 'B', 140: 'O', 20: ..., 250: 'Z'}
520 >>> d.viewkeys()
521 dict_keys([0, 130, 10, 140, 20, 150, 30, ..., 250])
522
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000523Views can be iterated over, but the key and item views also behave
524like sets. The ``&`` operator performs intersection, and ``|``
525performs a union::
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +0000526
527 >>> d1 = dict((i*10, chr(65+i)) for i in range(26))
528 >>> d2 = dict((i**.5, i) for i in range(1000))
529 >>> d1.viewkeys() & d2.viewkeys()
530 set([0.0, 10.0, 20.0, 30.0])
531 >>> d1.viewkeys() | range(0, 30)
532 set([0, 1, 130, 3, 4, 5, 6, ..., 120, 250])
533
Andrew M. Kuchling85f928a2010-04-15 01:42:27 +0000534The view keeps track of the dictionary and its contents change as the
535dictionary is modified::
536
537 >>> vk = d.viewkeys()
538 >>> vk
539 dict_keys([0, 130, 10, ..., 250])
540 >>> d[260] = '&'
541 >>> vk
542 dict_keys([0, 130, 260, 10, ..., 250])
543
544However, note that you can't add or remove keys while you're iterating
545over the view::
546
547 >>> for k in vk:
548 ... d[k*2] = k
549 ...
550 Traceback (most recent call last):
551 File "<stdin>", line 1, in <module>
552 RuntimeError: dictionary changed size during iteration
553
554You can use the view methods in Python 2.x code, and the 2to3
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000555converter will change them to the standard :meth:`~dict.keys`,
556:meth:`~dict.values`, and :meth:`~dict.items` methods.
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000557
558.. seealso::
559
560 :pep:`3106` - Revamping dict.keys(), .values() and .items()
561 PEP written by Guido van Rossum.
562 Backported to 2.7 by Alexandre Vassalotti; :issue:`1967`.
563
564
Andrew M. Kuchling9fbbd3b2010-05-01 12:06:51 +0000565PEP 3137: The memoryview Object
566====================================================
567
568The :class:`memoryview` object provides a view of another object's
569memory content that matches the :class:`bytes` type's interface.
570
571 >>> import string
572 >>> m = memoryview(string.letters)
573 >>> m
574 <memory at 0x37f850>
575 >>> len(m) # Returns length of underlying object
576 52
577 >>> m[0], m[25], m[26] # Indexing returns one byte
578 ('a', 'z', 'A')
579 >>> m2 = m[0:26] # Slicing returns another memoryview
580 >>> m2
581 <memory at 0x37f080>
582
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000583The content of the view can be converted to a string of bytes or
Andrew M. Kuchling9fbbd3b2010-05-01 12:06:51 +0000584a list of integers:
585
586 >>> m2.tobytes()
587 'abcdefghijklmnopqrstuvwxyz'
588 >>> m2.tolist()
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000589 [97, 98, 99, 100, 101, 102, 103, ... 121, 122]
Andrew M. Kuchling9fbbd3b2010-05-01 12:06:51 +0000590 >>>
591
592:class:`memoryview` objects allow modifying the underlying object if
593it's a mutable object.
594
595 >>> m2[0] = 75
596 Traceback (most recent call last):
597 File "<stdin>", line 1, in <module>
598 TypeError: cannot modify read-only memory
599 >>> b = bytearray(string.letters) # Creating a mutable object
600 >>> b
601 bytearray(b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
602 >>> mb = memoryview(b)
603 >>> mb[0] = '*' # Assign to view, changing the bytearray.
604 >>> b[0:5] # The bytearray has been changed.
605 bytearray(b'*bcde')
606 >>>
607
608.. seealso::
609
610 :pep:`3137` - Immutable Bytes and Mutable Buffer
611 PEP written by Guido van Rossum.
Antoine Pitrou5cace782010-05-01 12:16:39 +0000612 Implemented by Travis Oliphant, Antoine Pitrou and others.
Andrew M. Kuchling9fbbd3b2010-05-01 12:06:51 +0000613 Backported to 2.7 by Antoine Pitrou; :issue:`2396`.
614
615
616
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000617Other Language Changes
618======================
619
620Some smaller changes made to the core Python language are:
621
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000622* The syntax for set literals has been backported from Python 3.x.
623 Curly brackets are used to surround the contents of the resulting
624 mutable set; set literals are
625 distinguished from dictionaries by not containing colons and values.
626 ``{}`` continues to represent an empty dictionary; use
627 ``set()`` for an empty set.
628
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000629 >>> {1, 2, 3, 4, 5}
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000630 set([1, 2, 3, 4, 5])
Ezio Melotti021f3342010-04-06 03:26:49 +0000631 >>> set() # empty set
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000632 set([])
Ezio Melotti021f3342010-04-06 03:26:49 +0000633 >>> {} # empty dict
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000634 {}
635
636 Backported by Alexandre Vassalotti; :issue:`2335`.
637
638* Dictionary and set comprehensions are another feature backported from
639 3.x, generalizing list/generator comprehensions to use
640 the literal syntax for sets and dictionaries.
641
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +0000642 >>> {x: x*x for x in range(6)}
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000643 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +0000644 >>> {('a'*x) for x in range(6)}
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000645 set(['', 'a', 'aa', 'aaa', 'aaaa', 'aaaaa'])
646
647 Backported by Alexandre Vassalotti; :issue:`2333`.
648
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000649* The :keyword:`with` statement can now use multiple context managers
650 in one statement. Context managers are processed from left to right
651 and each one is treated as beginning a new :keyword:`with` statement.
652 This means that::
653
654 with A() as a, B() as b:
655 ... suite of statements ...
656
657 is equivalent to::
658
659 with A() as a:
660 with B() as b:
661 ... suite of statements ...
662
663 The :func:`contextlib.nested` function provides a very similar
664 function, so it's no longer necessary and has been deprecated.
665
666 (Proposed in http://codereview.appspot.com/53094; implemented by
667 Georg Brandl.)
668
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000669* Conversions between floating-point numbers and strings are
670 now correctly rounded on most platforms. These conversions occur
671 in many different places: :func:`str` on
672 floats and complex numbers; the :class:`float` and :class:`complex`
673 constructors;
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000674 numeric formatting; serializing and
675 deserializing floats and complex numbers using the
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000676 :mod:`marshal`, :mod:`pickle`
677 and :mod:`json` modules;
678 parsing of float and imaginary literals in Python code;
Ezio Melotti021f3342010-04-06 03:26:49 +0000679 and :class:`~decimal.Decimal`-to-float conversion.
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000680
681 Related to this, the :func:`repr` of a floating-point number *x*
682 now returns a result based on the shortest decimal string that's
683 guaranteed to round back to *x* under correct rounding (with
684 round-half-to-even rounding mode). Previously it gave a string
685 based on rounding x to 17 decimal digits.
686
Ezio Melotti021f3342010-04-06 03:26:49 +0000687 .. maybe add an example?
688
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000689 The rounding library responsible for this improvement works on
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000690 Windows and on Unix platforms using the gcc, icc, or suncc
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000691 compilers. There may be a small number of platforms where correct
692 operation of this code cannot be guaranteed, so the code is not
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +0000693 used on such systems. You can find out which code is being used
694 by checking :data:`sys.float_repr_style`, which will be ``short``
695 if the new code is in use and ``legacy`` if it isn't.
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000696
Mark Dickinsonbdd863d2010-01-07 09:28:29 +0000697 Implemented by Eric Smith and Mark Dickinson, using David Gay's
698 :file:`dtoa.c` library; :issue:`7117`.
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000699
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000700* Conversions from long integers and regular integers to floating
701 point now round differently, returning the floating-point number
702 closest to the number. This doesn't matter for small integers that
703 can be converted exactly, but for large numbers that will
704 unavoidably lose precision, Python 2.7 now approximates more
705 closely. For example, Python 2.6 computed the following::
706
707 >>> n = 295147905179352891391
708 >>> float(n)
709 2.9514790517935283e+20
710 >>> n - long(float(n))
711 65535L
712
713 Python 2.7's floating-point result is larger, but much closer to the
714 true value::
715
716 >>> n = 295147905179352891391
717 >>> float(n)
718 2.9514790517935289e+20
719 >>> n - long(float(n))
720 -1L
721
722 (Implemented by Mark Dickinson; :issue:`3166`.)
723
724 Integer division is also more accurate in its rounding behaviours. (Also
725 implemented by Mark Dickinson; :issue:`1811`.)
726
Andrew M. Kuchling11bd81c2010-06-11 01:54:58 +0000727* Implicit coercion for complex numbers has been removed; the interpreter
728 will no longer ever attempt to call a :meth:`__coerce__` method on complex
729 objects. (Removed by Meador Inge and Mark Dickinson; :issue:`5211`.)
730
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000731* The :meth:`str.format` method now supports automatic numbering of the replacement
Benjamin Petersonaa0a0b92009-04-11 20:27:15 +0000732 fields. This makes using :meth:`str.format` more closely resemble using
733 ``%s`` formatting::
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +0000734
735 >>> '{}:{}:{}'.format(2009, 04, 'Sunday')
736 '2009:4:Sunday'
737 >>> '{}:{}:{day}'.format(2009, 4, day='Sunday')
738 '2009:4:Sunday'
739
Benjamin Petersonaa0a0b92009-04-11 20:27:15 +0000740 The auto-numbering takes the fields from left to right, so the first ``{...}``
741 specifier will use the first argument to :meth:`str.format`, the next
742 specifier will use the next argument, and so on. You can't mix auto-numbering
743 and explicit numbering -- either number all of your specifier fields or none
744 of them -- but you can mix auto-numbering and named fields, as in the second
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000745 example above. (Contributed by Eric Smith; :issue:`5237`.)
746
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000747 Complex numbers now correctly support usage with :func:`format`,
748 and default to being right-aligned.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000749 Specifying a precision or comma-separation applies to both the real
750 and imaginary parts of the number, but a specified field width and
751 alignment is applied to the whole of the resulting ``1.5+3j``
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000752 output. (Contributed by Eric Smith; :issue:`1588` and :issue:`7988`.)
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +0000753
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000754 The 'F' format code now always formats its output using uppercase characters,
755 so it will now produce 'INF' and 'NAN'.
756 (Contributed by Eric Smith; :issue:`3382`.)
757
Andrew M. Kuchlingc4ae73e2010-04-30 13:47:34 +0000758 A low-level change: the :meth:`object.__format__` method now triggers
759 a :exc:`PendingDeprecationWarning` if it's passed a format string,
760 because the :meth:`__format__` method for :class:`object` converts
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000761 the object to a string representation and formats that. Previously
762 the method silently applied the format string to the string
Andrew M. Kuchlingc4ae73e2010-04-30 13:47:34 +0000763 representation, but that could hide mistakes in Python code. If
764 you're supplying formatting information such as an alignment or
765 precision, presumably you're expecting the formatting to be applied
766 in some object-specific way. (Fixed by Eric Smith; :issue:`7994`.)
767
Mark Dickinson1a707982008-12-17 16:14:37 +0000768* The :func:`int` and :func:`long` types gained a ``bit_length``
Georg Brandl64e1c752009-04-11 18:19:27 +0000769 method that returns the number of bits necessary to represent
Mark Dickinson1a707982008-12-17 16:14:37 +0000770 its argument in binary::
771
772 >>> n = 37
Ezio Melotti021f3342010-04-06 03:26:49 +0000773 >>> bin(n)
Mark Dickinson1a707982008-12-17 16:14:37 +0000774 '0b100101'
775 >>> n.bit_length()
776 6
777 >>> n = 2**123-1
778 >>> n.bit_length()
779 123
780 >>> (n+1).bit_length()
781 124
782
783 (Contributed by Fredrik Johansson and Victor Stinner; :issue:`3439`.)
784
Andrew M. Kuchling019aec22010-06-15 00:38:58 +0000785* The :keyword:`import` statement will no longer try a relative import
786 if an absolute import (e.g. ``from .os import sep``) fails. This
787 fixes a bug, but could possibly break certain :keyword:`import`
788 statements that were only working by accident. (Fixed by Meador Inge;
789 :issue:`7902`.)
790
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000791* It's now possible for a subclass of the built-in :class:`unicode` type
792 to override the :meth:`__unicode__` method. (Implemented by
793 Victor Stinner; :issue:`1583863`.)
794
Ezio Melotti021f3342010-04-06 03:26:49 +0000795* The :class:`bytearray` type's :meth:`~bytearray.translate` method now accepts
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000796 ``None`` as its first argument. (Fixed by Georg Brandl;
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +0000797 :issue:`4759`.)
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000798
Ezio Melotti9d8d2a42010-07-03 07:43:04 +0000799 .. XXX bytearray doesn't seem to be documented
Ezio Melotti021f3342010-04-06 03:26:49 +0000800
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000801* When using ``@classmethod`` and ``@staticmethod`` to wrap
802 methods as class or static methods, the wrapper object now
803 exposes the wrapped function as their :attr:`__func__` attribute.
804 (Contributed by Amaury Forgeot d'Arc, after a suggestion by
805 George Sakkis; :issue:`5982`.)
806
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +0000807* When a restricted set of attributes were set using ``__slots__``,
808 deleting an unset attribute would not raise :exc:`AttributeError`
809 as you would expect. Fixed by Benjamin Peterson; :issue:`7604`.)
810
Andrew M. Kuchling264acad2010-05-25 13:34:08 +0000811* Two new encodings are now supported: "cp720", used primarily for
812 Arabic text; and "cp858", a variant of CP 850 that adds the euro
813 symbol. (CP720 contributed by Alexander Belchenko and Amaury
814 Forgeot d'Arc in :issue:`1616979`; CP858 contributed by Tim Hatch in
815 :issue:`8016`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000816
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000817* The :class:`file` object will now set the :attr:`filename` attribute
818 on the :exc:`IOError` exception when trying to open a directory
Andrew M. Kuchling0e7123f2010-02-08 13:22:24 +0000819 on POSIX platforms (noted by Jan Kaliszewski; :issue:`4764`), and
820 now explicitly checks for and forbids writing to read-only file objects
821 instead of trusting the C library to catch and report the error
822 (fixed by Stefan Krah; :issue:`5677`).
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +0000823
Benjamin Petersonae9a0a02009-12-31 16:49:37 +0000824* The Python tokenizer now translates line endings itself, so the
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000825 :func:`compile` built-in function now accepts code using any
Benjamin Petersonae9a0a02009-12-31 16:49:37 +0000826 line-ending convention. Additionally, it no longer requires that the
827 code end in a newline.
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +0000828
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +0000829* Extra parentheses in function definitions are illegal in Python 3.x,
830 meaning that you get a syntax error from ``def f((x)): pass``. In
831 Python3-warning mode, Python 2.7 will now warn about this odd usage.
832 (Noted by James Lingard; :issue:`7362`.)
833
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +0000834* It's now possible to create weak references to old-style class
835 objects. New-style classes were always weak-referenceable. (Fixed
836 by Antoine Pitrou; :issue:`8268`.)
837
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +0000838* When a module object is garbage-collected, the module's dictionary is
839 now only cleared if no one else is holding a reference to the
840 dictionary (:issue:`7140`).
841
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000842.. ======================================================================
843
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000844.. _new-27-interpreter:
845
846Interpreter Changes
847-------------------------------
848
849A new environment variable, :envvar:`PYTHONWARNINGS`,
850allows controlling warnings. It should be set to a string
851containing warning settings, equivalent to those
852used with the :option:`-W` switch, separated by commas.
853(Contributed by Brian Curtin; :issue:`7301`.)
854
855For example, the following setting will print warnings every time
856they occur, but turn warnings from the :mod:`Cookie` module into an
857error. (The exact syntax for setting an environment variable varies
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000858across operating systems and shells.)
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000859
860::
861
862 export PYTHONWARNINGS=all,error:::Cookie:0
863
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +0000864.. ======================================================================
865
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000866
867Optimizations
868-------------
869
Andrew M. Kuchling77069572009-03-31 01:21:01 +0000870Several performance enhancements have been added:
871
872.. * A new :program:`configure` option, :option:`--with-computed-gotos`,
873 compiles the main bytecode interpreter loop using a new dispatch
874 mechanism that gives speedups of up to 20%, depending on the system
875 and benchmark. The new mechanism is only supported on certain
876 compilers, such as gcc, SunPro, and icc.
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +0000877
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000878* A new opcode was added to perform the initial setup for
879 :keyword:`with` statements, looking up the :meth:`__enter__` and
880 :meth:`__exit__` methods. (Contributed by Benjamin Peterson.)
881
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +0000882* The garbage collector now performs better for one common usage
883 pattern: when many objects are being allocated without deallocating
884 any of them. This would previously take quadratic
885 time for garbage collection, but now the number of full garbage collections
886 is reduced as the number of objects on the heap grows.
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000887 The new logic only performs a full garbage collection pass when
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +0000888 the middle generation has been collected 10 times and when the
889 number of survivor objects from the middle generation exceeds 10% of
890 the number of objects in the oldest generation. (Suggested by Martin
Ezio Melotti021f3342010-04-06 03:26:49 +0000891 von Löwis and implemented by Antoine Pitrou; :issue:`4074`.)
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +0000892
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +0000893* The garbage collector tries to avoid tracking simple containers
894 which can't be part of a cycle. In Python 2.7, this is now true for
895 tuples and dicts containing atomic types (such as ints, strings,
896 etc.). Transitively, a dict containing tuples of atomic types won't
897 be tracked either. This helps reduce the cost of each
898 garbage collection by decreasing the number of objects to be
899 considered and traversed by the collector.
Antoine Pitrouc18f6b02009-03-28 19:10:13 +0000900 (Contributed by Antoine Pitrou; :issue:`4688`.)
901
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000902* Long integers are now stored internally either in base 2**15 or in base
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +0000903 2**30, the base being determined at build time. Previously, they
904 were always stored in base 2**15. Using base 2**30 gives
905 significant performance improvements on 64-bit machines, but
906 benchmark results on 32-bit machines have been mixed. Therefore,
907 the default is to use base 2**30 on 64-bit machines and base 2**15
908 on 32-bit machines; on Unix, there's a new configure option
909 :option:`--enable-big-digits` that can be used to override this default.
910
911 Apart from the performance improvements this change should be
912 invisible to end users, with one exception: for testing and
Ezio Melotti021f3342010-04-06 03:26:49 +0000913 debugging purposes there's a new structseq :data:`sys.long_info` that
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +0000914 provides information about the internal format, giving the number of
915 bits per digit and the size in bytes of the C type used to store
916 each digit::
917
918 >>> import sys
919 >>> sys.long_info
920 sys.long_info(bits_per_digit=30, sizeof_digit=4)
921
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +0000922 (Contributed by Mark Dickinson; :issue:`4258`.)
923
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +0000924 Another set of changes made long objects a few bytes smaller: 2 bytes
Andrew M. Kuchling77069572009-03-31 01:21:01 +0000925 smaller on 32-bit systems and 6 bytes on 64-bit.
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +0000926 (Contributed by Mark Dickinson; :issue:`5260`.)
927
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +0000928* The division algorithm for long integers has been made faster
929 by tightening the inner loop, doing shifts instead of multiplications,
930 and fixing an unnecessary extra iteration.
931 Various benchmarks show speedups of between 50% and 150% for long
932 integer divisions and modulo operations.
933 (Contributed by Mark Dickinson; :issue:`5512`.)
Andrew M. Kuchlinga7f59472009-12-31 16:38:53 +0000934 Bitwise operations are also significantly faster (initial patch by
935 Gregory Smith; :issue:`1087418`).
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000936
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +0000937* The implementation of ``%`` checks for the left-side operand being
938 a Python string and special-cases it; this results in a 1-3%
939 performance increase for applications that frequently use ``%``
940 with strings, such as templating libraries.
941 (Implemented by Collin Winter; :issue:`5176`.)
942
Andrew M. Kuchling77069572009-03-31 01:21:01 +0000943* List comprehensions with an ``if`` condition are compiled into
944 faster bytecode. (Patch by Antoine Pitrou, back-ported to 2.7
945 by Jeffrey Yasskin; :issue:`4715`.)
946
Andrew M. Kuchling7f8ebdb2010-01-03 01:15:21 +0000947* Converting an integer or long integer to a decimal string was made
948 faster by special-casing base 10 instead of using a generalized
949 conversion function that supports arbitrary bases.
950 (Patch by Gawain Bolton; :issue:`6713`.)
951
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +0000952* The :meth:`split`, :meth:`replace`, :meth:`rindex`,
953 :meth:`rpartition`, and :meth:`rsplit` methods of string-like types
954 (strings, Unicode strings, and :class:`bytearray` objects) now use a
955 fast reverse-search algorithm instead of a character-by-character
956 scan. This is sometimes faster by a factor of 10. (Added by
957 Florent Xicluna; :issue:`7462` and :issue:`7622`.)
Andrew M. Kuchling7f8ebdb2010-01-03 01:15:21 +0000958
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000959* The :mod:`pickle` and :mod:`cPickle` modules now automatically
960 intern the strings used for attribute names, reducing memory usage
961 of the objects resulting from unpickling. (Contributed by Jake
962 McGuire; :issue:`5084`.)
963
964* The :mod:`cPickle` module now special-cases dictionaries,
965 nearly halving the time required to pickle them.
966 (Contributed by Collin Winter; :issue:`5670`.)
967
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000968.. ======================================================================
969
Georg Brandl0516f812009-11-18 18:52:35 +0000970New and Improved Modules
971========================
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +0000972
973As in every release, Python's standard library received a number of
974enhancements and bug fixes. Here's a partial list of the most notable
975changes, sorted alphabetically by module name. Consult the
976:file:`Misc/NEWS` file in the source tree for a more complete list of
977changes, or look through the Subversion logs for all the details.
978
Ezio Melotti021f3342010-04-06 03:26:49 +0000979* The :mod:`bdb` module's base debugging class :class:`~bdb.Bdb`
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +0000980 gained a feature for skipping modules. The constructor
981 now takes an iterable containing glob-style patterns such as
982 ``django.*``; the debugger will not step into stack frames
983 from a module that matches one of these patterns.
984 (Contributed by Maru Newby after a suggestion by
985 Senthil Kumaran; :issue:`5142`.)
986
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +0000987* The :mod:`binascii` module now supports the buffer API, so it can be
988 used with :class:`memoryview` instances and other similar buffer objects.
989 (Backported from 3.x by Florent Xicluna; :issue:`7703`.)
990
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000991* Updated module: the :mod:`bsddb` module has been updated from 4.7.2devel9
992 to version 4.8.4 of
993 `the pybsddb package <http://www.jcea.es/programacion/pybsddb.htm>`__.
994 The new version features better Python 3.x compatibility, various bug fixes,
995 and adds several new BerkeleyDB flags and methods.
Ezio Melotti021f3342010-04-06 03:26:49 +0000996 (Updated by Jesús Cea Avión; :issue:`8156`. The pybsddb
Andrew M. Kuchling27024912010-05-12 00:38:44 +0000997 changelog can be read at http://hg.jcea.es/pybsddb/file/tip/ChangeLog.)
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +0000998
Ezio Melotti021f3342010-04-06 03:26:49 +0000999* The :mod:`bz2` module's :class:`~bz2.BZ2File` now supports the context
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001000 management protocol, so you can write ``with bz2.BZ2File(...) as f:``.
Andrew M. Kuchlingbadc7092010-05-08 01:35:55 +00001001 (Contributed by Hagen Fürstenau; :issue:`3860`.)
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001002
Ezio Melotti021f3342010-04-06 03:26:49 +00001003* New class: the :class:`~collections.Counter` class in the :mod:`collections`
1004 module is useful for tallying data. :class:`~collections.Counter` instances
1005 behave mostly like dictionaries but return zero for missing keys instead of
Georg Brandlf6dab952009-04-28 21:48:35 +00001006 raising a :exc:`KeyError`:
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001007
Georg Brandlf6dab952009-04-28 21:48:35 +00001008 .. doctest::
1009 :options: +NORMALIZE_WHITESPACE
1010
1011 >>> from collections import Counter
1012 >>> c = Counter()
1013 >>> for letter in 'here is a sample of english text':
1014 ... c[letter] += 1
1015 ...
1016 >>> c
1017 Counter({' ': 6, 'e': 5, 's': 3, 'a': 2, 'i': 2, 'h': 2,
1018 'l': 2, 't': 2, 'g': 1, 'f': 1, 'm': 1, 'o': 1, 'n': 1,
1019 'p': 1, 'r': 1, 'x': 1})
1020 >>> c['e']
1021 5
1022 >>> c['z']
1023 0
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001024
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001025 There are three additional :class:`~collections.Counter` methods.
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00001026 :meth:`~collections.Counter.most_common` returns the N most common
1027 elements and their counts. :meth:`~collections.Counter.elements`
1028 returns an iterator over the contained elements, repeating each
1029 element as many times as its count.
1030 :meth:`~collections.Counter.subtract` takes an iterable and
1031 subtracts one for each element instead of adding; if the argument is
1032 a dictionary or another :class:`Counter`, the counts are
1033 subtracted. ::
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001034
1035 >>> c.most_common(5)
1036 [(' ', 6), ('e', 5), ('s', 3), ('a', 2), ('i', 2)]
1037 >>> c.elements() ->
1038 'a', 'a', ' ', ' ', ' ', ' ', ' ', ' ',
1039 'e', 'e', 'e', 'e', 'e', 'g', 'f', 'i', 'i',
1040 'h', 'h', 'm', 'l', 'l', 'o', 'n', 'p', 's',
Georg Brandlf6dab952009-04-28 21:48:35 +00001041 's', 's', 'r', 't', 't', 'x'
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00001042 >>> c['e']
1043 5
1044 >>> c.subtract('very heavy on the letter e')
1045 >>> c['e'] # Count is now lower
1046 -1
Ezio Melotti021f3342010-04-06 03:26:49 +00001047
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001048 Contributed by Raymond Hettinger; :issue:`1696199`.
1049
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00001050 .. revision 79660
1051
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001052 New class: :class:`~collections.OrderedDict` is described in the earlier
Ezio Melotti021f3342010-04-06 03:26:49 +00001053 section :ref:`pep-0372`.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001054
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001055 New method: The :class:`~collections.deque` data type now has a
1056 :meth:`~collections.deque.count` method that returns the number of
1057 contained elements equal to the supplied argument *x*, and a
1058 :meth:`~collections.deque.reverse` method that reverses the elements
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001059 of the deque in-place. :class:`~collections.deque` also exposes its maximum
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001060 length as the read-only :attr:`~collections.deque.maxlen` attribute.
1061 (Both features added by Raymond Hettinger.)
1062
Ezio Melotti021f3342010-04-06 03:26:49 +00001063 The :class:`~collections.namedtuple` class now has an optional *rename* parameter.
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001064 If *rename* is true, field names that are invalid because they've
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001065 been repeated or aren't legal Python identifiers will be
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +00001066 renamed to legal names that are derived from the field's
1067 position within the list of fields:
1068
Georg Brandlf6dab952009-04-28 21:48:35 +00001069 >>> from collections import namedtuple
1070 >>> T = namedtuple('T', ['field1', '$illegal', 'for', 'field2'], rename=True)
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +00001071 >>> T._fields
1072 ('field1', '_1', '_2', 'field2')
1073
1074 (Added by Raymond Hettinger; :issue:`1818`.)
1075
Andrew M. Kuchling264acad2010-05-25 13:34:08 +00001076 Finally, the :class:`~collections.Mapping` abstract base class now
1077 raises a :exc:`NotImplemented` exception if a mapping is compared to
1078 another type that isn't a :class:`Mapping`.
1079 (Fixed by Daniel Stutzbach; :issue:`8729`.)
1080
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +00001081* Constructors for the parsing classes in the :mod:`ConfigParser` module now
1082 take a *allow_no_value* parameter, defaulting to false; if true,
1083 options without values will be allowed. For example::
1084
1085 >>> import ConfigParser, StringIO
1086 >>> sample_config = """
1087 ... [mysqld]
1088 ... user = mysql
1089 ... pid-file = /var/run/mysqld/mysqld.pid
1090 ... skip-bdb
1091 ... """
1092 >>> config = ConfigParser.RawConfigParser(allow_no_value=True)
1093 >>> config.readfp(StringIO.StringIO(sample_config))
1094 >>> config.get('mysqld', 'user')
1095 'mysql'
1096 >>> print config.get('mysqld', 'skip-bdb')
1097 None
1098 >>> print config.get('mysqld', 'unknown')
1099 Traceback (most recent call last):
1100 ...
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001101 NoOptionError: No option 'unknown' in section: 'mysqld'
Andrew M. Kuchling02f7b992010-05-07 01:45:14 +00001102
1103 (Contributed by Mats Kindahl; :issue:`7005`.)
1104
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001105* Deprecated function: :func:`contextlib.nested`, which allows
1106 handling more than one context manager with a single :keyword:`with`
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001107 statement, has been deprecated, because the :keyword:`with` statement
1108 now supports multiple context managers.
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001109
Andrew M. Kuchling11bd81c2010-06-11 01:54:58 +00001110* The :mod:`cookielib` module now ignores cookies that have an invalid
1111 version field, one that doesn't contain an integer value. (Fixed by
1112 John J. Lee; :issue:`3924`.)
1113
Ezio Melotti021f3342010-04-06 03:26:49 +00001114* The :mod:`copy` module's :func:`~copy.deepcopy` function will now
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00001115 correctly copy bound instance methods. (Implemented by
1116 Robert Collins; :issue:`1515`.)
1117
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001118* The :mod:`ctypes` module now always converts ``None`` to a C NULL
1119 pointer for arguments declared as pointers. (Changed by Thomas
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001120 Heller; :issue:`4606`.) The underlying `libffi library
1121 <http://sourceware.org/libffi/>`__ has been updated to version
1122 3.0.9, containing various fixes for different platforms. (Updated
1123 by Matthias Klose; :issue:`8142`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001124
Ezio Melotti021f3342010-04-06 03:26:49 +00001125* New method: the :mod:`datetime` module's :class:`~datetime.timedelta` class
1126 gained a :meth:`~datetime.timedelta.total_seconds` method that returns the
1127 number of seconds in the duration. (Contributed by Brian Quinlan; :issue:`5788`.)
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00001128
Ezio Melotti021f3342010-04-06 03:26:49 +00001129* New method: the :class:`~decimal.Decimal` class gained a
1130 :meth:`~decimal.Decimal.from_float` class method that performs an exact
1131 conversion of a floating-point number to a :class:`~decimal.Decimal`.
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001132 This exact conversion strives for the
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001133 closest decimal approximation to the floating-point representation's value;
1134 the resulting decimal value will therefore still include the inaccuracy,
1135 if any.
1136 For example, ``Decimal.from_float(0.1)`` returns
1137 ``Decimal('0.1000000000000000055511151231257827021181583404541015625')``.
1138 (Implemented by Raymond Hettinger; :issue:`4796`.)
1139
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001140 Comparing instances of :class:`~decimal.Decimal` with floating-point
Andrew M. Kuchling04b99cc2010-05-04 01:24:22 +00001141 numbers now produces sensible results based on the numeric values
1142 of the operands. Previously such comparisons would fall back to
1143 Python's default rules for comparing objects, which produced arbitrary
1144 results based on their type. Note that you still cannot combine
1145 :class:`Decimal` and floating-point in other operations such as addition,
1146 since you should be explicitly choosing how to convert between float and
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001147 :class:`~decimal.Decimal`. (Fixed by Mark Dickinson; :issue:`2531`.)
Andrew M. Kuchling04b99cc2010-05-04 01:24:22 +00001148
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00001149 The constructor for :class:`~decimal.Decimal` now accepts
1150 floating-point numbers (added by Raymond Hettinger; :issue:`8257`)
1151 and non-European Unicode characters such as Arabic-Indic digits
1152 (contributed by Mark Dickinson; :issue:`6595`).
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001153
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001154 Most of the methods of the :class:`~decimal.Context` class now accept integers
1155 as well as :class:`~decimal.Decimal` instances; the only exceptions are the
1156 :meth:`~decimal.Context.canonical` and :meth:`~decimal.Context.is_canonical`
1157 methods. (Patch by Juan José Conti; :issue:`7633`.)
1158
Ezio Melotti021f3342010-04-06 03:26:49 +00001159 When using :class:`~decimal.Decimal` instances with a string's
1160 :meth:`~str.format` method, the default alignment was previously
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001161 left-alignment. This has been changed to right-alignment, which is
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001162 more sensible for numeric types. (Changed by Mark Dickinson; :issue:`6857`.)
1163
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001164 Comparisons involving a signaling NaN value (or ``sNAN``) now signal
1165 :const:`InvalidOperation` instead of silently returning a true or
1166 false value depending on the comparison operator. Quiet NaN values
1167 (or ``NaN``) are now hashable. (Fixed by Mark Dickinson;
1168 :issue:`7279`.)
1169
Andrew M. Kuchling363dbcc2010-04-14 23:55:17 +00001170* The :mod:`difflib` module now produces output that is more
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00001171 compatible with modern :command:`diff`/:command:`patch` tools
1172 through one small change, using a tab character instead of spaces as
1173 a separator in the header giving the filename. (Fixed by Anatoly
1174 Techtonik; :issue:`7585`.)
1175
Andrew M. Kuchling264acad2010-05-25 13:34:08 +00001176* The Distutils ``sdist`` command now always regenerates the
1177 :file:`MANIFEST` file, since even if the :file:`MANIFEST.in` or
1178 :file:`setup.py` files haven't been modified, the user might have
1179 created some new files that should be included.
1180 (Fixed by Tarek Ziadé; :issue:`8688`.)
1181
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00001182* The :mod:`doctest` module's :const:`IGNORE_EXCEPTION_DETAIL` flag
1183 will now ignore the name of the module containing the exception
1184 being tested. (Patch by Lennart Regebro; :issue:`7490`.)
Andrew M. Kuchling363dbcc2010-04-14 23:55:17 +00001185
Andrew M. Kuchling019aec22010-06-15 00:38:58 +00001186* The :mod:`email` module's :class:`~email.message.Message` class will
1187 now accept a Unicode-valued payload, automatically converting the
1188 payload to the encoding specified by :attr:`output_charset`.
1189 (Added by R. David Murray; :issue:`1368247`.)
1190
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00001191* The :class:`~fractions.Fraction` class now accepts a single float or
1192 :class:`~decimal.Decimal` instance, or two rational numbers, as
1193 arguments to its constructor. (Implemented by Mark Dickinson;
1194 rationals added in :issue:`5812`, and float/decimal in
1195 :issue:`8294`.)
Andrew M. Kuchling92b97002009-05-02 17:12:15 +00001196
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001197 Ordering comparisons (``<``, ``<=``, ``>``, ``>=``) between
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +00001198 fractions and complex numbers now raise a :exc:`TypeError`.
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001199 This fixes an oversight, making the :class:`~fractions.Fraction`
1200 match the other numeric types.
Andrew M. Kuchlingec6393f2010-04-11 01:40:30 +00001201
1202 .. revision 79455
1203
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001204* New class: :class:`~ftplib.FTP_TLS` in
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001205 the :mod:`ftplib` module provides secure FTP
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00001206 connections using TLS encapsulation of authentication as well as
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001207 subsequent control and data transfers.
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001208 (Contributed by Giampaolo Rodola; :issue:`2054`.)
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001209
Ezio Melotti021f3342010-04-06 03:26:49 +00001210 The :meth:`~ftplib.FTP.storbinary` method for binary uploads can now restart
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001211 uploads thanks to an added *rest* parameter (patch by Pablo Mouzo;
1212 :issue:`6845`.)
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00001213
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001214* New class decorator: :func:`~functools.total_ordering` in the :mod:`functools`
Andrew M. Kuchling6d7dfa22010-04-11 12:49:37 +00001215 module takes a class that defines an :meth:`__eq__` method and one of
1216 :meth:`__lt__`, :meth:`__le__`, :meth:`__gt__`, or :meth:`__ge__`,
1217 and generates the missing comparison methods. Since the
1218 :meth:`__cmp__` method is being deprecated in Python 3.x,
1219 this decorator makes it easier to define ordered classes.
1220 (Added by Raymond Hettinger; :issue:`5479`.)
1221
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001222 New function: :func:`~functools.cmp_to_key` will take an old-style comparison
Andrew M. Kuchling6d7dfa22010-04-11 12:49:37 +00001223 function that expects two arguments and return a new callable that
1224 can be used as the *key* parameter to functions such as
1225 :func:`sorted`, :func:`min` and :func:`max`, etc. The primary
1226 intended use is to help with making code compatible with Python 3.x.
1227 (Added by Raymond Hettinger.)
1228
Ezio Melotti021f3342010-04-06 03:26:49 +00001229* New function: the :mod:`gc` module's :func:`~gc.is_tracked` returns
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001230 true if a given instance is tracked by the garbage collector, false
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00001231 otherwise. (Contributed by Antoine Pitrou; :issue:`4688`.)
1232
Ezio Melotti021f3342010-04-06 03:26:49 +00001233* The :mod:`gzip` module's :class:`~gzip.GzipFile` now supports the context
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001234 management protocol, so you can write ``with gzip.GzipFile(...) as f:``
Andrew M. Kuchlingbadc7092010-05-08 01:35:55 +00001235 (contributed by Hagen Fürstenau; :issue:`3860`), and it now implements
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +00001236 the :class:`io.BufferedIOBase` ABC, so you can wrap it with
1237 :class:`io.BufferedReader` for faster processing
1238 (contributed by Nir Aides; :issue:`7471`).
1239 It's also now possible to override the modification time
Andrew M. Kuchling77069572009-03-31 01:21:01 +00001240 recorded in a gzipped file by providing an optional timestamp to
1241 the constructor. (Contributed by Jacques Frechet; :issue:`4272`.)
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001242
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001243 Files in gzip format can be padded with trailing zero bytes; the
1244 :mod:`gzip` module will now consume these trailing bytes. (Fixed by
1245 Tadek Pietraszek and Brian Curtin; :issue:`2846`.)
1246
Ezio Melotti021f3342010-04-06 03:26:49 +00001247* New attribute: the :mod:`hashlib` module now has an :attr:`~hashlib.hashlib.algorithms`
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +00001248 attribute containing a tuple naming the supported algorithms.
1249 In Python 2.7, ``hashlib.algorithms`` contains
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001250 ``('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')``.
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +00001251 (Contributed by Carl Chenet; :issue:`7418`.)
1252
Ezio Melotti021f3342010-04-06 03:26:49 +00001253* The default :class:`~httplib.HTTPResponse` class used by the :mod:`httplib` module now
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001254 supports buffering, resulting in much faster reading of HTTP responses.
Andrew M. Kuchlingbadc7092010-05-08 01:35:55 +00001255 (Contributed by Kristján Valur Jónsson; :issue:`4879`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001256
Ezio Melotti021f3342010-04-06 03:26:49 +00001257 The :class:`~httplib.HTTPConnection` and :class:`~httplib.HTTPSConnection` classes
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001258 now support a *source_address* parameter, a ``(host, port)`` 2-tuple
1259 giving the source address that will be used for the connection.
1260 (Contributed by Eldon Ziegler; :issue:`3972`.)
1261
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +00001262* The :mod:`ihooks` module now supports relative imports. Note that
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001263 :mod:`ihooks` is an older module for customizing imports,
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +00001264 superseded by the :mod:`imputil` module added in Python 2.0.
1265 (Relative import support added by Neil Schemenauer.)
1266
1267 .. revision 75423
1268
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001269* The :mod:`imaplib` module now supports IPv6 addresses.
1270 (Contributed by Derek Morr; :issue:`1655`.)
1271
Andrew M. Kuchlingce690522010-04-13 01:32:51 +00001272* New function: the :mod:`inspect` module's :func:`~inspect.getcallargs`
1273 takes a callable and its positional and keyword arguments,
1274 and figures out which of the callable's parameters will receive each argument,
1275 returning a dictionary mapping argument names to their values. For example::
1276
1277 >>> from inspect import getcallargs
1278 >>> def f(a, b=1, *pos, **named):
1279 ... pass
1280 >>> getcallargs(f, 1, 2, 3)
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001281 {'a': 1, 'b': 2, 'pos': (3,), 'named': {}}
Andrew M. Kuchlingce690522010-04-13 01:32:51 +00001282 >>> getcallargs(f, a=2, x=4)
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001283 {'a': 2, 'b': 1, 'pos': (), 'named': {'x': 4}}
Andrew M. Kuchlingce690522010-04-13 01:32:51 +00001284 >>> getcallargs(f)
1285 Traceback (most recent call last):
1286 ...
1287 TypeError: f() takes at least 1 argument (0 given)
1288
1289 Contributed by George Sakkis; :issue:`3135`.
1290
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001291* Updated module: The :mod:`io` library has been upgraded to the version shipped with
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001292 Python 3.1. For 3.1, the I/O library was entirely rewritten in C
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001293 and is 2 to 20 times faster depending on the task being performed. The
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001294 original Python version was renamed to the :mod:`_pyio` module.
1295
1296 One minor resulting change: the :class:`io.TextIOBase` class now
1297 has an :attr:`errors` attribute giving the error setting
1298 used for encoding and decoding errors (one of ``'strict'``, ``'replace'``,
1299 ``'ignore'``).
1300
1301 The :class:`io.FileIO` class now raises an :exc:`OSError` when passed
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001302 an invalid file descriptor. (Implemented by Benjamin Peterson;
Ezio Melotti021f3342010-04-06 03:26:49 +00001303 :issue:`4991`.) The :meth:`~io.IOBase.truncate` method now preserves the
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001304 file position; previously it would change the file position to the
1305 end of the new file. (Fixed by Pascal Chambon; :issue:`6939`.)
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00001306
Andrew M. Kuchling5a73ff82009-12-02 14:27:11 +00001307* New function: ``itertools.compress(data, selectors)`` takes two
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001308 iterators. Elements of *data* are returned if the corresponding
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001309 value in *selectors* is true::
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001310
1311 itertools.compress('ABCDEF', [1,0,1,0,1,1]) =>
1312 A, C, E, F
1313
Ezio Melotti021f3342010-04-06 03:26:49 +00001314 .. maybe here is better to use >>> list(itertools.compress(...)) instead
1315
Andrew M. Kuchling5a73ff82009-12-02 14:27:11 +00001316 New function: ``itertools.combinations_with_replacement(iter, r)``
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001317 returns all the possible *r*-length combinations of elements from the
Ezio Melotti021f3342010-04-06 03:26:49 +00001318 iterable *iter*. Unlike :func:`~itertools.combinations`, individual elements
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001319 can be repeated in the generated combinations::
1320
1321 itertools.combinations_with_replacement('abc', 2) =>
1322 ('a', 'a'), ('a', 'b'), ('a', 'c'),
1323 ('b', 'b'), ('b', 'c'), ('c', 'c')
1324
1325 Note that elements are treated as unique depending on their position
1326 in the input, not their actual values.
1327
Ezio Melotti021f3342010-04-06 03:26:49 +00001328 The :func:`itertools.count` function now has a *step* argument that
1329 allows incrementing by values other than 1. :func:`~itertools.count` also
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001330 now allows keyword arguments, and using non-integer values such as
Ezio Melotti021f3342010-04-06 03:26:49 +00001331 floats or :class:`~decimal.Decimal` instances. (Implemented by Raymond
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001332 Hettinger; :issue:`5032`.)
1333
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001334 :func:`itertools.combinations` and :func:`itertools.product`
1335 previously raised :exc:`ValueError` for values of *r* larger than
Andrew M. Kuchling77069572009-03-31 01:21:01 +00001336 the input iterable. This was deemed a specification error, so they
1337 now return an empty iterator. (Fixed by Raymond Hettinger; :issue:`4816`.)
1338
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001339* Updated module: The :mod:`json` module was upgraded to version 2.0.9 of the
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00001340 simplejson package, which includes a C extension that makes
1341 encoding and decoding faster.
1342 (Contributed by Bob Ippolito; :issue:`4136`.)
1343
Ezio Melotti021f3342010-04-06 03:26:49 +00001344 To support the new :class:`collections.OrderedDict` type, :func:`json.load`
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00001345 now has an optional *object_pairs_hook* parameter that will be called
1346 with any object literal that decodes to a list of pairs.
1347 (Contributed by Raymond Hettinger; :issue:`5381`.)
1348
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001349* The :mod:`mailbox` module's :class:`~mailbox.Maildir` class now records the
Andrew M. Kuchling837a5382010-05-06 17:21:59 +00001350 timestamp on the directories it reads, and only re-reads them if the
1351 modification time has subsequently changed. This improves
1352 performance by avoiding unneeded directory scans. (Fixed by
1353 A.M. Kuchling and Antoine Pitrou; :issue:`1607951`, :issue:`6896`.)
1354
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00001355* New functions: the :mod:`math` module gained
Ezio Melotti021f3342010-04-06 03:26:49 +00001356 :func:`~math.erf` and :func:`~math.erfc` for the error function and the complementary error function,
1357 :func:`~math.expm1` which computes ``e**x - 1`` with more precision than
1358 using :func:`~math.exp` and subtracting 1,
1359 :func:`~math.gamma` for the Gamma function, and
1360 :func:`~math.lgamma` for the natural log of the Gamma function.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001361 (Contributed by Mark Dickinson and nirinA raseliarison; :issue:`3366`.)
1362
Andrew M. Kuchling24520b42009-04-09 11:22:47 +00001363* The :mod:`multiprocessing` module's :class:`Manager*` classes
1364 can now be passed a callable that will be called whenever
1365 a subprocess is started, along with a set of arguments that will be
1366 passed to the callable.
1367 (Contributed by lekma; :issue:`5585`.)
1368
Ezio Melotti021f3342010-04-06 03:26:49 +00001369 The :class:`~multiprocessing.Pool` class, which controls a pool of worker processes,
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001370 now has an optional *maxtasksperchild* parameter. Worker processes
1371 will perform the specified number of tasks and then exit, causing the
Ezio Melotti021f3342010-04-06 03:26:49 +00001372 :class:`~multiprocessing.Pool` to start a new worker. This is useful if tasks may leak
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001373 memory or other resources, or if some tasks will cause the worker to
1374 become very large.
1375 (Contributed by Charles Cazabon; :issue:`6963`.)
1376
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001377* The :mod:`nntplib` module now supports IPv6 addresses.
1378 (Contributed by Derek Morr; :issue:`1664`.)
1379
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00001380* New functions: the :mod:`os` module wraps the following POSIX system
Ezio Melotti021f3342010-04-06 03:26:49 +00001381 calls: :func:`~os.getresgid` and :func:`~os.getresuid`, which return the
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00001382 real, effective, and saved GIDs and UIDs;
Ezio Melotti021f3342010-04-06 03:26:49 +00001383 :func:`~os.setresgid` and :func:`~os.setresuid`, which set
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00001384 real, effective, and saved GIDs and UIDs to new values;
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001385 :func:`~os.initgroups`, which initialize the group access list
1386 for the current process. (GID/UID functions
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00001387 contributed by Travis H.; :issue:`6508`. Support for initgroups added
1388 by Jean-Paul Calderone; :issue:`7333`.)
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00001389
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001390 The :func:`os.fork` function now re-initializes the import lock in
Ezio Melotti021f3342010-04-06 03:26:49 +00001391 the child process; this fixes problems on Solaris when :func:`~os.fork`
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001392 is called from a thread. (Fixed by Zsolt Cserna; :issue:`7242`.)
1393
Ezio Melotti021f3342010-04-06 03:26:49 +00001394* In the :mod:`os.path` module, the :func:`~os.path.normpath` and
1395 :func:`~os.path.abspath` functions now preserve Unicode; if their input path
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001396 is a Unicode string, the return value is also a Unicode string.
Ezio Melotti021f3342010-04-06 03:26:49 +00001397 (:meth:`~os.path.normpath` fixed by Matt Giuca in :issue:`5827`;
1398 :meth:`~os.path.abspath` fixed by Ezio Melotti in :issue:`3426`.)
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001399
Andrew M. Kuchling9cb42772009-01-21 02:15:43 +00001400* The :mod:`pydoc` module now has help for the various symbols that Python
1401 uses. You can now do ``help('<<')`` or ``help('@')``, for example.
1402 (Contributed by David Laban; :issue:`4739`.)
1403
Ezio Melotti021f3342010-04-06 03:26:49 +00001404* The :mod:`re` module's :func:`~re.split`, :func:`~re.sub`, and :func:`~re.subn`
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001405 now accept an optional *flags* argument, for consistency with the
1406 other functions in the module. (Added by Gregory P. Smith.)
1407
Andrew M. Kuchlingca485622010-05-06 01:10:56 +00001408* New function: :func:`~runpy.run_path` in the :mod:`runpy` module
1409 will execute the code at a provided *path* argument. *path* can be
1410 the path of a Python source file (:file:`example.py`), a compiled
1411 bytecode file (:file:`example.pyc`), a directory
Andrew M. Kuchling304500c2010-05-08 13:29:46 +00001412 (:file:`./package/`), or a zip archive (:file:`example.zip`). If a
Andrew M. Kuchlingca485622010-05-06 01:10:56 +00001413 directory or zip path is provided, it will be added to the front of
1414 ``sys.path`` and the module :mod:`__main__` will be imported. It's
1415 expected that the directory or zip contains a :file:`__main__.py`;
1416 if it doesn't, some other :file:`__main__.py` might be imported from
Nick Coghlan8c16c5c2010-07-02 15:50:14 +00001417 a location later in ``sys.path``. This makes more of the machinery
Andrew M. Kuchling837a5382010-05-06 17:21:59 +00001418 of :mod:`runpy` available to scripts that want to mimic the way
Nick Coghlan8c16c5c2010-07-02 15:50:14 +00001419 Python's command line processes an explicit path name.
Andrew M. Kuchling837a5382010-05-06 17:21:59 +00001420 (Added by Nick Coghlan; :issue:`6816`.)
Andrew M. Kuchlingca485622010-05-06 01:10:56 +00001421
Ezio Melotti021f3342010-04-06 03:26:49 +00001422* New function: in the :mod:`shutil` module, :func:`~shutil.make_archive`
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001423 takes a filename, archive type (zip or tar-format), and a directory
1424 path, and creates an archive containing the directory's contents.
1425 (Added by Tarek Ziadé.)
1426
Ezio Melotti021f3342010-04-06 03:26:49 +00001427 :mod:`shutil`'s :func:`~shutil.copyfile` and :func:`~shutil.copytree`
1428 functions now raise a :exc:`~shutil.SpecialFileError` exception when
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001429 asked to copy a named pipe. Previously the code would treat
1430 named pipes like a regular file by opening them for reading, and
1431 this would block indefinitely. (Fixed by Antoine Pitrou; :issue:`3002`.)
1432
Andrew M. Kuchling019aec22010-06-15 00:38:58 +00001433* The :mod:`signal` module no longer re-installs the signal handler
1434 unless this is truly necessary, which fixes a bug that could make it
1435 impossible to catch the EINTR signal robustly. (Fixed by
1436 Charles-Francois Natali; :issue:`8354`.)
1437
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001438* New functions: in the :mod:`site` module, three new functions
1439 return various site- and user-specific paths.
Ezio Melotti021f3342010-04-06 03:26:49 +00001440 :func:`~site.getsitepackages` returns a list containing all
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001441 global site-packages directories,
Ezio Melotti021f3342010-04-06 03:26:49 +00001442 :func:`~site.getusersitepackages` returns the path of the user's
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001443 site-packages directory, and
Ezio Melotti021f3342010-04-06 03:26:49 +00001444 :func:`~site.getuserbase` returns the value of the :envvar:`USER_BASE`
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001445 environment variable, giving the path to a directory that can be used
1446 to store data.
Andrew M. Kuchling039c8992010-02-01 02:04:26 +00001447 (Contributed by Tarek Ziadé; :issue:`6693`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001448
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001449 The :mod:`site` module now reports exceptions occurring
1450 when the :mod:`sitecustomize` module is imported, and will no longer
Florent Xiclunaad598332010-03-31 21:40:32 +00001451 catch and swallow the :exc:`KeyboardInterrupt` exception. (Fixed by
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001452 Victor Stinner; :issue:`3137`.)
1453
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001454* The :func:`~socket.create_connection` function
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +00001455 gained a *source_address* parameter, a ``(host, port)`` 2-tuple
1456 giving the source address that will be used for the connection.
1457 (Contributed by Eldon Ziegler; :issue:`3972`.)
Andrew M. Kuchlinga7f59472009-12-31 16:38:53 +00001458
Ezio Melotti021f3342010-04-06 03:26:49 +00001459 The :meth:`~socket.socket.recv_into` and :meth:`~socket.socket.recvfrom_into`
1460 methods will now write into objects that support the buffer API, most usefully
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001461 the :class:`bytearray` and :class:`memoryview` objects. (Implemented by
1462 Antoine Pitrou; :issue:`8104`.)
1463
Ezio Melotti021f3342010-04-06 03:26:49 +00001464* The :mod:`SocketServer` module's :class:`~SocketServer.TCPServer` class now
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00001465 supports socket timeouts and disabling the Nagle algorithm.
1466 The :attr:`~SocketServer.TCPServer.disable_nagle_algorithm` class attribute
1467 defaults to False; if overridden to be True,
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001468 new request connections will have the TCP_NODELAY option set to
1469 prevent buffering many small sends into a single TCP packet.
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001470 The :attr:`~SocketServer.BaseServer.timeout` class attribute can hold
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00001471 a timeout in seconds that will be applied to the request socket; if
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001472 no request is received within that time, :meth:`~SocketServer.BaseServer.handle_timeout`
1473 will be called and :meth:`~SocketServer.BaseServer.handle_request` will return.
Andrew M. Kuchlingbadc7092010-05-08 01:35:55 +00001474 (Contributed by Kristján Valur Jónsson; :issue:`6192` and :issue:`6267`.)
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00001475
Ezio Melotti021f3342010-04-06 03:26:49 +00001476* Updated module: the :mod:`sqlite3` module has been updated to
Andrew M. Kuchlingfed15762010-03-08 12:00:39 +00001477 version 2.6.0 of the `pysqlite package <http://code.google.com/p/pysqlite/>`__. Version 2.6.0 includes a number of bugfixes, and adds
1478 the ability to load SQLite extensions from shared libraries.
1479 Call the ``enable_load_extension(True)`` method to enable extensions,
Ezio Melotti021f3342010-04-06 03:26:49 +00001480 and then call :meth:`~sqlite3.Connection.load_extension` to load a particular shared library.
Andrew M. Kuchlingfed15762010-03-08 12:00:39 +00001481 (Updated by Gerhard Häring.)
1482
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001483* The :mod:`ssl` module's :class:`~ssl.SSLSocket` objects now support the
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001484 buffer API, which fixed a test suite failure (fix by Antoine Pitrou;
1485 :issue:`7133`) and automatically set
1486 OpenSSL's :cmacro:`SSL_MODE_AUTO_RETRY`, which will prevent an error
1487 code being returned from :meth:`recv` operations that trigger an SSL
1488 renegotiation (fix by Antoine Pitrou; :issue:`8222`).
1489
Antoine Pitroud69e6ee2010-05-07 10:15:51 +00001490 The :func:`ssl.wrap_socket` constructor function now takes a
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001491 *ciphers* argument that's a string listing the encryption algorithms
1492 to be allowed; the format of the string is described
Antoine Pitroud69e6ee2010-05-07 10:15:51 +00001493 `in the OpenSSL documentation
1494 <http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT>`__.
1495 (Added by Antoine Pitrou; :issue:`8322`.)
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001496
1497 Another change makes the extension load all of OpenSSL's ciphers and
1498 digest algorithms so that they're all available. Some SSL
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001499 certificates couldn't be verified, reporting an "unknown algorithm"
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001500 error. (Reported by Beda Kosata, and fixed by Antoine Pitrou;
1501 :issue:`8484`.)
1502
1503 The version of OpenSSL being used is now available as the module
Antoine Pitroud69e6ee2010-05-07 10:15:51 +00001504 attributes :data:`ssl.OPENSSL_VERSION` (a string),
1505 :data:`ssl.OPENSSL_VERSION_INFO` (a 5-tuple), and
1506 :data:`ssl.OPENSSL_VERSION_NUMBER` (an integer). (Added by Antoine
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001507 Pitrou; :issue:`8321`.)
1508
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001509* The :mod:`struct` module will no longer silently ignore overflow
1510 errors when a value is too large for a particular integer format
1511 code (one of ``bBhHiIlLqQ``); it now always raises a
1512 :exc:`struct.error` exception. (Changed by Mark Dickinson;
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00001513 :issue:`1523`.) The :func:`~struct.pack` function will also
1514 attempt to use :meth:`__index__` to convert and pack non-integers
1515 before trying the :meth:`__int__` method or reporting an error.
1516 (Changed by Mark Dickinson; :issue:`8300`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001517
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001518* New function: the :mod:`subprocess` module's
Ezio Melotti021f3342010-04-06 03:26:49 +00001519 :func:`~subprocess.check_output` runs a command with a specified set of arguments
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +00001520 and returns the command's output as a string when the command runs without
Ezio Melotti021f3342010-04-06 03:26:49 +00001521 error, or raises a :exc:`~subprocess.CalledProcessError` exception otherwise.
Andrew M. Kuchling10b1ec92009-01-02 21:00:35 +00001522
1523 ::
1524
1525 >>> subprocess.check_output(['df', '-h', '.'])
1526 'Filesystem Size Used Avail Capacity Mounted on\n
1527 /dev/disk0s2 52G 49G 3.0G 94% /\n'
1528
1529 >>> subprocess.check_output(['df', '-h', '/bogus'])
1530 ...
1531 subprocess.CalledProcessError: Command '['df', '-h', '/bogus']' returned non-zero exit status 1
1532
1533 (Contributed by Gregory P. Smith.)
1534
Andrew M. Kuchlingf91a6792010-03-24 18:07:43 +00001535 The :mod:`subprocess` module will now retry its internal system calls
1536 on receiving an :const:`EINTR` signal. (Reported by several people; final
1537 patch by Gregory P. Smith in :issue:`1068268`.)
1538
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001539* New function: :func:`~symtable.Symbol.is_declared_global` in the :mod:`symtable` module
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001540 returns true for variables that are explicitly declared to be global,
1541 false for ones that are implicitly global.
1542 (Contributed by Jeremy Hylton.)
1543
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00001544* The :mod:`syslog` module will now use the value of ``sys.argv[0]`` as the
1545 identifier instead of the previous default value of ``'python'``.
1546 (Changed by Sean Reifschneider; :issue:`8451`.)
1547
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +00001548* The ``sys.version_info`` value is now a named tuple, with attributes
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001549 named :attr:`major`, :attr:`minor`, :attr:`micro`,
1550 :attr:`releaselevel`, and :attr:`serial`. (Contributed by Ross
1551 Light; :issue:`4285`.)
1552
1553 :func:`sys.getwindowsversion` also returns a named tuple,
Andrew M. Kuchling9e483ef2010-02-08 01:35:35 +00001554 with attributes named :attr:`major`, :attr:`minor`, :attr:`build`,
Ezio Melotti12477752010-02-08 22:22:41 +00001555 :attr:`platform`, :attr:`service_pack`, :attr:`service_pack_major`,
Eric Smithb3c54882010-02-03 14:17:50 +00001556 :attr:`service_pack_minor`, :attr:`suite_mask`, and
1557 :attr:`product_type`. (Contributed by Brian Curtin; :issue:`7766`.)
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +00001558
Andrew M. Kuchling039c8992010-02-01 02:04:26 +00001559* The :mod:`tarfile` module's default error handling has changed, to
1560 no longer suppress fatal errors. The default error level was previously 0,
1561 which meant that errors would only result in a message being written to the
1562 debug log, but because the debug log is not activated by default,
1563 these errors go unnoticed. The default error level is now 1,
1564 which raises an exception if there's an error.
1565 (Changed by Lars Gustäbel; :issue:`7357`.)
1566
Ezio Melotti021f3342010-04-06 03:26:49 +00001567 :mod:`tarfile` now supports filtering the :class:`~tarfile.TarInfo`
1568 objects being added to a tar file. When you call :meth:`~tarfile.TarFile.add`,
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001569 you may supply an optional *filter* argument
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001570 that's a callable. The *filter* callable will be passed the
Ezio Melotti021f3342010-04-06 03:26:49 +00001571 :class:`~tarfile.TarInfo` for every file being added, and can modify and return it.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001572 If the callable returns ``None``, the file will be excluded from the
1573 resulting archive. This is more powerful than the existing
1574 *exclude* argument, which has therefore been deprecated.
Andrew M. Kuchling039c8992010-02-01 02:04:26 +00001575 (Added by Lars Gustäbel; :issue:`6856`.)
Ezio Melotti021f3342010-04-06 03:26:49 +00001576 The :class:`~tarfile.TarFile` class also now supports the context manager protocol.
Andrew M. Kuchlingfed15762010-03-08 12:00:39 +00001577 (Added by Lars Gustäbel; :issue:`7232`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001578
Ezio Melotti021f3342010-04-06 03:26:49 +00001579* The :meth:`~threading.Event.wait` method of the :class:`threading.Event` class
1580 now returns the internal flag on exit. This means the method will usually
1581 return true because :meth:`~threading.Event.wait` is supposed to block until the
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001582 internal flag becomes true. The return value will only be false if
1583 a timeout was provided and the operation timed out.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001584 (Contributed by Tim Lesher; :issue:`1674032`.)
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001585
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +00001586* The Unicode database provided by the :mod:`unicodedata` module is
1587 now used internally to determine which characters are numeric,
1588 whitespace, or represent line breaks. The database also
1589 includes information from the :file:`Unihan.txt` data file (patch
1590 by Anders Chrigström and Amaury Forgeot d'Arc; :issue:`1571184`)
1591 and has been updated to version 5.2.0 (updated by
1592 Florent Xicluna; :issue:`8024`).
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001593
Andrew M. Kuchling04b99cc2010-05-04 01:24:22 +00001594* The :mod:`urlparse` module's :func:`~urlparse.urlsplit` now handles
1595 unknown URL schemes in a fashion compliant with :rfc:`3986`: if the
1596 URL is of the form ``"<something>://..."``, the text before the
1597 ``://`` is treated as the scheme, even if it's a made-up scheme that
1598 the module doesn't know about. This change may break code that
1599 worked around the old behaviour. For example, Python 2.6.4 or 2.5
1600 will return the following:
1601
1602 >>> import urlparse
1603 >>> urlparse.urlsplit('invented://host/filename?query')
1604 ('invented', '', '//host/filename?query', '', '')
1605
1606 Python 2.7 (and Python 2.6.5) will return:
1607
1608 >>> import urlparse
1609 >>> urlparse.urlsplit('invented://host/filename?query')
1610 ('invented', 'host', '/filename?query', '', '')
1611
1612 (Python 2.7 actually produces slightly different output, since it
1613 returns a named tuple instead of a standard tuple.)
1614
1615 The :mod:`urlparse` module also supports IPv6 literal addresses as defined by
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001616 :rfc:`2732` (contributed by Senthil Kumaran; :issue:`2987`). ::
1617
1618 >>> urlparse.urlparse('http://[1080::8:800:200C:417A]/foo')
1619 ParseResult(scheme='http', netloc='[1080::8:800:200C:417A]',
1620 path='/foo', params='', query='', fragment='')
1621
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +00001622* New class: the :class:`~weakref.WeakSet` class in the :mod:`weakref`
1623 module is a set that only holds weak references to its elements; elements
1624 will be removed once there are no references pointing to them.
1625 (Originally implemented in Python 3.x by Raymond Hettinger, and backported
1626 to 2.7 by Michael Foord.)
1627
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001628* The ElementTree library, :mod:`xml.etree`, no longer escapes
1629 ampersands and angle brackets when outputting an XML processing
Ezio Melotti021f3342010-04-06 03:26:49 +00001630 instruction (which looks like ``<?xml-stylesheet href="#style1"?>``)
1631 or comment (which looks like ``<!-- comment -->``).
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001632 (Patch by Neil Muller; :issue:`2746`.)
1633
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00001634* The XML-RPC client and server, provided by the :mod:`xmlrpclib` and
1635 :mod:`SimpleXMLRPCServer` modules, have improved performance by
1636 supporting HTTP/1.1 keep-alive and by optionally using gzip encoding
1637 to compress the XML being exchanged. The gzip compression is
1638 controlled by the :attr:`encode_threshold` attribute of
1639 :class:`SimpleXMLRPCRequestHandler`, which contains a size in bytes;
1640 responses larger than this will be compressed.
Andrew M. Kuchlingbadc7092010-05-08 01:35:55 +00001641 (Contributed by Kristján Valur Jónsson; :issue:`6267`.)
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00001642
Ezio Melotti021f3342010-04-06 03:26:49 +00001643* The :mod:`zipfile` module's :class:`~zipfile.ZipFile` now supports the context
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001644 management protocol, so you can write ``with zipfile.ZipFile(...) as f:``.
Andrew M. Kuchling039c8992010-02-01 02:04:26 +00001645 (Contributed by Brian Curtin; :issue:`5511`.)
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00001646
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001647 :mod:`zipfile` now also supports archiving empty directories and
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001648 extracts them correctly. (Fixed by Kuba Wieczorek; :issue:`4710`.)
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001649 Reading files out of an archive is faster, and interleaving
Ezio Melotti021f3342010-04-06 03:26:49 +00001650 :meth:`~zipfile.ZipFile.read` and :meth:`~zipfile.ZipFile.readline` now works correctly.
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00001651 (Contributed by Nir Aides; :issue:`7610`.)
Andrew M. Kuchling6c2633e2009-03-30 23:09:46 +00001652
Ezio Melotti021f3342010-04-06 03:26:49 +00001653 The :func:`~zipfile.is_zipfile` function now
Andrew M. Kuchling039c8992010-02-01 02:04:26 +00001654 accepts a file object, in addition to the path names accepted in earlier
1655 versions. (Contributed by Gabriel Genellina; :issue:`4756`.)
1656
Ezio Melotti021f3342010-04-06 03:26:49 +00001657 The :meth:`~zipfile.ZipFile.writestr` method now has an optional *compress_type* parameter
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001658 that lets you override the default compression method specified in the
Ezio Melotti021f3342010-04-06 03:26:49 +00001659 :class:`~zipfile.ZipFile` constructor. (Contributed by Ronald Oussoren;
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001660 :issue:`6003`.)
1661
1662
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001663.. ======================================================================
1664.. whole new modules get described in subsections here
1665
1666
1667.. _importlib-section:
1668
1669New module: importlib
1670------------------------------
1671
1672Python 3.1 includes the :mod:`importlib` package, a re-implementation
1673of the logic underlying Python's :keyword:`import` statement.
1674:mod:`importlib` is useful for implementors of Python interpreters and
1675to users who wish to write new importers that can participate in the
1676import process. Python 2.7 doesn't contain the complete
1677:mod:`importlib` package, but instead has a tiny subset that contains
1678a single function, :func:`~importlib.import_module`.
1679
1680``import_module(name, package=None)`` imports a module. *name* is
1681a string containing the module or package's name. It's possible to do
1682relative imports by providing a string that begins with a ``.``
1683character, such as ``..utils.errors``. For relative imports, the
1684*package* argument must be provided and is the name of the package that
1685will be used as the anchor for
1686the relative import. :func:`~importlib.import_module` both inserts the imported
1687module into ``sys.modules`` and returns the module object.
1688
1689Here are some examples::
1690
1691 >>> from importlib import import_module
1692 >>> anydbm = import_module('anydbm') # Standard absolute import
1693 >>> anydbm
1694 <module 'anydbm' from '/p/python/Lib/anydbm.py'>
1695 >>> # Relative import
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001696 >>> file_util = import_module('..file_util', 'distutils.command')
1697 >>> file_util
1698 <module 'distutils.file_util' from '/python/Lib/distutils/file_util.pyc'>
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001699
1700:mod:`importlib` was implemented by Brett Cannon and introduced in
1701Python 3.1.
1702
1703
Andrew M. Kuchling0e7123f2010-02-08 13:22:24 +00001704New module: sysconfig
1705---------------------------------
1706
Andrew M. Kuchlingca485622010-05-06 01:10:56 +00001707The :mod:`sysconfig` module has been pulled out of the Distutils
1708package, becoming a new top-level module in its own right.
1709:mod:`sysconfig` provides functions for getting information about
1710Python's build process: compiler switches, installation paths, the
1711platform name, and whether Python is running from its source
1712directory.
Andrew M. Kuchling0e7123f2010-02-08 13:22:24 +00001713
Andrew M. Kuchlingca485622010-05-06 01:10:56 +00001714Some of the functions in the module are:
1715
1716* :func:`~sysconfig.get_config_var` returns variables from Python's
1717 Makefile and the :file:`pyconfig.h` file.
1718* :func:`~sysconfig.get_config_vars` returns a dictionary containing
1719 all of the configuration variables.
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001720* :func:`~sysconfig.get_path` returns the configured path for
Andrew M. Kuchlingca485622010-05-06 01:10:56 +00001721 a particular type of module: the standard library,
1722 site-specific modules, platform-specific modules, etc.
1723* :func:`~sysconfig.is_python_build` returns true if you're running a
1724 binary from a Python source tree, and false otherwise.
1725
1726Consult the :mod:`sysconfig` documentation for more details and for
1727a complete list of functions.
1728
Andrew M. Kuchling8e343862010-05-08 13:28:03 +00001729The Distutils package and :mod:`sysconfig` are now maintained by Tarek
1730Ziadé, who has also started a Distutils2 package (source repository at
1731http://hg.python.org/distutils2/) for developing a next-generation
1732version of Distutils.
Andrew M. Kuchlingca485622010-05-06 01:10:56 +00001733
Andrew M. Kuchling0e7123f2010-02-08 13:22:24 +00001734
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001735ttk: Themed Widgets for Tk
1736--------------------------
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001737
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001738Tcl/Tk 8.5 includes a set of themed widgets that re-implement basic Tk
1739widgets but have a more customizable appearance and can therefore more
1740closely resemble the native platform's widgets. This widget
1741set was originally called Tile, but was renamed to Ttk (for "themed Tk")
1742on being added to Tcl/Tck release 8.5.
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00001743
Andrew M. Kuchling8e343862010-05-08 13:28:03 +00001744To learn more, read the :mod:`ttk` module documentation. You may also
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001745wish to read the Tcl/Tk manual page describing the
Andrew M. Kuchling8e343862010-05-08 13:28:03 +00001746Ttk theme engine, available at
1747http://www.tcl.tk/man/tcl8.5/TkCmd/ttk_intro.htm. Some
1748screenshots of the Python/Ttk code in use are at
1749http://code.google.com/p/python-ttk/wiki/Screenshots.
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00001750
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001751The :mod:`ttk` module was written by Guilherme Polo and added in
1752:issue:`2983`. An alternate version called ``Tile.py``, written by
1753Martin Franklin and maintained by Kevin Walzer, was proposed for
1754inclusion in :issue:`2618`, but the authors argued that Guilherme
1755Polo's work was more comprehensive.
1756
1757
1758.. _unittest-section:
Tarek Ziadé2b210692010-02-02 23:39:40 +00001759
Andrew M. Kuchlingacab9402010-05-06 17:27:57 +00001760Updated module: unittest
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001761---------------------------------
1762
Andrew M. Kuchlingb2454b22010-04-29 01:45:41 +00001763The :mod:`unittest` module was greatly enhanced; many
1764new features were added. Most of these features were implemented
Andrew M. Kuchlingacab9402010-05-06 17:27:57 +00001765by Michael Foord, unless otherwise noted. The enhanced version of
1766the module is downloadable separately for use with Python versions 2.4 to 2.6,
1767packaged as the :mod:`unittest2` package, from
1768http://pypi.python.org/pypi/unittest2.
Andrew M. Kuchlingb2454b22010-04-29 01:45:41 +00001769
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001770When used from the command line, the module can automatically discover
1771tests. It's not as fancy as `py.test <http://pytest.org>`__ or
1772`nose <http://code.google.com/p/python-nose/>`__, but provides a simple way
1773to run tests kept within a set of package directories. For example,
1774the following command will search the :file:`test/` subdirectory for
1775any importable test files named ``test*.py``::
1776
1777 python -m unittest discover -s test
1778
1779Consult the :mod:`unittest` module documentation for more details.
1780(Developed in :issue:`6001`.)
1781
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001782The :func:`~unittest.main` function supports some other new options:
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001783
1784* :option:`-b` or :option:`--buffer` will buffer the standard output
1785 and standard error streams during each test. If the test passes,
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001786 any resulting output will be discarded; on failure, the buffered
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001787 output will be displayed.
1788
1789* :option:`-c` or :option:`--catch` will cause the control-C interrupt
1790 to be handled more gracefully. Instead of interrupting the test
1791 process immediately, the currently running test will be completed
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001792 and then the partial results up to the interruption will be reported.
1793 If you're impatient, a second press of control-C will cause an immediate
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001794 interruption.
1795
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001796 This control-C handler tries to avoid causing problems when the code
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001797 being tested or the tests being run have defined a signal handler of
1798 their own, by noticing that a signal handler was already set and
1799 calling it. If this doesn't work for you, there's a
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001800 :func:`~unittest.removeHandler` decorator that can be used to mark tests that
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00001801 should have the control-C handling disabled.
1802
1803* :option:`-f` or :option:`--failfast` makes
1804 test execution stop immediately when a test fails instead of
1805 continuing to execute further tests. (Suggested by Cliff Dyer and
1806 implemented by Michael Foord; :issue:`8074`.)
1807
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001808The progress messages now show 'x' for expected failures
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001809and 'u' for unexpected successes when run in verbose mode.
1810(Contributed by Benjamin Peterson.)
Andrew M. Kuchlingb2454b22010-04-29 01:45:41 +00001811
1812Test cases can raise the :exc:`~unittest.SkipTest` exception to skip a
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001813test (:issue:`1034053`).
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001814
Ezio Melotti021f3342010-04-06 03:26:49 +00001815The error messages for :meth:`~unittest.TestCase.assertEqual`,
1816:meth:`~unittest.TestCase.assertTrue`, and :meth:`~unittest.TestCase.assertFalse`
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001817failures now provide more information. If you set the
Ezio Melotti021f3342010-04-06 03:26:49 +00001818:attr:`~unittest.TestCase.longMessage` attribute of your :class:`~unittest.TestCase` classes to
1819True, both the standard error message and any additional message you
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001820provide will be printed for failures. (Added by Michael Foord; :issue:`5663`.)
1821
Ezio Melotti021f3342010-04-06 03:26:49 +00001822The :meth:`~unittest.TestCase.assertRaises` method now
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001823returns a context handler when called without providing a callable
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001824object to run. For example, you can write this::
1825
1826 with self.assertRaises(KeyError):
Ezio Melotti021f3342010-04-06 03:26:49 +00001827 {}['foo']
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001828
1829(Implemented by Antoine Pitrou; :issue:`4444`.)
1830
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +00001831.. rev 78774
1832
1833Module- and class-level setup and teardown fixtures are now supported.
Ezio Melotti021f3342010-04-06 03:26:49 +00001834Modules can contain :func:`~unittest.setUpModule` and :func:`~unittest.tearDownModule`
1835functions. Classes can have :meth:`~unittest.TestCase.setUpClass` and
1836:meth:`~unittest.TestCase.tearDownClass` methods that must be defined as class methods
1837(using ``@classmethod`` or equivalent). These functions and
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +00001838methods are invoked when the test runner switches to a test case in a
1839different module or class.
1840
Ezio Melotti021f3342010-04-06 03:26:49 +00001841The methods :meth:`~unittest.TestCase.addCleanup` and
1842:meth:`~unittest.TestCase.doCleanups` were added.
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001843:meth:`~unittest.TestCase.addCleanup` lets you add cleanup functions that
Ezio Melotti021f3342010-04-06 03:26:49 +00001844will be called unconditionally (after :meth:`~unittest.TestCase.setUp` if
1845:meth:`~unittest.TestCase.setUp` fails, otherwise after :meth:`~unittest.TestCase.tearDown`). This allows
Andrew M. Kuchling4a0661b2010-03-25 01:35:51 +00001846for much simpler resource allocation and deallocation during tests
1847(:issue:`5679`).
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001848
1849A number of new methods were added that provide more specialized
1850tests. Many of these methods were written by Google engineers
1851for use in their test suites; Gregory P. Smith, Michael Foord, and
1852GvR worked on merging them into Python's version of :mod:`unittest`.
1853
Ezio Melotti021f3342010-04-06 03:26:49 +00001854* :meth:`~unittest.TestCase.assertIsNone` and :meth:`~unittest.TestCase.assertIsNotNone` take one
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001855 expression and verify that the result is or is not ``None``.
1856
Ezio Melotti021f3342010-04-06 03:26:49 +00001857* :meth:`~unittest.TestCase.assertIs` and :meth:`~unittest.TestCase.assertIsNot`
1858 take two values and check whether the two values evaluate to the same object or not.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001859 (Added by Michael Foord; :issue:`2578`.)
1860
Ezio Melotti021f3342010-04-06 03:26:49 +00001861* :meth:`~unittest.TestCase.assertIsInstance` and
1862 :meth:`~unittest.TestCase.assertNotIsInstance` check whether
Andrew M. Kuchlinga7f59472009-12-31 16:38:53 +00001863 the resulting object is an instance of a particular class, or of
1864 one of a tuple of classes. (Added by Georg Brandl; :issue:`7031`.)
1865
Ezio Melotti021f3342010-04-06 03:26:49 +00001866* :meth:`~unittest.TestCase.assertGreater`, :meth:`~unittest.TestCase.assertGreaterEqual`,
1867 :meth:`~unittest.TestCase.assertLess`, and :meth:`~unittest.TestCase.assertLessEqual` compare
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001868 two quantities.
1869
Ezio Melotti021f3342010-04-06 03:26:49 +00001870* :meth:`~unittest.TestCase.assertMultiLineEqual` compares two strings, and if they're
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001871 not equal, displays a helpful comparison that highlights the
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001872 differences in the two strings. This comparison is now used by
Ezio Melotti021f3342010-04-06 03:26:49 +00001873 default when Unicode strings are compared with :meth:`~unittest.TestCase.assertEqual`.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001874
Andrew M. Kuchlingb2454b22010-04-29 01:45:41 +00001875* :meth:`~unittest.TestCase.assertRegexpMatches` and
1876 :meth:`~unittest.TestCase.assertNotRegexpMatches` checks whether the
1877 first argument is a string matching or not matching the regular
1878 expression provided as the second argument (:issue:`8038`).
Ezio Melotti021f3342010-04-06 03:26:49 +00001879
1880* :meth:`~unittest.TestCase.assertRaisesRegexp` checks whether a particular exception
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001881 is raised, and then also checks that the string representation of
1882 the exception matches the provided regular expression.
1883
Ezio Melotti021f3342010-04-06 03:26:49 +00001884* :meth:`~unittest.TestCase.assertIn` and :meth:`~unittest.TestCase.assertNotIn`
1885 tests whether *first* is or is not in *second*.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001886
Ezio Melotti021f3342010-04-06 03:26:49 +00001887* :meth:`~unittest.TestCase.assertItemsEqual` tests whether two provided sequences
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001888 contain the same elements.
1889
Ezio Melotti021f3342010-04-06 03:26:49 +00001890* :meth:`~unittest.TestCase.assertSetEqual` compares whether two sets are equal, and
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001891 only reports the differences between the sets in case of error.
1892
Ezio Melotti021f3342010-04-06 03:26:49 +00001893* Similarly, :meth:`~unittest.TestCase.assertListEqual` and :meth:`~unittest.TestCase.assertTupleEqual`
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001894 compare the specified types and explain any differences without necessarily
1895 printing their full values; these methods are now used by default
Ezio Melotti021f3342010-04-06 03:26:49 +00001896 when comparing lists and tuples using :meth:`~unittest.TestCase.assertEqual`.
1897 More generally, :meth:`~unittest.TestCase.assertSequenceEqual` compares two sequences
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001898 and can optionally check whether both sequences are of a
1899 particular type.
1900
Ezio Melotti021f3342010-04-06 03:26:49 +00001901* :meth:`~unittest.TestCase.assertDictEqual` compares two dictionaries and reports the
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00001902 differences; it's now used by default when you compare two dictionaries
Ezio Melotti021f3342010-04-06 03:26:49 +00001903 using :meth:`~unittest.TestCase.assertEqual`. :meth:`~unittest.TestCase.assertDictContainsSubset` checks whether
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001904 all of the key/value pairs in *first* are found in *second*.
1905
Ezio Melotti021f3342010-04-06 03:26:49 +00001906* :meth:`~unittest.TestCase.assertAlmostEqual` and :meth:`~unittest.TestCase.assertNotAlmostEqual` test
Andrew M. Kuchlingb2454b22010-04-29 01:45:41 +00001907 whether *first* and *second* are approximately equal. This method
1908 can either round their difference to an optionally-specified number
1909 of *places* (the default is 7) and compare it to zero, or require
1910 the difference to be smaller than a supplied *delta* value.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001911
Ezio Melotti021f3342010-04-06 03:26:49 +00001912* :meth:`~unittest.TestLoader.loadTestsFromName` properly honors the
1913 :attr:`~unittest.TestLoader.suiteClass` attribute of
1914 the :class:`~unittest.TestLoader`. (Fixed by Mark Roddy; :issue:`6866`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001915
Ezio Melotti021f3342010-04-06 03:26:49 +00001916* A new hook lets you extend the :meth:`~unittest.TestCase.assertEqual` method to handle
1917 new data types. The :meth:`~unittest.TestCase.addTypeEqualityFunc` method takes a type
Andrew M. Kuchling9858f632010-03-23 18:39:24 +00001918 object and a function. The function will be used when both of the
1919 objects being compared are of the specified type. This function
1920 should compare the two objects and raise an exception if they don't
1921 match; it's a good idea for the function to provide additional
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001922 information about why the two objects aren't matching, much as the new
Andrew M. Kuchling9858f632010-03-23 18:39:24 +00001923 sequence comparison methods do.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001924
Andrew M. Kuchling9858f632010-03-23 18:39:24 +00001925:func:`unittest.main` now takes an optional ``exit`` argument. If
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001926False, :func:`~unittest.main` doesn't call :func:`sys.exit`, allowing
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00001927:func:`~unittest.main` to be used from the interactive interpreter.
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001928(Contributed by J. Pablo Fernández; :issue:`3379`.)
Andrew M. Kuchling9858f632010-03-23 18:39:24 +00001929
Ezio Melotti021f3342010-04-06 03:26:49 +00001930:class:`~unittest.TestResult` has new :meth:`~unittest.TestResult.startTestRun` and
1931:meth:`~unittest.TestResult.stopTestRun` methods that are called immediately before
Andrew M. Kuchling9858f632010-03-23 18:39:24 +00001932and after a test run. (Contributed by Robert Collins; :issue:`5728`.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001933
1934With all these changes, the :file:`unittest.py` was becoming awkwardly
1935large, so the module was turned into a package and the code split into
1936several files (by Benjamin Peterson). This doesn't affect how the
Andrew M. Kuchlingb2454b22010-04-29 01:45:41 +00001937module is imported or used.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001938
Andrew M. Kuchling264552a2010-05-10 15:03:35 +00001939.. seealso::
1940
1941 http://www.voidspace.org.uk/python/articles/unittest2.shtml
1942 Describes the new features, how to use them, and the
1943 rationale for various design decisions. (By Michael Foord.)
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001944
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001945.. _elementtree-section:
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00001946
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001947Updated module: ElementTree 1.3
1948---------------------------------
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00001949
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001950The version of the ElementTree library included with Python was updated to
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001951version 1.3. Some of the new features are:
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001952
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001953* The various parsing functions now take a *parser* keyword argument
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001954 giving an :class:`XMLParser` instance that will
1955 be used. This makes it possible to override the file's internal encoding::
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001956
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001957 p = ET.XMLParser(encoding='utf-8')
1958 t = ET.XML("""<root/>""", parser=p)
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001959
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001960 Errors in parsing XML now raise a :exc:`ParseError` exception, whose
1961 instances have a :attr:`position` attribute
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001962 containing a (*line*, *column*) tuple giving the location of the problem.
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001963
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001964* ElementTree's code for converting trees to a string has been
1965 significantly reworked, making it roughly twice as fast in many
1966 cases. The :class:`ElementTree` :meth:`write` and :class:`Element`
1967 :meth:`write` methods now have a *method* parameter that can be
1968 "xml" (the default), "html", or "text". HTML mode will output empty
1969 elements as ``<empty></empty>`` instead of ``<empty/>``, and text
1970 mode will skip over elements and only output the text chunks. If
1971 you set the :attr:`tag` attribute of an element to ``None`` but
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001972 leave its children in place, the element will be omitted when the
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001973 tree is written out, so you don't need to do more extensive rearrangement
1974 to remove a single element.
Andrew M. Kuchling2c130b62009-04-11 16:12:23 +00001975
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001976 Namespace handling has also been improved. All ``xmlns:<whatever>``
1977 declarations are now output on the root element, not scattered throughout
1978 the resulting XML. You can set the default namespace for a tree
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001979 by setting the :attr:`default_namespace` attribute and can
Andrew M. Kuchling27024912010-05-12 00:38:44 +00001980 register new prefixes with :meth:`register_namespace`. In XML mode,
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001981 you can use the true/false *xml_declaration* parameter to suppress the
1982 XML declaration.
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00001983
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001984* New :class:`Element` method: :meth:`extend` appends the items from a
1985 sequence to the element's children. Elements themselves behave like
1986 sequences, so it's easy to move children from one element to
1987 another::
Andrew M. Kuchlinga17cd4a2009-01-31 02:50:09 +00001988
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001989 from xml.etree import ElementTree as ET
Andrew M. Kuchlinga17cd4a2009-01-31 02:50:09 +00001990
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001991 t = ET.XML("""<list>
1992 <item>1</item> <item>2</item> <item>3</item>
1993 </list>""")
1994 new = ET.XML('<root/>')
1995 new.extend(t)
Andrew M. Kuchlinga17cd4a2009-01-31 02:50:09 +00001996
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00001997 # Outputs <root><item>1</item>...</root>
1998 print ET.tostring(new)
Andrew M. Kuchlinga17cd4a2009-01-31 02:50:09 +00001999
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00002000* New :class:`Element` method: :meth:`iter` yields the children of the
2001 element as a generator. It's also possible to write ``for child in
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002002 elem:`` to loop over an element's children. The existing method
2003 :meth:`getiterator` is now deprecated, as is :meth:`getchildren`
2004 which constructs and returns a list of children.
Georg Brandl0516f812009-11-18 18:52:35 +00002005
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00002006* New :class:`Element` method: :meth:`itertext` yields all chunks of
2007 text that are descendants of the element. For example::
Georg Brandl0516f812009-11-18 18:52:35 +00002008
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00002009 t = ET.XML("""<list>
2010 <item>1</item> <item>2</item> <item>3</item>
2011 </list>""")
2012
2013 # Outputs ['\n ', '1', ' ', '2', ' ', '3', '\n']
2014 print list(t.itertext())
2015
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002016* Deprecated: using an element as a Boolean (i.e., ``if elem:``) would
2017 return true if the element had any children, or false if there were
2018 no children. This behaviour is confusing -- ``None`` is false, but
2019 so is a childless element? -- so it will now trigger a
2020 :exc:`FutureWarning`. In your code, you should be explicit: write
2021 ``len(elem) != 0`` if you're interested in the number of children,
2022 or ``elem is not None``.
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00002023
2024Fredrik Lundh develops ElementTree and produced the 1.3 version;
2025you can read his article describing 1.3 at
2026http://effbot.org/zone/elementtree-13-intro.htm.
2027Florent Xicluna updated the version included with
2028Python, after discussions on python-dev and in :issue:`6472`.)
Georg Brandl0516f812009-11-18 18:52:35 +00002029
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002030.. ======================================================================
2031
2032
2033Build and C API Changes
2034=======================
2035
2036Changes to Python's build process and to the C API include:
2037
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00002038* The latest release of the GNU Debugger, GDB 7, can be `scripted
2039 using Python
2040 <http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html>`__.
2041 When you begin debugging an executable program P, GDB will look for
2042 a file named ``P-gdb.py`` and automatically read it. Dave Malcolm
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002043 contributed a :file:`python-gdb.py` that adds a number of
2044 commands useful when debugging Python itself. For example,
2045 ``py-up`` and ``py-down`` go up or down one Python stack frame,
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00002046 which usually corresponds to several C stack frames. ``py-print``
2047 prints the value of a Python variable, and ``py-bt`` prints the
2048 Python stack trace. (Added as a result of :issue:`8032`.)
2049
Andrew M. Kuchling10b1ec92009-01-02 21:00:35 +00002050* If you use the :file:`.gdbinit` file provided with Python,
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002051 the "pyo" macro in the 2.7 version now works correctly when the thread being
2052 debugged doesn't hold the GIL; the macro now acquires it before printing.
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00002053 (Contributed by Victor Stinner; :issue:`3632`.)
2054
Andrew M. Kuchling9a4b94c2009-04-03 21:43:00 +00002055* :cfunc:`Py_AddPendingCall` is now thread-safe, letting any
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00002056 worker thread submit notifications to the main Python thread. This
2057 is particularly useful for asynchronous IO operations.
Andrew M. Kuchlingbadc7092010-05-08 01:35:55 +00002058 (Contributed by Kristján Valur Jónsson; :issue:`4293`.)
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00002059
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002060* New function: :cfunc:`PyCode_NewEmpty` creates an empty code object;
2061 only the filename, function name, and first line number are required.
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002062 This is useful for extension modules that are attempting to
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002063 construct a more useful traceback stack. Previously such
2064 extensions needed to call :cfunc:`PyCode_New`, which had many
2065 more arguments. (Added by Jeffrey Yasskin.)
2066
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00002067* New function: :cfunc:`PyErr_NewExceptionWithDoc` creates a new
2068 exception class, just as the existing :cfunc:`PyErr_NewException` does,
2069 but takes an extra ``char *`` argument containing the docstring for the
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002070 new exception class. (Added by 'lekma' on the Python bug tracker;
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00002071 :issue:`7033`.)
2072
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002073* New function: :cfunc:`PyFrame_GetLineNumber` takes a frame object
2074 and returns the line number that the frame is currently executing.
2075 Previously code would need to get the index of the bytecode
2076 instruction currently executing, and then look up the line number
2077 corresponding to that address. (Added by Jeffrey Yasskin.)
2078
Andrew M. Kuchling17ae2ba2010-02-03 02:19:14 +00002079* New functions: :cfunc:`PyLong_AsLongAndOverflow` and
2080 :cfunc:`PyLong_AsLongLongAndOverflow` approximates a Python long
2081 integer as a C :ctype:`long` or :ctype:`long long`.
2082 If the number is too large to fit into
2083 the output type, an *overflow* flag is set and returned to the caller.
2084 (Contributed by Case Van Horsen; :issue:`7528` and :issue:`7767`.)
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00002085
Andrew M. Kuchlinga7f59472009-12-31 16:38:53 +00002086* New function: stemming from the rewrite of string-to-float conversion,
2087 a new :cfunc:`PyOS_string_to_double` function was added. The old
2088 :cfunc:`PyOS_ascii_strtod` and :cfunc:`PyOS_ascii_atof` functions
2089 are now deprecated.
2090
Andrew M. Kuchling11bd81c2010-06-11 01:54:58 +00002091* New function: :cfunc:`PySys_SetArgvEx` sets the value of
2092 ``sys.argv`` and can optionally update ``sys.path`` to include the
2093 directory containing the script named by ``sys.argv[0]`` depending
2094 on the value of an *updatepath* parameter.
2095
2096 This function was added to close a security hole for applications
2097 that embed Python. The old function, :cfunc:`PySys_SetArgv`, would
2098 always update ``sys.path``, and sometimes it would add the current
2099 directory. This meant that, if you ran an application embedding
2100 Python in a directory controlled by someone else, attackers could
2101 put a Trojan-horse module in the directory (say, a file named
2102 :file:`os.py`) that your application would then import and run.
2103
2104 If you maintain a C/C++ application that embeds Python, check
2105 whether you're calling :cfunc:`PySys_SetArgv` and carefully consider
2106 whether the application should be using :cfunc:`PySys_SetArgvEx`
2107 with *updatepath* set to false.
2108
2109 Security issue reported as `CVE-2008-5983
2110 <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_;
2111 discussed in :issue:`5753`, and fixed by Antoine Pitrou.
2112
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002113* New macros: the Python header files now define the following macros:
2114 :cmacro:`Py_ISALNUM`,
2115 :cmacro:`Py_ISALPHA`,
2116 :cmacro:`Py_ISDIGIT`,
2117 :cmacro:`Py_ISLOWER`,
2118 :cmacro:`Py_ISSPACE`,
2119 :cmacro:`Py_ISUPPER`,
2120 :cmacro:`Py_ISXDIGIT`,
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00002121 :cmacro:`Py_TOLOWER`, and :cmacro:`Py_TOUPPER`.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002122 All of these functions are analogous to the C
2123 standard macros for classifying characters, but ignore the current
2124 locale setting, because in
2125 several places Python needs to analyze characters in a
2126 locale-independent way. (Added by Eric Smith;
2127 :issue:`5793`.)
2128
2129 .. XXX these macros don't seem to be described in the c-api docs.
2130
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +00002131* Removed function: :cmacro:`PyEval_CallObject` is now only available
2132 as a macro. A function version was being kept around to preserve
2133 ABI linking compatibility, but that was in 1997; it can certainly be
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002134 deleted by now. (Removed by Antoine Pitrou; :issue:`8276`.)
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +00002135
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00002136* New format codes: the :cfunc:`PyFormat_FromString`,
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002137 :cfunc:`PyFormat_FromStringV`, and :cfunc:`PyErr_Format` functions now
2138 accept ``%lld`` and ``%llu`` format codes for displaying
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00002139 C's :ctype:`long long` types.
2140 (Contributed by Mark Dickinson; :issue:`7228`.)
2141
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002142* The complicated interaction between threads and process forking has
2143 been changed. Previously, the child process created by
2144 :func:`os.fork` might fail because the child is created with only a
2145 single thread running, the thread performing the :func:`os.fork`.
2146 If other threads were holding a lock, such as Python's import lock,
2147 when the fork was performed, the lock would still be marked as
2148 "held" in the new process. But in the child process nothing would
2149 ever release the lock, since the other threads weren't replicated,
2150 and the child process would no longer be able to perform imports.
2151
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002152 Python 2.7 acquires the import lock before performing an
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002153 :func:`os.fork`, and will also clean up any locks created using the
2154 :mod:`threading` module. C extension modules that have internal
2155 locks, or that call :cfunc:`fork()` themselves, will not benefit
2156 from this clean-up.
2157
2158 (Fixed by Thomas Wouters; :issue:`1590864`.)
2159
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +00002160* The :cfunc:`Py_Finalize` function now calls the internal
2161 :func:`threading._shutdown` function; this prevents some exceptions from
2162 being raised when an interpreter shuts down.
2163 (Patch by Adam Olsen; :issue:`1722344`.)
2164
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00002165* When using the :ctype:`PyMemberDef` structure to define attributes
2166 of a type, Python will no longer let you try to delete or set a
2167 :const:`T_STRING_INPLACE` attribute.
2168
2169 .. rev 79644
2170
Andrew M. Kuchling92b97002009-05-02 17:12:15 +00002171* Global symbols defined by the :mod:`ctypes` module are now prefixed
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002172 with ``Py``, or with ``_ctypes``. (Implemented by Thomas
Andrew M. Kuchling92b97002009-05-02 17:12:15 +00002173 Heller; :issue:`3102`.)
2174
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +00002175* New configure option: the :option:`--with-system-expat` switch allows
2176 building the :mod:`pyexpat` module to use the system Expat library.
2177 (Contributed by Arfrever Frehtes Taifersar Arahesis; :issue:`7609`.)
2178
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002179* New configure option: the
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +00002180 :option:`--with-valgrind` option will now disable the pymalloc
Andrew M. Kuchlingce690522010-04-13 01:32:51 +00002181 allocator, which is difficult for the Valgrind memory-error detector
2182 to analyze correctly.
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +00002183 Valgrind will therefore be better at detecting memory leaks and
2184 overruns. (Contributed by James Henstridge; :issue:`2422`.)
2185
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002186* New configure option: you can now supply an empty string to
2187 :option:`--with-dbmliborder=` in order to disable all of the various
Andrew M. Kuchling7f8ebdb2010-01-03 01:15:21 +00002188 DBM modules. (Added by Arfrever Frehtes Taifersar Arahesis;
2189 :issue:`6491`.)
2190
Andrew M. Kuchling77069572009-03-31 01:21:01 +00002191* The :program:`configure` script now checks for floating-point rounding bugs
2192 on certain 32-bit Intel chips and defines a :cmacro:`X87_DOUBLE_ROUNDING`
2193 preprocessor definition. No code currently uses this definition,
2194 but it's available if anyone wishes to use it.
2195 (Added by Mark Dickinson; :issue:`2937`.)
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002196
Andrew M. Kuchling4515f0d2010-04-11 20:40:09 +00002197 :program:`configure` also now sets a :envvar:`LDCXXSHARED` Makefile
2198 variable for supporting C++ linking. (Contributed by Arfrever
2199 Frehtes Taifersar Arahesis; :issue:`1222585`.)
2200
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002201* The build process now creates the necessary files for pkg-config
2202 support. (Contributed by Clinton Roy; :issue:`3585`.)
2203
2204* The build process now supports Subversion 1.7. (Contributed by
2205 Arfrever Frehtes Taifersar Arahesis; :issue:`6094`.)
2206
Andrew M. Kuchlingb4a4f512009-12-29 20:10:16 +00002207
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00002208.. _whatsnew27-capsules:
2209
2210Capsules
2211-------------------
2212
2213Python 3.1 adds a new C datatype, :ctype:`PyCapsule`, for providing a
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002214C API to an extension module. A capsule is essentially the holder of
2215a C ``void *`` pointer, and is made available as a module attribute; for
Andrew M. Kuchling304500c2010-05-08 13:29:46 +00002216example, the :mod:`socket` module's API is exposed as ``socket.CAPI``,
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002217and :mod:`unicodedata` exposes ``ucnhash_CAPI``. Other extensions
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00002218can import the module, access its dictionary to get the capsule
2219object, and then get the ``void *`` pointer, which will usually point
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002220to an array of pointers to the module's various API functions.
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00002221
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002222There is an existing data type already used for this,
Andrew M. Kuchling85fffc32010-05-08 01:15:26 +00002223:ctype:`PyCObject`, but it doesn't provide type safety. Evil code
2224written in pure Python could cause a segmentation fault by taking a
2225:ctype:`PyCObject` from module A and somehow substituting it for the
2226:ctype:`PyCObject` in module B. Capsules know their own name,
2227and getting the pointer requires providing the name::
2228
2229 void *vtable;
2230
2231 if (!PyCapsule_IsValid(capsule, "mymodule.CAPI") {
2232 PyErr_SetString(PyExc_ValueError, "argument type invalid");
2233 return NULL;
2234 }
2235
2236 vtable = PyCapsule_GetPointer(capsule, "mymodule.CAPI");
2237
2238You are assured that ``vtable`` points to whatever you're expecting.
2239If a different capsule was passed in, :cfunc:`PyCapsule_IsValid` would
2240detect the mismatched name and return false. Refer to
2241:ref:`using-capsules` for more information on using these objects.
2242
2243Python 2.7 now uses capsules internally to provide various
2244extension-module APIs, but the :cfunc:`PyCObject_AsVoidPtr` was
2245modified to handle capsules, preserving compile-time compatibility
2246with the :ctype:`CObject` interface. Use of
2247:cfunc:`PyCObject_AsVoidPtr` will signal a
2248:exc:`PendingDeprecationWarning`, which is silent by default.
2249
2250Implemented in Python 3.1 and backported to 2.7 by Larry Hastings;
2251discussed in :issue:`5630`.
2252
2253
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002254.. ======================================================================
2255
2256Port-Specific Changes: Windows
2257-----------------------------------
2258
Andrew M. Kuchling10b1ec92009-01-02 21:00:35 +00002259* The :mod:`msvcrt` module now contains some constants from
2260 the :file:`crtassem.h` header file:
2261 :data:`CRT_ASSEMBLY_VERSION`,
2262 :data:`VC_ASSEMBLY_PUBLICKEYTOKEN`,
2263 and :data:`LIBRARIES_ASSEMBLY_NAME_PREFIX`.
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00002264 (Contributed by David Cournapeau; :issue:`4365`.)
2265
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00002266* The :mod:`_winreg` module for accessing the registry now implements
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00002267 the :func:`~_winreg.CreateKeyEx` and :func:`~_winreg.DeleteKeyEx`
2268 functions, extended versions of previously-supported functions that
2269 take several extra arguments. The :func:`~_winreg.DisableReflectionKey`,
2270 :func:`~_winreg.EnableReflectionKey`, and :func:`~_winreg.QueryReflectionKey`
2271 were also tested and documented.
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00002272 (Implemented by Brian Curtin: :issue:`7347`.)
2273
Andrew M. Kuchling466bd9d2009-01-24 03:28:18 +00002274* The new :cfunc:`_beginthreadex` API is used to start threads, and
2275 the native thread-local storage functions are now used.
Andrew M. Kuchlingbadc7092010-05-08 01:35:55 +00002276 (Contributed by Kristján Valur Jónsson; :issue:`3582`.)
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002277
Andrew M. Kuchling363dbcc2010-04-14 23:55:17 +00002278* The :func:`os.kill` function now works on Windows. The signal value
2279 can be the constants :const:`CTRL_C_EVENT`,
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002280 :const:`CTRL_BREAK_EVENT`, or any integer. The first two constants
2281 will send Control-C and Control-Break keystroke events to
2282 subprocesses; any other value will use the :cfunc:`TerminateProcess`
2283 API. (Contributed by Miki Tebeka; :issue:`1220212`.)
Andrew M. Kuchling363dbcc2010-04-14 23:55:17 +00002284
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002285* The :func:`os.listdir` function now correctly fails
2286 for an empty path. (Fixed by Hirokazu Yamamoto; :issue:`5913`.)
2287
Andrew M. Kuchling3c8a24e2009-12-29 23:41:04 +00002288* The :mod:`mimelib` module will now read the MIME database from
2289 the Windows registry when initializing.
2290 (Patch by Gabriel Genellina; :issue:`4969`.)
2291
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002292.. ======================================================================
2293
2294Port-Specific Changes: Mac OS X
2295-----------------------------------
2296
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002297* The path ``/Library/Python/2.7/site-packages`` is now appended to
Andrew M. Kuchling77069572009-03-31 01:21:01 +00002298 ``sys.path``, in order to share added packages between the system
2299 installation and a user-installed copy of the same version.
2300 (Changed by Ronald Oussoren; :issue:`4865`.)
2301
Andrew M. Kuchling04b99cc2010-05-04 01:24:22 +00002302Port-Specific Changes: FreeBSD
2303-----------------------------------
2304
2305* FreeBSD 7.1's :const:`SO_SETFIB` constant, used with
2306 :func:`~socket.getsockopt`/:func:`~socket.setsockopt` to select an
2307 alternate routing table, is now available in the :mod:`socket`
2308 module. (Added by Kyle VanderBeek; :issue:`8235`.)
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002309
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00002310Other Changes and Fixes
2311=======================
2312
Andrew M. Kuchling0e7123f2010-02-08 13:22:24 +00002313* Two benchmark scripts, :file:`iobench` and :file:`ccbench`, were
2314 added to the :file:`Tools` directory. :file:`iobench` measures the
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002315 speed of the built-in file I/O objects returned by :func:`open`
Andrew M. Kuchling46c2db52010-03-21 18:47:12 +00002316 while performing various operations, and :file:`ccbench` is a
2317 concurrency benchmark that tries to measure computing throughput,
2318 thread switching latency, and IO processing bandwidth when
2319 performing several tasks using a varying number of threads.
Andrew M. Kuchling0e7123f2010-02-08 13:22:24 +00002320
Andrew M. Kuchling11bd81c2010-06-11 01:54:58 +00002321* The :file:`Tools/i18n/msgfmt.py` script now understands plural
2322 forms in :file:`.po` files. (Fixed by Martin von Löwis;
2323 :issue:`5464`.)
2324
Andrew M. Kuchling77069572009-03-31 01:21:01 +00002325* When importing a module from a :file:`.pyc` or :file:`.pyo` file
2326 with an existing :file:`.py` counterpart, the :attr:`co_filename`
Andrew M. Kuchling92b97002009-05-02 17:12:15 +00002327 attributes of the resulting code objects are overwritten when the
2328 original filename is obsolete. This can happen if the file has been
2329 renamed, moved, or is accessed through different paths. (Patch by
2330 Ziga Seilnacht and Jean-Paul Calderone; :issue:`1180193`.)
Andrew M. Kuchling77069572009-03-31 01:21:01 +00002331
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00002332* The :file:`regrtest.py` script now takes a :option:`--randseed=`
2333 switch that takes an integer that will be used as the random seed
2334 for the :option:`-r` option that executes tests in random order.
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002335 The :option:`-r` option also reports the seed that was used
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00002336 (Added by Collin Winter.)
2337
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +00002338* Another :file:`regrtest.py` switch is :option:`-j`, which
2339 takes an integer specifying how many tests run in parallel. This
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002340 allows reducing the total runtime on multi-core machines.
Antoine Pitrou4698d992009-05-31 14:20:14 +00002341 This option is compatible with several other options, including the
2342 :option:`-R` switch which is known to produce long runtimes.
Andrew M. Kuchling91e0db82009-12-31 16:17:05 +00002343 (Added by Antoine Pitrou, :issue:`6152`.) This can also be used
2344 with a new :option:`-F` switch that runs selected tests in a loop
2345 until they fail. (Added by Antoine Pitrou; :issue:`7312`.)
Andrew M. Kuchling71d5c282009-03-30 22:30:20 +00002346
Andrew M. Kuchling85f928a2010-04-15 01:42:27 +00002347* When executed as a script, the :file:`py_compile.py` module now
2348 accepts ``'-'`` as an argument, which will read standard input for
2349 the list of filenames to be compiled. (Contributed by Piotr
2350 Ożarowski; :issue:`8233`.)
2351
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002352.. ======================================================================
2353
2354Porting to Python 2.7
2355=====================
2356
2357This section lists previously described changes and other bugfixes
2358that may require changes to your code:
2359
Andrew M. Kuchlinge86b7fe2010-05-06 14:14:09 +00002360* The :func:`range` function processes its arguments more
2361 consistently; it will now call :meth:`__int__` on non-float,
2362 non-integer arguments that are supplied to it. (Fixed by Alexander
2363 Belopolsky; :issue:`1533`.)
2364
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00002365* The string :meth:`format` method changed the default precision used
2366 for floating-point and complex numbers from 6 decimal
Andrew M. Kuchling5a9c40b2009-10-05 22:30:22 +00002367 places to 12, which matches the precision used by :func:`str`.
2368 (Changed by Eric Smith; :issue:`5920`.)
2369
Amaury Forgeot d'Arc901f2002009-06-09 23:08:13 +00002370* Because of an optimization for the :keyword:`with` statement, the special
2371 methods :meth:`__enter__` and :meth:`__exit__` must belong to the object's
2372 type, and cannot be directly attached to the object's instance. This
Amaury Forgeot d'Arcd81333c2009-06-10 20:30:19 +00002373 affects new-style classes (derived from :class:`object`) and C extension
Amaury Forgeot d'Arc901f2002009-06-09 23:08:13 +00002374 types. (:issue:`6101`.)
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002375
Andrew M. Kuchling837a5382010-05-06 17:21:59 +00002376* Due to a bug in Python 2.6, the *exc_value* parameter to
2377 :meth:`__exit__` methods was often the string representation of the
2378 exception, not an instance. This was fixed in 2.7, so *exc_value*
2379 will be an instance as expected. (Fixed by Florent Xicluna;
2380 :issue:`7853`.)
2381
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +00002382* When a restricted set of attributes were set using ``__slots__``,
2383 deleting an unset attribute would not raise :exc:`AttributeError`
2384 as you would expect. Fixed by Benjamin Peterson; :issue:`7604`.)
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00002385
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00002386In the standard library:
2387
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00002388* Operations with :class:`~datetime.datetime` instances that resulted in a year
Andrew M. Kuchling29f1bb32010-05-27 21:29:59 +00002389 falling outside the supported range didn't always raise
2390 :exc:`OverflowError`. Such errors are now checked more carefully
2391 and will now raise the exception. (Reported by Mark Leander, patch
2392 by Anand B. Pillai and Alexander Belopolsky; :issue:`7150`.)
2393
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00002394* When using :class:`~decimal.Decimal` instances with a string's
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00002395 :meth:`format` method, the default alignment was previously
2396 left-alignment. This has been changed to right-alignment, which might
2397 change the output of your programs.
2398 (Changed by Mark Dickinson; :issue:`6857`.)
2399
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00002400 Comparisons involving a signaling NaN value (or ``sNAN``) now signal
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00002401 :const:`~decimal.InvalidOperation` instead of silently returning a true or
Andrew M. Kuchlingc121f132010-04-30 01:33:40 +00002402 false value depending on the comparison operator. Quiet NaN values
2403 (or ``NaN``) are now hashable. (Fixed by Mark Dickinson;
2404 :issue:`7279`.)
2405
Andrew M. Kuchlinge41e4db2010-02-18 14:16:48 +00002406* The ElementTree library, :mod:`xml.etree`, no longer escapes
2407 ampersands and angle brackets when outputting an XML processing
2408 instruction (which looks like `<?xml-stylesheet href="#style1"?>`)
2409 or comment (which looks like `<!-- comment -->`).
2410 (Patch by Neil Muller; :issue:`2746`.)
2411
Ezio Melotti9d8d2a42010-07-03 07:43:04 +00002412* The :meth:`~StringIO.StringIO.readline` method of :class:`~StringIO.StringIO` objects now does
Andrew M. Kuchlingd3b60222010-05-01 01:19:16 +00002413 nothing when a negative length is requested, as other file-like
2414 objects do. (:issue:`7348`).
2415
Andrew M. Kuchling15c82d22010-04-29 00:22:16 +00002416* The :mod:`syslog` module will now use the value of ``sys.argv[0]`` as the
2417 identifier instead of the previous default value of ``'python'``.
2418 (Changed by Sean Reifschneider; :issue:`8451`.)
2419
Andrew M. Kuchling27024912010-05-12 00:38:44 +00002420* The :mod:`tarfile` module's default error handling has changed, to
2421 no longer suppress fatal errors. The default error level was previously 0,
2422 which meant that errors would only result in a message being written to the
2423 debug log, but because the debug log is not activated by default,
2424 these errors go unnoticed. The default error level is now 1,
2425 which raises an exception if there's an error.
2426 (Changed by Lars Gustäbel; :issue:`7357`.)
2427
Andrew M. Kuchling04b99cc2010-05-04 01:24:22 +00002428* The :mod:`urlparse` module's :func:`~urlparse.urlsplit` now handles
2429 unknown URL schemes in a fashion compliant with :rfc:`3986`: if the
2430 URL is of the form ``"<something>://..."``, the text before the
2431 ``://`` is treated as the scheme, even if it's a made-up scheme that
2432 the module doesn't know about. This change may break code that
2433 worked around the old behaviour. For example, Python 2.6.4 or 2.5
2434 will return the following:
2435
2436 >>> import urlparse
2437 >>> urlparse.urlsplit('invented://host/filename?query')
2438 ('invented', '', '//host/filename?query', '', '')
2439
2440 Python 2.7 (and Python 2.6.5) will return:
2441
2442 >>> import urlparse
2443 >>> urlparse.urlsplit('invented://host/filename?query')
2444 ('invented', 'host', '/filename?query', '', '')
2445
2446 (Python 2.7 actually produces slightly different output, since it
2447 returns a named tuple instead of a standard tuple.)
2448
Andrew M. Kuchlinga7f59472009-12-31 16:38:53 +00002449For C extensions:
2450
Andrew M. Kuchling7f8ebdb2010-01-03 01:15:21 +00002451* C extensions that use integer format codes with the ``PyArg_Parse*``
2452 family of functions will now raise a :exc:`TypeError` exception
2453 instead of triggering a :exc:`DeprecationWarning` (:issue:`5080`).
2454
Andrew M. Kuchlinga7f59472009-12-31 16:38:53 +00002455* Use the new :cfunc:`PyOS_string_to_double` function instead of the old
2456 :cfunc:`PyOS_ascii_strtod` and :cfunc:`PyOS_ascii_atof` functions,
2457 which are now deprecated.
2458
Andrew M. Kuchling11bd81c2010-06-11 01:54:58 +00002459For applications that embed Python:
2460
2461* The :cfunc:`PySys_SetArgvEx` function was added, letting
2462 applications close a security hole when the existing
2463 :cfunc:`PySys_SetArgv` function was used. Check whether you're
2464 calling :cfunc:`PySys_SetArgv` and carefully consider whether the
2465 application should be using :cfunc:`PySys_SetArgvEx` with
2466 *updatepath* set to false.
Andrew M. Kuchling7f8ebdb2010-01-03 01:15:21 +00002467
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002468.. ======================================================================
2469
2470
2471.. _acks27:
2472
2473Acknowledgements
2474================
2475
2476The author would like to thank the following people for offering
2477suggestions, corrections and assistance with various drafts of this
Andrew M. Kuchling0efe18a2010-05-08 15:39:46 +00002478article: Nick Coghlan, Philip Jenvey, Ryan Lovett, R. David Murray,
2479Hugh Secker-Walker.
Andrew M. Kuchlingce1882b2008-10-04 16:52:31 +00002480