blob: 09d8be87a93dae20f3f6e80602298f7701daecc1 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Georg Brandl3b80d342012-10-28 13:37:54 +01005.. :Author: Someone <email>
6 (uncomment if there is a principal author)
Georg Brandlb80f5112012-09-30 09:11:58 +02007
8.. Rules for maintenance:
9
Nick Coghlan03074fd2012-09-30 18:51:53 +053010 * Anyone can add text to this document, but the maintainer reserves the
11 right to rewrite any additions. In particular, for obscure or esoteric
12 features, the maintainer may reduce any addition to a simple reference to
13 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020014
Nick Coghlan03074fd2012-09-30 18:51:53 +053015 * While the maintainer will periodically go through Misc/NEWS
16 and add changes, it's best not to rely on this. We know from experience
17 that any changes that aren't in the What's New documentation around the
18 time of the original release will remain largely unknown to the community
19 for years, even if they're added later. We also know from experience that
20 other priorities can arise, and the maintainer will run out of time to do
21 updates - in such cases, end users will be much better served by partial
22 notifications that at least give a hint about new features to
23 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020024
25 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053026 is the purpose of Misc/NEWS. The What's New should focus on changes that
27 are visible to Python *users* and that *require* a feature release (i.e.
28 most bug fixes should only be recorded in Misc/NEWS)
29
30 * PEPs should not be marked Final until they have an entry in What's New.
31 A placeholder entry that is just a section header and a link to the PEP
32 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
33 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020034
35 * If you want to draw your new text to the attention of the
36 maintainer, add 'XXX' to the beginning of the paragraph or
37 section.
38
Nick Coghlan03074fd2012-09-30 18:51:53 +053039 * It's OK to add just a very brief note about a change. For
40 example: "The :ref:`~socket.transmogrify()` function was added to the
41 :mod:`socket` module." The maintainer will research the change and
42 write the necessary text (if appropriate). The advantage of doing this
43 is that even if no more descriptive text is ever added, readers will at
44 least have a notification that the new feature exists and a link to the
45 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020046
47 * You can comment out your additions if you like, but it's not
48 necessary (especially when a final release is some months away).
49
50 * Credit the author of a patch or bugfix. Just the name is
51 sufficient; the e-mail address isn't necessary.
52
53 * It's helpful to add the bug/patch number as a comment:
54
Nick Coghlan03074fd2012-09-30 18:51:53 +053055 The :ref:`~socket.transmogrify()` function was added to the
56 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020057
58 This saves the maintainer the effort of going through the Mercurial log
59 when researching a change.
60
Nick Coghlan03074fd2012-09-30 18:51:53 +053061 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
62 while :ref:`~mod.attr` will display as ``attr``.
63
Georg Brandlb80f5112012-09-30 09:11:58 +020064This article explains the new features in Python 3.4, compared to 3.3.
65
Nick Coghlan03074fd2012-09-30 18:51:53 +053066.. Python 3.4 was released on TBD.
Georg Brandlb80f5112012-09-30 09:11:58 +020067
Ezio Melotti25bbe5e2012-11-17 19:30:48 +020068For full details, see the
69`changelog <http://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020070
71.. note:: Prerelease users should be aware that this document is currently in
72 draft form. It will be updated substantially as Python 3.4 moves towards
73 release, so it's worth checking back even after reading earlier versions.
74
75
76.. seealso::
77
Nick Coghlan367df122013-10-27 01:57:34 +100078 :pep:`429` - Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
81Summary -- Release highlights
82=============================
83
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000084.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020085 Brevity is key.
86
87New syntax features:
88
Nick Coghlan0acceb72013-10-20 13:22:21 +100089* No new syntax features are planned for Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
91New library modules:
92
Nick Coghlan0acceb72013-10-20 13:22:21 +100093* :mod:`asyncio`: New provisonal API for asynchronous IO (:pep:`3156`).
94* :mod:`enum`: Support for enumeration types (:pep:`435`).
Nick Coghland0cf0632013-11-11 22:11:55 +100095* :mod:`ensurepip`: Bootstrapping the pip installer (:pep:`453`).
Antoine Pitrou31119e42013-11-22 17:38:12 +010096* :mod:`pathlib`: Object-oriented filesystem paths (:pep:`428`).
Victor Stinner4aea4a02013-09-04 20:30:34 +020097* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
98 :mod:`select` module primitives.
Nick Coghlan0acceb72013-10-20 13:22:21 +100099* :mod:`statistics`: A basic numerically stable statistics library (:pep:`450`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200100
Nick Coghlan367df122013-10-27 01:57:34 +1000101New expected features for Python implementations:
Georg Brandlb80f5112012-09-30 09:11:58 +0200102
Victor Stinnerdaf45552013-08-28 00:53:59 +0200103* :ref:`PEP 446: Make newly created file descriptors non-inheritable <pep-446>`.
Nick Coghlan367df122013-10-27 01:57:34 +1000104* command line option for :ref:`isolated mode <using-on-misc-options>`,
105 (:issue:`16499`).
Nick Coghlan8b097b42013-11-13 23:49:21 +1000106* improvements to handling of non-Unicode codecs
Georg Brandlb80f5112012-09-30 09:11:58 +0200107
108Significantly Improved Library Modules:
109
Nick Coghlan367df122013-10-27 01:57:34 +1000110* Single-dispatch generic functions in :mod:`functoools` (:pep:`443`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200111* SHA-3 (Keccak) support for :mod:`hashlib`.
112* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100113* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
114 on Unix (:issue:`8713`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200115
Nick Coghlan367df122013-10-27 01:57:34 +1000116CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200117
Nick Coghlan367df122013-10-27 01:57:34 +1000118* :ref:`PEP 442: Safe object finalization <pep-442>`
119* :ref:`PEP 445: Configurable memory allocators <pep-445>`
Christian Heimes985ecdc2013-11-20 11:46:18 +0100120* :pep:`456` Secure and interchangeable hash algorithm
Nick Coghlan367df122013-10-27 01:57:34 +1000121* Improve finalization of Python modules to avoid setting their globals
122 to None, in most cases (:issue:`18214`).
123* A more efficient :mod:`marshal` format (:issue:`16475`).
124* "Argument Clinic", an initial step towards providing improved introspection
125 support for builtin and standard library extension types implemented in C
126 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200127
128Please read on for a comprehensive list of user-facing changes.
129
Nick Coghland0cf0632013-11-11 22:11:55 +1000130
131PEP 453: Explicit bootstrapping of pip in Python installations
132==============================================================
133
134The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
135cross-platform mechanism to boostrap the pip installer into Python
136installations and virtual environments.
137
138.. note::
139
140 Only the first phase of PEP 453 has been implemented at this point.
141 This section will be fleshed out with additional details once those
142 other changes are implemented.
143
144 Refer to :issue:`19347` for the progress on additional steps:
145
146 * ``make install`` and ``make altinstall`` integration
147 * Windows installer integration
148 * Mac OS X installer integration
149 * :mod:`venv` module and :command:`pyvenv` integration
150
151.. seealso::
152
153 :pep:`453` - Explicit bootstrapping of pip in Python installations
154 PEP written by Donald Stufft and Nick Coghlan, implemented by
155 Donald Stufft, Nick Coghlan (and ...).
156
157
Victor Stinnerdaf45552013-08-28 00:53:59 +0200158.. _pep-446:
159
160PEP 446: Make newly created file descriptors non-inheritable
161============================================================
162
Nick Coghlan367df122013-10-27 01:57:34 +1000163:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200164<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200165
166* :func:`os.get_inheritable`, :func:`os.set_inheritable`
167* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
168* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
169
Antoine Pitrou796564c2013-07-30 19:59:21 +0200170.. seealso::
171
Nick Coghlan367df122013-10-27 01:57:34 +1000172 :pep:`446` - Make newly created file descriptors non-inheritable
173 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200174
Georg Brandlb80f5112012-09-30 09:11:58 +0200175
Nick Coghlan8b097b42013-11-13 23:49:21 +1000176Improvements to handling of non-Unicode codecs
177==============================================
178
179Since it was first introduced, the :mod:`codecs` module has always been
180intended to operate as a type-neutral dynamic encoding and decoding
181system. However, its close coupling with the Python text model, especially
182the type restricted convenience methods on the builtin :class:`str`,
183:class:`bytes` and :class:`bytearray` types, has historically obscured that
184fact.
185
186As a key step in clarifying the situation, the :meth:`codecs.encode` and
187:meth:`codecs.decode` convenience functions are now properly documented in
188Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
189module and have been covered by the regression test suite since Python 2.4,
190but were previously only discoverable through runtime introspection.
191
192Unlike the convenience methods on :class:`str`, :class:`bytes` and
193:class:`bytearray`, these convenience functions support arbitrary codecs
194in both Python 2 and Python 3, rather than being limited to Unicode text
195encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
196(in Python 2).
197
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000198In Python 3.4, the interpreter is able to identify the known non-text
199encodings provided in the standard library and direct users towards these
200general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000201
202 >>> import codecs
203
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000204 >>> b"abcdef".decode("hex_codec")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000205 Traceback (most recent call last):
206 File "<stdin>", line 1, in <module>
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000207 LookupError: 'hex_codec' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000208
209 >>> "hello".encode("rot_13")
210 Traceback (most recent call last):
211 File "<stdin>", line 1, in <module>
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000212 LookupError: 'rot_13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000213
214In a related change, whenever it is feasible without breaking backwards
215compatibility, exceptions raised during encoding and decoding operations
216will be wrapped in a chained exception of the same type that mentions the
217name of the codec responsible for producing the error::
218
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000219 >>> codecs.decode(b"abcdefgh", "hex_codec")
220 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000221
222 The above exception was the direct cause of the following exception:
223
224 Traceback (most recent call last):
225 File "<stdin>", line 1, in <module>
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000226 binascii.Error: decoding with 'hex_codec' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000227
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000228 >>> codecs.encode("hello", "bz2_codec")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000229 TypeError: 'str' does not support the buffer interface
230
231 The above exception was the direct cause of the following exception:
232
233 Traceback (most recent call last):
234 File "<stdin>", line 1, in <module>
235 TypeError: encoding with 'bz2_codec' codec failed (TypeError: 'str' does not support the buffer interface)
236
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000237(Contributed by Nick Coghlan in :issue:`17827`, :issue:`17828` and
238:issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000239
Eric Snowb523f842013-11-22 09:05:39 -0700240.. _pep-451:
241
242PEP 451: A ModuleSpec Type for the Import System
243================================================
244
245:pep:`451` provides an encapsulation of the information about a module
246that the import machinery will use to load it, (i.e. a module spec).
247This helps simplify both the import implementation and several
248import-related APIs. The change is also a stepping stone for several
249future import-related improvements.
250
251https://mail.python.org/pipermail/python-dev/2013-November/130111.html
252
253The public-facing changes from the PEP are entirely backward-compatible.
254Furthermore, they should be transparent to everyone but importer
255authors. Key finder and loader methods have been deprecated, but they
256will continue working. New importers should use the new methods
257described in the PEP. Existing importers should be updated to implement
258the new methods.
259
Nick Coghlan8b097b42013-11-13 23:49:21 +1000260
Georg Brandlb80f5112012-09-30 09:11:58 +0200261Other Language Changes
262======================
263
264Some smaller changes made to the core Python language are:
265
Ezio Melotti34808e22013-10-12 16:36:13 +0300266* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200267
R David Murray9a2f1392013-06-28 13:31:19 -0400268* :func:`min` and :func:`max` now accept a *default* argument that can be used
269 to specify the value they return if the iterable they are evaluating has no
270 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200271
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200272* Module objects are now :mod:`weakref`'able.
273
Nick Coghlan0acceb72013-10-20 13:22:21 +1000274* Module ``__file__`` attributes (and related values) should now always
275 contain absolute paths by default, with the sole exception of
276 ``__main__.__file__`` when a script has been executed directly using
277 a relative path (Contributed by Brett Cannon in :issue:`18416`).
278
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200279* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
280 encoding and decoding unless the ``surrogatepass`` error handler is used,
281 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
282 and the UTF-16 encoder that produces them while encoding non-BMP characters.
283 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
284 :issue:`12892`.
285
Georg Brandlb80f5112012-09-30 09:11:58 +0200286
287New Modules
288===========
289
Nick Coghlan0acceb72013-10-20 13:22:21 +1000290
291asyncio
292-------
293
294The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
295pluggable event loop model for Python, providing solid asynchronous IO
296support in the standard library, and making it easier for other event loop
297implementations to interoperate with the standard library and each other.
298
299For Python 3.4, this module is considered a :term:`provisional API`.
300
Nick Coghlan367df122013-10-27 01:57:34 +1000301.. seealso::
302
303 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
304 PEP written and implementation led by Guido van Rossum.
305
Nick Coghlan0acceb72013-10-20 13:22:21 +1000306enum
307----
308
Nick Coghlan367df122013-10-27 01:57:34 +1000309The new :mod:`enum` module (defined in :pep:`435`) provides a standard
310implementation of enumeration types, allowing other modules (such as
311:mod:`socket`) to provide more informative error messages and better
312debugging support by replacing opaque integer constants with backwards
313compatible enumeration values.
314
315.. seealso::
316
317 :pep:`435` - Adding an Enum type to the Python standard library
318 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
319 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000320
321
Antoine Pitrou31119e42013-11-22 17:38:12 +0100322pathlib
323-------
324
325The new :mod:`pathlib` module offers classes representing filesystem paths
326with semantics appropriate for different operating systems. Path classes are
327divided between *pure paths*, which provide purely computational operations
328without I/O, and *concrete paths*, which inherit from pure paths but also
329provide I/O operations.
330
331For Python 3.4, this module is considered a :term:`provisional API`.
332
333.. seealso::
334
335 :pep:`428` - The pathlib module -- object-oriented filesystem paths
336 PEP written and implemented by Antoine Pitrou.
337
338
Charles-François Natali243d8d82013-09-04 19:02:49 +0200339selectors
340---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200341
Nick Coghlan0acceb72013-10-20 13:22:21 +1000342The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
343allows high-level and efficient I/O multiplexing, built upon the
344:mod:`select` module primitives.
345
346
347statistics
348----------
349
350The new :mod:`statistics` module (defined in :pep:`450`) offers some core
351statistics functionality directly in the standard library. This module
352supports calculation of the mean, median, mode, variance and standard
353deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200354
Nick Coghlan367df122013-10-27 01:57:34 +1000355.. seealso::
356
357 :pep:`450` - Adding A Statistics Module To The Standard Library
358 PEP written and implemented by Steven D'Aprano
359
Georg Brandlb80f5112012-09-30 09:11:58 +0200360
361Improved Modules
362================
363
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200364aifc
365----
366
367The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
368plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
369
370
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300371audioop
372-------
373
374Added support for 24-bit samples (:issue:`12866`).
375
376
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000377base64
378------
379
380The encoding and decoding functions in :mod:`base64` now accept any
381:term:`bytes-like object` in cases where it previously required a
382:class:`bytes` or :class:`bytearray` instance (:issue`17839`)
383
384
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200385colorsys
386--------
387
388The number of digits in the coefficients for the RGB --- YIQ conversions have
389been expanded so that they match the FCC NTSC versions. The change in
390results should be less than 1% and may better match results found elsewhere.
391
R David Murray8e37d5d2013-04-13 14:49:48 -0400392
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000393contextlib
394----------
395
Nick Coghlan240f86d2013-10-17 23:40:57 +1000396The new :class:`contextlib.suppress` context manager helps to clarify the
397intent of code that deliberately suppresses exceptions from a single
398statement. (Contributed by Raymond Hettinger in :issue:`15806` and
399Zero Piraeus in :issue:`19266`)
400
Victor Stinner6633c392013-10-21 13:27:11 +0200401The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000402for utility scripts to handle inflexible APIs that don't provide any
403options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000404other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
405this context manager is also useful for checking expected output from
406command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
407
408The :mod:`contextlib` documentation has also been updated to include a
409:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
410differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000411
412
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000413dis
414---
415
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300416The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
417that provides details of individual bytecode operations and a
418:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000419given piece of Python code. The various display tools in the :mod:`dis`
420module have been updated to be based on these new components.
421
422The new :class:`dis.Bytecode` class provides an object-oriented API for
423inspecting bytecode, both in human-readable form and for iterating over
424instructions.
425
Nick Coghlan50c48b82013-11-23 00:57:00 +1000426(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
427and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000428
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200429
R David Murray5a9d7062012-11-21 15:09:21 -0500430doctest
431-------
432
R David Murray5707d502013-06-23 14:24:13 -0400433Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
434failure is detected. (Contributed by R. David Murray and Daniel Urban in
435:issue:`16522`.)
436
437Updated the doctest command line interface to use :mod:`argparse`, and added
438``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
439be specified on the command line, and ``-f`` is a shorthand for ``-o
440FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
441CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200442
R David Murray8e37d5d2013-04-13 14:49:48 -0400443
R David Murraybb17d2b2013-08-09 16:15:28 -0400444email
445-----
446
447:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
448override the default policy of the message when generating a string
449representation of it. This means that ``as_string`` can now be used in more
450circumstances, instead of having to create and use a :mod:`~email.generator` in
451order to pass formatting parameters to its ``flatten`` method.
452
453New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
454representation of the message in a fashion similar to how ``as_string``
455produces a string representation. It does not accept the *maxheaderlen*
456argument, but does accept the *unixfrom* and *policy* arguments. The
457:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
458calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
459result: a bytes object containing the fully formatted message.
460
461(Contributed by R. David Murray in :issue:`18600`.)
462
R David Murray3da240f2013-10-16 22:48:40 -0400463A pair of new subclasses of :class:`~email.message.Message` have been added,
464along with a new sub-module, :mod:`~email.contentmanager`. All documentation
465is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000466:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400467number of new methods that make extracting content from and inserting content
468into email messages much easier. See the :mod:`~email.contentmanager`
469documentation for details.
470
471These API additions complete the bulk of the work that was planned as part of
472the email6 project. The currently provisional API is scheduled to become final
473in Python 3.5 (possibly with a few minor additions in the area of error
474handling).
475
476(Contributed by R. David Murray in :issue:`18891`.)
477
R David Murraybb17d2b2013-08-09 16:15:28 -0400478
Victor Stinner854ffcb2013-06-21 00:36:30 +0200479functools
480---------
481
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000482The new :func:`~functools.partialmethod` descriptor bring partial argument
483application to descriptors, just as :func:`~functools.partial` provides
484for normal callables. The new descriptor also makes it easier to get
485arbitrary callables (including :func:`~functools.partial` instances)
486to behave like normal instance methods when included in a class definition.
487
488(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
489
490The new :func:`~functools.singledispatch` decorator brings support for
491single-dispatch generic functions to the Python standard library. Where
492object oriented programming focuses on grouping multiple operations on a
493common set of data into a class, a generic function focuses on grouping
494multiple implementations of an operation that allows it to work with
495*different* kinds of data.
496
497.. seealso::
498
499 :pep:`443` - Single-dispatch generic functions
500 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200501
Nick Coghlane8c45d62013-07-28 20:00:01 +1000502
Christian Heimese92ef132013-10-13 00:52:43 +0200503hashlib
504-------
505
506New :func:`hashlib.pbkdf2_hmac` function.
507
508(Contributed by Christian Heimes in :issue:`18582`)
509
510
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200511inspect
512-------
513
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000514
Nick Coghlan367df122013-10-27 01:57:34 +1000515The inspect module now offers a basic :ref:`command line interface
516<inspect-module-cli>` to quickly display source code and other
517information for modules, classes and functions. (Contributed by Claudiu Popa
518and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000519
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200520:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
521created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000522``__wrapped__`` attribute on a wrapper function). (Contributed by
523Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
524
525As part of the implementation of the new :mod:`enum` module, the
526:mod:`inspect` module now has substantially better support for custom
527``__dir__`` methods and dynamic class attributes provided through
528metaclasses (Contributed by Ethan Furman in :issue:`18929` and
529:issue:`19030`)
530
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200531
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200532mmap
533----
534
535mmap objects can now be weakref'ed.
536
537(Contributed by Valerie Lambert in :issue:`4885`.)
538
539
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100540multiprocessing
541---------------
542
543On Unix two new *start methods* have been added for starting processes
544using :mod:`multiprocessing`. These make the mixing of processes with
545threads more robust. See :issue:`8713`.
546
547Also, except when using the old *fork* start method, child processes
548will no longer inherit unneeded handles/file descriptors from their parents.
549
550
Victor Stinnerdaf45552013-08-28 00:53:59 +0200551os
552--
553
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200554New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200555descriptors or a Windows handle:
556
557* :func:`os.get_inheritable`, :func:`os.set_inheritable`
558* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
559
560
R David Murray78d692f2013-10-10 17:23:26 -0400561pdb
562---
563
564The ``print`` command has been removed from :mod:`pdb`, restoring access to the
565``print`` function.
566
567Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
568entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
569mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
570prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
571command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
572``print`` function, making it inaccessible at the ``pdb`` prompt.
573
574(Contributed by Connor Osborn in :issue:`18764`.)
575
576
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200577poplib
578------
579
580New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
581an encrypted POP3 session.
582
583New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
584POP3 server.
585
586(Contributed by Lorenzo Catucci in :issue:`4473`.)
587
588
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300589pprint
590------
591
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200592The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300593sequences (:issue:`19132`).
594
595
Nick Coghlan367df122013-10-27 01:57:34 +1000596pydoc
597-----
598
599While significant changes have not been made to :mod:`pydoc` directly,
600its handling of custom ``__dir__`` methods and various descriptor
601behaviours has been improved substantially by the underlying changes in
602the :mod:`inspect` module.
603
604
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200605resource
606--------
607
608New :func:`resource.prlimit` function and Linux specific constants.
609(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
610
R David Murray8e37d5d2013-04-13 14:49:48 -0400611smtplib
612-------
613
R David Murray8a345962013-04-14 06:46:35 -0400614:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400615both socket level errors and SMTP protocol level errors to be caught in one
616try/except statement by code that only cares whether or not an error occurred.
617(:issue:`2118`).
618
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200619
Victor Stinnerdaf45552013-08-28 00:53:59 +0200620socket
621------
622
Georg Brandl5642ff92013-09-15 10:37:57 +0200623Socket objects have new methods to get or set their :ref:`inheritable flag
624<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200625
626* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
627
Eli Bendersky34567ec2013-08-31 15:18:48 -0700628The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
629using the new :mod:`enum` module. This allows descriptive reporting during
630debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200631
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200632ssl
633---
634
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200635TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200636
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200637(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200638
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200639* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
640 :meth:`~ssl.SSLContext.cert_store_stats` and
641 :meth:`~ssl.SSLContext.get_ca_certs`
642
643* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
644 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200645
646(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200647 :issue:`17134`.)
648
649Support for server-side SNI using the new
650:meth:`ssl.SSLContext.set_servername_callback` method.
651
652(Contributed by Daniel Black in :issue:`8109`.)
653
654
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200655stat
656----
657
658The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
659implementation is required as most of the values aren't standardized and
660platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
661
662The module supports new file types: door, event port and whiteout.
663
664
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200665struct
666------
667
668Streaming struct unpacking using :func:`struct.iter_unpack`.
669
670(Contributed by Antoine Pitrou in :issue:`17804`.)
671
672
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300673sunau
674-----
675
676The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
677plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
678
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300679:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
680
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300681
Andrew Kuchling173a1572013-09-15 18:15:56 -0400682traceback
683---------
684
685A new :func:`traceback.clear_frames` function takes a traceback object
686and clears the local variables in all of the frames it references,
687reducing the amount of memory consumed (:issue:`1565525`).
688
689
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200690urllib
691------
692
693Add support.for ``data:`` URLs in :mod:`urllib.request`.
694
695(Contributed by Mathias Panzenböck in :issue:`16423`.)
696
697
698unittest
699--------
700
701Support for easy dynamically-generated subtests using the
702:meth:`~unittest.TestCase.subTest` context manager.
703
704(Contributed by Antoine Pitrou in :issue:`16997`.)
705
R David Murray8e37d5d2013-04-13 14:49:48 -0400706
R David Murray671cd322013-04-10 12:31:43 -0400707wave
708----
709
710The :meth:`~wave.getparams` method now returns a namedtuple rather than a
711plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
712
R David Murrayc91d5ee2013-07-31 13:46:08 -0400713:meth:`wave.open` now supports the context manager protocol. (Contributed
714by Claudiu Popa in :issue:`17616`.)
715
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200716
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200717weakref
718-------
719
720New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000721methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200722
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000723New :class:`~weakref.finalize` class makes it possible to register a callback
724to be invoked when an object is garbage collected, without needing to
725carefully manage the lifecycle of the weak reference itself. (Contributed by
726Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200727
728
729xml.etree
730---------
731
732Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700733:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200734
Eli Benderskyb5869342013-08-30 05:51:20 -0700735(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200736
Christian Tismer59202e52013-10-21 03:59:23 +0200737
738zipfile.PyZipfile
739-----------------
740
741Add a filter function to ignore some packages (tests for instance),
742:meth:`~zipfile.PyZipFile.writepy`.
743
744(Contributed by Christian Tismer in :issue:`19274`.)
745
746
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200747Other improvements
748==================
749
750Tab-completion is now enabled by default in the interactive interpreter.
751
752(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
753
Eli Bendersky96d848a2013-09-06 06:55:58 -0700754Python invocation changes
755=========================
756
757Invoking the Python interpreter with ``--version`` now outputs the version to
758standard output instead of standard error (:issue:`18338`). Similar changes
759were made to :mod:`argparse` (:issue:`18920`) and other modules that have
760script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200761
Georg Brandlb80f5112012-09-30 09:11:58 +0200762Optimizations
763=============
764
765Major performance enhancements have been added:
766
Victor Stinnere64322e2012-10-30 23:12:47 +0100767* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200768
Raymond Hettingerc301b552013-08-19 09:12:20 -0700769* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700770 probe now checks a series of consecutive, adjacent key/hash pairs before
771 continuing to make random probes through the hash table. This exploits
772 cache locality to make collision resolution less expensive.
773
774 The collision resolution scheme can be described as a hybrid of linear
775 probing and open addressing. The number of additional linear probes
776 defaults to nine. This can be changed at compile-time by defining
777 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
778 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700779
Christian Heimes086b1af2013-10-22 11:49:34 +0200780 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700781
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200782* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400783 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200784 :mod:`collections` and :mod:`locale` modules and their dependencies are no
785 longer imported by default. The marshal module has been improved to load
786 compiled Python code faster.
787
788 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
789 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
790 :issue:`9548`)
791
792
Nick Coghlan367df122013-10-27 01:57:34 +1000793CPython Implementation Changes
794==============================
795
796
797.. _pep-445:
798
799PEP 445: Customization of CPython memory allocators
800---------------------------------------------------
801
802:pep:`445` adds new C level interfaces to customize memory allocation in
803the CPython interpreter.
804
805.. seealso::
806
807 :pep:`445` - Add new APIs to customize Python memory allocators
808 PEP written and implemented by Victor Stinner.
809
810
811.. _pep-442:
812
813PEP 442: Safe object finalization
814---------------------------------
815
816:pep:`442` removes the current limitations and quirks of object finalization
817in CPython. With it, objects with :meth:`__del__` methods, as well as
818generators with :keyword:`finally` clauses, can be finalized when they are
819part of a reference cycle.
820
821As part of this change, module globals are no longer forcibly set to
822:const:`None` during interpreter shutdown in most cases, instead relying
823on the normal operation of the cyclic garbage collector.
824
825.. seealso::
826
827 :pep:`442` - Safe object finalization
828 PEP written and implemented by Antoine Pitrou.
829
830
831Other build and C API changes
832-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200833
834Changes to Python's build process and to the C API include:
835
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000836* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
837 allows applications embedding the CPython interpreter to reliably force
838 a particular encoding and error handler for the standard streams
839 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200840
Nick Coghlan0acceb72013-10-20 13:22:21 +1000841* Most Python C APIs that don't mutate string arguments are now correctly
842 marked as accepting ``const char *`` rather than ``char *`` (Contributed
843 by Serhiy Storchaka in :issue:`1772673`).
844
845* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
846 and can be used to simplify the process of defining and maintaining
847 accurate signatures for builtins and standard library extension modules
848 implemented in C.
849
Nick Coghlan367df122013-10-27 01:57:34 +1000850 .. note::
851 The Argument Clinic PEP is not fully up to date with the state of the
852 implementation. This has been deemed acceptable by the release manager
853 and core development team in this case, as Argument Clinic will not
854 be made available as a public API for third party use in Python 3.4.
855
Georg Brandlb80f5112012-09-30 09:11:58 +0200856
857Deprecated
858==========
859
860Unsupported Operating Systems
861-----------------------------
862
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200863* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200864* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200865
866
867Deprecated Python modules, functions and methods
868------------------------------------------------
869
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400870* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400871 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
872 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200873
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400874* :func:`importlib.util.module_for_loader` is pending deprecation. Using
875 :func:`importlib.util.module_to_load` and
876 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
877 to more easily customize module loading.
878
Brett Cannone4f41de2013-06-16 13:13:40 -0400879* The :mod:`imp` module is pending deprecation. To keep compatibility with
880 Python 2/3 code bases, the module's removal is currently not scheduled.
881
Brett Cannon1448ecf2013-10-04 11:38:59 -0400882* The :mod:`formatter` module is pending deprecation and is slated for removal
883 in Python 3.6.
884
Christian Heimes634919a2013-11-20 17:23:06 +0100885* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
886 require an explicit digest name or constructor as *digestmod* argument.
887
Georg Brandlb80f5112012-09-30 09:11:58 +0200888
889Deprecated functions and types of the C API
890-------------------------------------------
891
Victor Stinner3dd263f2013-10-23 18:54:43 +0200892* The ``PyThreadState.tick_counter`` field has been removed: its value was
893 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +0200894
895
896Deprecated features
897-------------------
898
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +0200899* The site module adding a "site-python" directory to sys.path, if it
900 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200901
902
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400903Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200904=====================
905
906This section lists previously described changes and other bugfixes
907that may require changes to your code.
908
Brett Cannon777622b2013-04-09 17:03:10 -0400909* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
910 exception or return a default value instead of raising
911 :exc:`NotImplementedError` blindly. This will only affect code calling
912 :func:`super` and falling through all the way to the ABCs. For compatibility,
913 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400914
915* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
916 attributes to ``None`` by default. To determine if these attributes were set
917 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400918 ``getattr(module, '__loader__', None) is not None``.
919
920* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
921 ``__package__`` unconditionally to properly support reloading. If this is not
922 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400923 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400924
925* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
926 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
927
Brett Cannon1448ecf2013-10-04 11:38:59 -0400928* Frozen packages no longer set ``__path__`` to a list containing the package
929 name but an empty list instead. Determing if a module is a package should be
930 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400931
932* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400933 argument is not set. Previously only ``NULL`` was returned with no exception
934 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400935
936* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
937 it would write to is a symlink or a non-regular file. This is to act as a
938 warning that import will overwrite those files with a regular file regardless
939 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400940
941* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
942 :exc:`ImportError` when the source code being loaded triggers a
943 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
944 meant to be raised only when source code cannot be found but it should, it was
945 felt to be over-reaching/overloading of that meaning when the source code is
946 found but improperly structured. If you were catching ImportError before and
947 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200948 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +1000949
950* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +1000951 set the ``__wrapped__`` attribute to the function being wrapper, even if
952 that function also had its ``__wrapped__`` attribute set. This means
953 ``__wrapped__`` attributes now correctly link a stack of decorated
954 functions rather than every ``__wrapped__`` attribute in the chain
955 referring to the innermost function. Introspection libraries that
956 assumed the previous behaviour was intentional can use
957 :func:`inspect.unwrap` to access the first function in the chain that has
958 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200959
Georg Brandlc2228c82013-10-12 13:24:55 +0200960* (C API) The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200961 now be a string allocated by :c:func:`PyMem_RawMalloc` or
962 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
963 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
964
Georg Brandl0f5bff22013-10-19 17:46:38 +0200965* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -0400966 directory to objects in :data:`sys.path_hooks` for the empty string. This
967 results in :data:`sys.path_importer_cache` never containing ``''``, thus
968 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
969 will not find all keys. A module's ``__file__`` when imported in the current
970 working directory will also now have an absolute path, including when using
971 ``-m`` with the interpreter (this does not influence when the path to a file
972 is specified on the command-line).