blob: bacf729de6c4608014c9430059179b9272f41829 [file] [log] [blame]
Benjamin Petersonf10a79a2008-10-11 00:49:57 +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
Benjamin Petersond23f8222009-04-05 19:13:16 +00009.. Fix accents on Kristjan Valur Jonsson, Fuerstenau, Tarek Ziade.
Benjamin Peterson1010bf32009-01-30 04:00:29 +000010
Benjamin Petersonf10a79a2008-10-11 00:49:57 +000011.. $Id$
12 Rules for maintenance:
13
14 * Anyone can add text to this document. Do not spend very much time
15 on the wording of your changes, because your text will probably
16 get rewritten to some degree.
17
18 * The maintainer will go through Misc/NEWS periodically and add
19 changes; it's therefore more important to add your changes to
20 Misc/NEWS than to this file.
21
22 * This is not a complete list of every single change; completeness
23 is the purpose of Misc/NEWS. Some changes I consider too small
24 or esoteric to include. If such a change is added to the text,
25 I'll just remove it. (This is another reason you shouldn't spend
26 too much time on writing your addition.)
27
28 * If you want to draw your new text to the attention of the
29 maintainer, add 'XXX' to the beginning of the paragraph or
30 section.
31
32 * It's OK to just add a fragmentary note about a change. For
33 example: "XXX Describe the transmogrify() function added to the
34 socket module." The maintainer will research the change and
35 write the necessary text.
36
37 * You can comment out your additions if you like, but it's not
38 necessary (especially when a final release is some months away).
39
40 * Credit the author of a patch or bugfix. Just the name is
41 sufficient; the e-mail address isn't necessary.
42
43 * It's helpful to add the bug/patch number in a parenthetical comment.
44
45 XXX Describe the transmogrify() function added to the socket
46 module.
47 (Contributed by P.Y. Developer; :issue:`12345`.)
48
49 This saves the maintainer some effort going through the SVN logs
50 when researching a change.
51
52This article explains the new features in Python 2.7.
53No release schedule has been decided yet for 2.7.
54
55.. Compare with previous release in 2 - 3 sentences here.
56 add hyperlink when the documentation becomes available online.
57
Benjamin Petersond23f8222009-04-05 19:13:16 +000058Python 3.1
59================
60
61Much as Python 2.6 incorporated features from Python 3.0,
62version 2.7 is influenced by features from 3.1.
63
64XXX mention importlib; anything else?
65
66One porting change: the :option:`-3` switch now automatically
67enables the :option:`-Qwarn` switch that causes warnings
68about using classic division with integers and long integers.
69
Benjamin Petersonf10a79a2008-10-11 00:49:57 +000070.. ========================================================================
71.. Large, PEP-level features and changes should be described here.
Benjamin Petersonf10a79a2008-10-11 00:49:57 +000072.. ========================================================================
73
Benjamin Petersond23f8222009-04-05 19:13:16 +000074PEP 372: Adding an ordered dictionary to collections
75====================================================
76
77XXX write this
78
79Several modules will now use :class:`OrderedDict` by default. The
80:mod:`ConfigParser` module uses :class:`OrderedDict` for the list
81of sections and the options within a section.
82The :meth:`namedtuple._asdict` method returns an :class:`OrderedDict`
83as well.
Benjamin Petersonf10a79a2008-10-11 00:49:57 +000084
85
86Other Language Changes
87======================
88
89Some smaller changes made to the core Python language are:
90
Benjamin Peterson3f96a872009-04-11 20:58:12 +000091* :meth:`str.format` method now supports automatic numbering of the replacement
92 fields. This makes using :meth:`str.format` more closely resemble using
93 ``%s`` formatting::
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +000094
95 >>> '{}:{}:{}'.format(2009, 04, 'Sunday')
96 '2009:4:Sunday'
97 >>> '{}:{}:{day}'.format(2009, 4, day='Sunday')
98 '2009:4:Sunday'
99
Benjamin Peterson3f96a872009-04-11 20:58:12 +0000100 The auto-numbering takes the fields from left to right, so the first ``{...}``
101 specifier will use the first argument to :meth:`str.format`, the next
102 specifier will use the next argument, and so on. You can't mix auto-numbering
103 and explicit numbering -- either number all of your specifier fields or none
104 of them -- but you can mix auto-numbering and named fields, as in the second
Georg Brandl9078afe2009-04-27 16:38:14 +0000105 example above. (Contributed by Eric Smith; :issue`5237`.)
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000106
Mark Dickinson54bc1ec2008-12-17 16:19:07 +0000107* The :func:`int` and :func:`long` types gained a ``bit_length``
108 method that returns the number of bits necessary to represent
109 its argument in binary::
110
111 >>> n = 37
112 >>> bin(37)
113 '0b100101'
114 >>> n.bit_length()
115 6
116 >>> n = 2**123-1
117 >>> n.bit_length()
118 123
119 >>> (n+1).bit_length()
120 124
121
122 (Contributed by Fredrik Johansson and Victor Stinner; :issue:`3439`.)
123
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000124* Conversions from long integers and regular integers to floating
125 point now round differently, returning the floating-point number
126 closest to the number. This doesn't matter for small integers that
127 can be converted exactly, but for large numbers that will
128 unavoidably lose precision, Python 2.7 will now approximate more
129 closely. For example, Python 2.6 computed the following::
130
131 >>> n = 295147905179352891391
132 >>> float(n)
133 2.9514790517935283e+20
134 >>> n - long(float(n))
135 65535L
136
137 Python 2.7's floating-point result is larger, but much closer to the
138 true value::
139
140 >>> n = 295147905179352891391
141 >>> float(n)
142 2.9514790517935289e+20
143 >>> n-long(float(n)
144 ... )
145 -1L
146
147 (Implemented by Mark Dickinson; :issue:`3166`.)
148
Benjamin Petersond23f8222009-04-05 19:13:16 +0000149* The :class:`bytearray` type's :meth:`translate` method will
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000150 now accept ``None`` as its first argument. (Fixed by Georg Brandl;
Benjamin Petersond23f8222009-04-05 19:13:16 +0000151 :issue:`4759`.)
Mark Dickinsond72c7b62009-03-20 16:00:49 +0000152
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000153.. ======================================================================
154
155
156Optimizations
157-------------
158
Benjamin Petersond23f8222009-04-05 19:13:16 +0000159Several performance enhancements have been added:
160
161.. * A new :program:`configure` option, :option:`--with-computed-gotos`,
162 compiles the main bytecode interpreter loop using a new dispatch
163 mechanism that gives speedups of up to 20%, depending on the system
164 and benchmark. The new mechanism is only supported on certain
165 compilers, such as gcc, SunPro, and icc.
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000166
167* The garbage collector now performs better when many objects are
168 being allocated without deallocating any. A full garbage collection
169 pass is only performed when the middle generation has been collected
170 10 times and when the number of survivor objects from the middle
171 generation exceeds 10% of the number of objects in the oldest
172 generation. The second condition was added to reduce the number
173 of full garbage collections as the number of objects on the heap grows,
174 avoiding quadratic performance when allocating very many objects.
175 (Suggested by Martin von Loewis and implemented by Antoine Pitrou;
176 :issue:`4074`.)
177
Benjamin Petersond23f8222009-04-05 19:13:16 +0000178* The garbage collector tries to avoid tracking simple containers
179 which can't be part of a cycle. In Python 2.7, this is now true for
180 tuples and dicts containing atomic types (such as ints, strings,
181 etc.). Transitively, a dict containing tuples of atomic types won't
182 be tracked either. This helps reduce the cost of each
183 garbage collection by decreasing the number of objects to be
184 considered and traversed by the collector.
Antoine Pitrou9d81def2009-03-28 19:20:09 +0000185 (Contributed by Antoine Pitrou; :issue:`4688`.)
186
Benjamin Petersond23f8222009-04-05 19:13:16 +0000187* Integers are now stored internally either in base 2**15 or in base
188 2**30, the base being determined at build time. Previously, they
189 were always stored in base 2**15. Using base 2**30 gives
190 significant performance improvements on 64-bit machines, but
191 benchmark results on 32-bit machines have been mixed. Therefore,
192 the default is to use base 2**30 on 64-bit machines and base 2**15
193 on 32-bit machines; on Unix, there's a new configure option
194 :option:`--enable-big-digits` that can be used to override this default.
195
196 Apart from the performance improvements this change should be
197 invisible to end users, with one exception: for testing and
198 debugging purposes there's a new structseq ``sys.long_info`` that
199 provides information about the internal format, giving the number of
200 bits per digit and the size in bytes of the C type used to store
201 each digit::
202
203 >>> import sys
204 >>> sys.long_info
205 sys.long_info(bits_per_digit=30, sizeof_digit=4)
206
207 (Contributed by Mark Dickinson; :issue:`4258`.)
208
209 Another set of changes made long objects a few bytes smaller: 2 bytes
210 smaller on 32-bit systems and 6 bytes on 64-bit.
211 (Contributed by Mark Dickinson; :issue:`5260`.)
212
213* The division algorithm for long integers has been made faster
214 by tightening the inner loop, doing shifts instead of multiplications,
215 and fixing an unnecessary extra iteration.
216 Various benchmarks show speedups of between 50% and 150% for long
217 integer divisions and modulo operations.
218 (Contributed by Mark Dickinson; :issue:`5512`.)
219
220* The implementation of ``%`` checks for the left-side operand being
221 a Python string and special-cases it; this results in a 1-3%
222 performance increase for applications that frequently use ``%``
223 with strings, such as templating libraries.
224 (Implemented by Collin Winter; :issue:`5176`.)
225
226* List comprehensions with an ``if`` condition are compiled into
227 faster bytecode. (Patch by Antoine Pitrou, back-ported to 2.7
228 by Jeffrey Yasskin; :issue:`4715`.)
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000229
230.. ======================================================================
231
Georg Brandl4d131ee2009-11-18 18:53:14 +0000232New and Improved Modules
233========================
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000234
235As in every release, Python's standard library received a number of
236enhancements and bug fixes. Here's a partial list of the most notable
237changes, sorted alphabetically by module name. Consult the
238:file:`Misc/NEWS` file in the source tree for a more complete list of
239changes, or look through the Subversion logs for all the details.
240
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000241* The :mod:`bz2` module's :class:`BZ2File` now supports the context
242 management protocol, so you can write ``with bz2.BZ2File(...) as f: ...``.
243 (Contributed by Hagen Fuerstenau; :issue:`3860`.)
244
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000245* New class: the :class:`Counter` class in the :mod:`collections` module is
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000246 useful for tallying data. :class:`Counter` instances behave mostly
247 like dictionaries but return zero for missing keys instead of
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000248 raising a :exc:`KeyError`:
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000249
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000250 .. doctest::
251 :options: +NORMALIZE_WHITESPACE
252
253 >>> from collections import Counter
254 >>> c = Counter()
255 >>> for letter in 'here is a sample of english text':
256 ... c[letter] += 1
257 ...
258 >>> c
259 Counter({' ': 6, 'e': 5, 's': 3, 'a': 2, 'i': 2, 'h': 2,
260 'l': 2, 't': 2, 'g': 1, 'f': 1, 'm': 1, 'o': 1, 'n': 1,
261 'p': 1, 'r': 1, 'x': 1})
262 >>> c['e']
263 5
264 >>> c['z']
265 0
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000266
267 There are two additional :class:`Counter` methods: :meth:`most_common`
268 returns the N most common elements and their counts, and :meth:`elements`
269 returns an iterator over the contained element, repeating each element
270 as many times as its count::
271
272 >>> c.most_common(5)
273 [(' ', 6), ('e', 5), ('s', 3), ('a', 2), ('i', 2)]
274 >>> c.elements() ->
275 'a', 'a', ' ', ' ', ' ', ' ', ' ', ' ',
276 'e', 'e', 'e', 'e', 'e', 'g', 'f', 'i', 'i',
277 'h', 'h', 'm', 'l', 'l', 'o', 'n', 'p', 's',
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000278 's', 's', 'r', 't', 't', 'x'
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000279
280 Contributed by Raymond Hettinger; :issue:`1696199`.
281
Benjamin Petersond23f8222009-04-05 19:13:16 +0000282 The :class:`namedtuple` class now has an optional *rename* parameter.
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000283 If *rename* is true, field names that are invalid because they've
Benjamin Petersond23f8222009-04-05 19:13:16 +0000284 been repeated or that aren't legal Python identifiers will be
285 renamed to legal names that are derived from the field's
286 position within the list of fields:
287
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000288 >>> from collections import namedtuple
289 >>> T = namedtuple('T', ['field1', '$illegal', 'for', 'field2'], rename=True)
Benjamin Petersond23f8222009-04-05 19:13:16 +0000290 >>> T._fields
291 ('field1', '_1', '_2', 'field2')
292
293 (Added by Raymond Hettinger; :issue:`1818`.)
294
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000295 The :class:`deque` data type now exposes its maximum length as the
296 read-only :attr:`maxlen` attribute. (Added by Raymond Hettinger.)
297
Benjamin Petersond23f8222009-04-05 19:13:16 +0000298* In Distutils, :func:`distutils.sdist.add_defaults` now uses
299 *package_dir* and *data_files* to create the MANIFEST file.
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000300 :mod:`distutils.sysconfig` will now read the :envvar:`AR`
301 environment variable.
Benjamin Petersond23f8222009-04-05 19:13:16 +0000302
303 It is no longer mandatory to store clear-text passwords in the
304 :file:`.pypirc` file when registering and uploading packages to PyPI. As long
305 as the username is present in that file, the :mod:`distutils` package will
306 prompt for the password if not present. (Added by Tarek Ziade,
307 based on an initial contribution by Nathan Van Gheem; :issue:`4394`.)
308
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000309 A Distutils setup can now specify that a C extension is optional by
310 setting the *optional* option setting to true. If this optional is
311 supplied, failure to build the extension will not abort the build
312 process, but instead simply not install the failing extension.
313 (Contributed by Georg Brandl; :issue:`5583`.)
314
Benjamin Petersond23f8222009-04-05 19:13:16 +0000315* New method: the :class:`Decimal` class gained a
316 :meth:`from_float` class method that performs an exact conversion
317 of a floating-point number to a :class:`Decimal`.
318 Note that this is an **exact** conversion that strives for the
319 closest decimal approximation to the floating-point representation's value;
320 the resulting decimal value will therefore still include the inaccuracy,
321 if any.
322 For example, ``Decimal.from_float(0.1)`` returns
323 ``Decimal('0.1000000000000000055511151231257827021181583404541015625')``.
324 (Implemented by Raymond Hettinger; :issue:`4796`.)
325
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000326* The :class:`Fraction` class will now accept two rational numbers
327 as arguments to its constructor.
328 (Implemented by Mark Dickinson; :issue:`5812`.)
329
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000330* New function: the :mod:`gc` module's :func:`is_tracked` returns
331 true if a given instance is tracked by the garbage collector, false
Benjamin Petersond23f8222009-04-05 19:13:16 +0000332 otherwise. (Contributed by Antoine Pitrou; :issue:`4688`.)
333
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000334* The :mod:`gzip` module's :class:`GzipFile` now supports the context
335 management protocol, so you can write ``with gzip.GzipFile(...) as f: ...``.
336 (Contributed by Hagen Fuerstenau; :issue:`3860`.)
Benjamin Petersond23f8222009-04-05 19:13:16 +0000337 It's now possible to override the modification time
338 recorded in a gzipped file by providing an optional timestamp to
339 the constructor. (Contributed by Jacques Frechet; :issue:`4272`.)
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000340
341* The :class:`io.FileIO` class now raises an :exc:`OSError` when passed
342 an invalid file descriptor. (Implemented by Benjamin Peterson;
343 :issue:`4991`.)
344
Benjamin Petersond23f8222009-04-05 19:13:16 +0000345* New function: ``itertools.compress(*data*, *selectors*)`` takes two
346 iterators. Elements of *data* are returned if the corresponding
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000347 value in *selectors* is true::
Benjamin Petersond23f8222009-04-05 19:13:16 +0000348
349 itertools.compress('ABCDEF', [1,0,1,0,1,1]) =>
350 A, C, E, F
351
352 New function: ``itertools.combinations_with_replacement(*iter*, *r*)``
353 returns all the possible *r*-length combinations of elements from the
354 iterable *iter*. Unlike :func:`combinations`, individual elements
355 can be repeated in the generated combinations::
356
357 itertools.combinations_with_replacement('abc', 2) =>
358 ('a', 'a'), ('a', 'b'), ('a', 'c'),
359 ('b', 'b'), ('b', 'c'), ('c', 'c')
360
361 Note that elements are treated as unique depending on their position
362 in the input, not their actual values.
363
364 The :class:`itertools.count` function now has a *step* argument that
365 allows incrementing by values other than 1. :func:`count` also
366 now allows keyword arguments, and using non-integer values such as
367 floats or :class:`Decimal` instances. (Implemented by Raymond
368 Hettinger; :issue:`5032`.)
369
370 :func:`itertools.combinations` and :func:`itertools.product` were
371 previously raising :exc:`ValueError` for values of *r* larger than
372 the input iterable. This was deemed a specification error, so they
373 now return an empty iterator. (Fixed by Raymond Hettinger; :issue:`4816`.)
374
375* The :mod:`json` module was upgraded to version 2.0.9 of the
376 simplejson package, which includes a C extension that makes
377 encoding and decoding faster.
378 (Contributed by Bob Ippolito; :issue:`4136`.)
379
380 To support the new :class:`OrderedDict` type, :func:`json.load`
381 now has an optional *object_pairs_hook* parameter that will be called
382 with any object literal that decodes to a list of pairs.
383 (Contributed by Raymond Hettinger; :issue:`5381`.)
384
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000385* The :mod:`multiprocessing` module's :class:`Manager*` classes
386 can now be passed a callable that will be called whenever
387 a subprocess is started, along with a set of arguments that will be
388 passed to the callable.
389 (Contributed by lekma; :issue:`5585`.)
390
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000391* The :mod:`pydoc` module now has help for the various symbols that Python
392 uses. You can now do ``help('<<')`` or ``help('@')``, for example.
393 (Contributed by David Laban; :issue:`4739`.)
394
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000395* The :mod:`re` module's :func:`split`, :func:`sub`, and :func:`subn`
396 now accept an optional *flags* argument, for consistency with the
397 other functions in the module. (Added by Gregory P. Smith.)
398
399* New function: the :mod:`subprocess` module's
400 :func:`check_output` runs a command with a specified set of arguments
Benjamin Petersond23f8222009-04-05 19:13:16 +0000401 and returns the command's output as a string when the command runs without
Georg Brandl1f01deb2009-01-03 22:47:39 +0000402 error, or raises a :exc:`CalledProcessError` exception otherwise.
403
404 ::
405
406 >>> subprocess.check_output(['df', '-h', '.'])
407 'Filesystem Size Used Avail Capacity Mounted on\n
408 /dev/disk0s2 52G 49G 3.0G 94% /\n'
409
410 >>> subprocess.check_output(['df', '-h', '/bogus'])
411 ...
412 subprocess.CalledProcessError: Command '['df', '-h', '/bogus']' returned non-zero exit status 1
413
414 (Contributed by Gregory P. Smith.)
415
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000416* New function: :func:`is_declared_global` in the :mod:`symtable` module
417 returns true for variables that are explicitly declared to be global,
418 false for ones that are implicitly global.
419 (Contributed by Jeremy Hylton.)
420
Benjamin Petersond23f8222009-04-05 19:13:16 +0000421* The ``sys.version_info`` value is now a named tuple, with attributes
422 named ``major``, ``minor``, ``micro``, ``releaselevel``, and ``serial``.
423 (Contributed by Ross Light; :issue:`4285`.)
424
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000425* The :mod:`threading` module's :meth:`Event.wait` method now returns
426 the internal flag on exit. This means the method will usually
427 return true because :meth:`wait` is supposed to block until the
428 internal flag becomes true. The return value will only be false if
429 a timeout was provided and the operation timed out.
430 (Contributed by XXX; :issue:`1674032`.)
431
Benjamin Petersond23f8222009-04-05 19:13:16 +0000432* The :mod:`unittest` module was enhanced in several ways.
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000433 The progress messages will now show 'x' for expected failures
434 and 'u' for unexpected successes when run in verbose mode.
435 (Contributed by Benjamin Peterson.)
Benjamin Petersond23f8222009-04-05 19:13:16 +0000436 Test cases can raise the :exc:`SkipTest` exception to skip a test.
437 (:issue:`1034053`.)
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000438
439 The error messages for :meth:`assertEqual`,
440 :meth:`assertTrue`, and :meth:`assertFalse`
441 failures now provide more information. If you set the
442 :attr:`longMessage` attribute of your :class:`TestCase` classes to
443 true, both the standard error message and any additional message you
444 provide will be printed for failures. (Added by Michael Foord; :issue:`5663`.)
Benjamin Petersond23f8222009-04-05 19:13:16 +0000445
446 The :meth:`assertRaises` and :meth:`failUnlessRaises` methods now
447 return a context handler when called without providing a callable
448 object to run. For example, you can write this::
449
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000450 with self.assertRaises(KeyError):
451 raise ValueError
Benjamin Petersond23f8222009-04-05 19:13:16 +0000452
453 (Implemented by Antoine Pitrou; :issue:`4444`.)
454
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000455 The methods :meth:`addCleanup` and :meth:`doCleanups` were added.
456 :meth:`addCleanup` allows you to add cleanup functions that
457 will be called unconditionally (after :meth:`setUp` if
458 :meth:`setUp` fails, otherwise after :meth:`tearDown`). This allows
459 for much simpler resource allocation and deallocation during tests.
460 :issue:`5679`
461
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000462 A number of new methods were added that provide more specialized
463 tests. Many of these methods were written by Google engineers
464 for use in their test suites; Gregory P. Smith, Michael Foord, and
465 GvR worked on merging them into Python's version of :mod:`unittest`.
466
467 * :meth:`assertIsNone` and :meth:`assertIsNotNone` take one
468 expression and verify that the result is or is not ``None``.
469
470 * :meth:`assertIs` and :meth:`assertIsNot` take two values and check
471 whether the two values evaluate to the same object or not.
472 (Added by Michael Foord; :issue:`2578`.)
473
474 * :meth:`assertGreater`, :meth:`assertGreaterEqual`,
475 :meth:`assertLess`, and :meth:`assertLessEqual` compare
476 two quantities.
477
478 * :meth:`assertMultiLineEqual` compares two strings, and if they're
479 not equal, displays a helpful comparison that highlights the
480 differences in the two strings.
481
482 * :meth:`assertRegexpMatches` checks whether its first argument is a
483 string matching a regular expression provided as its second argument.
484
485 * :meth:`assertRaisesRegexp` checks whether a particular exception
486 is raised, and then also checks that the string representation of
487 the exception matches the provided regular expression.
488
489 * :meth:`assertIn` and :meth:`assertNotIn` tests whether
490 *first* is or is not in *second*.
491
492 * :meth:`assertSameElements` tests whether two provided sequences
493 contain the same elements.
494
495 * :meth:`assertSetEqual` compares whether two sets are equal, and
496 only reports the differences between the sets in case of error.
497
498 * Similarly, :meth:`assertListEqual` and :meth:`assertTupleEqual`
499 compare the specified types and explain the differences.
500 More generally, :meth:`assertSequenceEqual` compares two sequences
501 and can optionally check whether both sequences are of a
502 particular type.
503
504 * :meth:`assertDictEqual` compares two dictionaries and reports the
505 differences. :meth:`assertDictContainsSubset` checks whether
506 all of the key/value pairs in *first* are found in *second*.
507
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000508 * :meth:`assertAlmostEqual` and :meth:`assertNotAlmostEqual` short-circuit
509 (automatically pass or fail without checking decimal places) if the objects
510 are equal.
511
512 * :meth:`loadTestsFromName` properly honors the ``suiteClass`` attribute of
513 the :class:`TestLoader`. (Fixed by Mark Roddy; :issue:`6866`.)
514
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000515 * A new hook, :meth:`addTypeEqualityFunc` takes a type object and a
516 function. The :meth:`assertEqual` method will use the function
517 when both of the objects being compared are of the specified type.
518 This function should compare the two objects and raise an
519 exception if they don't match; it's a good idea for the function
520 to provide additional information about why the two objects are
521 matching, much as the new sequence comparison methods do.
522
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000523 :func:`unittest.main` now takes an optional ``exit`` argument.
524 If False ``main`` doesn't call :func:`sys.exit` allowing it to
525 be used from the interactive interpreter. :issue:`3379`.
526
527 :class:`TestResult` has new :meth:`startTestRun` and
528 :meth:`stopTestRun` methods; called immediately before
529 and after a test run. :issue:`5728` by Robert Collins.
530
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000531* The :func:`is_zipfile` function in the :mod:`zipfile` module will now
532 accept a file object, in addition to the path names accepted in earlier
533 versions. (Contributed by Gabriel Genellina; :issue:`4756`.)
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000534
Benjamin Petersond23f8222009-04-05 19:13:16 +0000535 :mod:`zipfile` now supports archiving empty directories and
536 extracts them correctly. (Fixed by Kuba Wieczorek; :issue:`4710`.)
537
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000538.. ======================================================================
539.. whole new modules get described in subsections here
540
Benjamin Petersond23f8222009-04-05 19:13:16 +0000541importlib: Importing Modules
542------------------------------
543
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000544Python 3.1 includes the :mod:`importlib` package, a re-implementation
545of the logic underlying Python's :keyword:`import` statement.
546:mod:`importlib` is useful for implementors of Python interpreters and
547to user who wish to write new importers that can participate in the
548import process. Python 2.7 doesn't contain the complete
549:mod:`importlib` package, but instead has a tiny subset that contains
550a single function, :func:`import_module`.
551
552``import_module(*name*, *package*=None)`` imports a module. *name* is
553a string containing the module or package's name. It's possible to do
554relative imports by providing a string that begins with a ``.``
555character, such as ``..utils.errors``. For relative imports, the
556*package* argument must be provided and is the name of the package that
557will be used as the anchor for
558the relative import. :func:`import_module` both inserts the imported
559module into ``sys.modules`` and returns the module object.
560
561Here are some examples::
562
563 >>> from importlib import import_module
564 >>> anydbm = import_module('anydbm') # Standard absolute import
565 >>> anydbm
566 <module 'anydbm' from '/p/python/Lib/anydbm.py'>
567 >>> # Relative import
568 >>> sysconfig = import_module('..sysconfig', 'distutils.command')
569 >>> sysconfig
570 <module 'distutils.sysconfig' from '/p/python/Lib/distutils/sysconfig.pyc'>
571
572:mod:`importlib` was implemented by Brett Cannon and introduced in
573Python 3.1.
574
Benjamin Petersond23f8222009-04-05 19:13:16 +0000575
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000576ttk: Themed Widgets for Tk
577--------------------------
578
579Tcl/Tk 8.5 includes a set of themed widgets that re-implement basic Tk
580widgets but have a more customizable appearance and can therefore more
581closely resemble the native platform's widgets. This widget
582set was originally called Tile, but was renamed to Ttk (for "themed Tk")
583on being added to Tcl/Tck release 8.5.
584
585XXX write a brief discussion and an example here.
586
587The :mod:`ttk` module was written by Guilherme Polo and added in
588:issue:`2983`. An alternate version called ``Tile.py``, written by
589Martin Franklin and maintained by Kevin Walzer, was proposed for
590inclusion in :issue:`2618`, but the authors argued that Guilherme
591Polo's work was more comprehensive.
592
Georg Brandl4d131ee2009-11-18 18:53:14 +0000593
594Deprecations and Removals
595=========================
596
597* :func:`contextlib.nested`, which allows handling more than one context manager
598 with one :keyword:`with` statement, has been deprecated; :keyword:`with`
599 supports multiple context managers syntactically now.
600
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000601.. ======================================================================
602
603
604Build and C API Changes
605=======================
606
607Changes to Python's build process and to the C API include:
608
Georg Brandl1f01deb2009-01-03 22:47:39 +0000609* If you use the :file:`.gdbinit` file provided with Python,
610 the "pyo" macro in the 2.7 version will now work when the thread being
611 debugged doesn't hold the GIL; the macro will now acquire it before printing.
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000612 (Contributed by Victor Stinner; :issue:`3632`.)
613
Benjamin Petersond23f8222009-04-05 19:13:16 +0000614* :cfunc:`Py_AddPendingCall` is now thread-safe, letting any
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000615 worker thread submit notifications to the main Python thread. This
616 is particularly useful for asynchronous IO operations.
617 (Contributed by Kristjan Valur Jonsson; :issue:`4293`.)
618
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000619* Global symbols defined by the :mod:`ctypes` module are now prefixed
620 with ``Py`, or with ``_ctypes``. (Implemented by Thomas
621 Heller; :issue:`3102`.)
622
Benjamin Petersond23f8222009-04-05 19:13:16 +0000623* The :program:`configure` script now checks for floating-point rounding bugs
624 on certain 32-bit Intel chips and defines a :cmacro:`X87_DOUBLE_ROUNDING`
625 preprocessor definition. No code currently uses this definition,
626 but it's available if anyone wishes to use it.
627 (Added by Mark Dickinson; :issue:`2937`.)
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000628
629.. ======================================================================
630
631Port-Specific Changes: Windows
632-----------------------------------
633
Georg Brandl1f01deb2009-01-03 22:47:39 +0000634* The :mod:`msvcrt` module now contains some constants from
635 the :file:`crtassem.h` header file:
636 :data:`CRT_ASSEMBLY_VERSION`,
637 :data:`VC_ASSEMBLY_PUBLICKEYTOKEN`,
638 and :data:`LIBRARIES_ASSEMBLY_NAME_PREFIX`.
Benjamin Peterson1010bf32009-01-30 04:00:29 +0000639 (Contributed by David Cournapeau; :issue:`4365`.)
640
641* The new :cfunc:`_beginthreadex` API is used to start threads, and
642 the native thread-local storage functions are now used.
643 (Contributed by Kristjan Valur Jonsson; :issue:`3582`.)
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000644
645.. ======================================================================
646
647Port-Specific Changes: Mac OS X
648-----------------------------------
649
Benjamin Petersond23f8222009-04-05 19:13:16 +0000650* The ``/Library/Python/2.7/site-packages`` is now appended to
651 ``sys.path``, in order to share added packages between the system
652 installation and a user-installed copy of the same version.
653 (Changed by Ronald Oussoren; :issue:`4865`.)
654
655
656Other Changes and Fixes
657=======================
658
659* When importing a module from a :file:`.pyc` or :file:`.pyo` file
660 with an existing :file:`.py` counterpart, the :attr:`co_filename`
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000661 attributes of the resulting code objects are overwritten when the
662 original filename is obsolete. This can happen if the file has been
663 renamed, moved, or is accessed through different paths. (Patch by
664 Ziga Seilnacht and Jean-Paul Calderone; :issue:`1180193`.)
Benjamin Petersond23f8222009-04-05 19:13:16 +0000665
666* The :file:`regrtest.py` script now takes a :option:`--randseed=`
667 switch that takes an integer that will be used as the random seed
668 for the :option:`-r` option that executes tests in random order.
669 The :option:`-r` option also now reports the seed that was used
670 (Added by Collin Winter.)
671
Antoine Pitrou88909542009-06-29 13:54:42 +0000672* The :file:`regrtest.py` script now takes a :option:`-j` switch
673 that takes an integer specifying how many tests run in parallel. This
674 allows to shorten the total runtime on multi-core machines.
675 This option is compatible with several other options, including the
676 :option:`-R` switch which is known to produce long runtimes.
677 (Added by Antoine Pitrou, :issue:`6152`.)
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000678
679.. ======================================================================
680
681Porting to Python 2.7
682=====================
683
684This section lists previously described changes and other bugfixes
685that may require changes to your code:
686
Benjamin Peterson87c8d872009-06-11 22:54:11 +0000687* Because of an optimization for the :keyword:`with` statement, the special
688 methods :meth:`__enter__` and :meth:`__exit__` must belong to the object's
689 type, and cannot be directly attached to the object's instance. This
690 affects new-style classes (derived from :class:`object`) and C extension
691 types. (:issue:`6101`.)
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000692
693.. ======================================================================
694
695
696.. _acks27:
697
698Acknowledgements
699================
700
701The author would like to thank the following people for offering
702suggestions, corrections and assistance with various drafts of this
703article: no one yet.
704