blob: 2727d69db7f84df97c9fdf8b6ac3938caa86fc15 [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
R David Murray061efb12013-12-24 12:35:59 -050021 updates -- in such cases, end users will be much better served by partial
Nick Coghlan03074fd2012-09-30 18:51:53 +053022 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
R David Murray061efb12013-12-24 12:35:59 -050078 :pep:`429` -- Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
R David Murraye7cf6782013-12-24 14:51:25 -050081Summary -- Release Highlights
Georg Brandlb80f5112012-09-30 09:11:58 +020082=============================
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
R David Murraye0f7a782013-12-20 16:04:29 -050089* No new syntax features were added in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
R David Murray809487e2013-12-22 20:49:40 -050091New expected features for Python implementations:
92
R David Murray68790662013-12-23 11:17:51 -050093* :ref:`pip should always be "available" <whatsnew-pep-453>` (:pep:`453`).
R David Murray809487e2013-12-22 20:49:40 -050094* :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`
95 (:pep:`446`).
96* command line option for :ref:`isolated mode <using-on-misc-options>`,
97 (:issue:`16499`).
R David Murray8d856782013-12-23 10:28:57 -050098* :ref:`improvements in the handling of codecs <codec-handling-improvements>`
99 that are not text encodings (multiple issues).
R David Murray809487e2013-12-22 20:49:40 -0500100* :ref:`A ModuleSpec Type <whatsnew-pep-451>` for the Import System
R David Murraye9b74d42013-12-22 21:05:04 -0500101 (:pep:`451`). (Affects importer authors.)
R David Murray809487e2013-12-22 20:49:40 -0500102
Georg Brandlb80f5112012-09-30 09:11:58 +0200103New library modules:
104
R David Murray9217dad2013-12-23 21:08:28 -0500105* :mod:`asyncio`: :ref:`New provisional API for asynchronous IO
106 <whatsnew-asyncio>` (:pep:`3156`).
107* :mod:`ensurepip`: :ref:`Bootstrapping the pip installer <whatsnew-ensurepip>`
108 (:pep:`453`).
109* :mod:`enum`: :ref:`Support for enumeration types <whatsnew-enum>`
110 (:pep:`435`).
111* :mod:`pathlib`: :ref:`Object-oriented filesystem paths <whatsnew-pathlib>`
112 (:pep:`428`).
R David Murrayf9976e72013-12-23 10:32:02 -0500113* :mod:`selectors`: :ref:`High-level and efficient I/O multiplexing
114 <whatsnew-selectors>`, built upon the :mod:`select` module primitives (part
115 of :pep:`3156`).
R David Murray9217dad2013-12-23 21:08:28 -0500116* :mod:`statistics`: A basic :ref:`numerically stable statistics library
117 <whatsnew-statistics>` (:pep:`450`).
118* :mod:`tracemalloc`: :ref:`Trace Python memory allocations
119 <whatsnew-tracemalloc>` (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200120
Georg Brandlb80f5112012-09-30 09:11:58 +0200121Significantly Improved Library Modules:
122
R David Murray0a102162013-12-20 15:00:54 -0500123* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
R David Murray8d856782013-12-23 10:28:57 -0500124 :mod:`functools` (:pep:`443`).
125* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`).
R David Murray8d856782013-12-23 10:28:57 -0500126* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`
127 (:issue:`16692`).
R David Murrayac186222013-12-20 17:23:57 -0500128* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
129 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500130* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
131 a new :mod:`~email.message.Message` subclass
R David Murray26b80cfd2013-12-20 17:26:52 -0500132 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME
R David Murray8d856782013-12-23 10:28:57 -0500133 handling <whatsnew_email_contentmanager>` (:issue:`18891`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200134
Nick Coghlan367df122013-10-27 01:57:34 +1000135CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200136
R David Murraya93ca972013-12-22 14:10:21 -0500137* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`).
R David Murrayca794612013-12-22 14:05:11 -0500138* Leveraging :pep:`442`, :ref:`module globals are no longer set to None
139 during finalization <whatsnew-pep-442>`, in most cases (:issue:`18214`).
R David Murraya93ca972013-12-22 14:10:21 -0500140* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`).
141* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
142 (:pep:`456`).
143* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`).
R David Murray8f7664a2013-12-22 20:40:11 -0500144* The :mod:`marshal` format has been made :ref:`more compact and efficient
145 <whatsnew-marshal-3>` (:issue:`16475`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200146
R David Murray347f9c72013-12-23 21:30:06 -0500147Please read on for a comprehensive list of user-facing changes, including many
148other smaller improvements, CPython optimizations, deprecations, and potential
149porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200150
Nick Coghland0cf0632013-11-11 22:11:55 +1000151
R David Murraye7cf6782013-12-24 14:51:25 -0500152New Expected Features for Python Implementations
R David Murray809487e2013-12-22 20:49:40 -0500153================================================
154
R David Murray68790662013-12-23 11:17:51 -0500155.. _whatsnew-pep-453:
156
R David Murraye7cf6782013-12-24 14:51:25 -0500157PEP 453: Explicit Bootstrapping of PIP in Python Installations
R David Murray809487e2013-12-22 20:49:40 -0500158--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000159
160The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
161cross-platform mechanism to boostrap the pip installer into Python
162installations and virtual environments.
163
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000164The :mod:`venv` module and the :command:`pyvenv` utility make use of this
165module to make ``pip`` readily available in virtual environments. When
166using the command line interface, ``pip`` is installed by default, while
167for the module API installation of ``pip`` must be requested explicitly.
168
169For CPython source builds on POSIX systems, the ``make install`` and
170``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
171can be controlled through configure options, and overridden through
172Makefile options.
173
Ned Deily44a0db02013-11-22 22:39:09 -0800174On Windows and Mac OS X, the CPython installers now offer the option to
175install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000176
R David Murray68790662013-12-23 11:17:51 -0500177As `discussed in the PEP`__, platform packagers may choose not to install
178``pip`` by default, as long as the command ``pip``, when invoked, provides
179clear and simple directions on how to install ``pip`` on the platform.
180
181__ http://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors
182
Nick Coghland0cf0632013-11-11 22:11:55 +1000183.. note::
184
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000185 The implementation of PEP 453 is still a work in progress. Refer to
186 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000187
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000188 * Having the binary installers install ``pip`` by default
189 * Recommending the use of ``pip`` in the "Installing Python Module"
190 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000191
192.. seealso::
193
R David Murray061efb12013-12-24 12:35:59 -0500194 :pep:`453` -- Explicit bootstrapping of pip in Python installations
Nick Coghland0cf0632013-11-11 22:11:55 +1000195 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000196 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000197
198
R David Murrayf9909c22013-12-20 14:50:12 -0500199.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200200
R David Murraye7cf6782013-12-24 14:51:25 -0500201PEP 446: Make Newly Created File Descriptors Non-Inheritable
R David Murray809487e2013-12-22 20:49:40 -0500202------------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200203
Nick Coghlan367df122013-10-27 01:57:34 +1000204:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200205<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200206
207* :func:`os.get_inheritable`, :func:`os.set_inheritable`
208* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
209* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
210
Antoine Pitrou796564c2013-07-30 19:59:21 +0200211.. seealso::
212
R David Murray061efb12013-12-24 12:35:59 -0500213 :pep:`446` -- Make newly created file descriptors non-inheritable
Nick Coghlan367df122013-10-27 01:57:34 +1000214 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200215
Georg Brandlb80f5112012-09-30 09:11:58 +0200216
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000217.. _codec-handling-improvements:
218
R David Murraye7cf6782013-12-24 14:51:25 -0500219Improvements to Codec Handling
R David Murray809487e2013-12-22 20:49:40 -0500220------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000221
222Since it was first introduced, the :mod:`codecs` module has always been
223intended to operate as a type-neutral dynamic encoding and decoding
224system. However, its close coupling with the Python text model, especially
225the type restricted convenience methods on the builtin :class:`str`,
226:class:`bytes` and :class:`bytearray` types, has historically obscured that
227fact.
228
229As a key step in clarifying the situation, the :meth:`codecs.encode` and
230:meth:`codecs.decode` convenience functions are now properly documented in
231Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000232module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000233but were previously only discoverable through runtime introspection.
234
235Unlike the convenience methods on :class:`str`, :class:`bytes` and
236:class:`bytearray`, these convenience functions support arbitrary codecs
237in both Python 2 and Python 3, rather than being limited to Unicode text
238encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
239(in Python 2).
240
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000241In Python 3.4, the interpreter is able to identify the known non-text
242encodings provided in the standard library and direct users towards these
243general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000244
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000245 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000246 Traceback (most recent call last):
247 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000248 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000249
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000250 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000251 Traceback (most recent call last):
252 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000253 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000254
255In a related change, whenever it is feasible without breaking backwards
256compatibility, exceptions raised during encoding and decoding operations
257will be wrapped in a chained exception of the same type that mentions the
258name of the codec responsible for producing the error::
259
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000260 >>> import codecs
261
262 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000263 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000264
265 The above exception was the direct cause of the following exception:
266
267 Traceback (most recent call last):
268 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000269 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000270
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000271 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000272 TypeError: 'str' does not support the buffer interface
273
274 The above exception was the direct cause of the following exception:
275
276 Traceback (most recent call last):
277 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000278 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000279
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000280Finally, as the examples above show, these improvements have permitted
281the restoration of the convenience aliases for the non-Unicode codecs that
282were themselves restored in Python 3.2. This means that encoding binary data
283to and from its hexadecimal representation (for example) can now be written
284as::
285
286 >>> from codecs import encode, decode
287 >>> encode(b"hello", "hex")
288 b'68656c6c6f'
289 >>> decode(b"68656c6c6f", "hex")
290 b'hello'
291
292The binary and text transforms provided in the standard library are detailed
293in :ref:`binary-transforms` and :ref:`text-transforms`.
294
R David Murray9217dad2013-12-23 21:08:28 -0500295(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000296:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000297
R David Murray809487e2013-12-22 20:49:40 -0500298.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700299
300PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500301------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700302
R David Murrayf85b2a82013-12-22 21:06:13 -0500303:pep:`451` provides an encapsulation of the information about a module that the
304import machinery will use to load it (that is, a module specification). This
305helps simplify both the import implementation and several import-related APIs.
306The change is also a stepping stone for `several future import-related
307improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700308
R David Murraye9b74d42013-12-22 21:05:04 -0500309__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700310
311The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500312Furthermore, they should be transparent to everyone but importer authors. Key
313finder and loader methods have been deprecated, but they will continue working.
314New importers should use the new methods described in the PEP. Existing
315importers should be updated to implement the new methods.
Eric Snowb523f842013-11-22 09:05:39 -0700316
Nick Coghlan8b097b42013-11-13 23:49:21 +1000317
Georg Brandlb80f5112012-09-30 09:11:58 +0200318Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500319----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200320
321Some smaller changes made to the core Python language are:
322
Ezio Melotti34808e22013-10-12 16:36:13 +0300323* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200324
R David Murray9a2f1392013-06-28 13:31:19 -0400325* :func:`min` and :func:`max` now accept a *default* argument that can be used
326 to specify the value they return if the iterable they are evaluating has no
327 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200328
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200329* Module objects are now :mod:`weakref`'able.
330
Nick Coghlan0acceb72013-10-20 13:22:21 +1000331* Module ``__file__`` attributes (and related values) should now always
332 contain absolute paths by default, with the sole exception of
333 ``__main__.__file__`` when a script has been executed directly using
334 a relative path (Contributed by Brett Cannon in :issue:`18416`).
335
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200336* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
337 encoding and decoding unless the ``surrogatepass`` error handler is used,
338 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
339 and the UTF-16 encoder that produces them while encoding non-BMP characters.
340 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
341 :issue:`12892`.
342
Georg Brandlb80f5112012-09-30 09:11:58 +0200343
344New Modules
345===========
346
Nick Coghlan0acceb72013-10-20 13:22:21 +1000347
R David Murray9217dad2013-12-23 21:08:28 -0500348.. _whatsnew-asyncio:
349
Nick Coghlan0acceb72013-10-20 13:22:21 +1000350asyncio
351-------
352
353The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
354pluggable event loop model for Python, providing solid asynchronous IO
355support in the standard library, and making it easier for other event loop
356implementations to interoperate with the standard library and each other.
357
358For Python 3.4, this module is considered a :term:`provisional API`.
359
Nick Coghlan367df122013-10-27 01:57:34 +1000360.. seealso::
361
R David Murray061efb12013-12-24 12:35:59 -0500362 :pep:`3156` -- Asynchronous IO Support Rebooted: the "asyncio" Module
Nick Coghlan367df122013-10-27 01:57:34 +1000363 PEP written and implementation led by Guido van Rossum.
364
R David Murray68790662013-12-23 11:17:51 -0500365
R David Murray9217dad2013-12-23 21:08:28 -0500366.. _whatsnew-ensurepip:
R David Murray68790662013-12-23 11:17:51 -0500367
368ensurepip
369---------
370
371The new :mod:`ensurepip` module is the primary infrastructure for the
372:pep:`453` implementation. In the normal course of events end users will not
373need to interact with this module, but it can be used to manually bootstrap
374``pip`` if the automated bootstrapping into an installation or virtual
375environment was declined.
376
377:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first
378release candidate of the release of CPython with which it ships (this applies
379to both maintenance releases and feature releases). ``ensurepip`` does not
380access the internet. (If the installation has Internet access, it is of course
381possible to upgrade ``pip`` to a release more recent than the bundled ``pip``
382by using the bundled ``pip`` command itself once it is installed.)
383
384The module is named *ensure*\ pip because if called when ``pip`` is already
385installed, it does nothing. It also has an ``--upgrade`` option that will
386cause it to install the bundled copy of ``pip`` if the existing installed
387version of ``pip`` is older than the bundled copy.
388
389
R David Murray9217dad2013-12-23 21:08:28 -0500390.. _whatsnew-enum:
391
Nick Coghlan0acceb72013-10-20 13:22:21 +1000392enum
393----
394
Nick Coghlan367df122013-10-27 01:57:34 +1000395The new :mod:`enum` module (defined in :pep:`435`) provides a standard
396implementation of enumeration types, allowing other modules (such as
397:mod:`socket`) to provide more informative error messages and better
398debugging support by replacing opaque integer constants with backwards
399compatible enumeration values.
400
401.. seealso::
402
R David Murray061efb12013-12-24 12:35:59 -0500403 :pep:`435` -- Adding an Enum type to the Python standard library
Nick Coghlan367df122013-10-27 01:57:34 +1000404 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
405 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000406
407
R David Murray9217dad2013-12-23 21:08:28 -0500408.. _whatsnew-pathlib:
409
Antoine Pitrou31119e42013-11-22 17:38:12 +0100410pathlib
411-------
412
413The new :mod:`pathlib` module offers classes representing filesystem paths
414with semantics appropriate for different operating systems. Path classes are
415divided between *pure paths*, which provide purely computational operations
416without I/O, and *concrete paths*, which inherit from pure paths but also
417provide I/O operations.
418
419For Python 3.4, this module is considered a :term:`provisional API`.
420
421.. seealso::
422
R David Murray061efb12013-12-24 12:35:59 -0500423 :pep:`428` -- The pathlib module -- object-oriented filesystem paths
Antoine Pitrou31119e42013-11-22 17:38:12 +0100424 PEP written and implemented by Antoine Pitrou.
425
426
R David Murrayf9976e72013-12-23 10:32:02 -0500427.. _whatsnew-selectors:
428
Charles-François Natali243d8d82013-09-04 19:02:49 +0200429selectors
430---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200431
Nick Coghlan0acceb72013-10-20 13:22:21 +1000432The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
433allows high-level and efficient I/O multiplexing, built upon the
434:mod:`select` module primitives.
435
436
R David Murray9217dad2013-12-23 21:08:28 -0500437.. _whatsnew-statistics:
438
Nick Coghlan0acceb72013-10-20 13:22:21 +1000439statistics
440----------
441
442The new :mod:`statistics` module (defined in :pep:`450`) offers some core
443statistics functionality directly in the standard library. This module
444supports calculation of the mean, median, mode, variance and standard
445deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200446
Nick Coghlan367df122013-10-27 01:57:34 +1000447.. seealso::
448
R David Murray061efb12013-12-24 12:35:59 -0500449 :pep:`450` -- Adding A Statistics Module To The Standard Library
Nick Coghlan367df122013-10-27 01:57:34 +1000450 PEP written and implemented by Steven D'Aprano
451
R David Murray9217dad2013-12-23 21:08:28 -0500452.. _whatsnew-tracemalloc:
Georg Brandlb80f5112012-09-30 09:11:58 +0200453
R David Murray8b2d6822013-12-31 15:06:05 -0500454
Victor Stinnerd2736af2013-11-25 09:40:27 +0100455tracemalloc
456-----------
457
458The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
459trace memory blocks allocated by Python. It provides the following information:
460
461* Traceback where an object was allocated
462* Statistics on allocated memory blocks per filename and per line number:
463 total size, number and average size of allocated memory blocks
464* Compute the differences between two snapshots to detect memory leaks
465
466.. seealso::
467
R David Murray061efb12013-12-24 12:35:59 -0500468 :pep:`454` -- Add a new tracemalloc module to trace Python memory allocations
Victor Stinnerd2736af2013-11-25 09:40:27 +0100469 PEP written and implemented by Victor Stinner
470
471
Georg Brandlb80f5112012-09-30 09:11:58 +0200472Improved Modules
473================
474
R David Murray6e390152013-12-24 22:28:04 -0500475
R David Murray3edcc782013-12-24 16:13:32 -0500476abc
477---
478
479New function :func:`abc.get_cache_token` can be used to know when to invalidate
480caches that are affected by changes in the object graph. (Contributed
481by Łukasz Langa in :issue:`16832`.)
R David Murray72420ff2013-12-24 10:46:44 -0500482
R David Murray2691ee62013-12-28 23:15:12 -0500483New class :class:`~abc.ABC` has :class:`~abc.ABCMeta` as its meta class.
484Using ``ABC`` as a base class has essentially the same effect as specifying
485``metaclass=abc.ABCMeta``, but is simpler to type and easier to read.
486(Contributed by Bruno Dupuis in :issue:`16049`.)
487
488
R David Murray6e390152013-12-24 22:28:04 -0500489
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200490aifc
491----
492
493The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
494plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
495
R David Murrayd592bb22013-12-31 13:45:38 -0500496:func:`aifc.open` now supports the context manager protocol: when used in a
497:keyword:`with` block, the :meth:`~aifc.aifc.close` method of the returned
498object will be called automatically at the end of the block. (Contributed by
499Serhiy Storchacha in :issue:`16486`.)
500
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200501
R David Murrayfced3ec2013-12-31 11:18:01 -0500502argparse
503--------
504
505The :class:`~argparse.FileType` class now accepts *encoding* and
506*errors* arguments, which are passed through to :func:`open`. (Contributed
507by Lucas Maystre in :issue:`11175`.)
508
509
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300510audioop
511-------
512
513Added support for 24-bit samples (:issue:`12866`).
514
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200515Added the :func:`~audioop.byteswap` function to convert big-endian samples
516to little-endian and vice versa (:issue:`19641`).
517
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300518
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000519base64
520------
521
522The encoding and decoding functions in :mod:`base64` now accept any
523:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100524:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000525
526
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200527colorsys
528--------
529
530The number of digits in the coefficients for the RGB --- YIQ conversions have
531been expanded so that they match the FCC NTSC versions. The change in
532results should be less than 1% and may better match results found elsewhere.
533
R David Murray8e37d5d2013-04-13 14:49:48 -0400534
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000535contextlib
536----------
537
Nick Coghlan240f86d2013-10-17 23:40:57 +1000538The new :class:`contextlib.suppress` context manager helps to clarify the
539intent of code that deliberately suppresses exceptions from a single
540statement. (Contributed by Raymond Hettinger in :issue:`15806` and
541Zero Piraeus in :issue:`19266`)
542
Victor Stinner6633c392013-10-21 13:27:11 +0200543The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000544for utility scripts to handle inflexible APIs that don't provide any
545options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000546other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
547this context manager is also useful for checking expected output from
548command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
549
550The :mod:`contextlib` documentation has also been updated to include a
551:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
552differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000553
554
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000555dis
556---
557
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300558The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
559that provides details of individual bytecode operations and a
560:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000561given piece of Python code. The various display tools in the :mod:`dis`
562module have been updated to be based on these new components.
563
564The new :class:`dis.Bytecode` class provides an object-oriented API for
565inspecting bytecode, both in human-readable form and for iterating over
566instructions.
567
Nick Coghlan50c48b82013-11-23 00:57:00 +1000568(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
569and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000570
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200571
R David Murray5a9d7062012-11-21 15:09:21 -0500572doctest
573-------
574
R David Murray473f45b2013-12-27 17:01:16 -0500575A new :ref:`option flag <doctest-options>`, :data:`~doctest.FAIL_FAST`, halts
576test running as soon as the first failure is detected. (Contributed by R.
577David Murray and Daniel Urban in :issue:`16522`.)
R David Murray5707d502013-06-23 14:24:13 -0400578
R David Murray473f45b2013-12-27 17:01:16 -0500579The :mod:`doctest` command line interface now uses :mod:`argparse`, and has two
580new options, ``-o`` and ``-f``. ``-o`` allows :ref:`doctest options
581<doctest-options>` to be specified on the command line, and ``-f`` is a
582shorthand for ``-o FAIL_FAST`` (to parallel the similar option supported by the
583:mod:`unittest` CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200584
R David Murray8e37d5d2013-04-13 14:49:48 -0400585
R David Murraybb17d2b2013-08-09 16:15:28 -0400586email
587-----
588
589:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
590override the default policy of the message when generating a string
591representation of it. This means that ``as_string`` can now be used in more
592circumstances, instead of having to create and use a :mod:`~email.generator` in
593order to pass formatting parameters to its ``flatten`` method.
594
595New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
596representation of the message in a fashion similar to how ``as_string``
597produces a string representation. It does not accept the *maxheaderlen*
598argument, but does accept the *unixfrom* and *policy* arguments. The
599:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
600calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
601result: a bytes object containing the fully formatted message.
602
603(Contributed by R. David Murray in :issue:`18600`.)
604
R David Murray26b80cfd2013-12-20 17:26:52 -0500605.. _whatsnew_email_contentmanager:
606
R David Murray3da240f2013-10-16 22:48:40 -0400607A pair of new subclasses of :class:`~email.message.Message` have been added,
608along with a new sub-module, :mod:`~email.contentmanager`. All documentation
609is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000610:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400611number of new methods that make extracting content from and inserting content
612into email messages much easier. See the :mod:`~email.contentmanager`
613documentation for details.
614
615These API additions complete the bulk of the work that was planned as part of
616the email6 project. The currently provisional API is scheduled to become final
617in Python 3.5 (possibly with a few minor additions in the area of error
618handling).
619
620(Contributed by R. David Murray in :issue:`18891`.)
621
R David Murraybb17d2b2013-08-09 16:15:28 -0400622
Victor Stinner854ffcb2013-06-21 00:36:30 +0200623functools
624---------
625
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000626The new :func:`~functools.partialmethod` descriptor bring partial argument
627application to descriptors, just as :func:`~functools.partial` provides
628for normal callables. The new descriptor also makes it easier to get
629arbitrary callables (including :func:`~functools.partial` instances)
630to behave like normal instance methods when included in a class definition.
631
632(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
633
R David Murray0a102162013-12-20 15:00:54 -0500634.. _whatsnew-singledispatch:
635
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000636The new :func:`~functools.singledispatch` decorator brings support for
637single-dispatch generic functions to the Python standard library. Where
638object oriented programming focuses on grouping multiple operations on a
639common set of data into a class, a generic function focuses on grouping
640multiple implementations of an operation that allows it to work with
641*different* kinds of data.
642
643.. seealso::
644
R David Murray061efb12013-12-24 12:35:59 -0500645 :pep:`443` -- Single-dispatch generic functions
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000646 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200647
R David Murrayd2653812013-12-27 14:06:15 -0500648A pure-python version of the :func:`~functools.partial` function is now in the
649stdlib; in CPython it is overridden by the C accelerated version, but it is
650available for other implementations to use. (Contributed by Brian Thorne in
651:issue:`12428`.)
652
Nick Coghlane8c45d62013-07-28 20:00:01 +1000653
R David Murray0e814632013-12-26 15:11:28 -0500654gc
655--
656
657New :func:`~gc.get_stats` returns a list of three per-generation dictionaries
658containing the collections statistics since interpreter startup. (Contributed
659by Antoine Pitrou in :issue:`16351`.)
660
661
Christian Heimese92ef132013-10-13 00:52:43 +0200662hashlib
663-------
664
665New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200666(Contributed by Christian Heimes in :issue:`18582`)
667
668
Ezio Melotti250a06c2013-11-25 06:18:47 +0200669html
670----
671
672Added a new :func:`html.unescape` function that converts HTML5 character
673references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200674(Contributed by Ezio Melotti in :issue:`2927`)
675
676Added a new *convert_charrefs* keyword argument to
677:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
678all character references. For backward-compatibility, its value defaults
679to ``False``, but it will change to ``True`` in future versions, so you
680are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200681(Contributed by Ezio Melotti in :issue:`13633`)
682
683The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200684(Contributed by Ezio Melotti in :issue:`15114`)
685
686
R David Murraya475a8d2014-01-03 13:03:00 -0500687http
688----
689
690:meth:`~http.server.BaseHTTPRequestHandler.send_error` now accepts an
691optional additional *exaplain* parameter which can be used to provide an
692extended error description, overriding the hardcoded default if there is one.
693This extended error description will be formatted using the
694:attr:`~http.server.HTTP.error_message_format` attribute and sent as the body
695of the error response. (Contributed by Karl Cow in :issue:`12921`.)
696
697
698
R David Murrayd2653812013-12-27 14:06:15 -0500699importlib
700---------
701
702The :class:`~importlib.abc.InspectLoader` ABC defines a new method,
703:meth:`~importlib.abc.InspectLoader.source_to_code` that accepts source
704data and a path and returns a code object. The default implementation
705is equivalent to ``compile(data, path, 'exec', dont_inherit=True)``.
706(Contributed by Eric Snow and Brett Cannon in :issue:`15627`.)
707
708
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200709inspect
710-------
711
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000712
Nick Coghlan367df122013-10-27 01:57:34 +1000713The inspect module now offers a basic :ref:`command line interface
714<inspect-module-cli>` to quickly display source code and other
715information for modules, classes and functions. (Contributed by Claudiu Popa
716and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000717
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200718:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
719created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000720``__wrapped__`` attribute on a wrapper function). (Contributed by
721Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
722
723As part of the implementation of the new :mod:`enum` module, the
724:mod:`inspect` module now has substantially better support for custom
725``__dir__`` methods and dynamic class attributes provided through
726metaclasses (Contributed by Ethan Furman in :issue:`18929` and
727:issue:`19030`)
728
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200729
R David Murray8f7664a2013-12-22 20:40:11 -0500730.. _whatsnew-marshal-3:
731
732marshal
733-------
734
735The default :mod:`marshal` version has been bumped to 3. The code implementing
736the new version restores the Python2 behavior of recording only one copy of
737interned strings and preserving the interning on deserialization, and extends
738this "one copy" ability to any object type (including handling recursive
739references). This reduces both the size of ``.pyc`` files and the amount of
740memory a module occupies in memory when it is loaded from a ``.pyc`` (or
741``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`.)
742
743
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200744mmap
745----
746
747mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200748(Contributed by Valerie Lambert in :issue:`4885`.)
749
750
R David Murray33ef1ae2013-12-31 16:04:50 -0500751mock
752----
753
754:mod:`~unittest.mock` objects now inspect their specification signatures when
755matching calls, which means an argument can now be matched by either position
756or name, instead of only by position. (Contributed by Antoine Pitrou in
757:issue:`17015`.)
758
759
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100760multiprocessing
761---------------
762
R David Murrayac186222013-12-20 17:23:57 -0500763.. _whatsnew-multiprocessing-no-fork:
764
765On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
766(``spawn`` and ``forkserver``) have been added for starting processes using
767:mod:`multiprocessing`. These make the mixing of processes with threads more
768robust, and the ``spawn`` method matches the semantics that multiprocessing has
769always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100770
771Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500772will no longer inherit unneeded handles/file descriptors from their parents
773(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100774
Nick Coghlan9a767352013-12-17 22:17:26 +1000775:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
776``-m`` switch) to initialise ``__main__`` appropriately in child processes
777when using the ``spawn`` or ``forkserver`` start methods. This resolves some
778edge cases where combining multiprocessing, the ``-m`` command line switch
779and explicit relative imports could cause obscure failures in child
780processes. (Contributed by Nick Coghlan in :issue:`19946`)
781
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100782
Victor Stinnerdaf45552013-08-28 00:53:59 +0200783os
784--
785
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200786New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200787descriptors or a Windows handle:
788
789* :func:`os.get_inheritable`, :func:`os.set_inheritable`
790* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
791
792
R David Murray78d692f2013-10-10 17:23:26 -0400793pdb
794---
795
796The ``print`` command has been removed from :mod:`pdb`, restoring access to the
797``print`` function.
798
799Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
800entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
801mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
802prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
803command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
804``print`` function, making it inaccessible at the ``pdb`` prompt.
805
806(Contributed by Connor Osborn in :issue:`18764`.)
807
808
R David Murray809487e2013-12-22 20:49:40 -0500809.. _whatsnew-protocol-4:
810
R David Murray5ea95242013-12-24 15:59:57 -0500811pickle
R David Murray809487e2013-12-22 20:49:40 -0500812------
813
814protocol 4
815
816:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
817protocol 4. This new protocol addresses a number of issues that were present
818in previous protocols, such as the serialization of nested classes, very large
819strings and containers, or classes whose :meth:`__new__` method takes
820keyword-only arguments. It also provides some efficiency improvements.
821
822.. seealso::
823
R David Murray061efb12013-12-24 12:35:59 -0500824 :pep:`3154` -- Pickle protocol 4
R David Murray809487e2013-12-22 20:49:40 -0500825 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
826
827
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200828poplib
829------
830
R David Murray473f45b2013-12-27 17:01:16 -0500831Two new methods have been added to :mod:`poplib`: :meth:`~poplib.POP3.capa`,
832which returns the list of capabilities advertised by the POP server, and
833:meth:`~poplib.POP3.stls`, which switches a clear-text POP3 session into an
834encrypted POP3 session if the POP server supports it. (Contributed by Lorenzo
835Catucci in :issue:`4473`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200836
837
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300838pprint
839------
840
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200841The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300842sequences (:issue:`19132`).
843
844
R David Murray6e390152013-12-24 22:28:04 -0500845pty
846---
847
848:func:`pty.spawn` now returns the status value from :func:`os.waitpid` on
849the child process, instead of ``None``. (Contributed by Gregory P. Smith.)
850
851
Nick Coghlan367df122013-10-27 01:57:34 +1000852pydoc
853-----
854
855While significant changes have not been made to :mod:`pydoc` directly,
856its handling of custom ``__dir__`` methods and various descriptor
857behaviours has been improved substantially by the underlying changes in
858the :mod:`inspect` module.
859
860
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200861re
862--
863
864Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
865which anchor the pattern at both ends of the string to match.
866(Contributed by Matthew Barnett in :issue:`16203`.)
867
Ezio Melottidd7e2912013-11-25 23:20:20 +0200868The repr of :ref:`regex objects <re-objects>` now includes the pattern
869and the flags; the repr of :ref:`match objects <match-objects>` now
870includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +0200871(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
872
873
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200874resource
875--------
876
877New :func:`resource.prlimit` function and Linux specific constants.
878(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
879
R David Murray575fb312013-12-25 23:21:03 -0500880
R David Murray2bc930f2013-12-31 11:17:21 -0500881select
882------
883
884:class:`~select.epoll` objects now support the context management protocol.
885When used in a :keyword:`with` statement, the :meth:`~select.epoll.close`
886method will be called automatically at the end of the block. (Contributed
887by Serhiy Storchaka in :issue:`16488`.)
888
889
R David Murray575fb312013-12-25 23:21:03 -0500890shelve
891------
892
893:class:`~shelve.Shelf` instances may now be used in :keyword:`with` statements,
894and will be automatically closed at the end of the :keyword:`with` block.
895(Contributed by Filip Gruszczyński in :issue:`13896`.)
896
897
R David Murray8e37d5d2013-04-13 14:49:48 -0400898smtplib
899-------
900
R David Murray8a345962013-04-14 06:46:35 -0400901:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400902both socket level errors and SMTP protocol level errors to be caught in one
903try/except statement by code that only cares whether or not an error occurred.
904(:issue:`2118`).
905
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200906
Victor Stinnerdaf45552013-08-28 00:53:59 +0200907socket
908------
909
R David Murray33ef1ae2013-12-31 16:04:50 -0500910The socket module now supports the :data:`~socket.CAN_BCM` protocol on
911platforms that support it. (Contributed by Brian Thorne in :issue:`15359`.)
912
Georg Brandl5642ff92013-09-15 10:37:57 +0200913Socket objects have new methods to get or set their :ref:`inheritable flag
R David Murray33ef1ae2013-12-31 16:04:50 -0500914<fd_inheritance>`, :meth:`~socket.socket.get_inheritable` and
915:meth:`~socket.socket.set_inheritable`.
Victor Stinnerdaf45552013-08-28 00:53:59 +0200916
R David Murray33ef1ae2013-12-31 16:04:50 -0500917The ``socket.AF_*`` and ``socket.SOCK_*`` constants are now enumeration values
918using the new :mod:`enum` module. This allows meaningful names to be printed
919during debugging, instead of integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200920
R David Murray8b2d6822013-12-31 15:06:05 -0500921
R David Murray9025f1c2014-01-02 13:44:18 -0500922sqlite3
923-------
924
925A new boolean parameter, *uri*, to the :func:`~sqlite3.connect` function can
926be used to indicate that the *database* parameter is a ``uri`` (see
927the `SQLite URI documentation <http://www.sqlite.org/uri.html>`_).
928(Contributed by poq in :issue:`13773`.)
929
930
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200931ssl
932---
933
R David Murray748bad22013-12-20 17:08:39 -0500934.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200935
R David Murray748bad22013-12-20 17:08:39 -0500936:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
937TLSv1.2 support) have been added; support for these protocols is only available if
938Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
939Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200940
R David Murray748bad22013-12-20 17:08:39 -0500941New diagnostic functions :func:`~ssl.get_default_verify_paths`,
942:meth:`~ssl.SSLContext.cert_store_stats` and
943:meth:`~ssl.SSLContext.get_ca_certs` (Contributed by Christian Heimes
944in :issue:`18143` and :issue:`18147`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200945
R David Murray748bad22013-12-20 17:08:39 -0500946Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
947cert store. (Contributed by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200948
949Support for server-side SNI using the new
950:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200951(Contributed by Daniel Black in :issue:`8109`.)
952
953
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200954stat
955----
956
957The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
958implementation is required as most of the values aren't standardized and
959platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
960
961The module supports new file types: door, event port and whiteout.
962
963
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200964struct
965------
966
967Streaming struct unpacking using :func:`struct.iter_unpack`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200968(Contributed by Antoine Pitrou in :issue:`17804`.)
969
970
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300971sunau
972-----
973
974The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
975plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
976
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300977:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
978
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300979
R David Murrayd17aba72013-12-24 14:46:23 -0500980sys
981---
982
983New function :func:`sys.getallocatedblocks` returns the current number of
984blocks allocated by the interpreter (in CPython with the default
985``--with-pymalloc`` setting, this is allocations made through the
986:c:func:`PyObject_Malloc` API). This can be useful for tracking memory leaks,
987especially if automated via a test suite. (Contributed by Antoine Pitrou
988in :issue:`13390`.)
989
990
Andrew Kuchling173a1572013-09-15 18:15:56 -0400991traceback
992---------
993
994A new :func:`traceback.clear_frames` function takes a traceback object
995and clears the local variables in all of the frames it references,
996reducing the amount of memory consumed (:issue:`1565525`).
997
998
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200999urllib
1000------
1001
R David Murray473f45b2013-12-27 17:01:16 -05001002:mod:`urllib.request` now supports ``data:`` URLs via the
1003:class:`~urllib.request.DataHandler` class. (Contributed by Mathias Panzenböck
1004in :issue:`16423`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001005
1006
1007unittest
1008--------
1009
1010Support for easy dynamically-generated subtests using the
1011:meth:`~unittest.TestCase.subTest` context manager.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001012(Contributed by Antoine Pitrou in :issue:`16997`.)
1013
R David Murray9025f1c2014-01-02 13:44:18 -05001014:func:`unittest.main` now also accepts an iterable of test names for
1015*defaultTest*, where previously it only accepted a single test name as a
1016string. (Contributed by Jyrki Pulliainen in :issue:`15132`.)
1017
R David Murray42fa1102014-01-03 13:03:36 -05001018If :class:`~unittest.SkipTest` is raised during test discovery (that is, at the
1019module level in the test file), it is now reported as a skip instead of an
1020error. (Contributed by Zach Ware in :issue:`16935`.)
1021
R David Murraydb085f52014-01-03 15:46:24 -05001022:meth:`~unittest.TestLoader.discover` now sorts the discovered files to provide
1023consistent test ordering. (Contributed by Martin Melin and Jeff Ramnani in
1024:issue:`16709`.)
1025
R David Murray8e37d5d2013-04-13 14:49:48 -04001026
R David Murray575fb312013-12-25 23:21:03 -05001027venv
1028----
1029
1030:mod:`venv` now includes activation scripts for the ``csh`` and ``fish``
1031shells (Contributed by Andrew Svetlov in :issue:`15417`.)
1032
1033
R David Murray671cd322013-04-10 12:31:43 -04001034wave
1035----
1036
1037The :meth:`~wave.getparams` method now returns a namedtuple rather than a
1038plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
1039
R David Murrayc91d5ee2013-07-31 13:46:08 -04001040:meth:`wave.open` now supports the context manager protocol. (Contributed
1041by Claudiu Popa in :issue:`17616`.)
1042
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001043
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001044weakref
1045-------
1046
1047New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001048methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001049
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001050New :class:`~weakref.finalize` class makes it possible to register a callback
1051to be invoked when an object is garbage collected, without needing to
1052carefully manage the lifecycle of the weak reference itself. (Contributed by
1053Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001054
1055
1056xml.etree
1057---------
1058
1059Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -07001060:class:`~xml.etree.ElementTree.XMLPullParser`.
Eli Benderskyb5869342013-08-30 05:51:20 -07001061(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001062
R David Murray575fb312013-12-25 23:21:03 -05001063The :mod:`xml.etree.ElementTree` :func:`~xml.etree.ElementTree.tostring` and
1064:func:`~xml.etree.ElementTree.tostringlist` functions, and the
1065:class:`~xml.etree.ElementTree.ElementTree`
1066:meth:`~xml.etree.ElementTree.ElementTree.write` method, now have a
1067*short_empty_elements* :ref:`keyword-only parameter <keyword-only_parameter>`
1068providing control over whether elements with no content are written in
1069abbreviated (``<tag />``) or expanded (``<tag></tag>``) form. (Contributed by
1070Ariel Poliak and Serhiy Storchaka in :issue:`14377`.)
1071
Christian Tismer59202e52013-10-21 03:59:23 +02001072
1073zipfile.PyZipfile
1074-----------------
1075
1076Add a filter function to ignore some packages (tests for instance),
1077:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +02001078(Contributed by Christian Tismer in :issue:`19274`.)
1079
1080
Nick Coghlan367df122013-10-27 01:57:34 +10001081CPython Implementation Changes
1082==============================
1083
1084
R David Murrayc16dfe12013-12-21 12:32:10 -05001085.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +10001086
R David Murraye7cf6782013-12-24 14:51:25 -05001087PEP 445: Customization of CPython Memory Allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001088---------------------------------------------------
1089
1090:pep:`445` adds new C level interfaces to customize memory allocation in
1091the CPython interpreter.
1092
1093.. seealso::
1094
R David Murray061efb12013-12-24 12:35:59 -05001095 :pep:`445` -- Add new APIs to customize Python memory allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001096 PEP written and implemented by Victor Stinner.
1097
1098
R David Murrayc16dfe12013-12-21 12:32:10 -05001099.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +10001100
R David Murraye7cf6782013-12-24 14:51:25 -05001101PEP 442: Safe Object Finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001102---------------------------------
1103
1104:pep:`442` removes the current limitations and quirks of object finalization
1105in CPython. With it, objects with :meth:`__del__` methods, as well as
1106generators with :keyword:`finally` clauses, can be finalized when they are
1107part of a reference cycle.
1108
1109As part of this change, module globals are no longer forcibly set to
1110:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -05001111on the normal operation of the cyclic garbage collector. This avoids a
1112whole class of interpreter-shutdown-time errors, usually involving
1113``__del__`` methods, that have plagued Python since the cyclic GC
1114was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +10001115
1116.. seealso::
1117
R David Murray061efb12013-12-24 12:35:59 -05001118 :pep:`442` -- Safe object finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001119 PEP written and implemented by Antoine Pitrou.
1120
1121
R David Murrayc16dfe12013-12-21 12:32:10 -05001122.. _whatsnew-pep-456:
1123
1124PEP 456: Secure and Interchangeable Hash Algorithm
1125--------------------------------------------------
1126
1127:pep:`456` follows up on earlier security fix work done on Python's hash
1128algorithm to address certain DOS attacks to which public facing APIs backed by
1129dictionary lookups may be subject. (See :issue:`14621` for the start of the
1130current round of improvements.) The PEP unifies CPython's hash code to make it
1131easier for a packager to substitute a different hash algorithm, and switches
1132Python's default implementation to a SipHash implementation on platforms that
1133have a 64 bit data type. Any performance differences in comparison with the
1134older FNV algorithm are trivial.
1135
1136The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
1137describe the hash algorithm in use by the currently executing binary. Otherwise,
1138the PEP does not alter any existing CPython APIs.
1139
1140
R David Murray6dd18302013-12-24 12:23:56 -05001141.. _whatsnew-pep-436:
1142
1143PEP 436: Argument Clinic
1144------------------------
1145
1146"Argument Clinic" (:pep:`436`) is now part of the CPython build process
1147and can be used to simplify the process of defining and maintaining
1148accurate signatures for builtins and standard library extension modules
1149implemented in C.
1150
1151.. note::
1152 The Argument Clinic PEP is not fully up to date with the state of the
1153 implementation. This has been deemed acceptable by the release manager
1154 and core development team in this case, as Argument Clinic will not
1155 be made available as a public API for third party use in Python 3.4.
1156
1157.. seealso::
1158
R David Murray061efb12013-12-24 12:35:59 -05001159 :pep:`436` -- The Argument Clinic DSL
R David Murray6dd18302013-12-24 12:23:56 -05001160 PEP written and implemented by Larry Hastings.
1161
1162
R David Murraye7cf6782013-12-24 14:51:25 -05001163Other Build and C API Changes
Nick Coghlan367df122013-10-27 01:57:34 +10001164-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02001165
Nick Coghlan7d270ee2013-10-17 22:35:35 +10001166* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
1167 allows applications embedding the CPython interpreter to reliably force
1168 a particular encoding and error handler for the standard streams
1169 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +02001170
Nick Coghlan0acceb72013-10-20 13:22:21 +10001171* Most Python C APIs that don't mutate string arguments are now correctly
1172 marked as accepting ``const char *`` rather than ``char *`` (Contributed
1173 by Serhiy Storchaka in :issue:`1772673`).
1174
R David Murrayd91ba202013-12-24 12:13:44 -05001175* New shell version of ``python-config``; can be used even when a python
1176 interpreter is not available (for example, in cross compilation scenarios).
1177
Georg Brandlb80f5112012-09-30 09:11:58 +02001178
R David Murraye7cf6782013-12-24 14:51:25 -05001179Other Improvements
R David Murraybcaaecf2013-12-23 21:23:36 -05001180==================
1181
1182* Tab-completion is now enabled by default in the interactive interpreter.
1183 (Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
1184
1185* Invoking the Python interpreter with ``--version`` now outputs the version to
1186 standard output instead of standard error (:issue:`18338`). Similar changes
1187 were made to :mod:`argparse` (:issue:`18920`) and other modules that have
1188 script-like invocation capabilities (:issue:`18922`).
1189
R David Murray72420ff2013-12-24 10:46:44 -05001190* The CPython Windows installer now adds ``.py`` to the :envvar:`PATHEXT`
1191 variable when extensions are registered, allowing users to run a python
1192 script at the windows command prompt by just typing its name without the
1193 ``.py`` extension. (Contributed by Paul Moore in :issue:`18569`.)
1194
R David Murrayd17aba72013-12-24 14:46:23 -05001195* A new ``make`` target `coverage-report
1196 <http://docs.python.org/devguide/coverage.html#measuring-coverage-of-c-code-with-gcov-and-lcov>`_
1197 will build python, run the test suite, and generate an HTML coverage report
1198 for the C codebase using ``gcov`` and `lcov
1199 <http://ltp.sourceforge.net/coverage/lcov.php>`_.
1200
1201* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now
1202 also checks for memory allocation leaks, using
1203 :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in
1204 :issue:`13390`).
1205
R David Murraybcaaecf2013-12-23 21:23:36 -05001206
R David Murrayd74d09a2013-12-24 15:33:02 -05001207Significant Optimizations
1208=========================
R David Murraybcaaecf2013-12-23 21:23:36 -05001209
1210* The UTF-32 decoder is now 3x to 4x faster.
1211
1212* The cost of hash collisions for sets is now reduced. Each hash table
1213 probe now checks a series of consecutive, adjacent key/hash pairs before
1214 continuing to make random probes through the hash table. This exploits
1215 cache locality to make collision resolution less expensive.
1216
1217 The collision resolution scheme can be described as a hybrid of linear
1218 probing and open addressing. The number of additional linear probes
1219 defaults to nine. This can be changed at compile-time by defining
1220 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
1221 linear probing entirely.
1222
1223 (Contributed by Raymond Hettinger in :issue:`18771`.)
1224
1225* The interpreter starts about 30% faster. A couple of measures lead to the
1226 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
1227 :mod:`collections` and :mod:`locale` modules and their dependencies are no
1228 longer imported by default. The marshal module has been improved to load
1229 compiled Python code faster.
1230
1231 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
1232 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
1233 :issue:`9548`)
1234
R David Murray6e390152013-12-24 22:28:04 -05001235* :class:`bz2.BZ2File` is now as fast or faster than the Python2 version for
1236 most cases. :class:`lzma.LZMAFile` has also been optimized. (Contributed by
1237 Serhiy Storchaka and Nadeem Vawda in :issue:`16034`.)
1238
R David Murray8b2d6822013-12-31 15:06:05 -05001239* :func:`random.getrandbits` is 20%-40% faster for small integers (the most
1240 common use case). (Contributed by Serhiy Storchaka in :issue:`16674`).
1241
R David Murraybcaaecf2013-12-23 21:23:36 -05001242
Georg Brandlb80f5112012-09-30 09:11:58 +02001243Deprecated
1244==========
1245
R David Murrayd74d09a2013-12-24 15:33:02 -05001246This section covers various APIs and other features that have been deprecated
1247in Python 3.4, and will be removed in Python 3.5 or later. In most (but not
1248all) cases, using the deprecated APIs will produce a :exc:`DeprecationWarning`
1249when the interpreter is run with deprecation warnings enabled (for example, by
1250using ``-Wd``).
1251
Georg Brandlb80f5112012-09-30 09:11:58 +02001252
R David Murraye7cf6782013-12-24 14:51:25 -05001253Deprecated Python Modules, Functions and Methods
Georg Brandlb80f5112012-09-30 09:11:58 +02001254------------------------------------------------
1255
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001256* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001257 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1258 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001259
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001260* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1261 :func:`importlib.util.module_to_load` and
1262 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1263 to more easily customize module loading.
1264
Brett Cannone4f41de2013-06-16 13:13:40 -04001265* The :mod:`imp` module is pending deprecation. To keep compatibility with
1266 Python 2/3 code bases, the module's removal is currently not scheduled.
1267
Brett Cannon1448ecf2013-10-04 11:38:59 -04001268* The :mod:`formatter` module is pending deprecation and is slated for removal
1269 in Python 3.6.
1270
Christian Heimes634919a2013-11-20 17:23:06 +01001271* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1272 require an explicit digest name or constructor as *digestmod* argument.
1273
R David Murray9025f1c2014-01-02 13:44:18 -05001274* The internal ``Netrc`` class in the :mod:`ftplib` module has been documented
1275 as deprecated in its docstring for quite some time. It now emits a
1276 :exc:`DeprecationWarning` and will be removed completely in Python 3.5.
1277
Georg Brandlb80f5112012-09-30 09:11:58 +02001278
R David Murraye7cf6782013-12-24 14:51:25 -05001279Deprecated Functions and Types in the C API
Georg Brandlb80f5112012-09-30 09:11:58 +02001280-------------------------------------------
1281
R David Murrayd74d09a2013-12-24 15:33:02 -05001282XXX: None so far
Georg Brandlb80f5112012-09-30 09:11:58 +02001283
1284
R David Murraye7cf6782013-12-24 14:51:25 -05001285Deprecated Features
Georg Brandlb80f5112012-09-30 09:11:58 +02001286-------------------
1287
R David Murray5ea95242013-12-24 15:59:57 -05001288* Running :ref:`idle` with the ``-n`` flag (no subprocess) is deprecated.
1289 However, the feature will not be removed until :issue:`18823` is resolved.
1290
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001291* The site module adding a "site-python" directory to sys.path, if it
1292 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001293
1294
R David Murray72420ff2013-12-24 10:46:44 -05001295Removed
1296=======
1297
R David Murrayd2653812013-12-27 14:06:15 -05001298The following obsolete and previously deprecated APIs and features have been
1299removed in Python 3.4:
R David Murrayd74d09a2013-12-24 15:33:02 -05001300
1301* Support for the following operating systems has been removed from the source
1302 and build tools:
R David Murray076dead2013-12-24 14:59:50 -05001303
1304 * OS/2 (:issue:`16135`).
1305 * Windows 2000 (changeset e52df05b496a).
1306 * VMS (:issue:`16136`).
1307
R David Murray72420ff2013-12-24 10:46:44 -05001308* The unmaintained ``Misc/TextMate`` and ``Misc/vim`` directories have been
R David Murrayd91ba202013-12-24 12:13:44 -05001309 removed (see the `devguide <http://docs.python.org/devguide>`_
R David Murray00569362014-01-03 13:04:25 -05001310 for suggestions on what to use instead).
R David Murray72420ff2013-12-24 10:46:44 -05001311
R David Murrayd17aba72013-12-24 14:46:23 -05001312* The ``SO`` makefile macro is removed (it was replaced by the
1313 ``SHLIB_SUFFIX`` and ``EXT_SUFFIX`` macros) (:issue:`16754`).
1314
R David Murrayd74d09a2013-12-24 15:33:02 -05001315* The ``PyThreadState.tick_counter`` field has been removed; its value has
1316 been meaningless since Python 3.2, when the "new GIL" was introduced.
1317
R David Murrayd2653812013-12-27 14:06:15 -05001318* ``PyLoader`` and ``PyPycLoader`` have been removed from :mod:`importlib`.
1319 (Contributed by Taras Lyapun in :issue:`15641`.)
1320
R David Murraya2924ca2014-01-03 14:06:01 -05001321* The *strict* argument to :class:`~http.client.HTTPConnection` and
1322 :class:`~http.client.HTTPSConnection` has been removed. HTTP 0.9-style
1323 "Simple Responses" are no longer supported.
R David Murray00569362014-01-03 13:04:25 -05001324
R David Murraydb085f52014-01-03 15:46:24 -05001325* The deprecated :mod:`urllib.request.Request` getter and setter methods
1326 ``add_data``, ``has_data``, ``get_data``, ``get_type``, ``get_host``,
1327 ``get_selector``, ``set_proxy``, ``get_origin_req_host``, and
1328 ``is_unverifiable`` have been removed (use direct attribute access instead).
1329
R David Murray72420ff2013-12-24 10:46:44 -05001330
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001331Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001332=====================
1333
1334This section lists previously described changes and other bugfixes
1335that may require changes to your code.
1336
R David Murrayd74d09a2013-12-24 15:33:02 -05001337Changes in the Python API
1338-------------------------
1339
Brett Cannon777622b2013-04-09 17:03:10 -04001340* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1341 exception or return a default value instead of raising
1342 :exc:`NotImplementedError` blindly. This will only affect code calling
1343 :func:`super` and falling through all the way to the ABCs. For compatibility,
1344 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001345
1346* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1347 attributes to ``None`` by default. To determine if these attributes were set
1348 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001349 ``getattr(module, '__loader__', None) is not None``.
1350
1351* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1352 ``__package__`` unconditionally to properly support reloading. If this is not
1353 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001354 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001355
1356* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1357 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1358
Brett Cannon1448ecf2013-10-04 11:38:59 -04001359* Frozen packages no longer set ``__path__`` to a list containing the package
1360 name but an empty list instead. Determing if a module is a package should be
1361 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001362
Brett Cannon33915eb2013-06-14 18:33:00 -04001363* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1364 it would write to is a symlink or a non-regular file. This is to act as a
1365 warning that import will overwrite those files with a regular file regardless
1366 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001367
1368* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1369 :exc:`ImportError` when the source code being loaded triggers a
1370 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1371 meant to be raised only when source code cannot be found but it should, it was
1372 felt to be over-reaching/overloading of that meaning when the source code is
1373 found but improperly structured. If you were catching ImportError before and
1374 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001375 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001376
1377* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001378 set the ``__wrapped__`` attribute to the function being wrapper, even if
1379 that function also had its ``__wrapped__`` attribute set. This means
1380 ``__wrapped__`` attributes now correctly link a stack of decorated
1381 functions rather than every ``__wrapped__`` attribute in the chain
1382 referring to the innermost function. Introspection libraries that
1383 assumed the previous behaviour was intentional can use
1384 :func:`inspect.unwrap` to access the first function in the chain that has
1385 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001386
Georg Brandl0f5bff22013-10-19 17:46:38 +02001387* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001388 directory to objects in :data:`sys.path_hooks` for the empty string. This
1389 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1390 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1391 will not find all keys. A module's ``__file__`` when imported in the current
1392 working directory will also now have an absolute path, including when using
1393 ``-m`` with the interpreter (this does not influence when the path to a file
1394 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001395
R David Murraya2924ca2014-01-03 14:06:01 -05001396* The removal of the *strict* argument to :class:`~http.client.HTTPConnection`
1397 and :class:`~http.client.HTTPSConnection` changes the meaning of the
1398 remaining arguments if you are specifying them positionally rather than by
1399 keyword. If you've been paying attention to deprecation warnings your code
1400 should already be specifying any additional arguments via keywords.
1401
R David Murrayd2653812013-12-27 14:06:15 -05001402
Victor Stinner774b2e02013-12-13 14:33:01 +01001403Changes in the C API
1404--------------------
1405
1406* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1407 argument is not set. Previously only ``NULL`` was returned with no exception
1408 set.
1409
1410* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1411 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1412 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1413 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1414
1415* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001416 3.3, the function did nothing if the key already exists (if the current
1417 value is a non-NULL pointer).
1418
Victor Stinner774b2e02013-12-13 14:33:01 +01001419* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1420 structure has been removed to fix a bug: see :issue:`14432` for the
1421 rationale.
1422