blob: 1b71c575a39a5d1bb473e87dfb3bdd27a85111ff [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
Nick Coghlanaa029da2014-02-09 10:10:24 +100072 draft form. While it should be close to complete for the Python 3.4
73 release candidates, adjustments and additions to the document may be made
74 up until the final release.
Georg Brandlb80f5112012-09-30 09:11:58 +020075
76
77.. seealso::
78
R David Murray061efb12013-12-24 12:35:59 -050079 :pep:`429` -- Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020080
81
R David Murraye6082552014-01-03 16:15:45 -050082
R David Murraye7cf6782013-12-24 14:51:25 -050083Summary -- Release Highlights
Georg Brandlb80f5112012-09-30 09:11:58 +020084=============================
85
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000086.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020087 Brevity is key.
88
89New syntax features:
90
R David Murraye0f7a782013-12-20 16:04:29 -050091* No new syntax features were added in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020092
R David Murray809487e2013-12-22 20:49:40 -050093New expected features for Python implementations:
94
R David Murray68790662013-12-23 11:17:51 -050095* :ref:`pip should always be "available" <whatsnew-pep-453>` (:pep:`453`).
R David Murray809487e2013-12-22 20:49:40 -050096* :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`
97 (:pep:`446`).
98* command line option for :ref:`isolated mode <using-on-misc-options>`,
99 (:issue:`16499`).
R David Murray8d856782013-12-23 10:28:57 -0500100* :ref:`improvements in the handling of codecs <codec-handling-improvements>`
101 that are not text encodings (multiple issues).
R David Murray809487e2013-12-22 20:49:40 -0500102* :ref:`A ModuleSpec Type <whatsnew-pep-451>` for the Import System
R David Murraye9b74d42013-12-22 21:05:04 -0500103 (:pep:`451`). (Affects importer authors.)
R David Murray809487e2013-12-22 20:49:40 -0500104
Georg Brandlb80f5112012-09-30 09:11:58 +0200105New library modules:
106
R David Murray9217dad2013-12-23 21:08:28 -0500107* :mod:`asyncio`: :ref:`New provisional API for asynchronous IO
108 <whatsnew-asyncio>` (:pep:`3156`).
109* :mod:`ensurepip`: :ref:`Bootstrapping the pip installer <whatsnew-ensurepip>`
110 (:pep:`453`).
111* :mod:`enum`: :ref:`Support for enumeration types <whatsnew-enum>`
112 (:pep:`435`).
113* :mod:`pathlib`: :ref:`Object-oriented filesystem paths <whatsnew-pathlib>`
114 (:pep:`428`).
R David Murrayf9976e72013-12-23 10:32:02 -0500115* :mod:`selectors`: :ref:`High-level and efficient I/O multiplexing
116 <whatsnew-selectors>`, built upon the :mod:`select` module primitives (part
117 of :pep:`3156`).
R David Murray9217dad2013-12-23 21:08:28 -0500118* :mod:`statistics`: A basic :ref:`numerically stable statistics library
119 <whatsnew-statistics>` (:pep:`450`).
120* :mod:`tracemalloc`: :ref:`Trace Python memory allocations
121 <whatsnew-tracemalloc>` (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200122
Georg Brandlb80f5112012-09-30 09:11:58 +0200123Significantly Improved Library Modules:
124
R David Murray0a102162013-12-20 15:00:54 -0500125* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
R David Murray8d856782013-12-23 10:28:57 -0500126 :mod:`functools` (:pep:`443`).
127* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`).
R David Murray8d856782013-12-23 10:28:57 -0500128* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`
129 (:issue:`16692`).
R David Murrayac186222013-12-20 17:23:57 -0500130* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
131 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500132* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
133 a new :mod:`~email.message.Message` subclass
R David Murray26b80cfd2013-12-20 17:26:52 -0500134 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME
R David Murray8d856782013-12-23 10:28:57 -0500135 handling <whatsnew_email_contentmanager>` (:issue:`18891`).
Nick Coghlan96bb4372014-02-09 09:18:26 +1000136* The :mod:`ipaddress` module API has been declared stable
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200137
Nick Coghlanaa029da2014-02-09 10:10:24 +1000138
Nick Coghlan367df122013-10-27 01:57:34 +1000139CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200140
R David Murraya93ca972013-12-22 14:10:21 -0500141* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`).
R David Murrayca794612013-12-22 14:05:11 -0500142* Leveraging :pep:`442`, :ref:`module globals are no longer set to None
143 during finalization <whatsnew-pep-442>`, in most cases (:issue:`18214`).
R David Murraya93ca972013-12-22 14:10:21 -0500144* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`).
145* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
146 (:pep:`456`).
147* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`).
R David Murray8f7664a2013-12-22 20:40:11 -0500148* The :mod:`marshal` format has been made :ref:`more compact and efficient
149 <whatsnew-marshal-3>` (:issue:`16475`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200150
R David Murray347f9c72013-12-23 21:30:06 -0500151Please read on for a comprehensive list of user-facing changes, including many
152other smaller improvements, CPython optimizations, deprecations, and potential
153porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200154
Nick Coghland0cf0632013-11-11 22:11:55 +1000155
R David Murraye6082552014-01-03 16:15:45 -0500156
R David Murraye7cf6782013-12-24 14:51:25 -0500157New Expected Features for Python Implementations
R David Murray809487e2013-12-22 20:49:40 -0500158================================================
159
R David Murray68790662013-12-23 11:17:51 -0500160.. _whatsnew-pep-453:
161
R David Murraye7cf6782013-12-24 14:51:25 -0500162PEP 453: Explicit Bootstrapping of PIP in Python Installations
R David Murray809487e2013-12-22 20:49:40 -0500163--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000164
165The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
Nick Coghlanaa029da2014-02-09 10:10:24 +1000166cross-platform mechanism to bootstrap the pip installer into Python
Nick Coghland0cf0632013-11-11 22:11:55 +1000167installations and virtual environments.
168
Nick Coghlanaa029da2014-02-09 10:10:24 +1000169By default, the scripts ``pipX`` and ``pipX.Y`` will be installed (where
170X.Y stands for the version of the Python installation), along with the
171``pip`` Python package and its dependencies.
172
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000173The :mod:`venv` module and the :command:`pyvenv` utility make use of this
174module to make ``pip`` readily available in virtual environments. When
175using the command line interface, ``pip`` is installed by default, while
176for the module API installation of ``pip`` must be requested explicitly.
177
178For CPython source builds on POSIX systems, the ``make install`` and
179``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
180can be controlled through configure options, and overridden through
181Makefile options.
182
Ned Deily44a0db02013-11-22 22:39:09 -0800183On Windows and Mac OS X, the CPython installers now offer the option to
184install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000185
R David Murray68790662013-12-23 11:17:51 -0500186As `discussed in the PEP`__, platform packagers may choose not to install
187``pip`` by default, as long as the command ``pip``, when invoked, provides
188clear and simple directions on how to install ``pip`` on the platform.
189
190__ http://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors
191
Nick Coghland0cf0632013-11-11 22:11:55 +1000192.. note::
193
Nick Coghlanaa029da2014-02-09 10:10:24 +1000194 To avoid conflicts between parallel Python 2 and Python 3 installations,
195 only the versioned ``pip3`` and ``pip3.4`` commands are bootstrapped by
196 default when ``ensurepip`` is invoked directly (including by the CPython
197 installers). ``pyvenv`` ensures that the unqualified ``pip`` command is
198 made available in virtual environments, and ``pip`` can always be
199 invoked via the ``-m`` switch rather than directly to avoid ambiguity on
200 systems with multiple Python installations.
Nick Coghland0cf0632013-11-11 22:11:55 +1000201
202.. seealso::
203
R David Murray061efb12013-12-24 12:35:59 -0500204 :pep:`453` -- Explicit bootstrapping of pip in Python installations
Nick Coghland0cf0632013-11-11 22:11:55 +1000205 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000206 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000207
208
R David Murrayf9909c22013-12-20 14:50:12 -0500209.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200210
R David Murraye7cf6782013-12-24 14:51:25 -0500211PEP 446: Make Newly Created File Descriptors Non-Inheritable
R David Murray809487e2013-12-22 20:49:40 -0500212------------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200213
Nick Coghlan367df122013-10-27 01:57:34 +1000214:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200215<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200216
217* :func:`os.get_inheritable`, :func:`os.set_inheritable`
218* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
219* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
220
Antoine Pitrou796564c2013-07-30 19:59:21 +0200221.. seealso::
222
R David Murray061efb12013-12-24 12:35:59 -0500223 :pep:`446` -- Make newly created file descriptors non-inheritable
Nick Coghlan367df122013-10-27 01:57:34 +1000224 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200225
Georg Brandlb80f5112012-09-30 09:11:58 +0200226
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000227.. _codec-handling-improvements:
228
R David Murraye7cf6782013-12-24 14:51:25 -0500229Improvements to Codec Handling
R David Murray809487e2013-12-22 20:49:40 -0500230------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000231
232Since it was first introduced, the :mod:`codecs` module has always been
233intended to operate as a type-neutral dynamic encoding and decoding
234system. However, its close coupling with the Python text model, especially
235the type restricted convenience methods on the builtin :class:`str`,
236:class:`bytes` and :class:`bytearray` types, has historically obscured that
237fact.
238
239As a key step in clarifying the situation, the :meth:`codecs.encode` and
240:meth:`codecs.decode` convenience functions are now properly documented in
241Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000242module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000243but were previously only discoverable through runtime introspection.
244
245Unlike the convenience methods on :class:`str`, :class:`bytes` and
246:class:`bytearray`, these convenience functions support arbitrary codecs
247in both Python 2 and Python 3, rather than being limited to Unicode text
248encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
249(in Python 2).
250
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000251In Python 3.4, the interpreter is able to identify the known non-text
252encodings provided in the standard library and direct users towards these
253general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000254
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000255 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000256 Traceback (most recent call last):
257 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000258 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000259
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000260 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000261 Traceback (most recent call last):
262 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000263 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000264
Nick Coghlanaa029da2014-02-09 10:10:24 +1000265 >>> open("foo.txt", encoding="hex")
266 Traceback (most recent call last):
267 File "<stdin>", line 1, in <module>
268 LookupError: 'hex' is not a text encoding; use codecs.open() to handle arbitrary codecs
269
Nick Coghlan8b097b42013-11-13 23:49:21 +1000270In a related change, whenever it is feasible without breaking backwards
271compatibility, exceptions raised during encoding and decoding operations
272will be wrapped in a chained exception of the same type that mentions the
273name of the codec responsible for producing the error::
274
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000275 >>> import codecs
276
277 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan77b286b2014-01-27 00:53:38 +1000278 Traceback (most recent call last):
279 File "/usr/lib/python3.4/encodings/hex_codec.py", line 20, in hex_decode
280 return (binascii.a2b_hex(input), len(input))
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000281 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000282
283 The above exception was the direct cause of the following exception:
284
285 Traceback (most recent call last):
286 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000287 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000288
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000289 >>> codecs.encode("hello", "bz2")
Nick Coghlan77b286b2014-01-27 00:53:38 +1000290 Traceback (most recent call last):
291 File "/usr/lib/python3.4/encodings/bz2_codec.py", line 17, in bz2_encode
292 return (bz2.compress(input), len(input))
293 File "/usr/lib/python3.4/bz2.py", line 498, in compress
294 return comp.compress(data) + comp.flush()
Nick Coghlan8b097b42013-11-13 23:49:21 +1000295 TypeError: 'str' does not support the buffer interface
296
297 The above exception was the direct cause of the following exception:
298
299 Traceback (most recent call last):
300 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000301 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000302
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000303Finally, as the examples above show, these improvements have permitted
304the restoration of the convenience aliases for the non-Unicode codecs that
305were themselves restored in Python 3.2. This means that encoding binary data
306to and from its hexadecimal representation (for example) can now be written
307as::
308
309 >>> from codecs import encode, decode
310 >>> encode(b"hello", "hex")
311 b'68656c6c6f'
312 >>> decode(b"68656c6c6f", "hex")
313 b'hello'
314
315The binary and text transforms provided in the standard library are detailed
316in :ref:`binary-transforms` and :ref:`text-transforms`.
317
R David Murray9217dad2013-12-23 21:08:28 -0500318(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000319:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000320
Nick Coghlanaa029da2014-02-09 10:10:24 +1000321
R David Murray809487e2013-12-22 20:49:40 -0500322.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700323
324PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500325------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700326
R David Murrayf85b2a82013-12-22 21:06:13 -0500327:pep:`451` provides an encapsulation of the information about a module that the
328import machinery will use to load it (that is, a module specification). This
329helps simplify both the import implementation and several import-related APIs.
330The change is also a stepping stone for `several future import-related
331improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700332
R David Murraye9b74d42013-12-22 21:05:04 -0500333__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700334
335The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500336Furthermore, they should be transparent to everyone but importer authors. Key
337finder and loader methods have been deprecated, but they will continue working.
338New importers should use the new methods described in the PEP. Existing
339importers should be updated to implement the new methods.
Eric Snowb523f842013-11-22 09:05:39 -0700340
Nick Coghlan8b097b42013-11-13 23:49:21 +1000341
Georg Brandlb80f5112012-09-30 09:11:58 +0200342Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500343----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200344
345Some smaller changes made to the core Python language are:
346
Ezio Melotti34808e22013-10-12 16:36:13 +0300347* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200348
R David Murray9a2f1392013-06-28 13:31:19 -0400349* :func:`min` and :func:`max` now accept a *default* argument that can be used
350 to specify the value they return if the iterable they are evaluating has no
351 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200352
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200353* Module objects are now :mod:`weakref`'able.
354
Nick Coghlan0acceb72013-10-20 13:22:21 +1000355* Module ``__file__`` attributes (and related values) should now always
356 contain absolute paths by default, with the sole exception of
357 ``__main__.__file__`` when a script has been executed directly using
358 a relative path (Contributed by Brett Cannon in :issue:`18416`).
359
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200360* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
361 encoding and decoding unless the ``surrogatepass`` error handler is used,
362 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
363 and the UTF-16 encoder that produces them while encoding non-BMP characters.
364 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
365 :issue:`12892`.
366
Georg Brandlb80f5112012-09-30 09:11:58 +0200367
R David Murraye6082552014-01-03 16:15:45 -0500368
Georg Brandlb80f5112012-09-30 09:11:58 +0200369New Modules
370===========
371
Nick Coghlan0acceb72013-10-20 13:22:21 +1000372
R David Murray9217dad2013-12-23 21:08:28 -0500373.. _whatsnew-asyncio:
374
Nick Coghlan0acceb72013-10-20 13:22:21 +1000375asyncio
376-------
377
378The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
379pluggable event loop model for Python, providing solid asynchronous IO
380support in the standard library, and making it easier for other event loop
381implementations to interoperate with the standard library and each other.
382
383For Python 3.4, this module is considered a :term:`provisional API`.
384
Nick Coghlan367df122013-10-27 01:57:34 +1000385.. seealso::
386
R David Murray061efb12013-12-24 12:35:59 -0500387 :pep:`3156` -- Asynchronous IO Support Rebooted: the "asyncio" Module
Nick Coghlan367df122013-10-27 01:57:34 +1000388 PEP written and implementation led by Guido van Rossum.
389
R David Murray68790662013-12-23 11:17:51 -0500390
R David Murray9217dad2013-12-23 21:08:28 -0500391.. _whatsnew-ensurepip:
R David Murray68790662013-12-23 11:17:51 -0500392
393ensurepip
394---------
395
396The new :mod:`ensurepip` module is the primary infrastructure for the
397:pep:`453` implementation. In the normal course of events end users will not
398need to interact with this module, but it can be used to manually bootstrap
399``pip`` if the automated bootstrapping into an installation or virtual
400environment was declined.
401
402:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first
403release candidate of the release of CPython with which it ships (this applies
404to both maintenance releases and feature releases). ``ensurepip`` does not
405access the internet. (If the installation has Internet access, it is of course
406possible to upgrade ``pip`` to a release more recent than the bundled ``pip``
407by using the bundled ``pip`` command itself once it is installed.)
408
409The module is named *ensure*\ pip because if called when ``pip`` is already
410installed, it does nothing. It also has an ``--upgrade`` option that will
411cause it to install the bundled copy of ``pip`` if the existing installed
412version of ``pip`` is older than the bundled copy.
413
414
R David Murray9217dad2013-12-23 21:08:28 -0500415.. _whatsnew-enum:
416
Nick Coghlan0acceb72013-10-20 13:22:21 +1000417enum
418----
419
Nick Coghlan367df122013-10-27 01:57:34 +1000420The new :mod:`enum` module (defined in :pep:`435`) provides a standard
421implementation of enumeration types, allowing other modules (such as
422:mod:`socket`) to provide more informative error messages and better
423debugging support by replacing opaque integer constants with backwards
424compatible enumeration values.
425
426.. seealso::
427
R David Murray061efb12013-12-24 12:35:59 -0500428 :pep:`435` -- Adding an Enum type to the Python standard library
Nick Coghlan367df122013-10-27 01:57:34 +1000429 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
430 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000431
432
R David Murray9217dad2013-12-23 21:08:28 -0500433.. _whatsnew-pathlib:
434
Antoine Pitrou31119e42013-11-22 17:38:12 +0100435pathlib
436-------
437
438The new :mod:`pathlib` module offers classes representing filesystem paths
439with semantics appropriate for different operating systems. Path classes are
440divided between *pure paths*, which provide purely computational operations
441without I/O, and *concrete paths*, which inherit from pure paths but also
442provide I/O operations.
443
444For Python 3.4, this module is considered a :term:`provisional API`.
445
446.. seealso::
447
R David Murray061efb12013-12-24 12:35:59 -0500448 :pep:`428` -- The pathlib module -- object-oriented filesystem paths
Antoine Pitrou31119e42013-11-22 17:38:12 +0100449 PEP written and implemented by Antoine Pitrou.
450
451
R David Murrayf9976e72013-12-23 10:32:02 -0500452.. _whatsnew-selectors:
453
Charles-François Natali243d8d82013-09-04 19:02:49 +0200454selectors
455---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200456
Nick Coghlan0acceb72013-10-20 13:22:21 +1000457The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
458allows high-level and efficient I/O multiplexing, built upon the
459:mod:`select` module primitives.
460
461
R David Murray9217dad2013-12-23 21:08:28 -0500462.. _whatsnew-statistics:
463
Nick Coghlan0acceb72013-10-20 13:22:21 +1000464statistics
465----------
466
467The new :mod:`statistics` module (defined in :pep:`450`) offers some core
468statistics functionality directly in the standard library. This module
469supports calculation of the mean, median, mode, variance and standard
470deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200471
Nick Coghlan367df122013-10-27 01:57:34 +1000472.. seealso::
473
R David Murray061efb12013-12-24 12:35:59 -0500474 :pep:`450` -- Adding A Statistics Module To The Standard Library
Nick Coghlan367df122013-10-27 01:57:34 +1000475 PEP written and implemented by Steven D'Aprano
476
R David Murray9217dad2013-12-23 21:08:28 -0500477.. _whatsnew-tracemalloc:
Georg Brandlb80f5112012-09-30 09:11:58 +0200478
R David Murray8b2d6822013-12-31 15:06:05 -0500479
Victor Stinnerd2736af2013-11-25 09:40:27 +0100480tracemalloc
481-----------
482
483The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
484trace memory blocks allocated by Python. It provides the following information:
485
486* Traceback where an object was allocated
487* Statistics on allocated memory blocks per filename and per line number:
488 total size, number and average size of allocated memory blocks
489* Compute the differences between two snapshots to detect memory leaks
490
491.. seealso::
492
R David Murray061efb12013-12-24 12:35:59 -0500493 :pep:`454` -- Add a new tracemalloc module to trace Python memory allocations
Victor Stinnerd2736af2013-11-25 09:40:27 +0100494 PEP written and implemented by Victor Stinner
495
496
R David Murraye6082552014-01-03 16:15:45 -0500497
Georg Brandlb80f5112012-09-30 09:11:58 +0200498Improved Modules
499================
500
R David Murray6e390152013-12-24 22:28:04 -0500501
R David Murray3edcc782013-12-24 16:13:32 -0500502abc
503---
504
505New function :func:`abc.get_cache_token` can be used to know when to invalidate
506caches that are affected by changes in the object graph. (Contributed
507by Łukasz Langa in :issue:`16832`.)
R David Murray72420ff2013-12-24 10:46:44 -0500508
R David Murray2691ee62013-12-28 23:15:12 -0500509New class :class:`~abc.ABC` has :class:`~abc.ABCMeta` as its meta class.
510Using ``ABC`` as a base class has essentially the same effect as specifying
511``metaclass=abc.ABCMeta``, but is simpler to type and easier to read.
512(Contributed by Bruno Dupuis in :issue:`16049`.)
513
514
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200515aifc
516----
517
518The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
519plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
520
R David Murrayd592bb22013-12-31 13:45:38 -0500521:func:`aifc.open` now supports the context manager protocol: when used in a
522:keyword:`with` block, the :meth:`~aifc.aifc.close` method of the returned
523object will be called automatically at the end of the block. (Contributed by
524Serhiy Storchacha in :issue:`16486`.)
525
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200526
R David Murrayfced3ec2013-12-31 11:18:01 -0500527argparse
528--------
529
530The :class:`~argparse.FileType` class now accepts *encoding* and
531*errors* arguments, which are passed through to :func:`open`. (Contributed
532by Lucas Maystre in :issue:`11175`.)
533
534
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300535audioop
536-------
537
538Added support for 24-bit samples (:issue:`12866`).
539
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200540Added the :func:`~audioop.byteswap` function to convert big-endian samples
541to little-endian and vice versa (:issue:`19641`).
542
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300543
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000544base64
545------
546
547The encoding and decoding functions in :mod:`base64` now accept any
548:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100549:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000550
551
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200552colorsys
553--------
554
555The number of digits in the coefficients for the RGB --- YIQ conversions have
556been expanded so that they match the FCC NTSC versions. The change in
557results should be less than 1% and may better match results found elsewhere.
R David Murray45e732d2014-02-03 01:33:39 -0500558(Contributed by Brian Landers and Serhiy Storchaka in :issue:`14323`.)
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200559
R David Murray8e37d5d2013-04-13 14:49:48 -0400560
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000561contextlib
562----------
563
Nick Coghlan240f86d2013-10-17 23:40:57 +1000564The new :class:`contextlib.suppress` context manager helps to clarify the
565intent of code that deliberately suppresses exceptions from a single
566statement. (Contributed by Raymond Hettinger in :issue:`15806` and
567Zero Piraeus in :issue:`19266`)
568
Victor Stinner6633c392013-10-21 13:27:11 +0200569The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000570for utility scripts to handle inflexible APIs that don't provide any
571options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000572other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
573this context manager is also useful for checking expected output from
574command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
575
576The :mod:`contextlib` documentation has also been updated to include a
577:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
578differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000579
580
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000581dis
582---
583
R David Murray0bce6e72014-01-07 14:30:17 -0500584Functions :func:`~dis.show_code`, :func:`~dis.dis`, :func:`~dis.distb`, and
585:func:`~dis.disassemble` now accept a keyword-only *file* argument that
586controls where they write their output.
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000587
R David Murray0bce6e72014-01-07 14:30:17 -0500588The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
589that provides object oriented access to the details of each individual bytecode
590operation.
591
592A new method, :func:`~dis.get_instructions`, provides an iterator that emits
593the Instruction stream for a given piece of Python code. Thus it is now
594possible to write a program that inspects and manipulates a bytecode
595object in ways different from those provided by the :mod:`~dis` module
596itself. For example::
597
598 >>> import dis
599 >>> for instr in dis.get_instructions(lambda x: x + 1):
600 ... print(instr.opname)
601 LOAD_FAST
602 LOAD_CONST
603 BINARY_ADD
604 RETURN_VALUE
605
606The various display tools in the :mod:`dis` module have been rewritten to use
607these new components.
608
609In addition, a new application-friendly class :class:`~dis.Bytecode` provides
610an object-oriented API for inspecting bytecode in both in human-readable form
611and for iterating over instructions. The :class:`~dis.Bytecode` constructor
612takes the same arguments that :func:`~dis.get_instruction` does (plus an
613optional *current_offset*), and the resulting object can be iterated to produce
614:class:`~dis.Instruction` objects. But it also has a :mod:`~dis.Bytecode.dis`
615method, equivalent to calling :mod:`~dis.dis` on the constructor argument, but
616returned as a multi-line string::
617
618 >>> bytecode = dis.Bytecode(lambda x: x +1, current_offset=3)
619 >>> for instr in bytecode:
620 ... print('{} ({})'.format(instr.opname, instr.opcode))
621 LOAD_FAST (124)
622 LOAD_CONST (100)
623 BINARY_ADD (23)
624 RETURN_VALUE (83)
625 >>> bytecode.dis().splitlines() # doctest: +NORMALIZE_WHITESPACE
626 [' 1 0 LOAD_FAST 0 (x)',
627 ' --> 3 LOAD_CONST 1 (1)',
628 ' 6 BINARY_ADD',
629 ' 7 RETURN_VALUE']
630
631:class:`~dis.Bytecode` also has a class method,
632:meth:`~dis.Bytecode.from_traceback`, that provides the ability to manipulate a
633traceback (that is, ``print(Bytecode.from_traceback(tb).dis())`` is equivalent
634to ``distb(tb)``).
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000635
Nick Coghlan50c48b82013-11-23 00:57:00 +1000636(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
637and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000638
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200639
R David Murray5a9d7062012-11-21 15:09:21 -0500640doctest
641-------
642
R David Murray473f45b2013-12-27 17:01:16 -0500643A new :ref:`option flag <doctest-options>`, :data:`~doctest.FAIL_FAST`, halts
644test running as soon as the first failure is detected. (Contributed by R.
645David Murray and Daniel Urban in :issue:`16522`.)
R David Murray5707d502013-06-23 14:24:13 -0400646
R David Murray473f45b2013-12-27 17:01:16 -0500647The :mod:`doctest` command line interface now uses :mod:`argparse`, and has two
648new options, ``-o`` and ``-f``. ``-o`` allows :ref:`doctest options
649<doctest-options>` to be specified on the command line, and ``-f`` is a
650shorthand for ``-o FAIL_FAST`` (to parallel the similar option supported by the
651:mod:`unittest` CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200652
R David Murray8e37d5d2013-04-13 14:49:48 -0400653
R David Murraybb17d2b2013-08-09 16:15:28 -0400654email
655-----
656
657:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
658override the default policy of the message when generating a string
659representation of it. This means that ``as_string`` can now be used in more
660circumstances, instead of having to create and use a :mod:`~email.generator` in
661order to pass formatting parameters to its ``flatten`` method.
662
663New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
664representation of the message in a fashion similar to how ``as_string``
665produces a string representation. It does not accept the *maxheaderlen*
666argument, but does accept the *unixfrom* and *policy* arguments. The
667:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
668calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
669result: a bytes object containing the fully formatted message.
670
671(Contributed by R. David Murray in :issue:`18600`.)
672
R David Murray26b80cfd2013-12-20 17:26:52 -0500673.. _whatsnew_email_contentmanager:
674
R David Murray3da240f2013-10-16 22:48:40 -0400675A pair of new subclasses of :class:`~email.message.Message` have been added,
676along with a new sub-module, :mod:`~email.contentmanager`. All documentation
677is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000678:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400679number of new methods that make extracting content from and inserting content
680into email messages much easier. See the :mod:`~email.contentmanager`
681documentation for details.
682
683These API additions complete the bulk of the work that was planned as part of
684the email6 project. The currently provisional API is scheduled to become final
685in Python 3.5 (possibly with a few minor additions in the area of error
686handling).
687
688(Contributed by R. David Murray in :issue:`18891`.)
689
R David Murraybb17d2b2013-08-09 16:15:28 -0400690
R David Murray4885f492014-02-02 11:11:01 -0500691filecmp
692-------
693
694A new :func:`~filecmp.clear_cache` function provides the ability to clear the
695:mod:`filecmp` comparison cache, which uses :func:`os.stat` information to
696determine if the file has changed since the last compare. This can be used,
697for example, if the file might have been changed and re-checked in less time
698than the resolution of a particular filesystem's file modification time field.
699(Contributed by Mark Levitt in :issue:`18149`.)
700
701
Victor Stinner854ffcb2013-06-21 00:36:30 +0200702functools
703---------
704
Andrew Kuchlingfe0f0b02014-01-31 12:17:53 -0500705The new :func:`~functools.partialmethod` descriptor brings partial argument
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000706application to descriptors, just as :func:`~functools.partial` provides
707for normal callables. The new descriptor also makes it easier to get
708arbitrary callables (including :func:`~functools.partial` instances)
709to behave like normal instance methods when included in a class definition.
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000710(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
711
R David Murray0a102162013-12-20 15:00:54 -0500712.. _whatsnew-singledispatch:
713
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000714The new :func:`~functools.singledispatch` decorator brings support for
715single-dispatch generic functions to the Python standard library. Where
716object oriented programming focuses on grouping multiple operations on a
717common set of data into a class, a generic function focuses on grouping
718multiple implementations of an operation that allows it to work with
719*different* kinds of data.
720
721.. seealso::
722
R David Murray061efb12013-12-24 12:35:59 -0500723 :pep:`443` -- Single-dispatch generic functions
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000724 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200725
R David Murrayd2653812013-12-27 14:06:15 -0500726A pure-python version of the :func:`~functools.partial` function is now in the
727stdlib; in CPython it is overridden by the C accelerated version, but it is
728available for other implementations to use. (Contributed by Brian Thorne in
729:issue:`12428`.)
730
Nick Coghlane8c45d62013-07-28 20:00:01 +1000731
R David Murray0e814632013-12-26 15:11:28 -0500732gc
733--
734
R David Murraya101bdb2014-01-06 16:32:05 -0500735New function :func:`~gc.get_stats` returns a list of three per-generation
736dictionaries containing the collections statistics since interpreter startup.
737(Contributed by Antoine Pitrou in :issue:`16351`.)
R David Murray0e814632013-12-26 15:11:28 -0500738
739
Christian Heimese92ef132013-10-13 00:52:43 +0200740hashlib
741-------
742
743New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200744(Contributed by Christian Heimes in :issue:`18582`)
745
746
R David Murraya56d4e82014-02-02 12:50:48 -0500747hmac
748----
749
750:mod:`hmac` now accepts ``bytearray`` as well as ``bytes`` for the *key*
751argument to the :func:`~hmac.new` function, and the *msg* parameter to both the
752:func:`~hmac.new` function and the :meth:`~hmac.HMAC.update` method now
753accepts any type supported by the :mod:`hashlib` module. (Contributed
754by Jonas Borgström in :issue:`18240`.)
755
756
Ezio Melotti250a06c2013-11-25 06:18:47 +0200757html
758----
759
760Added a new :func:`html.unescape` function that converts HTML5 character
761references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200762(Contributed by Ezio Melotti in :issue:`2927`)
763
764Added a new *convert_charrefs* keyword argument to
765:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
766all character references. For backward-compatibility, its value defaults
767to ``False``, but it will change to ``True`` in future versions, so you
768are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200769(Contributed by Ezio Melotti in :issue:`13633`)
770
771The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200772(Contributed by Ezio Melotti in :issue:`15114`)
773
774
R David Murraya475a8d2014-01-03 13:03:00 -0500775http
776----
777
778:meth:`~http.server.BaseHTTPRequestHandler.send_error` now accepts an
Zachary Ware335957e2014-01-13 16:08:54 -0600779optional additional *explain* parameter which can be used to provide an
R David Murraya475a8d2014-01-03 13:03:00 -0500780extended error description, overriding the hardcoded default if there is one.
781This extended error description will be formatted using the
782:attr:`~http.server.HTTP.error_message_format` attribute and sent as the body
783of the error response. (Contributed by Karl Cow in :issue:`12921`.)
784
785
R David Murrayd2653812013-12-27 14:06:15 -0500786importlib
787---------
788
789The :class:`~importlib.abc.InspectLoader` ABC defines a new method,
790:meth:`~importlib.abc.InspectLoader.source_to_code` that accepts source
791data and a path and returns a code object. The default implementation
792is equivalent to ``compile(data, path, 'exec', dont_inherit=True)``.
793(Contributed by Eric Snow and Brett Cannon in :issue:`15627`.)
794
R David Murray0ae7ae12014-01-08 18:16:02 -0500795:class:`~importlib.abc.InspectLoader` also now has a default implementation
796for the :meth:`~importlib.abc.InspectLoader.get_code` method. However,
797it will normally be desirable to override the default implementation
798for performance reasons. (Contributed by Brett Cannon in :issue:`18072`.)
799
R David Murray70e04f52014-02-02 10:50:17 -0500800The :func:`~importlib.reload` function has been moved from :mod:`imp` to
801:mod:`importlib` as part of the :mod:`imp` module deprecation. (Contributed by
802Berker Peksag in :issue:`18193`.)
R David Murray8c561b52014-02-01 12:27:07 -0500803
R David Murray900aeb72014-02-02 11:32:31 -0500804:mod:`importlib.util` now has a :data:`~importlib.util.MAGIC_NUMBER` attribute
805providing access to the bytecode version number. This replaces the
806:func:`~imp.get_magic` function in the deprecated :mod:`imp` module.
807(Contributed by Brett Cannon in :issue:`18192`.)
808
809New :mod:`importlib.util` functions :func:`~importlib.util.cache_from_source`
810and :func:`~importlib.util.source_from_cache` replace the same-named functions
811in the deprecated :mod:`imp` module. (Contributed by Brett Cannon in
812:issue:`18194`.)
813
R David Murray5147e002014-02-02 12:19:57 -0500814The :mod:`importlib` bootstrap :class:`.NamespaceLoader` now conforms to
815the :class:`.InspectLoader` ABC, which means that ``runpy`` and
816``python -m`` can now be used with namespace packages. (Contributed
817by Brett Cannon in :issue:`18058`.)
818
R David Murraya56d4e82014-02-02 12:50:48 -0500819:mod:`importlib.util` has a new function :func:`~importlib.util.decode_source`
820that decodes source from bytes using universal newline processing. This is
821useful for implementing :meth:`.InspectLoader.get_source` methods.
822
R David Murrayd2653812013-12-27 14:06:15 -0500823
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200824inspect
825-------
826
Nick Coghlan367df122013-10-27 01:57:34 +1000827The inspect module now offers a basic :ref:`command line interface
828<inspect-module-cli>` to quickly display source code and other
829information for modules, classes and functions. (Contributed by Claudiu Popa
830and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000831
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200832:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
833created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000834``__wrapped__`` attribute on a wrapper function). (Contributed by
835Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
836
837As part of the implementation of the new :mod:`enum` module, the
838:mod:`inspect` module now has substantially better support for custom
839``__dir__`` methods and dynamic class attributes provided through
840metaclasses (Contributed by Ethan Furman in :issue:`18929` and
841:issue:`19030`)
842
Yury Selivanovd82eddc2014-01-29 11:24:39 -0500843:func:`~inspect.getfullargspec` and :func:`~inspect.getargspec`
844now use the :func:`~inspect.signature` API. This allows them to
845support much broader range of functions, including some builtins and
846callables that follow ``__signature__`` protocol. It is still
847recommended to update your code to use :func:`~inspect.signature`
848directly. (Contributed by Yury Selivanov in :issue:`17481`)
849
Yury Selivanov63da7c72014-01-31 14:48:37 -0500850:func:`~inspect.signature` now supports duck types of CPython functions,
851which adds support for functions compiled with Cython. (Contributed
852by Stefan Behnel and Yury Selivanov in :issue:`17159`)
853
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200854
Nick Coghlan96bb4372014-02-09 09:18:26 +1000855ipaddress
856---------
857
858:mod:`ipaddress` was added to the standard library in Python 3.3 as a
859:term:`provisional API`. With the release of Python 3.4, this qualification
860has been removed: :mod:`ipaddress` is now considered a stable API, covered
861by the normal standard library requirements to maintain backwards
862compatibility.
863
864
R David Murray9cf617b2014-01-04 18:55:01 -0500865logging
866-------
867
868The :class:`~logging.handlers.TimedRotatingFileHandler` has a new *atTime*
869parameter that can be used to specify the time of day when rollover should
870happen. (Contributed by Ronald Oussoren in :issue:`9556`.)
871
872
R David Murray8f7664a2013-12-22 20:40:11 -0500873.. _whatsnew-marshal-3:
874
875marshal
876-------
877
878The default :mod:`marshal` version has been bumped to 3. The code implementing
879the new version restores the Python2 behavior of recording only one copy of
880interned strings and preserving the interning on deserialization, and extends
881this "one copy" ability to any object type (including handling recursive
882references). This reduces both the size of ``.pyc`` files and the amount of
883memory a module occupies in memory when it is loaded from a ``.pyc`` (or
884``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`.)
885
886
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200887mmap
888----
889
890mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200891(Contributed by Valerie Lambert in :issue:`4885`.)
892
893
R David Murray33ef1ae2013-12-31 16:04:50 -0500894mock
895----
896
897:mod:`~unittest.mock` objects now inspect their specification signatures when
898matching calls, which means an argument can now be matched by either position
899or name, instead of only by position. (Contributed by Antoine Pitrou in
900:issue:`17015`.)
901
R David Murray57fcf762014-01-03 23:31:54 -0500902:func:`~mock.mock_open` objects now have ``readline`` and ``readlines``
903methods. (Contributed by Toshio Kuratomi in :issue:`17467`.)
904
R David Murray33ef1ae2013-12-31 16:04:50 -0500905
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100906multiprocessing
907---------------
908
R David Murrayac186222013-12-20 17:23:57 -0500909.. _whatsnew-multiprocessing-no-fork:
910
911On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
912(``spawn`` and ``forkserver``) have been added for starting processes using
913:mod:`multiprocessing`. These make the mixing of processes with threads more
914robust, and the ``spawn`` method matches the semantics that multiprocessing has
915always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100916
917Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500918will no longer inherit unneeded handles/file descriptors from their parents
919(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100920
Nick Coghlan9a767352013-12-17 22:17:26 +1000921:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
922``-m`` switch) to initialise ``__main__`` appropriately in child processes
923when using the ``spawn`` or ``forkserver`` start methods. This resolves some
924edge cases where combining multiprocessing, the ``-m`` command line switch
925and explicit relative imports could cause obscure failures in child
926processes. (Contributed by Nick Coghlan in :issue:`19946`)
927
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100928
R David Murray98358272014-01-05 20:52:06 -0500929operator
930--------
931
932There is now a pure-python version of the :mod:`operator` module available for
933reference and for use by alternate implementations of Python. (Contributed by
934Zachary Ware in :issue:`16694`.)
935
936
Victor Stinnerdaf45552013-08-28 00:53:59 +0200937os
938--
939
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200940New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200941descriptors or a Windows handle:
942
943* :func:`os.get_inheritable`, :func:`os.set_inheritable`
944* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
945
R David Murray66bf12a2014-01-08 17:21:22 -0500946The :mod:`os` module now provides a :func:`~os.cpu_count` function, analogous to
947the :func:`multiprocessing.cpu_count` function (which is now implemented in
948terms of the new :mod:`os` function). (Contributed by Trent Nelson, Yogesh
949Chaudhari, Victor Stinner, and Charles-François Natali in :issue:`17914`.)
950
Victor Stinnerdaf45552013-08-28 00:53:59 +0200951
R David Murray78d692f2013-10-10 17:23:26 -0400952pdb
953---
954
955The ``print`` command has been removed from :mod:`pdb`, restoring access to the
956``print`` function.
957
958Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
959entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
960mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
961prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
962command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
963``print`` function, making it inaccessible at the ``pdb`` prompt.
964
965(Contributed by Connor Osborn in :issue:`18764`.)
966
967
R David Murray809487e2013-12-22 20:49:40 -0500968.. _whatsnew-protocol-4:
969
R David Murray5ea95242013-12-24 15:59:57 -0500970pickle
R David Murray809487e2013-12-22 20:49:40 -0500971------
972
R David Murray809487e2013-12-22 20:49:40 -0500973:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
974protocol 4. This new protocol addresses a number of issues that were present
975in previous protocols, such as the serialization of nested classes, very large
976strings and containers, or classes whose :meth:`__new__` method takes
977keyword-only arguments. It also provides some efficiency improvements.
978
979.. seealso::
980
R David Murray061efb12013-12-24 12:35:59 -0500981 :pep:`3154` -- Pickle protocol 4
R David Murray809487e2013-12-22 20:49:40 -0500982 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
983
984
Nick Coghlanaa029da2014-02-09 10:10:24 +1000985plistlib
986--------
987
988:mod:`plistlib` now supports binary plist files, and offers the common
989``load``/``loads``/``dump``/``dumps`` API pattern for serialization formats
990(Contributed by Ronald Oussoren and others in :issue:`14455`).
991
992
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200993poplib
994------
995
R David Murray473f45b2013-12-27 17:01:16 -0500996Two new methods have been added to :mod:`poplib`: :meth:`~poplib.POP3.capa`,
997which returns the list of capabilities advertised by the POP server, and
998:meth:`~poplib.POP3.stls`, which switches a clear-text POP3 session into an
999encrypted POP3 session if the POP server supports it. (Contributed by Lorenzo
1000Catucci in :issue:`4473`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001001
1002
Serhiy Storchaka7c411a42013-10-02 11:56:18 +03001003pprint
1004------
1005
Christian Heimese1bfd3e2013-10-21 12:32:21 +02001006The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +03001007sequences (:issue:`19132`).
1008
R David Murrayb231b2b2014-01-04 17:11:23 -05001009Long strings are now wrapped using Python's normal line continuation
1010syntax (Contributed by Antoine Pitrou in :issue:`17150`.)
1011
Serhiy Storchaka7c411a42013-10-02 11:56:18 +03001012
R David Murray6e390152013-12-24 22:28:04 -05001013pty
1014---
1015
1016:func:`pty.spawn` now returns the status value from :func:`os.waitpid` on
1017the child process, instead of ``None``. (Contributed by Gregory P. Smith.)
1018
1019
Nick Coghlan367df122013-10-27 01:57:34 +10001020pydoc
1021-----
1022
1023While significant changes have not been made to :mod:`pydoc` directly,
1024its handling of custom ``__dir__`` methods and various descriptor
1025behaviours has been improved substantially by the underlying changes in
1026the :mod:`inspect` module.
1027
1028
Serhiy Storchaka32eddc12013-11-23 23:20:30 +02001029re
1030--
1031
1032Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
1033which anchor the pattern at both ends of the string to match.
1034(Contributed by Matthew Barnett in :issue:`16203`.)
1035
Ezio Melottidd7e2912013-11-25 23:20:20 +02001036The repr of :ref:`regex objects <re-objects>` now includes the pattern
1037and the flags; the repr of :ref:`match objects <match-objects>` now
1038includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +02001039(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
1040
1041
Christian Heimesb7bd5df2013-10-22 11:21:54 +02001042resource
1043--------
1044
1045New :func:`resource.prlimit` function and Linux specific constants.
1046(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
1047
R David Murray575fb312013-12-25 23:21:03 -05001048
R David Murray2bc930f2013-12-31 11:17:21 -05001049select
1050------
1051
1052:class:`~select.epoll` objects now support the context management protocol.
1053When used in a :keyword:`with` statement, the :meth:`~select.epoll.close`
1054method will be called automatically at the end of the block. (Contributed
1055by Serhiy Storchaka in :issue:`16488`.)
1056
1057
R David Murray575fb312013-12-25 23:21:03 -05001058shelve
1059------
1060
1061:class:`~shelve.Shelf` instances may now be used in :keyword:`with` statements,
1062and will be automatically closed at the end of the :keyword:`with` block.
1063(Contributed by Filip Gruszczyński in :issue:`13896`.)
1064
1065
R David Murrayf1e4fdc2014-01-21 18:30:42 -05001066smtpd
1067-----
1068
1069The :class:`~smtpd.SMTPServer` and :class:`~smtpd.SMTPChannel` classes now
1070accept a *map* keyword argument, which if specified is passed in to
1071:class:`asynchat.async_chat` as its *map* argument. This allows an application
1072to avoid affecting the global socket map. (Contributed by Vinay Sajip in
1073:issue:`11959`.)
1074
1075
R David Murray8e37d5d2013-04-13 14:49:48 -04001076smtplib
1077-------
1078
R David Murray8a345962013-04-14 06:46:35 -04001079:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -04001080both socket level errors and SMTP protocol level errors to be caught in one
1081try/except statement by code that only cares whether or not an error occurred.
1082(:issue:`2118`).
1083
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001084
Victor Stinnerdaf45552013-08-28 00:53:59 +02001085socket
1086------
1087
R David Murray33ef1ae2013-12-31 16:04:50 -05001088The socket module now supports the :data:`~socket.CAN_BCM` protocol on
1089platforms that support it. (Contributed by Brian Thorne in :issue:`15359`.)
1090
Georg Brandl5642ff92013-09-15 10:37:57 +02001091Socket objects have new methods to get or set their :ref:`inheritable flag
R David Murray33ef1ae2013-12-31 16:04:50 -05001092<fd_inheritance>`, :meth:`~socket.socket.get_inheritable` and
1093:meth:`~socket.socket.set_inheritable`.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001094
R David Murray33ef1ae2013-12-31 16:04:50 -05001095The ``socket.AF_*`` and ``socket.SOCK_*`` constants are now enumeration values
1096using the new :mod:`enum` module. This allows meaningful names to be printed
1097during debugging, instead of integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +02001098
R David Murray66bf12a2014-01-08 17:21:22 -05001099The :data:`~socket.AF_LINK` constant is now available on BSD and OSX.
1100
R David Murray8b2d6822013-12-31 15:06:05 -05001101
R David Murray9025f1c2014-01-02 13:44:18 -05001102sqlite3
1103-------
1104
1105A new boolean parameter, *uri*, to the :func:`~sqlite3.connect` function can
1106be used to indicate that the *database* parameter is a ``uri`` (see
1107the `SQLite URI documentation <http://www.sqlite.org/uri.html>`_).
1108(Contributed by poq in :issue:`13773`.)
1109
1110
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001111ssl
1112---
1113
R David Murray748bad22013-12-20 17:08:39 -05001114.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001115
R David Murray748bad22013-12-20 17:08:39 -05001116:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
1117TLSv1.2 support) have been added; support for these protocols is only available if
1118Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
1119Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001120
R David Murrayf1e4fdc2014-01-21 18:30:42 -05001121New function :func:`~ssl.get_default_verify_paths` returns
1122a named tuple of the paths and environment variables that the
1123:meth:`~ssl.SSLContext.set_default_verify_paths` method uses to set
1124OpenSSL's default ``cafile`` and ``capath``. This can be an aid in
1125debugging default verification issues. (Contributed by Christian Heimes
1126in :issue:`18143`.)
1127
1128:class:`~ssl.SSLContext` has a new method,
1129:meth:`~ssl.SSLContext.cert_store_stats`, that reports the number of loaded
1130``X.509`` certs, ``X.509 CA`` certs, and certificate revocation lists (``crl``\
1131s), as well as a :meth:`~ssl.SSLContext.get_ca_certs` method that returns a
1132list of the loaded ``CA`` certificates. (Contributed by Christian Heimes in
1133and :issue:`18147`.)
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001134
R David Murray8c561b52014-02-01 12:27:07 -05001135Two new windows-only functions, :func:`~ssl.enum_certificates` and
1136:func:`~ssl.enum_crls` provide the ability to retrieve certificates,
1137certificate information, and CRLs from the Windows cert store. (Contributed
1138by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001139
1140Support for server-side SNI using the new
1141:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001142(Contributed by Daniel Black in :issue:`8109`.)
1143
1144
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001145stat
1146----
1147
1148The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
1149implementation is required as most of the values aren't standardized and
1150platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
1151
1152The module supports new file types: door, event port and whiteout.
1153
1154
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001155struct
1156------
1157
R David Murray98358272014-01-05 20:52:06 -05001158:mod:`struct` now supports the streamed unpacking of a buffer containing
1159repeated instances of a given format of data. Both a module level
1160:mod:`~struct.iter_unpack` function and a :meth:`struct.Struct.iter_unpack`
1161method on compiled formats have been added. (Contributed by Antoine Pitrou in
1162:issue:`17804`.)
1163
1164
1165subprocess
1166----------
1167
1168:func:`~subprocess.check_output` now accepts an *input* argument that can
1169be used to provide the contents of ``stdin`` for the command that is run.
1170(Contributed by Zack Weinberg in :issue:`16624`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001171
1172
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001173sunau
1174-----
1175
1176The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
1177plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
1178
Serhiy Storchaka34d20132013-09-05 17:01:53 +03001179:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
1180
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001181
R David Murrayd17aba72013-12-24 14:46:23 -05001182sys
1183---
1184
1185New function :func:`sys.getallocatedblocks` returns the current number of
1186blocks allocated by the interpreter (in CPython with the default
1187``--with-pymalloc`` setting, this is allocations made through the
1188:c:func:`PyObject_Malloc` API). This can be useful for tracking memory leaks,
1189especially if automated via a test suite. (Contributed by Antoine Pitrou
1190in :issue:`13390`.)
1191
1192
Andrew Kuchling173a1572013-09-15 18:15:56 -04001193traceback
1194---------
1195
1196A new :func:`traceback.clear_frames` function takes a traceback object
1197and clears the local variables in all of the frames it references,
1198reducing the amount of memory consumed (:issue:`1565525`).
1199
1200
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001201urllib
1202------
1203
R David Murray473f45b2013-12-27 17:01:16 -05001204:mod:`urllib.request` now supports ``data:`` URLs via the
1205:class:`~urllib.request.DataHandler` class. (Contributed by Mathias Panzenböck
1206in :issue:`16423`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001207
1208
1209unittest
1210--------
1211
R David Murray57fcf762014-01-03 23:31:54 -05001212The :class:`~unittest.TestCase` class has a new method,
1213:meth:`~unittest.TestCase.subTest`, that produces a context manager whose
1214:keyword:`with` block becomes a "sub-test". This context manager allows a test
1215method to dynamically generate subtests by, say, calling the ``subTest``
1216context manager inside a loop. A single test method can thereby produce an
1217indefinite number of separately-identified and separately-counted tests, all of
1218which will run even if one or more of them fail. For example::
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001219
R David Murray57fcf762014-01-03 23:31:54 -05001220 class NumbersTest(unittest.TestCase):
1221 def test_even(self):
1222 for i in range(6):
1223 with self.subTest(i=1):
1224 self.assertEqual(i % 2, 0)
1225
1226will result in six subtests, each identified in the unittest verbose output
1227with a label consisting of the variable name ``i`` and a particular value for
1228that variable (``i=0``, ``i=1``, etc). See :ref:`subtests` for the full
1229version of this example. (Contributed by Antoine Pitrou in :issue:`16997`.)
1230
1231:func:`unittest.main` now accepts an iterable of test names for
R David Murray9025f1c2014-01-02 13:44:18 -05001232*defaultTest*, where previously it only accepted a single test name as a
1233string. (Contributed by Jyrki Pulliainen in :issue:`15132`.)
1234
R David Murray42fa1102014-01-03 13:03:36 -05001235If :class:`~unittest.SkipTest` is raised during test discovery (that is, at the
1236module level in the test file), it is now reported as a skip instead of an
1237error. (Contributed by Zach Ware in :issue:`16935`.)
1238
R David Murraydb085f52014-01-03 15:46:24 -05001239:meth:`~unittest.TestLoader.discover` now sorts the discovered files to provide
1240consistent test ordering. (Contributed by Martin Melin and Jeff Ramnani in
1241:issue:`16709`.)
1242
R David Murray8e37d5d2013-04-13 14:49:48 -04001243
R David Murray575fb312013-12-25 23:21:03 -05001244venv
1245----
1246
1247:mod:`venv` now includes activation scripts for the ``csh`` and ``fish``
1248shells (Contributed by Andrew Svetlov in :issue:`15417`.)
1249
1250
R David Murray671cd322013-04-10 12:31:43 -04001251wave
1252----
1253
1254The :meth:`~wave.getparams` method now returns a namedtuple rather than a
1255plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
1256
R David Murrayc91d5ee2013-07-31 13:46:08 -04001257:meth:`wave.open` now supports the context manager protocol. (Contributed
1258by Claudiu Popa in :issue:`17616`.)
1259
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001260
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001261weakref
1262-------
1263
1264New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001265methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001266
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001267New :class:`~weakref.finalize` class makes it possible to register a callback
1268to be invoked when an object is garbage collected, without needing to
1269carefully manage the lifecycle of the weak reference itself. (Contributed by
1270Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001271
R David Murraya101bdb2014-01-06 16:32:05 -05001272The callback, if any, associated with a :class:`~weakref.ref` is now
1273exposed via the :attr:`~weakref.ref.__callback__` attribute. (Contributed
1274by Mark Dickinson in :issue:`17643`.)
1275
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001276
1277xml.etree
1278---------
1279
R David Murray410d3202014-01-04 23:52:50 -05001280A new parser, :class:`~xml.etree.ElementTree.XMLPullParser`, allows a
1281non-blocking applications to parse XML documents. An example can be
1282seen at :ref:`elementtree-pull-parsing`. (Contributed by Antoine
1283Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001284
R David Murray575fb312013-12-25 23:21:03 -05001285The :mod:`xml.etree.ElementTree` :func:`~xml.etree.ElementTree.tostring` and
1286:func:`~xml.etree.ElementTree.tostringlist` functions, and the
1287:class:`~xml.etree.ElementTree.ElementTree`
1288:meth:`~xml.etree.ElementTree.ElementTree.write` method, now have a
1289*short_empty_elements* :ref:`keyword-only parameter <keyword-only_parameter>`
1290providing control over whether elements with no content are written in
1291abbreviated (``<tag />``) or expanded (``<tag></tag>``) form. (Contributed by
1292Ariel Poliak and Serhiy Storchaka in :issue:`14377`.)
1293
Christian Tismer59202e52013-10-21 03:59:23 +02001294
1295zipfile.PyZipfile
1296-----------------
1297
1298Add a filter function to ignore some packages (tests for instance),
1299:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +02001300(Contributed by Christian Tismer in :issue:`19274`.)
1301
1302
R David Murraye6082552014-01-03 16:15:45 -05001303
Nick Coghlan367df122013-10-27 01:57:34 +10001304CPython Implementation Changes
1305==============================
1306
1307
R David Murrayc16dfe12013-12-21 12:32:10 -05001308.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +10001309
R David Murraye7cf6782013-12-24 14:51:25 -05001310PEP 445: Customization of CPython Memory Allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001311---------------------------------------------------
1312
1313:pep:`445` adds new C level interfaces to customize memory allocation in
1314the CPython interpreter.
1315
1316.. seealso::
1317
R David Murray061efb12013-12-24 12:35:59 -05001318 :pep:`445` -- Add new APIs to customize Python memory allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001319 PEP written and implemented by Victor Stinner.
1320
1321
R David Murrayc16dfe12013-12-21 12:32:10 -05001322.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +10001323
R David Murraye7cf6782013-12-24 14:51:25 -05001324PEP 442: Safe Object Finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001325---------------------------------
1326
1327:pep:`442` removes the current limitations and quirks of object finalization
1328in CPython. With it, objects with :meth:`__del__` methods, as well as
1329generators with :keyword:`finally` clauses, can be finalized when they are
1330part of a reference cycle.
1331
1332As part of this change, module globals are no longer forcibly set to
1333:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -05001334on the normal operation of the cyclic garbage collector. This avoids a
1335whole class of interpreter-shutdown-time errors, usually involving
1336``__del__`` methods, that have plagued Python since the cyclic GC
1337was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +10001338
1339.. seealso::
1340
R David Murray061efb12013-12-24 12:35:59 -05001341 :pep:`442` -- Safe object finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001342 PEP written and implemented by Antoine Pitrou.
1343
1344
R David Murrayc16dfe12013-12-21 12:32:10 -05001345.. _whatsnew-pep-456:
1346
1347PEP 456: Secure and Interchangeable Hash Algorithm
1348--------------------------------------------------
1349
1350:pep:`456` follows up on earlier security fix work done on Python's hash
1351algorithm to address certain DOS attacks to which public facing APIs backed by
1352dictionary lookups may be subject. (See :issue:`14621` for the start of the
1353current round of improvements.) The PEP unifies CPython's hash code to make it
1354easier for a packager to substitute a different hash algorithm, and switches
1355Python's default implementation to a SipHash implementation on platforms that
1356have a 64 bit data type. Any performance differences in comparison with the
1357older FNV algorithm are trivial.
1358
1359The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
1360describe the hash algorithm in use by the currently executing binary. Otherwise,
1361the PEP does not alter any existing CPython APIs.
1362
1363
R David Murray6dd18302013-12-24 12:23:56 -05001364.. _whatsnew-pep-436:
1365
1366PEP 436: Argument Clinic
1367------------------------
1368
1369"Argument Clinic" (:pep:`436`) is now part of the CPython build process
1370and can be used to simplify the process of defining and maintaining
1371accurate signatures for builtins and standard library extension modules
1372implemented in C.
1373
Nick Coghlanaa029da2014-02-09 10:10:24 +10001374Some standard library extension modules have been converted to use Argument
1375Clinic in Python 3.4, and :mod:`inspect` has been updated accordingly.
1376
R David Murray6dd18302013-12-24 12:23:56 -05001377.. note::
1378 The Argument Clinic PEP is not fully up to date with the state of the
1379 implementation. This has been deemed acceptable by the release manager
1380 and core development team in this case, as Argument Clinic will not
1381 be made available as a public API for third party use in Python 3.4.
1382
1383.. seealso::
1384
R David Murray061efb12013-12-24 12:35:59 -05001385 :pep:`436` -- The Argument Clinic DSL
R David Murray6dd18302013-12-24 12:23:56 -05001386 PEP written and implemented by Larry Hastings.
1387
1388
R David Murraye7cf6782013-12-24 14:51:25 -05001389Other Build and C API Changes
Nick Coghlan367df122013-10-27 01:57:34 +10001390-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02001391
Nick Coghlanaa029da2014-02-09 10:10:24 +10001392* The new :c:func:`PyType_GetSlot` function has been added to the stable ABI,
1393 allowing retrieval of function pointers from named type slots when using
1394 the limited API. (Contributed by Martin von Löwis in :issue:`17162`)
1395
Nick Coghlan7d270ee2013-10-17 22:35:35 +10001396* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
1397 allows applications embedding the CPython interpreter to reliably force
1398 a particular encoding and error handler for the standard streams
1399 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +02001400
Nick Coghlan0acceb72013-10-20 13:22:21 +10001401* Most Python C APIs that don't mutate string arguments are now correctly
1402 marked as accepting ``const char *`` rather than ``char *`` (Contributed
1403 by Serhiy Storchaka in :issue:`1772673`).
1404
R David Murrayd91ba202013-12-24 12:13:44 -05001405* New shell version of ``python-config``; can be used even when a python
1406 interpreter is not available (for example, in cross compilation scenarios).
1407
Georg Brandlb80f5112012-09-30 09:11:58 +02001408
R David Murraye6082552014-01-03 16:15:45 -05001409
R David Murraye7cf6782013-12-24 14:51:25 -05001410Other Improvements
R David Murraybcaaecf2013-12-23 21:23:36 -05001411==================
1412
1413* Tab-completion is now enabled by default in the interactive interpreter.
1414 (Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
1415
1416* Invoking the Python interpreter with ``--version`` now outputs the version to
1417 standard output instead of standard error (:issue:`18338`). Similar changes
1418 were made to :mod:`argparse` (:issue:`18920`) and other modules that have
1419 script-like invocation capabilities (:issue:`18922`).
1420
R David Murray72420ff2013-12-24 10:46:44 -05001421* The CPython Windows installer now adds ``.py`` to the :envvar:`PATHEXT`
1422 variable when extensions are registered, allowing users to run a python
1423 script at the windows command prompt by just typing its name without the
1424 ``.py`` extension. (Contributed by Paul Moore in :issue:`18569`.)
1425
R David Murrayd17aba72013-12-24 14:46:23 -05001426* A new ``make`` target `coverage-report
1427 <http://docs.python.org/devguide/coverage.html#measuring-coverage-of-c-code-with-gcov-and-lcov>`_
1428 will build python, run the test suite, and generate an HTML coverage report
1429 for the C codebase using ``gcov`` and `lcov
1430 <http://ltp.sourceforge.net/coverage/lcov.php>`_.
1431
1432* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now
1433 also checks for memory allocation leaks, using
1434 :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in
1435 :issue:`13390`).
1436
R David Murray5147e002014-02-02 12:19:57 -05001437* ``python -m`` now works with namespace packages.
1438
R David Murraya56d4e82014-02-02 12:50:48 -05001439* The :mod:`stat` module is now implemented in C, which means it gets the
1440 values for its constants from the C header files, instead of having the
1441 values hard-coded in the python module as was previously the case.
1442
R David Murraybcaaecf2013-12-23 21:23:36 -05001443
R David Murraye6082552014-01-03 16:15:45 -05001444
R David Murrayd74d09a2013-12-24 15:33:02 -05001445Significant Optimizations
1446=========================
R David Murraybcaaecf2013-12-23 21:23:36 -05001447
R David Murray4908f4a2014-01-04 18:07:20 -05001448* The UTF-32 decoder is now 3x to 4x faster. (Contributed by Serhiy Storchaka
1449 in :issue:`14625`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001450
1451* The cost of hash collisions for sets is now reduced. Each hash table
1452 probe now checks a series of consecutive, adjacent key/hash pairs before
1453 continuing to make random probes through the hash table. This exploits
1454 cache locality to make collision resolution less expensive.
R David Murraybcaaecf2013-12-23 21:23:36 -05001455 The collision resolution scheme can be described as a hybrid of linear
1456 probing and open addressing. The number of additional linear probes
1457 defaults to nine. This can be changed at compile-time by defining
1458 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
R David Murray59171722014-01-03 15:52:22 -05001459 linear probing entirely. (Contributed by Raymond Hettinger in
1460 :issue:`18771`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001461
1462* The interpreter starts about 30% faster. A couple of measures lead to the
1463 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
1464 :mod:`collections` and :mod:`locale` modules and their dependencies are no
1465 longer imported by default. The marshal module has been improved to load
R David Murray59171722014-01-03 15:52:22 -05001466 compiled Python code faster. (Contributed by Antoine Pitrou, Christian
1467 Heimes and Victor Stinner in :issue:`19219`, :issue:`19218`, :issue:`19209`,
1468 :issue:`19205` and :issue:`9548`)
R David Murraybcaaecf2013-12-23 21:23:36 -05001469
R David Murray6e390152013-12-24 22:28:04 -05001470* :class:`bz2.BZ2File` is now as fast or faster than the Python2 version for
1471 most cases. :class:`lzma.LZMAFile` has also been optimized. (Contributed by
1472 Serhiy Storchaka and Nadeem Vawda in :issue:`16034`.)
1473
R David Murray8b2d6822013-12-31 15:06:05 -05001474* :func:`random.getrandbits` is 20%-40% faster for small integers (the most
1475 common use case). (Contributed by Serhiy Storchaka in :issue:`16674`).
1476
R David Murrayb231b2b2014-01-04 17:11:23 -05001477* By taking advantage of the new storage format for strings, pickling of
1478 strings is now significantly faster. (Contributed by Victor Stinner and
1479 Antoine Pitrou in :issue:`15596`.)
1480
R David Murray66bf12a2014-01-08 17:21:22 -05001481* A performance issue in :meth:`io.FileIO.readall` has been solved. This
1482 particularly affects Windows, and significantly speeds up the case of piping
1483 significant amounts of data through :mod:`subprocess`. (Contributed
1484 by Richard Oudkerk in :issue:`15758`.)
1485
R David Murraybf0ab832014-02-03 01:14:03 -05001486* :func:`html.escape` is now 10x faster. (Contributed by Matt Bryant in
1487 :issue:`18020`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001488
R David Murraye6082552014-01-03 16:15:45 -05001489
Georg Brandlb80f5112012-09-30 09:11:58 +02001490Deprecated
1491==========
1492
R David Murrayd74d09a2013-12-24 15:33:02 -05001493This section covers various APIs and other features that have been deprecated
1494in Python 3.4, and will be removed in Python 3.5 or later. In most (but not
1495all) cases, using the deprecated APIs will produce a :exc:`DeprecationWarning`
1496when the interpreter is run with deprecation warnings enabled (for example, by
1497using ``-Wd``).
1498
Georg Brandlb80f5112012-09-30 09:11:58 +02001499
R David Murraye7cf6782013-12-24 14:51:25 -05001500Deprecated Python Modules, Functions and Methods
Georg Brandlb80f5112012-09-30 09:11:58 +02001501------------------------------------------------
1502
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001503* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001504 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1505 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001506
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001507* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1508 :func:`importlib.util.module_to_load` and
1509 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1510 to more easily customize module loading.
1511
Brett Cannone4f41de2013-06-16 13:13:40 -04001512* The :mod:`imp` module is pending deprecation. To keep compatibility with
1513 Python 2/3 code bases, the module's removal is currently not scheduled.
1514
Brett Cannon1448ecf2013-10-04 11:38:59 -04001515* The :mod:`formatter` module is pending deprecation and is slated for removal
1516 in Python 3.6.
1517
Christian Heimes634919a2013-11-20 17:23:06 +01001518* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1519 require an explicit digest name or constructor as *digestmod* argument.
1520
R David Murray9025f1c2014-01-02 13:44:18 -05001521* The internal ``Netrc`` class in the :mod:`ftplib` module has been documented
1522 as deprecated in its docstring for quite some time. It now emits a
1523 :exc:`DeprecationWarning` and will be removed completely in Python 3.5.
1524
Georg Brandlb80f5112012-09-30 09:11:58 +02001525
R David Murraye7cf6782013-12-24 14:51:25 -05001526Deprecated Functions and Types in the C API
Georg Brandlb80f5112012-09-30 09:11:58 +02001527-------------------------------------------
1528
R David Murrayd74d09a2013-12-24 15:33:02 -05001529XXX: None so far
Georg Brandlb80f5112012-09-30 09:11:58 +02001530
1531
R David Murraye7cf6782013-12-24 14:51:25 -05001532Deprecated Features
Georg Brandlb80f5112012-09-30 09:11:58 +02001533-------------------
1534
R David Murray5ea95242013-12-24 15:59:57 -05001535* Running :ref:`idle` with the ``-n`` flag (no subprocess) is deprecated.
1536 However, the feature will not be removed until :issue:`18823` is resolved.
1537
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001538* The site module adding a "site-python" directory to sys.path, if it
1539 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001540
1541
R David Murray59171722014-01-03 15:52:22 -05001542
R David Murray72420ff2013-12-24 10:46:44 -05001543Removed
1544=======
1545
R David Murray59171722014-01-03 15:52:22 -05001546
1547Operating Systems No Longer Supported
1548-------------------------------------
1549
1550Support for the following operating systems has been removed from the source
1551and build tools:
1552
1553* OS/2 (:issue:`16135`).
1554* Windows 2000 (changeset e52df05b496a).
1555* VMS (:issue:`16136`).
1556
1557
1558API and Feature Removals
1559------------------------
1560
R David Murrayd2653812013-12-27 14:06:15 -05001561The following obsolete and previously deprecated APIs and features have been
R David Murray59171722014-01-03 15:52:22 -05001562removed:
R David Murray076dead2013-12-24 14:59:50 -05001563
R David Murray72420ff2013-12-24 10:46:44 -05001564* The unmaintained ``Misc/TextMate`` and ``Misc/vim`` directories have been
R David Murrayd91ba202013-12-24 12:13:44 -05001565 removed (see the `devguide <http://docs.python.org/devguide>`_
R David Murray00569362014-01-03 13:04:25 -05001566 for suggestions on what to use instead).
R David Murray72420ff2013-12-24 10:46:44 -05001567
R David Murrayd17aba72013-12-24 14:46:23 -05001568* The ``SO`` makefile macro is removed (it was replaced by the
1569 ``SHLIB_SUFFIX`` and ``EXT_SUFFIX`` macros) (:issue:`16754`).
1570
R David Murrayd74d09a2013-12-24 15:33:02 -05001571* The ``PyThreadState.tick_counter`` field has been removed; its value has
1572 been meaningless since Python 3.2, when the "new GIL" was introduced.
1573
R David Murrayd2653812013-12-27 14:06:15 -05001574* ``PyLoader`` and ``PyPycLoader`` have been removed from :mod:`importlib`.
1575 (Contributed by Taras Lyapun in :issue:`15641`.)
1576
R David Murraya2924ca2014-01-03 14:06:01 -05001577* The *strict* argument to :class:`~http.client.HTTPConnection` and
1578 :class:`~http.client.HTTPSConnection` has been removed. HTTP 0.9-style
1579 "Simple Responses" are no longer supported.
R David Murray00569362014-01-03 13:04:25 -05001580
R David Murraydb085f52014-01-03 15:46:24 -05001581* The deprecated :mod:`urllib.request.Request` getter and setter methods
1582 ``add_data``, ``has_data``, ``get_data``, ``get_type``, ``get_host``,
1583 ``get_selector``, ``set_proxy``, ``get_origin_req_host``, and
1584 ``is_unverifiable`` have been removed (use direct attribute access instead).
1585
R David Murray244ad602014-01-04 21:17:52 -05001586* Support for loading the deprecated ``TYPE_INT64`` has been removed from
1587 :mod:`marshal`. (Contributed by Dan Riti in :issue:`15480`.)
1588
Yury Selivanov2393dca2014-01-27 15:07:58 -05001589* :class:`inspect.Signature`: positional-only parameters are now required
1590 to have a valid name.
1591
R David Murray72420ff2013-12-24 10:46:44 -05001592
R David Murray98358272014-01-05 20:52:06 -05001593Code Cleanups
1594-------------
1595
1596* The unused and undocumented internal ``Scanner`` class has been removed from
1597 the :mod:`pydoc` module.
1598
R David Murraybf0ab832014-02-03 01:14:03 -05001599* The private and effectively unused ``_gestalt`` module has been removed,
1600 along with the private :mod:`platform` functions ``_mac_ver_lookup``,
1601 ``_mac_ver_gstalt``, and ``_bcd2str``, which would only have ever been called
1602 on badly broken OSX systems (see :issue:`18393`).
1603
R David Murray98358272014-01-05 20:52:06 -05001604
R David Murraye6082552014-01-03 16:15:45 -05001605
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001606Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001607=====================
1608
1609This section lists previously described changes and other bugfixes
1610that may require changes to your code.
1611
R David Murrayd74d09a2013-12-24 15:33:02 -05001612Changes in the Python API
1613-------------------------
1614
Brett Cannon777622b2013-04-09 17:03:10 -04001615* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1616 exception or return a default value instead of raising
1617 :exc:`NotImplementedError` blindly. This will only affect code calling
1618 :func:`super` and falling through all the way to the ABCs. For compatibility,
1619 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001620
1621* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1622 attributes to ``None`` by default. To determine if these attributes were set
1623 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001624 ``getattr(module, '__loader__', None) is not None``.
1625
1626* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1627 ``__package__`` unconditionally to properly support reloading. If this is not
1628 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001629 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001630
1631* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1632 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1633
Brett Cannon1448ecf2013-10-04 11:38:59 -04001634* Frozen packages no longer set ``__path__`` to a list containing the package
1635 name but an empty list instead. Determing if a module is a package should be
1636 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001637
Brett Cannon33915eb2013-06-14 18:33:00 -04001638* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1639 it would write to is a symlink or a non-regular file. This is to act as a
1640 warning that import will overwrite those files with a regular file regardless
1641 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001642
1643* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1644 :exc:`ImportError` when the source code being loaded triggers a
1645 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1646 meant to be raised only when source code cannot be found but it should, it was
1647 felt to be over-reaching/overloading of that meaning when the source code is
1648 found but improperly structured. If you were catching ImportError before and
1649 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001650 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001651
1652* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
R David Murraybf0ab832014-02-03 01:14:03 -05001653 set the ``__wrapped__`` attribute to the function being wrapped, even if
Nick Coghlan367df122013-10-27 01:57:34 +10001654 that function also had its ``__wrapped__`` attribute set. This means
1655 ``__wrapped__`` attributes now correctly link a stack of decorated
1656 functions rather than every ``__wrapped__`` attribute in the chain
1657 referring to the innermost function. Introspection libraries that
1658 assumed the previous behaviour was intentional can use
1659 :func:`inspect.unwrap` to access the first function in the chain that has
1660 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001661
Georg Brandl0f5bff22013-10-19 17:46:38 +02001662* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001663 directory to objects in :data:`sys.path_hooks` for the empty string. This
1664 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1665 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1666 will not find all keys. A module's ``__file__`` when imported in the current
1667 working directory will also now have an absolute path, including when using
1668 ``-m`` with the interpreter (this does not influence when the path to a file
1669 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001670
R David Murraya2924ca2014-01-03 14:06:01 -05001671* The removal of the *strict* argument to :class:`~http.client.HTTPConnection`
1672 and :class:`~http.client.HTTPSConnection` changes the meaning of the
1673 remaining arguments if you are specifying them positionally rather than by
1674 keyword. If you've been paying attention to deprecation warnings your code
1675 should already be specifying any additional arguments via keywords.
1676
R David Murray4908f4a2014-01-04 18:07:20 -05001677* Strings between ``from __future__ import ...`` statements now *always* raise
1678 a :exc:`SyntaxError`. Previously if there was no leading docstring, an
1679 interstitial string would sometimes be ignored. This brings CPython into
1680 compliance with the language spec; Jython and PyPy already were.
1681 (:issue:`17434`).
1682
R David Murraya101bdb2014-01-06 16:32:05 -05001683* :meth:`ssl.SSLSocket.getpeercert` and :meth:`ssl.SSLSocket.do_handshake`
1684 now raise an :exc:`OSError` with ``ENOTCONN`` when the ``SSLSocket`` is not
1685 connected, instead of the previous behavior of raising an
1686 :exc:`AttributError`. In addition, :meth:`~ssl.SSLSocket.getpeercert`
1687 will raise a :exc:`ValueError` if the handshake has not yet been done.
1688
R David Murray0ae7ae12014-01-08 18:16:02 -05001689* :func:`base64.b32decode` now raises a :exc:`binascii.Error` when the
1690 input string contains non-b32-alphabet characters, instead of a
1691 :exc:`TypeError`. This particular :exc:`TypeError` was missed when the other
1692 :exc:`TypeError`\ s were converted. (Contributed by Serhiy Storchaka in
1693 :issue:`18011`.) Note: this change was also inadvertently applied in Python
1694 3.3.3.
1695
Brett Cannonc089f702014-01-17 11:03:19 -05001696* The :attr:`~cgi.FieldStorage.file` attribute is now automatically closed when
1697 the creating :class:`cgi.FieldStorage` instance is garbage collected. If you
1698 were pulling the file object out separately from the :class:`cgi.FieldStorage`
1699 instance and not keeping the instance alive, then you should either store the
1700 entire :class:`cgi.FieldStorage` instance or read the contents of the file
1701 before the :class:`cgi.FieldStorage` instance is garbage collected.
1702
R David Murray45e732d2014-02-03 01:33:39 -05001703* Calling ``read`` or ``write`` on a closed SSL socket now raises an
1704 informative :exc:`ValueError` rather than the previous more mysterious
1705 :exc:`AttributeError` (:issue:`9177`).
1706
Yury Selivanov026019f2014-02-18 12:49:41 -05001707* Parameter names in ``__annotations__`` dict are now mangled properly,
1708 similarly to ``__kwdefaults__``. (Contributed by Yury Selivanov in
1709 :issue:`20625`).
1710
R David Murrayd2653812013-12-27 14:06:15 -05001711
Victor Stinner774b2e02013-12-13 14:33:01 +01001712Changes in the C API
1713--------------------
1714
Larry Hastingsad88d7a2014-02-10 04:26:10 -08001715* :c:func:`PyEval_EvalFrameEx`, :c:func:`PyObject_Repr`, and
Nick Coghlanc0bc0b42014-02-09 12:00:01 +10001716 :c:func:`PyObject_Str`, along with some other internal C APIs, now include
1717 a debugging assertion that ensures they are not used in situations where
1718 they may silently discard a currently active exception. In cases where
Nick Coghlan3d7b3642014-02-09 10:57:34 +10001719 discarding the active exception is expected and desired (for example,
Nick Coghlanc0bc0b42014-02-09 12:00:01 +10001720 because it has already been saved locally with :c:func:`PyErr_Fetch` or
1721 is being deliberately replaced with a different exception), an explicit
1722 :c:func:`PyErr_Clear` call will be needed to avoid triggering the
Nick Coghlan72318b92014-02-09 12:05:13 +10001723 assertion when invoking these operations (directly or indirectly) and
1724 running against a version of Python that is compiled with assertions
1725 enabled.
Nick Coghlan3d7b3642014-02-09 10:57:34 +10001726
Victor Stinner774b2e02013-12-13 14:33:01 +01001727* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1728 argument is not set. Previously only ``NULL`` was returned with no exception
1729 set.
1730
1731* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1732 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1733 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1734 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1735
1736* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001737 3.3, the function did nothing if the key already exists (if the current
1738 value is a non-NULL pointer).
1739
Victor Stinner774b2e02013-12-13 14:33:01 +01001740* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1741 structure has been removed to fix a bug: see :issue:`14432` for the
1742 rationale.