blob: 5ccbfa48a797974674a7d89e8fe596ef04ec0de9 [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`).
Victor Stinner4aea4a02013-09-04 20:30:34 +020096* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
97 :mod:`select` module primitives.
Nick Coghlan0acceb72013-10-20 13:22:21 +100098* :mod:`statistics`: A basic numerically stable statistics library (:pep:`450`).
Georg Brandlb80f5112012-09-30 09:11:58 +020099
Nick Coghlan367df122013-10-27 01:57:34 +1000100New expected features for Python implementations:
Georg Brandlb80f5112012-09-30 09:11:58 +0200101
Victor Stinnerdaf45552013-08-28 00:53:59 +0200102* :ref:`PEP 446: Make newly created file descriptors non-inheritable <pep-446>`.
Nick Coghlan367df122013-10-27 01:57:34 +1000103* command line option for :ref:`isolated mode <using-on-misc-options>`,
104 (:issue:`16499`).
Nick Coghlan8b097b42013-11-13 23:49:21 +1000105* improvements to handling of non-Unicode codecs
Georg Brandlb80f5112012-09-30 09:11:58 +0200106
107Significantly Improved Library Modules:
108
Nick Coghlan367df122013-10-27 01:57:34 +1000109* Single-dispatch generic functions in :mod:`functoools` (:pep:`443`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200110* SHA-3 (Keccak) support for :mod:`hashlib`.
111* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100112* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
113 on Unix (:issue:`8713`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200114
Nick Coghlan367df122013-10-27 01:57:34 +1000115CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200116
Nick Coghlan367df122013-10-27 01:57:34 +1000117* :ref:`PEP 442: Safe object finalization <pep-442>`
118* :ref:`PEP 445: Configurable memory allocators <pep-445>`
Christian Heimes985ecdc2013-11-20 11:46:18 +0100119* :pep:`456` Secure and interchangeable hash algorithm
Nick Coghlan367df122013-10-27 01:57:34 +1000120* Improve finalization of Python modules to avoid setting their globals
121 to None, in most cases (:issue:`18214`).
122* A more efficient :mod:`marshal` format (:issue:`16475`).
123* "Argument Clinic", an initial step towards providing improved introspection
124 support for builtin and standard library extension types implemented in C
125 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200126
127Please read on for a comprehensive list of user-facing changes.
128
Nick Coghland0cf0632013-11-11 22:11:55 +1000129
130PEP 453: Explicit bootstrapping of pip in Python installations
131==============================================================
132
133The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
134cross-platform mechanism to boostrap the pip installer into Python
135installations and virtual environments.
136
137.. note::
138
139 Only the first phase of PEP 453 has been implemented at this point.
140 This section will be fleshed out with additional details once those
141 other changes are implemented.
142
143 Refer to :issue:`19347` for the progress on additional steps:
144
145 * ``make install`` and ``make altinstall`` integration
146 * Windows installer integration
147 * Mac OS X installer integration
148 * :mod:`venv` module and :command:`pyvenv` integration
149
150.. seealso::
151
152 :pep:`453` - Explicit bootstrapping of pip in Python installations
153 PEP written by Donald Stufft and Nick Coghlan, implemented by
154 Donald Stufft, Nick Coghlan (and ...).
155
156
Victor Stinnerdaf45552013-08-28 00:53:59 +0200157.. _pep-446:
158
159PEP 446: Make newly created file descriptors non-inheritable
160============================================================
161
Nick Coghlan367df122013-10-27 01:57:34 +1000162:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200163<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200164
165* :func:`os.get_inheritable`, :func:`os.set_inheritable`
166* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
167* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
168
Antoine Pitrou796564c2013-07-30 19:59:21 +0200169.. seealso::
170
Nick Coghlan367df122013-10-27 01:57:34 +1000171 :pep:`446` - Make newly created file descriptors non-inheritable
172 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200173
Georg Brandlb80f5112012-09-30 09:11:58 +0200174
Nick Coghlan8b097b42013-11-13 23:49:21 +1000175Improvements to handling of non-Unicode codecs
176==============================================
177
178Since it was first introduced, the :mod:`codecs` module has always been
179intended to operate as a type-neutral dynamic encoding and decoding
180system. However, its close coupling with the Python text model, especially
181the type restricted convenience methods on the builtin :class:`str`,
182:class:`bytes` and :class:`bytearray` types, has historically obscured that
183fact.
184
185As a key step in clarifying the situation, the :meth:`codecs.encode` and
186:meth:`codecs.decode` convenience functions are now properly documented in
187Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
188module and have been covered by the regression test suite since Python 2.4,
189but were previously only discoverable through runtime introspection.
190
191Unlike the convenience methods on :class:`str`, :class:`bytes` and
192:class:`bytearray`, these convenience functions support arbitrary codecs
193in both Python 2 and Python 3, rather than being limited to Unicode text
194encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
195(in Python 2).
196
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000197In Python 3.4, the interpreter is able to identify the known non-text
198encodings provided in the standard library and direct users towards these
199general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000200
201 >>> import codecs
202
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000203 >>> b"abcdef".decode("hex_codec")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000204 Traceback (most recent call last):
205 File "<stdin>", line 1, in <module>
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000206 LookupError: 'hex_codec' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000207
208 >>> "hello".encode("rot_13")
209 Traceback (most recent call last):
210 File "<stdin>", line 1, in <module>
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000211 LookupError: 'rot_13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000212
213In a related change, whenever it is feasible without breaking backwards
214compatibility, exceptions raised during encoding and decoding operations
215will be wrapped in a chained exception of the same type that mentions the
216name of the codec responsible for producing the error::
217
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000218 >>> codecs.decode(b"abcdefgh", "hex_codec")
219 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000220
221 The above exception was the direct cause of the following exception:
222
223 Traceback (most recent call last):
224 File "<stdin>", line 1, in <module>
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000225 binascii.Error: decoding with 'hex_codec' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000226
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000227 >>> codecs.encode("hello", "bz2_codec")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000228 TypeError: 'str' does not support the buffer interface
229
230 The above exception was the direct cause of the following exception:
231
232 Traceback (most recent call last):
233 File "<stdin>", line 1, in <module>
234 TypeError: encoding with 'bz2_codec' codec failed (TypeError: 'str' does not support the buffer interface)
235
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000236(Contributed by Nick Coghlan in :issue:`17827`, :issue:`17828` and
237:issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000238
Eric Snowb523f842013-11-22 09:05:39 -0700239.. _pep-451:
240
241PEP 451: A ModuleSpec Type for the Import System
242================================================
243
244:pep:`451` provides an encapsulation of the information about a module
245that the import machinery will use to load it, (i.e. a module spec).
246This helps simplify both the import implementation and several
247import-related APIs. The change is also a stepping stone for several
248future import-related improvements.
249
250https://mail.python.org/pipermail/python-dev/2013-November/130111.html
251
252The public-facing changes from the PEP are entirely backward-compatible.
253Furthermore, they should be transparent to everyone but importer
254authors. Key finder and loader methods have been deprecated, but they
255will continue working. New importers should use the new methods
256described in the PEP. Existing importers should be updated to implement
257the new methods.
258
Nick Coghlan8b097b42013-11-13 23:49:21 +1000259
Georg Brandlb80f5112012-09-30 09:11:58 +0200260Other Language Changes
261======================
262
263Some smaller changes made to the core Python language are:
264
Ezio Melotti34808e22013-10-12 16:36:13 +0300265* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200266
R David Murray9a2f1392013-06-28 13:31:19 -0400267* :func:`min` and :func:`max` now accept a *default* argument that can be used
268 to specify the value they return if the iterable they are evaluating has no
269 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200270
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200271* Module objects are now :mod:`weakref`'able.
272
Nick Coghlan0acceb72013-10-20 13:22:21 +1000273* Module ``__file__`` attributes (and related values) should now always
274 contain absolute paths by default, with the sole exception of
275 ``__main__.__file__`` when a script has been executed directly using
276 a relative path (Contributed by Brett Cannon in :issue:`18416`).
277
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200278* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
279 encoding and decoding unless the ``surrogatepass`` error handler is used,
280 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
281 and the UTF-16 encoder that produces them while encoding non-BMP characters.
282 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
283 :issue:`12892`.
284
Georg Brandlb80f5112012-09-30 09:11:58 +0200285
286New Modules
287===========
288
Nick Coghlan0acceb72013-10-20 13:22:21 +1000289
290asyncio
291-------
292
293The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
294pluggable event loop model for Python, providing solid asynchronous IO
295support in the standard library, and making it easier for other event loop
296implementations to interoperate with the standard library and each other.
297
298For Python 3.4, this module is considered a :term:`provisional API`.
299
Nick Coghlan367df122013-10-27 01:57:34 +1000300.. seealso::
301
302 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
303 PEP written and implementation led by Guido van Rossum.
304
Nick Coghlan0acceb72013-10-20 13:22:21 +1000305enum
306----
307
Nick Coghlan367df122013-10-27 01:57:34 +1000308The new :mod:`enum` module (defined in :pep:`435`) provides a standard
309implementation of enumeration types, allowing other modules (such as
310:mod:`socket`) to provide more informative error messages and better
311debugging support by replacing opaque integer constants with backwards
312compatible enumeration values.
313
314.. seealso::
315
316 :pep:`435` - Adding an Enum type to the Python standard library
317 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
318 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000319
320
Charles-François Natali243d8d82013-09-04 19:02:49 +0200321selectors
322---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200323
Nick Coghlan0acceb72013-10-20 13:22:21 +1000324The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
325allows high-level and efficient I/O multiplexing, built upon the
326:mod:`select` module primitives.
327
328
329statistics
330----------
331
332The new :mod:`statistics` module (defined in :pep:`450`) offers some core
333statistics functionality directly in the standard library. This module
334supports calculation of the mean, median, mode, variance and standard
335deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200336
Nick Coghlan367df122013-10-27 01:57:34 +1000337.. seealso::
338
339 :pep:`450` - Adding A Statistics Module To The Standard Library
340 PEP written and implemented by Steven D'Aprano
341
Georg Brandlb80f5112012-09-30 09:11:58 +0200342
343Improved Modules
344================
345
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200346aifc
347----
348
349The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
350plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
351
352
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300353audioop
354-------
355
356Added support for 24-bit samples (:issue:`12866`).
357
358
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000359base64
360------
361
362The encoding and decoding functions in :mod:`base64` now accept any
363:term:`bytes-like object` in cases where it previously required a
364:class:`bytes` or :class:`bytearray` instance (:issue`17839`)
365
366
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200367colorsys
368--------
369
370The number of digits in the coefficients for the RGB --- YIQ conversions have
371been expanded so that they match the FCC NTSC versions. The change in
372results should be less than 1% and may better match results found elsewhere.
373
R David Murray8e37d5d2013-04-13 14:49:48 -0400374
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000375contextlib
376----------
377
Nick Coghlan240f86d2013-10-17 23:40:57 +1000378The new :class:`contextlib.suppress` context manager helps to clarify the
379intent of code that deliberately suppresses exceptions from a single
380statement. (Contributed by Raymond Hettinger in :issue:`15806` and
381Zero Piraeus in :issue:`19266`)
382
Victor Stinner6633c392013-10-21 13:27:11 +0200383The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000384for utility scripts to handle inflexible APIs that don't provide any
385options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000386other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
387this context manager is also useful for checking expected output from
388command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
389
390The :mod:`contextlib` documentation has also been updated to include a
391:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
392differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000393
394
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000395dis
396---
397
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300398The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
399that provides details of individual bytecode operations and a
400:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000401given piece of Python code. The various display tools in the :mod:`dis`
402module have been updated to be based on these new components.
403
404The new :class:`dis.Bytecode` class provides an object-oriented API for
405inspecting bytecode, both in human-readable form and for iterating over
406instructions.
407
Nick Coghlan50c48b82013-11-23 00:57:00 +1000408(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
409and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000410
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200411
R David Murray5a9d7062012-11-21 15:09:21 -0500412doctest
413-------
414
R David Murray5707d502013-06-23 14:24:13 -0400415Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
416failure is detected. (Contributed by R. David Murray and Daniel Urban in
417:issue:`16522`.)
418
419Updated the doctest command line interface to use :mod:`argparse`, and added
420``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
421be specified on the command line, and ``-f`` is a shorthand for ``-o
422FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
423CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200424
R David Murray8e37d5d2013-04-13 14:49:48 -0400425
R David Murraybb17d2b2013-08-09 16:15:28 -0400426email
427-----
428
429:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
430override the default policy of the message when generating a string
431representation of it. This means that ``as_string`` can now be used in more
432circumstances, instead of having to create and use a :mod:`~email.generator` in
433order to pass formatting parameters to its ``flatten`` method.
434
435New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
436representation of the message in a fashion similar to how ``as_string``
437produces a string representation. It does not accept the *maxheaderlen*
438argument, but does accept the *unixfrom* and *policy* arguments. The
439:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
440calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
441result: a bytes object containing the fully formatted message.
442
443(Contributed by R. David Murray in :issue:`18600`.)
444
R David Murray3da240f2013-10-16 22:48:40 -0400445A pair of new subclasses of :class:`~email.message.Message` have been added,
446along with a new sub-module, :mod:`~email.contentmanager`. All documentation
447is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000448:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400449number of new methods that make extracting content from and inserting content
450into email messages much easier. See the :mod:`~email.contentmanager`
451documentation for details.
452
453These API additions complete the bulk of the work that was planned as part of
454the email6 project. The currently provisional API is scheduled to become final
455in Python 3.5 (possibly with a few minor additions in the area of error
456handling).
457
458(Contributed by R. David Murray in :issue:`18891`.)
459
R David Murraybb17d2b2013-08-09 16:15:28 -0400460
Victor Stinner854ffcb2013-06-21 00:36:30 +0200461functools
462---------
463
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000464The new :func:`~functools.partialmethod` descriptor bring partial argument
465application to descriptors, just as :func:`~functools.partial` provides
466for normal callables. The new descriptor also makes it easier to get
467arbitrary callables (including :func:`~functools.partial` instances)
468to behave like normal instance methods when included in a class definition.
469
470(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
471
472The new :func:`~functools.singledispatch` decorator brings support for
473single-dispatch generic functions to the Python standard library. Where
474object oriented programming focuses on grouping multiple operations on a
475common set of data into a class, a generic function focuses on grouping
476multiple implementations of an operation that allows it to work with
477*different* kinds of data.
478
479.. seealso::
480
481 :pep:`443` - Single-dispatch generic functions
482 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200483
Nick Coghlane8c45d62013-07-28 20:00:01 +1000484
Christian Heimese92ef132013-10-13 00:52:43 +0200485hashlib
486-------
487
488New :func:`hashlib.pbkdf2_hmac` function.
489
490(Contributed by Christian Heimes in :issue:`18582`)
491
492
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200493inspect
494-------
495
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000496
Nick Coghlan367df122013-10-27 01:57:34 +1000497The inspect module now offers a basic :ref:`command line interface
498<inspect-module-cli>` to quickly display source code and other
499information for modules, classes and functions. (Contributed by Claudiu Popa
500and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000501
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200502:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
503created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000504``__wrapped__`` attribute on a wrapper function). (Contributed by
505Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
506
507As part of the implementation of the new :mod:`enum` module, the
508:mod:`inspect` module now has substantially better support for custom
509``__dir__`` methods and dynamic class attributes provided through
510metaclasses (Contributed by Ethan Furman in :issue:`18929` and
511:issue:`19030`)
512
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200513
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200514mmap
515----
516
517mmap objects can now be weakref'ed.
518
519(Contributed by Valerie Lambert in :issue:`4885`.)
520
521
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100522multiprocessing
523---------------
524
525On Unix two new *start methods* have been added for starting processes
526using :mod:`multiprocessing`. These make the mixing of processes with
527threads more robust. See :issue:`8713`.
528
529Also, except when using the old *fork* start method, child processes
530will no longer inherit unneeded handles/file descriptors from their parents.
531
532
Victor Stinnerdaf45552013-08-28 00:53:59 +0200533os
534--
535
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200536New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200537descriptors or a Windows handle:
538
539* :func:`os.get_inheritable`, :func:`os.set_inheritable`
540* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
541
542
R David Murray78d692f2013-10-10 17:23:26 -0400543pdb
544---
545
546The ``print`` command has been removed from :mod:`pdb`, restoring access to the
547``print`` function.
548
549Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
550entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
551mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
552prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
553command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
554``print`` function, making it inaccessible at the ``pdb`` prompt.
555
556(Contributed by Connor Osborn in :issue:`18764`.)
557
558
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200559poplib
560------
561
562New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
563an encrypted POP3 session.
564
565New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
566POP3 server.
567
568(Contributed by Lorenzo Catucci in :issue:`4473`.)
569
570
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300571pprint
572------
573
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200574The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300575sequences (:issue:`19132`).
576
577
Nick Coghlan367df122013-10-27 01:57:34 +1000578pydoc
579-----
580
581While significant changes have not been made to :mod:`pydoc` directly,
582its handling of custom ``__dir__`` methods and various descriptor
583behaviours has been improved substantially by the underlying changes in
584the :mod:`inspect` module.
585
586
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200587resource
588--------
589
590New :func:`resource.prlimit` function and Linux specific constants.
591(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
592
R David Murray8e37d5d2013-04-13 14:49:48 -0400593smtplib
594-------
595
R David Murray8a345962013-04-14 06:46:35 -0400596:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400597both socket level errors and SMTP protocol level errors to be caught in one
598try/except statement by code that only cares whether or not an error occurred.
599(:issue:`2118`).
600
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200601
Victor Stinnerdaf45552013-08-28 00:53:59 +0200602socket
603------
604
Georg Brandl5642ff92013-09-15 10:37:57 +0200605Socket objects have new methods to get or set their :ref:`inheritable flag
606<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200607
608* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
609
Eli Bendersky34567ec2013-08-31 15:18:48 -0700610The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
611using the new :mod:`enum` module. This allows descriptive reporting during
612debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200613
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200614ssl
615---
616
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200617TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200618
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200619(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200620
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200621* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
622 :meth:`~ssl.SSLContext.cert_store_stats` and
623 :meth:`~ssl.SSLContext.get_ca_certs`
624
625* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
626 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200627
628(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200629 :issue:`17134`.)
630
631Support for server-side SNI using the new
632:meth:`ssl.SSLContext.set_servername_callback` method.
633
634(Contributed by Daniel Black in :issue:`8109`.)
635
636
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200637stat
638----
639
640The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
641implementation is required as most of the values aren't standardized and
642platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
643
644The module supports new file types: door, event port and whiteout.
645
646
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200647struct
648------
649
650Streaming struct unpacking using :func:`struct.iter_unpack`.
651
652(Contributed by Antoine Pitrou in :issue:`17804`.)
653
654
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300655sunau
656-----
657
658The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
659plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
660
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300661:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
662
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300663
Andrew Kuchling173a1572013-09-15 18:15:56 -0400664traceback
665---------
666
667A new :func:`traceback.clear_frames` function takes a traceback object
668and clears the local variables in all of the frames it references,
669reducing the amount of memory consumed (:issue:`1565525`).
670
671
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200672urllib
673------
674
675Add support.for ``data:`` URLs in :mod:`urllib.request`.
676
677(Contributed by Mathias Panzenböck in :issue:`16423`.)
678
679
680unittest
681--------
682
683Support for easy dynamically-generated subtests using the
684:meth:`~unittest.TestCase.subTest` context manager.
685
686(Contributed by Antoine Pitrou in :issue:`16997`.)
687
R David Murray8e37d5d2013-04-13 14:49:48 -0400688
R David Murray671cd322013-04-10 12:31:43 -0400689wave
690----
691
692The :meth:`~wave.getparams` method now returns a namedtuple rather than a
693plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
694
R David Murrayc91d5ee2013-07-31 13:46:08 -0400695:meth:`wave.open` now supports the context manager protocol. (Contributed
696by Claudiu Popa in :issue:`17616`.)
697
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200698
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200699weakref
700-------
701
702New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000703methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200704
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000705New :class:`~weakref.finalize` class makes it possible to register a callback
706to be invoked when an object is garbage collected, without needing to
707carefully manage the lifecycle of the weak reference itself. (Contributed by
708Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200709
710
711xml.etree
712---------
713
714Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700715:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200716
Eli Benderskyb5869342013-08-30 05:51:20 -0700717(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200718
Christian Tismer59202e52013-10-21 03:59:23 +0200719
720zipfile.PyZipfile
721-----------------
722
723Add a filter function to ignore some packages (tests for instance),
724:meth:`~zipfile.PyZipFile.writepy`.
725
726(Contributed by Christian Tismer in :issue:`19274`.)
727
728
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200729Other improvements
730==================
731
732Tab-completion is now enabled by default in the interactive interpreter.
733
734(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
735
Eli Bendersky96d848a2013-09-06 06:55:58 -0700736Python invocation changes
737=========================
738
739Invoking the Python interpreter with ``--version`` now outputs the version to
740standard output instead of standard error (:issue:`18338`). Similar changes
741were made to :mod:`argparse` (:issue:`18920`) and other modules that have
742script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200743
Georg Brandlb80f5112012-09-30 09:11:58 +0200744Optimizations
745=============
746
747Major performance enhancements have been added:
748
Victor Stinnere64322e2012-10-30 23:12:47 +0100749* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200750
Raymond Hettingerc301b552013-08-19 09:12:20 -0700751* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700752 probe now checks a series of consecutive, adjacent key/hash pairs before
753 continuing to make random probes through the hash table. This exploits
754 cache locality to make collision resolution less expensive.
755
756 The collision resolution scheme can be described as a hybrid of linear
757 probing and open addressing. The number of additional linear probes
758 defaults to nine. This can be changed at compile-time by defining
759 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
760 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700761
Christian Heimes086b1af2013-10-22 11:49:34 +0200762 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700763
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200764* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400765 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200766 :mod:`collections` and :mod:`locale` modules and their dependencies are no
767 longer imported by default. The marshal module has been improved to load
768 compiled Python code faster.
769
770 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
771 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
772 :issue:`9548`)
773
774
Nick Coghlan367df122013-10-27 01:57:34 +1000775CPython Implementation Changes
776==============================
777
778
779.. _pep-445:
780
781PEP 445: Customization of CPython memory allocators
782---------------------------------------------------
783
784:pep:`445` adds new C level interfaces to customize memory allocation in
785the CPython interpreter.
786
787.. seealso::
788
789 :pep:`445` - Add new APIs to customize Python memory allocators
790 PEP written and implemented by Victor Stinner.
791
792
793.. _pep-442:
794
795PEP 442: Safe object finalization
796---------------------------------
797
798:pep:`442` removes the current limitations and quirks of object finalization
799in CPython. With it, objects with :meth:`__del__` methods, as well as
800generators with :keyword:`finally` clauses, can be finalized when they are
801part of a reference cycle.
802
803As part of this change, module globals are no longer forcibly set to
804:const:`None` during interpreter shutdown in most cases, instead relying
805on the normal operation of the cyclic garbage collector.
806
807.. seealso::
808
809 :pep:`442` - Safe object finalization
810 PEP written and implemented by Antoine Pitrou.
811
812
813Other build and C API changes
814-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200815
816Changes to Python's build process and to the C API include:
817
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000818* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
819 allows applications embedding the CPython interpreter to reliably force
820 a particular encoding and error handler for the standard streams
821 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200822
Nick Coghlan0acceb72013-10-20 13:22:21 +1000823* Most Python C APIs that don't mutate string arguments are now correctly
824 marked as accepting ``const char *`` rather than ``char *`` (Contributed
825 by Serhiy Storchaka in :issue:`1772673`).
826
827* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
828 and can be used to simplify the process of defining and maintaining
829 accurate signatures for builtins and standard library extension modules
830 implemented in C.
831
Nick Coghlan367df122013-10-27 01:57:34 +1000832 .. note::
833 The Argument Clinic PEP is not fully up to date with the state of the
834 implementation. This has been deemed acceptable by the release manager
835 and core development team in this case, as Argument Clinic will not
836 be made available as a public API for third party use in Python 3.4.
837
Georg Brandlb80f5112012-09-30 09:11:58 +0200838
839Deprecated
840==========
841
842Unsupported Operating Systems
843-----------------------------
844
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200845* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200846* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200847
848
849Deprecated Python modules, functions and methods
850------------------------------------------------
851
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400852* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400853 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
854 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200855
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400856* :func:`importlib.util.module_for_loader` is pending deprecation. Using
857 :func:`importlib.util.module_to_load` and
858 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
859 to more easily customize module loading.
860
Brett Cannone4f41de2013-06-16 13:13:40 -0400861* The :mod:`imp` module is pending deprecation. To keep compatibility with
862 Python 2/3 code bases, the module's removal is currently not scheduled.
863
Brett Cannon1448ecf2013-10-04 11:38:59 -0400864* The :mod:`formatter` module is pending deprecation and is slated for removal
865 in Python 3.6.
866
Christian Heimes634919a2013-11-20 17:23:06 +0100867* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
868 require an explicit digest name or constructor as *digestmod* argument.
869
Georg Brandlb80f5112012-09-30 09:11:58 +0200870
871Deprecated functions and types of the C API
872-------------------------------------------
873
Victor Stinner3dd263f2013-10-23 18:54:43 +0200874* The ``PyThreadState.tick_counter`` field has been removed: its value was
875 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +0200876
877
878Deprecated features
879-------------------
880
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +0200881* The site module adding a "site-python" directory to sys.path, if it
882 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200883
884
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400885Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200886=====================
887
888This section lists previously described changes and other bugfixes
889that may require changes to your code.
890
Brett Cannon777622b2013-04-09 17:03:10 -0400891* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
892 exception or return a default value instead of raising
893 :exc:`NotImplementedError` blindly. This will only affect code calling
894 :func:`super` and falling through all the way to the ABCs. For compatibility,
895 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400896
897* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
898 attributes to ``None`` by default. To determine if these attributes were set
899 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400900 ``getattr(module, '__loader__', None) is not None``.
901
902* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
903 ``__package__`` unconditionally to properly support reloading. If this is not
904 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400905 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400906
907* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
908 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
909
Brett Cannon1448ecf2013-10-04 11:38:59 -0400910* Frozen packages no longer set ``__path__`` to a list containing the package
911 name but an empty list instead. Determing if a module is a package should be
912 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400913
914* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400915 argument is not set. Previously only ``NULL`` was returned with no exception
916 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400917
918* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
919 it would write to is a symlink or a non-regular file. This is to act as a
920 warning that import will overwrite those files with a regular file regardless
921 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400922
923* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
924 :exc:`ImportError` when the source code being loaded triggers a
925 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
926 meant to be raised only when source code cannot be found but it should, it was
927 felt to be over-reaching/overloading of that meaning when the source code is
928 found but improperly structured. If you were catching ImportError before and
929 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200930 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +1000931
932* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +1000933 set the ``__wrapped__`` attribute to the function being wrapper, even if
934 that function also had its ``__wrapped__`` attribute set. This means
935 ``__wrapped__`` attributes now correctly link a stack of decorated
936 functions rather than every ``__wrapped__`` attribute in the chain
937 referring to the innermost function. Introspection libraries that
938 assumed the previous behaviour was intentional can use
939 :func:`inspect.unwrap` to access the first function in the chain that has
940 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200941
Georg Brandlc2228c82013-10-12 13:24:55 +0200942* (C API) The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200943 now be a string allocated by :c:func:`PyMem_RawMalloc` or
944 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
945 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
946
Georg Brandl0f5bff22013-10-19 17:46:38 +0200947* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -0400948 directory to objects in :data:`sys.path_hooks` for the empty string. This
949 results in :data:`sys.path_importer_cache` never containing ``''``, thus
950 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
951 will not find all keys. A module's ``__file__`` when imported in the current
952 working directory will also now have an absolute path, including when using
953 ``-m`` with the interpreter (this does not influence when the path to a file
954 is specified on the command-line).