blob: ca7716a18ff35d54635cd3c8d38716155b0093f0 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Larry Hastings3732ed22014-03-15 21:13:56 -07005:Author: R. David Murray <rdmurray@bitdance.com> (Editor)
Georg Brandlb80f5112012-09-30 09:11:58 +02006
7.. Rules for maintenance:
8
Nick Coghlan03074fd2012-09-30 18:51:53 +05309 * Anyone can add text to this document, but the maintainer reserves the
10 right to rewrite any additions. In particular, for obscure or esoteric
11 features, the maintainer may reduce any addition to a simple reference to
12 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020013
Nick Coghlan03074fd2012-09-30 18:51:53 +053014 * While the maintainer will periodically go through Misc/NEWS
15 and add changes, it's best not to rely on this. We know from experience
16 that any changes that aren't in the What's New documentation around the
17 time of the original release will remain largely unknown to the community
18 for years, even if they're added later. We also know from experience that
19 other priorities can arise, and the maintainer will run out of time to do
R David Murray061efb12013-12-24 12:35:59 -050020 updates -- in such cases, end users will be much better served by partial
Nick Coghlan03074fd2012-09-30 18:51:53 +053021 notifications that at least give a hint about new features to
22 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020023
24 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053025 is the purpose of Misc/NEWS. The What's New should focus on changes that
26 are visible to Python *users* and that *require* a feature release (i.e.
27 most bug fixes should only be recorded in Misc/NEWS)
28
29 * PEPs should not be marked Final until they have an entry in What's New.
30 A placeholder entry that is just a section header and a link to the PEP
31 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
32 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020033
34 * If you want to draw your new text to the attention of the
35 maintainer, add 'XXX' to the beginning of the paragraph or
36 section.
37
Nick Coghlan03074fd2012-09-30 18:51:53 +053038 * It's OK to add just a very brief note about a change. For
39 example: "The :ref:`~socket.transmogrify()` function was added to the
40 :mod:`socket` module." The maintainer will research the change and
41 write the necessary text (if appropriate). The advantage of doing this
42 is that even if no more descriptive text is ever added, readers will at
43 least have a notification that the new feature exists and a link to the
44 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020045
46 * You can comment out your additions if you like, but it's not
47 necessary (especially when a final release is some months away).
48
49 * Credit the author of a patch or bugfix. Just the name is
50 sufficient; the e-mail address isn't necessary.
51
52 * It's helpful to add the bug/patch number as a comment:
53
Nick Coghlan03074fd2012-09-30 18:51:53 +053054 The :ref:`~socket.transmogrify()` function was added to the
Serhiy Storchakae5cf4862014-11-02 19:18:52 +020055 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020056
57 This saves the maintainer the effort of going through the Mercurial log
58 when researching a change.
59
Nick Coghlan03074fd2012-09-30 18:51:53 +053060 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
61 while :ref:`~mod.attr` will display as ``attr``.
62
Georg Brandlb80f5112012-09-30 09:11:58 +020063This article explains the new features in Python 3.4, compared to 3.3.
Larry Hastings3101b702014-03-15 22:43:17 -070064Python 3.4 was released on March 16, 2014. For full details, see the
Georg Brandle73778c2014-10-29 08:36:35 +010065`changelog <https://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020066
Georg Brandlb80f5112012-09-30 09:11:58 +020067
68.. seealso::
69
R David Murray061efb12013-12-24 12:35:59 -050070 :pep:`429` -- Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020071
72
R David Murraye6082552014-01-03 16:15:45 -050073
R David Murraye7cf6782013-12-24 14:51:25 -050074Summary -- Release Highlights
Georg Brandlb80f5112012-09-30 09:11:58 +020075=============================
76
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000077.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020078 Brevity is key.
79
80New syntax features:
81
R David Murraye0f7a782013-12-20 16:04:29 -050082* No new syntax features were added in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020083
Larry Hastings3732ed22014-03-15 21:13:56 -070084Other new features:
R David Murray809487e2013-12-22 20:49:40 -050085
Larry Hastings3732ed22014-03-15 21:13:56 -070086* :ref:`pip should always be available <whatsnew-pep-453>` (:pep:`453`).
87* :ref:`Newly created file descriptors are non-inheritable <whatsnew-pep-446>`
R David Murray809487e2013-12-22 20:49:40 -050088 (:pep:`446`).
Larry Hastings3732ed22014-03-15 21:13:56 -070089* command line option for :ref:`isolated mode <whatsnew-isolated-mode>`
R David Murray809487e2013-12-22 20:49:40 -050090 (:issue:`16499`).
R David Murray8d856782013-12-23 10:28:57 -050091* :ref:`improvements in the handling of codecs <codec-handling-improvements>`
92 that are not text encodings (multiple issues).
R David Murray809487e2013-12-22 20:49:40 -050093* :ref:`A ModuleSpec Type <whatsnew-pep-451>` for the Import System
R David Murraye9b74d42013-12-22 21:05:04 -050094 (:pep:`451`). (Affects importer authors.)
Larry Hastings3732ed22014-03-15 21:13:56 -070095* The :mod:`marshal` format has been made :ref:`more compact and efficient
96 <whatsnew-marshal-3>` (:issue:`16475`).
R David Murray809487e2013-12-22 20:49:40 -050097
Georg Brandlb80f5112012-09-30 09:11:58 +020098New library modules:
99
R David Murray9217dad2013-12-23 21:08:28 -0500100* :mod:`asyncio`: :ref:`New provisional API for asynchronous IO
101 <whatsnew-asyncio>` (:pep:`3156`).
102* :mod:`ensurepip`: :ref:`Bootstrapping the pip installer <whatsnew-ensurepip>`
103 (:pep:`453`).
104* :mod:`enum`: :ref:`Support for enumeration types <whatsnew-enum>`
105 (:pep:`435`).
106* :mod:`pathlib`: :ref:`Object-oriented filesystem paths <whatsnew-pathlib>`
107 (:pep:`428`).
R David Murrayf9976e72013-12-23 10:32:02 -0500108* :mod:`selectors`: :ref:`High-level and efficient I/O multiplexing
109 <whatsnew-selectors>`, built upon the :mod:`select` module primitives (part
110 of :pep:`3156`).
R David Murray9217dad2013-12-23 21:08:28 -0500111* :mod:`statistics`: A basic :ref:`numerically stable statistics library
112 <whatsnew-statistics>` (:pep:`450`).
113* :mod:`tracemalloc`: :ref:`Trace Python memory allocations
114 <whatsnew-tracemalloc>` (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200115
Larry Hastings3732ed22014-03-15 21:13:56 -0700116Significantly improved library modules:
Georg Brandlb80f5112012-09-30 09:11:58 +0200117
R David Murray0a102162013-12-20 15:00:54 -0500118* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
R David Murray8d856782013-12-23 10:28:57 -0500119 :mod:`functools` (:pep:`443`).
120* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`).
R David Murrayac186222013-12-20 17:23:57 -0500121* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
122 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500123* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
124 a new :mod:`~email.message.Message` subclass
R David Murray26b80cfd2013-12-20 17:26:52 -0500125 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME
R David Murray8d856782013-12-23 10:28:57 -0500126 handling <whatsnew_email_contentmanager>` (:issue:`18891`).
Larry Hastings3732ed22014-03-15 21:13:56 -0700127* The :mod:`inspect` and :mod:`pydoc` modules are now capable of
128 correct introspection of a much wider variety of callable objects,
129 which improves the output of the Python :func:`help` system.
Nick Coghlan96bb4372014-02-09 09:18:26 +1000130* The :mod:`ipaddress` module API has been declared stable
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200131
Larry Hastings3732ed22014-03-15 21:13:56 -0700132Security improvements:
133
134* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
135 (:pep:`456`).
136* :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`
137 (:pep:`446`) to avoid leaking file descriptors to child processes.
138* New command line option for :ref:`isolated mode <whatsnew-isolated-mode>`,
139 (:issue:`16499`).
140* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
141 on Unix <whatsnew-multiprocessing-no-fork>`. *spawn* and *forkserver* are
142 more secure because they avoid sharing data with child processes.
143* :mod:`multiprocessing` child processes on Windows no longer inherit
144 all of the parent's inheritable handles, only the necessary ones.
145* A new :func:`hashlib.pbkdf2_hmac` function provides
146 the `PKCS#5 password-based key derivation function 2
Georg Brandl5d941342016-02-26 19:37:12 +0100147 <https://en.wikipedia.org/wiki/PBKDF2>`_.
Larry Hastings3732ed22014-03-15 21:13:56 -0700148* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`.
149* :ref:`Retrieving certificates from the Windows system cert store support
150 <whatsnew34-win-cert-store>` for :mod:`ssl`.
151* :ref:`Server-side SNI (Server Name Indication) support
152 <whatsnew34-sni>` for :mod:`ssl`.
153* The :class:`ssl.SSLContext` class has a :ref:`lot of improvements
154 <whatsnew34-sslcontext>`.
155* All modules in the standard library that support SSL now support server
156 certificate verification, including hostname matching
157 (:func:`ssl.match_hostname`) and CRLs (Certificate Revocation lists, see
158 :func:`ssl.SSLContext.load_verify_locations`).
Nick Coghlanaa029da2014-02-09 10:10:24 +1000159
Nick Coghlan367df122013-10-27 01:57:34 +1000160CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200161
R David Murraya93ca972013-12-22 14:10:21 -0500162* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`).
Larry Hastings3732ed22014-03-15 21:13:56 -0700163* Leveraging :pep:`442`, in most cases :ref:`module globals are no longer set
164 to None during finalization <whatsnew-pep-442>` (:issue:`18214`).
R David Murraya93ca972013-12-22 14:10:21 -0500165* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`).
R David Murraya93ca972013-12-22 14:10:21 -0500166* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200167
R David Murray347f9c72013-12-23 21:30:06 -0500168Please read on for a comprehensive list of user-facing changes, including many
169other smaller improvements, CPython optimizations, deprecations, and potential
170porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200171
Nick Coghland0cf0632013-11-11 22:11:55 +1000172
R David Murraye6082552014-01-03 16:15:45 -0500173
Larry Hastings3732ed22014-03-15 21:13:56 -0700174New Features
175============
R David Murray809487e2013-12-22 20:49:40 -0500176
R David Murray68790662013-12-23 11:17:51 -0500177.. _whatsnew-pep-453:
178
R David Murraye7cf6782013-12-24 14:51:25 -0500179PEP 453: Explicit Bootstrapping of PIP in Python Installations
R David Murray809487e2013-12-22 20:49:40 -0500180--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000181
Larry Hastings3732ed22014-03-15 21:13:56 -0700182Bootstrapping pip By Default
183~~~~~~~~~~~~~~~~~~~~~~~~~~~~
184
Nick Coghland0cf0632013-11-11 22:11:55 +1000185The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
Nick Coghlanaa029da2014-02-09 10:10:24 +1000186cross-platform mechanism to bootstrap the pip installer into Python
Larry Hastings3732ed22014-03-15 21:13:56 -0700187installations and virtual environments. The version of ``pip`` included
188with Python 3.4.0 is ``pip`` 1.5.4, and future 3.4.x maintenance releases
189will update the bundled version to the latest version of ``pip`` that is
190available at the time of creating the release candidate.
Nick Coghland0cf0632013-11-11 22:11:55 +1000191
Larry Hastings3732ed22014-03-15 21:13:56 -0700192By default, the commands ``pipX`` and ``pipX.Y`` will be installed on all
193platforms (where X.Y stands for the version of the Python installation),
194along with the ``pip`` Python package and its dependencies. On Windows and
195in virtual environments on all platforms, the unversioned ``pip`` command
196will also be installed. On other platforms, the system wide unversioned
197``pip`` command typically refers to the separately installed Python 2
198version.
Nick Coghlanaa029da2014-02-09 10:10:24 +1000199
Larry Hastings3732ed22014-03-15 21:13:56 -0700200The :ref:`pyvenv <scripts-pyvenv>` command line utility and the :mod:`venv`
201module make use of the :mod:`ensurepip` module to make ``pip`` readily
202available in virtual environments. When using the command line utility,
203``pip`` is installed by default, while when using the :mod:`venv` module
204:ref:`venv-api` installation of ``pip`` must be requested explicitly.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000205
Larry Hastings3732ed22014-03-15 21:13:56 -0700206For CPython :ref:`source builds on POSIX systems <building-python-on-unix>`,
207the ``make install`` and ``make altinstall`` commands bootstrap ``pip`` by
208default. This behaviour can be controlled through configure options, and
209overridden through Makefile options.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000210
Larry Hastings3732ed22014-03-15 21:13:56 -0700211On Windows and Mac OS X, the CPython installers now default to installing
212``pip`` along with CPython itself (users may opt out of installing it
213during the installation process). Window users will need to opt in to the
214automatic ``PATH`` modifications to have ``pip`` available from the command
215line by default, otherwise it can still be accessed through the Python
216launcher for Windows as ``py -m pip``.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000217
R David Murray68790662013-12-23 11:17:51 -0500218As `discussed in the PEP`__, platform packagers may choose not to install
Larry Hastings3732ed22014-03-15 21:13:56 -0700219these commands by default, as long as, when invoked, they provide clear and
220simple directions on how to install them on that platform (usually using
221the system package manager).
R David Murray68790662013-12-23 11:17:51 -0500222
Georg Brandle73778c2014-10-29 08:36:35 +0100223__ https://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors
R David Murray68790662013-12-23 11:17:51 -0500224
Nick Coghland0cf0632013-11-11 22:11:55 +1000225.. note::
226
Nick Coghlanaa029da2014-02-09 10:10:24 +1000227 To avoid conflicts between parallel Python 2 and Python 3 installations,
228 only the versioned ``pip3`` and ``pip3.4`` commands are bootstrapped by
Larry Hastings3732ed22014-03-15 21:13:56 -0700229 default when ``ensurepip`` is invoked directly - the ``--default-pip``
230 option is needed to also request the unversioned ``pip`` command.
231 ``pyvenv`` and the Windows installer ensure that the unqualified ``pip``
232 command is made available in those environments, and ``pip`` can always be
Nick Coghlanaa029da2014-02-09 10:10:24 +1000233 invoked via the ``-m`` switch rather than directly to avoid ambiguity on
234 systems with multiple Python installations.
Nick Coghland0cf0632013-11-11 22:11:55 +1000235
Larry Hastings3732ed22014-03-15 21:13:56 -0700236
237Documentation Changes
238~~~~~~~~~~~~~~~~~~~~~
239
240As part of this change, the :ref:`installing-index` and
241:ref:`distributing-index` sections of the documentation have been
242completely redesigned as short getting started and FAQ documents. Most
243packaging documentation has now been moved out to the Python Packaging
244Authority maintained `Python Packaging User Guide
Georg Brandle73778c2014-10-29 08:36:35 +0100245<https://packaging.python.org>`__ and the documentation of the individual
Larry Hastings3732ed22014-03-15 21:13:56 -0700246projects.
247
248However, as this migration is currently still incomplete, the legacy
249versions of those guides remaining available as :ref:`install-index`
250and :ref:`distutils-index`.
251
Nick Coghland0cf0632013-11-11 22:11:55 +1000252.. seealso::
253
R David Murray061efb12013-12-24 12:35:59 -0500254 :pep:`453` -- Explicit bootstrapping of pip in Python installations
Nick Coghland0cf0632013-11-11 22:11:55 +1000255 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000256 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000257
258
R David Murrayf9909c22013-12-20 14:50:12 -0500259.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200260
Larry Hastings3732ed22014-03-15 21:13:56 -0700261PEP 446: Newly Created File Descriptors Are Non-Inheritable
262-----------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200263
Nick Coghlan367df122013-10-27 01:57:34 +1000264:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Larry Hastings3732ed22014-03-15 21:13:56 -0700265<fd_inheritance>`. In general, this is the behavior an application will
266want: when launching a new process, having currently open files also
267open in the new process can lead to all sorts of hard to find bugs,
268and potentially to security issues.
269
270However, there are occasions when inheritance is desired. To support
271these cases, the following new functions and methods are available:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200272
273* :func:`os.get_inheritable`, :func:`os.set_inheritable`
274* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
275* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
276
Antoine Pitrou796564c2013-07-30 19:59:21 +0200277.. seealso::
278
R David Murray061efb12013-12-24 12:35:59 -0500279 :pep:`446` -- Make newly created file descriptors non-inheritable
Nick Coghlan367df122013-10-27 01:57:34 +1000280 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200281
Georg Brandlb80f5112012-09-30 09:11:58 +0200282
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000283.. _codec-handling-improvements:
284
R David Murraye7cf6782013-12-24 14:51:25 -0500285Improvements to Codec Handling
R David Murray809487e2013-12-22 20:49:40 -0500286------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000287
288Since it was first introduced, the :mod:`codecs` module has always been
289intended to operate as a type-neutral dynamic encoding and decoding
290system. However, its close coupling with the Python text model, especially
291the type restricted convenience methods on the builtin :class:`str`,
292:class:`bytes` and :class:`bytearray` types, has historically obscured that
293fact.
294
295As a key step in clarifying the situation, the :meth:`codecs.encode` and
296:meth:`codecs.decode` convenience functions are now properly documented in
297Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000298module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000299but were previously only discoverable through runtime introspection.
300
301Unlike the convenience methods on :class:`str`, :class:`bytes` and
Larry Hastings3732ed22014-03-15 21:13:56 -0700302:class:`bytearray`, the :mod:`codecs` convenience functions support arbitrary
303codecs in both Python 2 and Python 3, rather than being limited to Unicode text
304encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions (in
305Python 2).
Nick Coghlan8b097b42013-11-13 23:49:21 +1000306
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000307In Python 3.4, the interpreter is able to identify the known non-text
308encodings provided in the standard library and direct users towards these
309general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000310
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000311 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000312 Traceback (most recent call last):
313 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000314 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000315
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000316 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000317 Traceback (most recent call last):
318 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000319 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000320
Nick Coghlanaa029da2014-02-09 10:10:24 +1000321 >>> open("foo.txt", encoding="hex")
322 Traceback (most recent call last):
323 File "<stdin>", line 1, in <module>
324 LookupError: 'hex' is not a text encoding; use codecs.open() to handle arbitrary codecs
325
Nick Coghlan8b097b42013-11-13 23:49:21 +1000326In a related change, whenever it is feasible without breaking backwards
327compatibility, exceptions raised during encoding and decoding operations
Larry Hastings3732ed22014-03-15 21:13:56 -0700328are wrapped in a chained exception of the same type that mentions the
Nick Coghlan8b097b42013-11-13 23:49:21 +1000329name of the codec responsible for producing the error::
330
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000331 >>> import codecs
332
333 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan77b286b2014-01-27 00:53:38 +1000334 Traceback (most recent call last):
335 File "/usr/lib/python3.4/encodings/hex_codec.py", line 20, in hex_decode
336 return (binascii.a2b_hex(input), len(input))
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000337 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000338
339 The above exception was the direct cause of the following exception:
340
341 Traceback (most recent call last):
342 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000343 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000344
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000345 >>> codecs.encode("hello", "bz2")
Nick Coghlan77b286b2014-01-27 00:53:38 +1000346 Traceback (most recent call last):
347 File "/usr/lib/python3.4/encodings/bz2_codec.py", line 17, in bz2_encode
348 return (bz2.compress(input), len(input))
349 File "/usr/lib/python3.4/bz2.py", line 498, in compress
350 return comp.compress(data) + comp.flush()
Nick Coghlan8b097b42013-11-13 23:49:21 +1000351 TypeError: 'str' does not support the buffer interface
352
353 The above exception was the direct cause of the following exception:
354
355 Traceback (most recent call last):
356 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000357 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000358
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000359Finally, as the examples above show, these improvements have permitted
360the restoration of the convenience aliases for the non-Unicode codecs that
361were themselves restored in Python 3.2. This means that encoding binary data
362to and from its hexadecimal representation (for example) can now be written
363as::
364
365 >>> from codecs import encode, decode
366 >>> encode(b"hello", "hex")
367 b'68656c6c6f'
368 >>> decode(b"68656c6c6f", "hex")
369 b'hello'
370
371The binary and text transforms provided in the standard library are detailed
372in :ref:`binary-transforms` and :ref:`text-transforms`.
373
Larry Hastings3732ed22014-03-15 21:13:56 -0700374(Contributed by Nick Coghlan in :issue:`7475`, :issue:`17827`,
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200375:issue:`17828` and :issue:`19619`.)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000376
Nick Coghlanaa029da2014-02-09 10:10:24 +1000377
R David Murray809487e2013-12-22 20:49:40 -0500378.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700379
380PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500381------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700382
R David Murrayf85b2a82013-12-22 21:06:13 -0500383:pep:`451` provides an encapsulation of the information about a module that the
384import machinery will use to load it (that is, a module specification). This
385helps simplify both the import implementation and several import-related APIs.
386The change is also a stepping stone for `several future import-related
387improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700388
R David Murraye9b74d42013-12-22 21:05:04 -0500389__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700390
391The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500392Furthermore, they should be transparent to everyone but importer authors. Key
393finder and loader methods have been deprecated, but they will continue working.
394New importers should use the new methods described in the PEP. Existing
Larry Hastings3732ed22014-03-15 21:13:56 -0700395importers should be updated to implement the new methods. See the
396:ref:`deprecated-3.4` section for a list of methods that should be replaced and
397their replacements.
Eric Snowb523f842013-11-22 09:05:39 -0700398
Nick Coghlan8b097b42013-11-13 23:49:21 +1000399
Georg Brandlb80f5112012-09-30 09:11:58 +0200400Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500401----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200402
403Some smaller changes made to the core Python language are:
404
Ezio Melotti34808e22013-10-12 16:36:13 +0300405* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200406
Larry Hastings3732ed22014-03-15 21:13:56 -0700407* :func:`min` and :func:`max` now accept a *default* keyword-only argument that
408 can be used to specify the value they return if the iterable they are
409 evaluating has no elements. (Contributed by Julian Berman in
410 :issue:`18111`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200411
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200412* Module objects are now :mod:`weakref`'able.
413
Nick Coghlan0acceb72013-10-20 13:22:21 +1000414* Module ``__file__`` attributes (and related values) should now always
415 contain absolute paths by default, with the sole exception of
416 ``__main__.__file__`` when a script has been executed directly using
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200417 a relative path. (Contributed by Brett Cannon in :issue:`18416`.)
Nick Coghlan0acceb72013-10-20 13:22:21 +1000418
Larry Hastings3732ed22014-03-15 21:13:56 -0700419* All the UTF-\* codecs (except UTF-7) now reject surrogates during both
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200420 encoding and decoding unless the ``surrogatepass`` error handler is used,
Larry Hastings3732ed22014-03-15 21:13:56 -0700421 with the exception of the UTF-16 decoder (which accepts valid surrogate pairs)
422 and the UTF-16 encoder (which produces them while encoding non-BMP characters).
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200423 (Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
424 :issue:`12892`.)
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200425
Larry Hastings3732ed22014-03-15 21:13:56 -0700426* New German EBCDIC :ref:`codec <standard-encodings>` ``cp273``. (Contributed
427 by Michael Bierenfeld and Andrew Kuchling in :issue:`1097797`.)
R David Murrayc4c7b1c2014-03-07 21:00:34 -0500428
Larry Hastings3732ed22014-03-15 21:13:56 -0700429* New Ukrainian :ref:`codec <standard-encodings>` ``cp1125``. (Contributed by
430 Serhiy Storchaka in :issue:`19668`.)
431
432* :class:`bytes`.join() and :class:`bytearray`.join() now accept arbitrary
433 buffer objects as arguments. (Contributed by Antoine Pitrou in
434 :issue:`15958`.)
435
436* The :class:`int` constructor now accepts any object that has an ``__index__``
437 method for its *base* argument. (Contributed by Mark Dickinson in
438 :issue:`16772`.)
439
440* Frame objects now have a :func:`~frame.clear` method that clears all
441 references to local variables from the frame. (Contributed by Antoine Pitrou
442 in :issue:`17934`.)
443
444* :class:`memoryview` is now registered as a :class:`Sequence <collections.abc>`,
445 and supports the :func:`reversed` builtin. (Contributed by Nick Coghlan
446 and Claudiu Popa in :issue:`18690` and :issue:`19078`.)
447
448* Signatures reported by :func:`help` have been modified and improved in
449 several cases as a result of the introduction of Argument Clinic and other
450 changes to the :mod:`inspect` and :mod:`pydoc` modules.
451
452* :meth:`~object.__length_hint__` is now part of the formal language
453 specification (see :pep:`424`). (Contributed by Armin Ronacher in
454 :issue:`16148`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200455
R David Murraye6082552014-01-03 16:15:45 -0500456
Georg Brandlb80f5112012-09-30 09:11:58 +0200457New Modules
458===========
459
Nick Coghlan0acceb72013-10-20 13:22:21 +1000460
R David Murray9217dad2013-12-23 21:08:28 -0500461.. _whatsnew-asyncio:
462
Nick Coghlan0acceb72013-10-20 13:22:21 +1000463asyncio
464-------
465
466The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
467pluggable event loop model for Python, providing solid asynchronous IO
468support in the standard library, and making it easier for other event loop
469implementations to interoperate with the standard library and each other.
470
471For Python 3.4, this module is considered a :term:`provisional API`.
472
Nick Coghlan367df122013-10-27 01:57:34 +1000473.. seealso::
474
R David Murray061efb12013-12-24 12:35:59 -0500475 :pep:`3156` -- Asynchronous IO Support Rebooted: the "asyncio" Module
Nick Coghlan367df122013-10-27 01:57:34 +1000476 PEP written and implementation led by Guido van Rossum.
477
R David Murray68790662013-12-23 11:17:51 -0500478
R David Murray9217dad2013-12-23 21:08:28 -0500479.. _whatsnew-ensurepip:
R David Murray68790662013-12-23 11:17:51 -0500480
481ensurepip
482---------
483
484The new :mod:`ensurepip` module is the primary infrastructure for the
485:pep:`453` implementation. In the normal course of events end users will not
486need to interact with this module, but it can be used to manually bootstrap
487``pip`` if the automated bootstrapping into an installation or virtual
488environment was declined.
489
490:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first
491release candidate of the release of CPython with which it ships (this applies
492to both maintenance releases and feature releases). ``ensurepip`` does not
Larry Hastings3732ed22014-03-15 21:13:56 -0700493access the internet. If the installation has Internet access, after
494``ensurepip`` is run the bundled ``pip`` can be used to upgrade ``pip`` to a
495more recent release than the bundled one. (Note that such an upgraded version
496of ``pip`` is considered to be a separately installed package and will not be
497removed if Python is uninstalled.)
R David Murray68790662013-12-23 11:17:51 -0500498
499The module is named *ensure*\ pip because if called when ``pip`` is already
500installed, it does nothing. It also has an ``--upgrade`` option that will
501cause it to install the bundled copy of ``pip`` if the existing installed
502version of ``pip`` is older than the bundled copy.
503
504
R David Murray9217dad2013-12-23 21:08:28 -0500505.. _whatsnew-enum:
506
Nick Coghlan0acceb72013-10-20 13:22:21 +1000507enum
508----
509
Nick Coghlan367df122013-10-27 01:57:34 +1000510The new :mod:`enum` module (defined in :pep:`435`) provides a standard
511implementation of enumeration types, allowing other modules (such as
512:mod:`socket`) to provide more informative error messages and better
513debugging support by replacing opaque integer constants with backwards
514compatible enumeration values.
515
516.. seealso::
517
R David Murray061efb12013-12-24 12:35:59 -0500518 :pep:`435` -- Adding an Enum type to the Python standard library
Nick Coghlan367df122013-10-27 01:57:34 +1000519 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
520 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000521
522
R David Murray9217dad2013-12-23 21:08:28 -0500523.. _whatsnew-pathlib:
524
Antoine Pitrou31119e42013-11-22 17:38:12 +0100525pathlib
526-------
527
528The new :mod:`pathlib` module offers classes representing filesystem paths
529with semantics appropriate for different operating systems. Path classes are
530divided between *pure paths*, which provide purely computational operations
531without I/O, and *concrete paths*, which inherit from pure paths but also
532provide I/O operations.
533
534For Python 3.4, this module is considered a :term:`provisional API`.
535
536.. seealso::
537
R David Murray061efb12013-12-24 12:35:59 -0500538 :pep:`428` -- The pathlib module -- object-oriented filesystem paths
Antoine Pitrou31119e42013-11-22 17:38:12 +0100539 PEP written and implemented by Antoine Pitrou.
540
541
R David Murrayf9976e72013-12-23 10:32:02 -0500542.. _whatsnew-selectors:
543
Charles-François Natali243d8d82013-09-04 19:02:49 +0200544selectors
545---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200546
Nick Coghlan0acceb72013-10-20 13:22:21 +1000547The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
548allows high-level and efficient I/O multiplexing, built upon the
549:mod:`select` module primitives.
550
551
R David Murray9217dad2013-12-23 21:08:28 -0500552.. _whatsnew-statistics:
553
Nick Coghlan0acceb72013-10-20 13:22:21 +1000554statistics
555----------
556
557The new :mod:`statistics` module (defined in :pep:`450`) offers some core
558statistics functionality directly in the standard library. This module
559supports calculation of the mean, median, mode, variance and standard
560deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200561
Nick Coghlan367df122013-10-27 01:57:34 +1000562.. seealso::
563
R David Murray061efb12013-12-24 12:35:59 -0500564 :pep:`450` -- Adding A Statistics Module To The Standard Library
Nick Coghlan367df122013-10-27 01:57:34 +1000565 PEP written and implemented by Steven D'Aprano
566
R David Murray9217dad2013-12-23 21:08:28 -0500567.. _whatsnew-tracemalloc:
Georg Brandlb80f5112012-09-30 09:11:58 +0200568
R David Murray8b2d6822013-12-31 15:06:05 -0500569
Victor Stinnerd2736af2013-11-25 09:40:27 +0100570tracemalloc
571-----------
572
573The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
574trace memory blocks allocated by Python. It provides the following information:
575
Larry Hastings3732ed22014-03-15 21:13:56 -0700576* Trace where an object was allocated
Victor Stinnerd2736af2013-11-25 09:40:27 +0100577* Statistics on allocated memory blocks per filename and per line number:
578 total size, number and average size of allocated memory blocks
579* Compute the differences between two snapshots to detect memory leaks
580
581.. seealso::
582
R David Murray061efb12013-12-24 12:35:59 -0500583 :pep:`454` -- Add a new tracemalloc module to trace Python memory allocations
Victor Stinnerd2736af2013-11-25 09:40:27 +0100584 PEP written and implemented by Victor Stinner
585
586
R David Murraye6082552014-01-03 16:15:45 -0500587
Georg Brandlb80f5112012-09-30 09:11:58 +0200588Improved Modules
589================
590
R David Murray6e390152013-12-24 22:28:04 -0500591
R David Murray3edcc782013-12-24 16:13:32 -0500592abc
593---
594
595New function :func:`abc.get_cache_token` can be used to know when to invalidate
596caches that are affected by changes in the object graph. (Contributed
597by Łukasz Langa in :issue:`16832`.)
R David Murray72420ff2013-12-24 10:46:44 -0500598
R David Murray2691ee62013-12-28 23:15:12 -0500599New class :class:`~abc.ABC` has :class:`~abc.ABCMeta` as its meta class.
600Using ``ABC`` as a base class has essentially the same effect as specifying
601``metaclass=abc.ABCMeta``, but is simpler to type and easier to read.
602(Contributed by Bruno Dupuis in :issue:`16049`.)
603
604
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200605aifc
606----
607
Larry Hastings3732ed22014-03-15 21:13:56 -0700608The :meth:`~aifc.aifc.getparams` method now returns a namedtuple rather than a
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200609plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
610
Serhiy Storchaka14867992014-09-10 23:43:41 +0300611:func:`aifc.open` now supports the context management protocol: when used in a
R David Murrayd592bb22013-12-31 13:45:38 -0500612:keyword:`with` block, the :meth:`~aifc.aifc.close` method of the returned
613object will be called automatically at the end of the block. (Contributed by
614Serhiy Storchacha in :issue:`16486`.)
615
Larry Hastings3732ed22014-03-15 21:13:56 -0700616The :meth:`~aifc.aifc.writeframesraw` and :meth:`~aifc.aifc.writeframes`
617methods now accept any :term:`bytes-like object`. (Contributed by Serhiy
618Storchaka in :issue:`8311`.)
619
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200620
R David Murrayfced3ec2013-12-31 11:18:01 -0500621argparse
622--------
623
624The :class:`~argparse.FileType` class now accepts *encoding* and
625*errors* arguments, which are passed through to :func:`open`. (Contributed
626by Lucas Maystre in :issue:`11175`.)
627
628
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300629audioop
630-------
631
Larry Hastings3732ed22014-03-15 21:13:56 -0700632:mod:`audioop` now supports 24-bit samples. (Contributed by Serhiy Storchaka
633in :issue:`12866`.)
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300634
Larry Hastings3732ed22014-03-15 21:13:56 -0700635New :func:`~audioop.byteswap` function converts big-endian samples to
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200636little-endian and vice versa. (Contributed by Serhiy Storchaka in
637:issue:`19641`.)
Larry Hastings3732ed22014-03-15 21:13:56 -0700638
639All :mod:`audioop` functions now accept any :term:`bytes-like object`. Strings
640are not accepted: they didn't work before, now they raise an error right away.
641(Contributed by Serhiy Storchaka in :issue:`16685`.)
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200642
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300643
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000644base64
645------
646
647The encoding and decoding functions in :mod:`base64` now accept any
648:term:`bytes-like object` in cases where it previously required a
Larry Hastings3732ed22014-03-15 21:13:56 -0700649:class:`bytes` or :class:`bytearray` instance. (Contributed by Nick Coghlan in
650:issue:`17839`.)
651
652New functions :func:`~base64.a85encode`, :func:`~base64.a85decode`,
653:func:`~base64.b85encode`, and :func:`~base64.b85decode` provide the ability to
654encode and decode binary data from and to ``Ascii85`` and the git/mercurial
655``Base85`` formats, respectively. The ``a85`` functions have options that can
656be used to make them compatible with the variants of the ``Ascii85`` encoding,
657including the Adobe variant. (Contributed by Martin Morrison, the Mercurial
658project, Serhiy Storchaka, and Antoine Pitrou in :issue:`17618`.)
659
660
661collections
662-----------
663
664The :meth:`.ChainMap.new_child` method now accepts an *m* argument specifying
665the child map to add to the chain. This allows an existing mapping and/or a
666custom mapping type to be used for the child. (Contributed by Vinay Sajip in
667:issue:`16613`.)
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000668
669
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200670colorsys
671--------
672
673The number of digits in the coefficients for the RGB --- YIQ conversions have
674been expanded so that they match the FCC NTSC versions. The change in
675results should be less than 1% and may better match results found elsewhere.
R David Murray45e732d2014-02-03 01:33:39 -0500676(Contributed by Brian Landers and Serhiy Storchaka in :issue:`14323`.)
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200677
R David Murray8e37d5d2013-04-13 14:49:48 -0400678
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000679contextlib
680----------
681
Nick Coghlan240f86d2013-10-17 23:40:57 +1000682The new :class:`contextlib.suppress` context manager helps to clarify the
683intent of code that deliberately suppresses exceptions from a single
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200684statement. (Contributed by Raymond Hettinger in :issue:`15806` and
685Zero Piraeus in :issue:`19266`.)
Nick Coghlan240f86d2013-10-17 23:40:57 +1000686
Victor Stinner6633c392013-10-21 13:27:11 +0200687The new :func:`contextlib.redirect_stdout` context manager makes it easier
Larry Hastings3732ed22014-03-15 21:13:56 -0700688for utility scripts to handle inflexible APIs that write their output to
689:data:`sys.stdout` and don't provide any options to redirect it. Using the
690context manager, the :data:`sys.stdout` output can be redirected to any
691other stream or, in conjunction with :class:`io.StringIO`, to a string.
692The latter can be especially useful, for example, to capture output
693from a function that was written to implement a command line interface.
694It is recommended only for utility scripts because it affects the
695global state of :data:`sys.stdout`. (Contributed by Raymond Hettinger
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200696in :issue:`15805`.)
Nick Coghlan0acceb72013-10-20 13:22:21 +1000697
698The :mod:`contextlib` documentation has also been updated to include a
699:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
700differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000701
702
Larry Hastings3732ed22014-03-15 21:13:56 -0700703dbm
704---
705
706:func:`dbm.open` objects now support the context management protocol. When
707used in a :keyword:`with` statement, the ``close`` method of the database
708object will be called automatically at the end of the block. (Contributed by
709Claudiu Popa and Nick Coghlan in :issue:`19282`.)
710
711
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000712dis
713---
714
R David Murray0bce6e72014-01-07 14:30:17 -0500715Functions :func:`~dis.show_code`, :func:`~dis.dis`, :func:`~dis.distb`, and
716:func:`~dis.disassemble` now accept a keyword-only *file* argument that
717controls where they write their output.
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000718
R David Murray0bce6e72014-01-07 14:30:17 -0500719The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
720that provides object oriented access to the details of each individual bytecode
721operation.
722
723A new method, :func:`~dis.get_instructions`, provides an iterator that emits
724the Instruction stream for a given piece of Python code. Thus it is now
725possible to write a program that inspects and manipulates a bytecode
726object in ways different from those provided by the :mod:`~dis` module
727itself. For example::
728
729 >>> import dis
730 >>> for instr in dis.get_instructions(lambda x: x + 1):
731 ... print(instr.opname)
732 LOAD_FAST
733 LOAD_CONST
734 BINARY_ADD
735 RETURN_VALUE
736
737The various display tools in the :mod:`dis` module have been rewritten to use
738these new components.
739
740In addition, a new application-friendly class :class:`~dis.Bytecode` provides
741an object-oriented API for inspecting bytecode in both in human-readable form
742and for iterating over instructions. The :class:`~dis.Bytecode` constructor
743takes the same arguments that :func:`~dis.get_instruction` does (plus an
744optional *current_offset*), and the resulting object can be iterated to produce
745:class:`~dis.Instruction` objects. But it also has a :mod:`~dis.Bytecode.dis`
746method, equivalent to calling :mod:`~dis.dis` on the constructor argument, but
747returned as a multi-line string::
748
749 >>> bytecode = dis.Bytecode(lambda x: x +1, current_offset=3)
750 >>> for instr in bytecode:
751 ... print('{} ({})'.format(instr.opname, instr.opcode))
752 LOAD_FAST (124)
753 LOAD_CONST (100)
754 BINARY_ADD (23)
755 RETURN_VALUE (83)
756 >>> bytecode.dis().splitlines() # doctest: +NORMALIZE_WHITESPACE
757 [' 1 0 LOAD_FAST 0 (x)',
758 ' --> 3 LOAD_CONST 1 (1)',
759 ' 6 BINARY_ADD',
760 ' 7 RETURN_VALUE']
761
762:class:`~dis.Bytecode` also has a class method,
763:meth:`~dis.Bytecode.from_traceback`, that provides the ability to manipulate a
764traceback (that is, ``print(Bytecode.from_traceback(tb).dis())`` is equivalent
765to ``distb(tb)``).
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000766
Nick Coghlan50c48b82013-11-23 00:57:00 +1000767(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200768and Claudiu Popa in :issue:`17916`.)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000769
Larry Hastings3732ed22014-03-15 21:13:56 -0700770New function :func:`~dis.stack_effect` computes the effect on the Python stack
771of a given opcode and argument, information that is not otherwise available.
772(Contributed by Larry Hastings in :issue:`19722`.)
773
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200774
R David Murray5a9d7062012-11-21 15:09:21 -0500775doctest
776-------
777
R David Murray473f45b2013-12-27 17:01:16 -0500778A new :ref:`option flag <doctest-options>`, :data:`~doctest.FAIL_FAST`, halts
779test running as soon as the first failure is detected. (Contributed by R.
780David Murray and Daniel Urban in :issue:`16522`.)
R David Murray5707d502013-06-23 14:24:13 -0400781
R David Murray473f45b2013-12-27 17:01:16 -0500782The :mod:`doctest` command line interface now uses :mod:`argparse`, and has two
783new options, ``-o`` and ``-f``. ``-o`` allows :ref:`doctest options
784<doctest-options>` to be specified on the command line, and ``-f`` is a
785shorthand for ``-o FAIL_FAST`` (to parallel the similar option supported by the
786:mod:`unittest` CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200787
Larry Hastings3732ed22014-03-15 21:13:56 -0700788:mod:`doctest` will now find doctests in extension module ``__doc__`` strings.
789(Contributed by Zachary Ware in :issue:`3158`.)
790
R David Murray8e37d5d2013-04-13 14:49:48 -0400791
R David Murraybb17d2b2013-08-09 16:15:28 -0400792email
793-----
794
795:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
796override the default policy of the message when generating a string
797representation of it. This means that ``as_string`` can now be used in more
798circumstances, instead of having to create and use a :mod:`~email.generator` in
Larry Hastings3732ed22014-03-15 21:13:56 -0700799order to pass formatting parameters to its ``flatten`` method. (Contributed by
800R. David Murray in :issue:`18600`.)
R David Murraybb17d2b2013-08-09 16:15:28 -0400801
802New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
803representation of the message in a fashion similar to how ``as_string``
804produces a string representation. It does not accept the *maxheaderlen*
805argument, but does accept the *unixfrom* and *policy* arguments. The
806:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
807calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
Larry Hastings3732ed22014-03-15 21:13:56 -0700808result: a bytes object containing the fully formatted message. (Contributed
809by R. David Murray in :issue:`18600`.)
R David Murraybb17d2b2013-08-09 16:15:28 -0400810
Larry Hastings3732ed22014-03-15 21:13:56 -0700811The :meth:`.Message.set_param` message now accepts a *replace* keyword argument.
812When specified, the associated header will be updated without changing
813its location in the list of headers. For backward compatibility, the default
814is ``False``. (Contributed by R. David Murray in :issue:`18891`.)
815
R David Murraybb17d2b2013-08-09 16:15:28 -0400816
R David Murray26b80cfd2013-12-20 17:26:52 -0500817.. _whatsnew_email_contentmanager:
818
Larry Hastings3732ed22014-03-15 21:13:56 -0700819A pair of new subclasses of :class:`~email.message.Message` have been added
820(:class:`.EmailMessage` and :class:`.MIMEPart`), along with a new sub-module,
821:mod:`~email.contentmanager` and a new :mod:`~email.policy` attribute
822:attr:`~email.policy.EmailPolicy.content_manager`. All documentation is
823currently in the new module, which is being added as part of email's new
824:term:`provisional API`. These classes provide a number of new methods that
825make extracting content from and inserting content into email messages much
826easier. For details, see the :mod:`~email.contentmanager` documentation and
827the :ref:`email-contentmanager-api-examples`. These API additions complete the
828bulk of the work that was planned as part of the email6 project. The currently
829provisional API is scheduled to become final in Python 3.5 (possibly with a few
830minor additions in the area of error handling). (Contributed by R. David
831Murray in :issue:`18891`.)
R David Murray3da240f2013-10-16 22:48:40 -0400832
R David Murraybb17d2b2013-08-09 16:15:28 -0400833
R David Murray4885f492014-02-02 11:11:01 -0500834filecmp
835-------
836
837A new :func:`~filecmp.clear_cache` function provides the ability to clear the
838:mod:`filecmp` comparison cache, which uses :func:`os.stat` information to
839determine if the file has changed since the last compare. This can be used,
840for example, if the file might have been changed and re-checked in less time
841than the resolution of a particular filesystem's file modification time field.
842(Contributed by Mark Levitt in :issue:`18149`.)
843
Larry Hastings3732ed22014-03-15 21:13:56 -0700844New module attribute :data:`~filecmp.DEFAULT_IGNORES` provides the list of
845directories that are used as the default value for the *ignore* parameter of
846the :func:`~filecmp.dircmp` function. (Contributed by Eli Bendersky in
847:issue:`15442`.)
848
R David Murray4885f492014-02-02 11:11:01 -0500849
Victor Stinner854ffcb2013-06-21 00:36:30 +0200850functools
851---------
852
Andrew Kuchlingfe0f0b02014-01-31 12:17:53 -0500853The new :func:`~functools.partialmethod` descriptor brings partial argument
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000854application to descriptors, just as :func:`~functools.partial` provides
855for normal callables. The new descriptor also makes it easier to get
856arbitrary callables (including :func:`~functools.partial` instances)
857to behave like normal instance methods when included in a class definition.
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200858(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`.)
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000859
R David Murray0a102162013-12-20 15:00:54 -0500860.. _whatsnew-singledispatch:
861
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000862The new :func:`~functools.singledispatch` decorator brings support for
863single-dispatch generic functions to the Python standard library. Where
864object oriented programming focuses on grouping multiple operations on a
865common set of data into a class, a generic function focuses on grouping
866multiple implementations of an operation that allows it to work with
867*different* kinds of data.
868
869.. seealso::
870
R David Murray061efb12013-12-24 12:35:59 -0500871 :pep:`443` -- Single-dispatch generic functions
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000872 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200873
Larry Hastings3732ed22014-03-15 21:13:56 -0700874:func:`~functools.total_ordering` now supports a return value of
875:const:`NotImplemented` from the underlying comparison function. (Contributed
876by Katie Miller in :issue:`10042`.)
877
R David Murrayd2653812013-12-27 14:06:15 -0500878A pure-python version of the :func:`~functools.partial` function is now in the
879stdlib; in CPython it is overridden by the C accelerated version, but it is
880available for other implementations to use. (Contributed by Brian Thorne in
881:issue:`12428`.)
882
Nick Coghlane8c45d62013-07-28 20:00:01 +1000883
R David Murray0e814632013-12-26 15:11:28 -0500884gc
885--
886
R David Murraya101bdb2014-01-06 16:32:05 -0500887New function :func:`~gc.get_stats` returns a list of three per-generation
888dictionaries containing the collections statistics since interpreter startup.
889(Contributed by Antoine Pitrou in :issue:`16351`.)
R David Murray0e814632013-12-26 15:11:28 -0500890
891
Larry Hastings3732ed22014-03-15 21:13:56 -0700892glob
893----
894
895A new function :func:`~glob.escape` provides a way to escape special characters
896in a filename so that they do not become part of the globbing expansion but are
897instead matched literally. (Contributed by Serhiy Storchaka in :issue:`8402`.)
898
899
Christian Heimese92ef132013-10-13 00:52:43 +0200900hashlib
901-------
902
Larry Hastings3732ed22014-03-15 21:13:56 -0700903A new :func:`hashlib.pbkdf2_hmac` function provides
904the `PKCS#5 password-based key derivation function 2
Georg Brandl5d941342016-02-26 19:37:12 +0100905<https://en.wikipedia.org/wiki/PBKDF2>`_. (Contributed by Christian
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200906Heimes in :issue:`18582`.)
Larry Hastings3732ed22014-03-15 21:13:56 -0700907
908The :attr:`~hashlib.hash.name` attribute of :mod:`hashlib` hash objects is now
909a formally supported interface. It has always existed in CPython's
910:mod:`hashlib` (although it did not return lower case names for all supported
911hashes), but it was not a public interface and so some other Python
912implementations have not previously supported it. (Contributed by Jason R.
913Coombs in :issue:`18532`.)
Christian Heimese92ef132013-10-13 00:52:43 +0200914
915
R David Murraya56d4e82014-02-02 12:50:48 -0500916hmac
917----
918
919:mod:`hmac` now accepts ``bytearray`` as well as ``bytes`` for the *key*
920argument to the :func:`~hmac.new` function, and the *msg* parameter to both the
921:func:`~hmac.new` function and the :meth:`~hmac.HMAC.update` method now
922accepts any type supported by the :mod:`hashlib` module. (Contributed
923by Jonas Borgström in :issue:`18240`.)
924
Larry Hastings3732ed22014-03-15 21:13:56 -0700925The *digestmod* argument to the :func:`hmac.new` function may now be any hash
926digest name recognized by :mod:`hashlib`. In addition, the current behavior in
927which the value of *digestmod* defaults to ``MD5`` is deprecated: in a
928future version of Python there will be no default value. (Contributed by
929Christian Heimes in :issue:`17276`.)
930
931With the addition of :attr:`~hmac.HMAC.block_size` and :attr:`~hmac.HMAC.name`
932attributes (and the formal documentation of the :attr:`~hmac.HMAC.digest_size`
933attribute), the :mod:`hmac` module now conforms fully to the :pep:`247` API.
934(Contributed by Christian Heimes in :issue:`18775`.)
935
R David Murraya56d4e82014-02-02 12:50:48 -0500936
Ezio Melotti250a06c2013-11-25 06:18:47 +0200937html
938----
939
Larry Hastings3732ed22014-03-15 21:13:56 -0700940New function :func:`~html.unescape` function converts HTML5 character references to
941the corresponding Unicode characters. (Contributed by Ezio Melotti in
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200942:issue:`2927`.)
Ezio Melotti250a06c2013-11-25 06:18:47 +0200943
Larry Hastings3732ed22014-03-15 21:13:56 -0700944:class:`~html.parser.HTMLParser` accepts a new keyword argument
945*convert_charrefs* that, when ``True``, automatically converts all character
946references. For backward-compatibility, its value defaults to ``False``, but
947it will change to ``True`` in a future version of Python, so you are invited to
948set it explicitly and update your code to use this new feature. (Contributed
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200949by Ezio Melotti in :issue:`13633`.)
Ezio Melotti250a06c2013-11-25 06:18:47 +0200950
951The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Serhiy Storchakae5cf4862014-11-02 19:18:52 +0200952(Contributed by Ezio Melotti in :issue:`15114`.)
Ezio Melotti250a06c2013-11-25 06:18:47 +0200953
954
R David Murraya475a8d2014-01-03 13:03:00 -0500955http
956----
957
958:meth:`~http.server.BaseHTTPRequestHandler.send_error` now accepts an
Zachary Ware335957e2014-01-13 16:08:54 -0600959optional additional *explain* parameter which can be used to provide an
R David Murraya475a8d2014-01-03 13:03:00 -0500960extended error description, overriding the hardcoded default if there is one.
961This extended error description will be formatted using the
962:attr:`~http.server.HTTP.error_message_format` attribute and sent as the body
963of the error response. (Contributed by Karl Cow in :issue:`12921`.)
964
Larry Hastings3732ed22014-03-15 21:13:56 -0700965The :mod:`http.server` :ref:`command line interface <http-server-cli>` now has
966a ``-b/--bind`` option that causes the server to listen on a specific address.
967(Contributed by Malte Swart in :issue:`17764`.)
968
R David Murraya475a8d2014-01-03 13:03:00 -0500969
Terry Jan Reedy571164f2015-05-23 18:13:14 -0400970idlelib and IDLE
971----------------
972
973Since idlelib implements the IDLE shell and editor and is not intended for
974import by other programs, it gets improvements with every release. See
975:file:`Lib/idlelib/NEWS.txt` for a cumulative list of changes since 3.3.0,
976as well as changes made in future 3.4.x releases. This file is also available
Serhiy Storchaka66ad8462015-09-13 21:05:37 +0300977from the IDLE :menuselection:`Help --> About IDLE` dialog.
Terry Jan Reedy571164f2015-05-23 18:13:14 -0400978
979
R David Murrayd2653812013-12-27 14:06:15 -0500980importlib
981---------
982
983The :class:`~importlib.abc.InspectLoader` ABC defines a new method,
984:meth:`~importlib.abc.InspectLoader.source_to_code` that accepts source
985data and a path and returns a code object. The default implementation
986is equivalent to ``compile(data, path, 'exec', dont_inherit=True)``.
987(Contributed by Eric Snow and Brett Cannon in :issue:`15627`.)
988
R David Murray0ae7ae12014-01-08 18:16:02 -0500989:class:`~importlib.abc.InspectLoader` also now has a default implementation
990for the :meth:`~importlib.abc.InspectLoader.get_code` method. However,
991it will normally be desirable to override the default implementation
992for performance reasons. (Contributed by Brett Cannon in :issue:`18072`.)
993
R David Murray70e04f52014-02-02 10:50:17 -0500994The :func:`~importlib.reload` function has been moved from :mod:`imp` to
995:mod:`importlib` as part of the :mod:`imp` module deprecation. (Contributed by
996Berker Peksag in :issue:`18193`.)
R David Murray8c561b52014-02-01 12:27:07 -0500997
R David Murray900aeb72014-02-02 11:32:31 -0500998:mod:`importlib.util` now has a :data:`~importlib.util.MAGIC_NUMBER` attribute
999providing access to the bytecode version number. This replaces the
1000:func:`~imp.get_magic` function in the deprecated :mod:`imp` module.
1001(Contributed by Brett Cannon in :issue:`18192`.)
1002
1003New :mod:`importlib.util` functions :func:`~importlib.util.cache_from_source`
1004and :func:`~importlib.util.source_from_cache` replace the same-named functions
1005in the deprecated :mod:`imp` module. (Contributed by Brett Cannon in
1006:issue:`18194`.)
1007
R David Murray5147e002014-02-02 12:19:57 -05001008The :mod:`importlib` bootstrap :class:`.NamespaceLoader` now conforms to
1009the :class:`.InspectLoader` ABC, which means that ``runpy`` and
1010``python -m`` can now be used with namespace packages. (Contributed
1011by Brett Cannon in :issue:`18058`.)
1012
R David Murraya56d4e82014-02-02 12:50:48 -05001013:mod:`importlib.util` has a new function :func:`~importlib.util.decode_source`
1014that decodes source from bytes using universal newline processing. This is
1015useful for implementing :meth:`.InspectLoader.get_source` methods.
1016
Larry Hastings3732ed22014-03-15 21:13:56 -07001017:class:`importlib.machinery.ExtensionFileLoader` now has a
1018:meth:`~importlib.machinery.ExtensionFileLoader.get_filename` method. This was
1019inadvertently omitted in the original implementation. (Contributed by Eric
1020Snow in :issue:`19152`.)
1021
R David Murrayd2653812013-12-27 14:06:15 -05001022
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001023inspect
1024-------
1025
Larry Hastings3732ed22014-03-15 21:13:56 -07001026The :mod:`inspect` module now offers a basic :ref:`command line interface
Nick Coghlan367df122013-10-27 01:57:34 +10001027<inspect-module-cli>` to quickly display source code and other
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001028information for modules, classes and functions. (Contributed by Claudiu Popa
1029and Nick Coghlan in :issue:`18626`.)
Nick Coghlanf94a16b2013-09-22 22:46:49 +10001030
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001031:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
1032created by :func:`functools.wraps` (and any other API that sets the
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001033``__wrapped__`` attribute on a wrapper function). (Contributed by
1034Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`.)
Nick Coghlan367df122013-10-27 01:57:34 +10001035
1036As part of the implementation of the new :mod:`enum` module, the
1037:mod:`inspect` module now has substantially better support for custom
1038``__dir__`` methods and dynamic class attributes provided through
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001039metaclasses. (Contributed by Ethan Furman in :issue:`18929` and
1040:issue:`19030`.)
Nick Coghlan367df122013-10-27 01:57:34 +10001041
Yury Selivanovd82eddc2014-01-29 11:24:39 -05001042:func:`~inspect.getfullargspec` and :func:`~inspect.getargspec`
1043now use the :func:`~inspect.signature` API. This allows them to
Larry Hastings3732ed22014-03-15 21:13:56 -07001044support a much broader range of callables, including those with
1045``__signature__`` attributes, those with metadata provided by argument
1046clinic, :func:`functools.partial` objects and more. Note that, unlike
1047:func:`~inspect.signature`, these functions still ignore ``__wrapped__``
1048attributes, and report the already bound first argument for bound methods,
1049so it is still necessary to update your code to use
1050:func:`~inspect.signature` directly if those features are desired.
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001051(Contributed by Yury Selivanov in :issue:`17481`.)
Yury Selivanovd82eddc2014-01-29 11:24:39 -05001052
Yury Selivanov63da7c72014-01-31 14:48:37 -05001053:func:`~inspect.signature` now supports duck types of CPython functions,
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001054which adds support for functions compiled with Cython. (Contributed
1055by Stefan Behnel and Yury Selivanov in :issue:`17159`.)
Yury Selivanov63da7c72014-01-31 14:48:37 -05001056
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001057
Nick Coghlan96bb4372014-02-09 09:18:26 +10001058ipaddress
1059---------
1060
1061:mod:`ipaddress` was added to the standard library in Python 3.3 as a
1062:term:`provisional API`. With the release of Python 3.4, this qualification
1063has been removed: :mod:`ipaddress` is now considered a stable API, covered
1064by the normal standard library requirements to maintain backwards
1065compatibility.
1066
Larry Hastings3732ed22014-03-15 21:13:56 -07001067A new :attr:`~ipaddress.IPv4Address.is_global` property is ``True`` if
1068an address is globally routeable. (Contributed by Peter Moody in
1069:issue:`17400`.)
1070
Nick Coghlan96bb4372014-02-09 09:18:26 +10001071
R David Murray9cf617b2014-01-04 18:55:01 -05001072logging
1073-------
1074
1075The :class:`~logging.handlers.TimedRotatingFileHandler` has a new *atTime*
1076parameter that can be used to specify the time of day when rollover should
1077happen. (Contributed by Ronald Oussoren in :issue:`9556`.)
1078
Larry Hastings3732ed22014-03-15 21:13:56 -07001079:class:`~logging.handlers.SocketHandler` and
1080:class:`~logging.handlers.DatagramHandler` now support Unix domain sockets (by
1081setting *port* to ``None``). (Contributed by Vinay Sajip in commit
1082ce46195b56a9.)
1083
1084:func:`~logging.config.fileConfig` now accepts a
1085:class:`configparser.RawConfigParser` subclass instance for the *fname*
1086parameter. This facilitates using a configuration file when logging
1087configuration is just a part of the overall application configuration, or where
1088the application modifies the configuration before passing it to
1089:func:`~logging.config.fileConfig`. (Contributed by Vinay Sajip in
1090:issue:`16110`.)
1091
1092Logging configuration data received from a socket via the
1093:func:`logging.config.listen` function can now be validated before being
1094processed by supplying a verification function as the argument to the new
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001095*verify* keyword argument. (Contributed by Vinay Sajip in :issue:`15452`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07001096
R David Murray9cf617b2014-01-04 18:55:01 -05001097
R David Murray8f7664a2013-12-22 20:40:11 -05001098.. _whatsnew-marshal-3:
1099
1100marshal
1101-------
1102
1103The default :mod:`marshal` version has been bumped to 3. The code implementing
1104the new version restores the Python2 behavior of recording only one copy of
1105interned strings and preserving the interning on deserialization, and extends
1106this "one copy" ability to any object type (including handling recursive
1107references). This reduces both the size of ``.pyc`` files and the amount of
1108memory a module occupies in memory when it is loaded from a ``.pyc`` (or
Larry Hastings3732ed22014-03-15 21:13:56 -07001109``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`,
1110with additional speedups by Antoine Pitrou in :issue:`19219`.)
R David Murray8f7664a2013-12-22 20:40:11 -05001111
1112
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001113mmap
1114----
1115
Larry Hastings3732ed22014-03-15 21:13:56 -07001116mmap objects can now be :mod:`weakref`\ ed. (Contributed by Valerie Lambert in
1117:issue:`4885`.)
R David Murray57fcf762014-01-03 23:31:54 -05001118
R David Murray33ef1ae2013-12-31 16:04:50 -05001119
Richard Oudkerk84ed9a62013-08-14 15:35:41 +01001120multiprocessing
1121---------------
1122
R David Murrayac186222013-12-20 17:23:57 -05001123.. _whatsnew-multiprocessing-no-fork:
1124
Larry Hastings3732ed22014-03-15 21:13:56 -07001125On Unix two new :ref:`start methods <multiprocessing-start-methods>`,
Benjamin Peterson3ef80582015-07-01 22:36:21 -05001126``spawn`` and ``forkserver``, have been added for starting processes using
R David Murrayac186222013-12-20 17:23:57 -05001127:mod:`multiprocessing`. These make the mixing of processes with threads more
1128robust, and the ``spawn`` method matches the semantics that multiprocessing has
Larry Hastings3732ed22014-03-15 21:13:56 -07001129always used on Windows. New function
1130:func:`~multiprocessing.get_all_start_methods` reports all start methods
1131available on the platform, :func:`~multiprocessing.get_start_method` reports
1132the current start method, and :func:`~multiprocessing.set_start_method` sets
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001133the start method. (Contributed by Richard Oudkerk in :issue:`8713`.)
Richard Oudkerk84ed9a62013-08-14 15:35:41 +01001134
Larry Hastings3732ed22014-03-15 21:13:56 -07001135:mod:`multiprocessing` also now has the concept of a ``context``, which
1136determines how child processes are created. New function
1137:func:`~multiprocessing.get_context` returns a context that uses a specified
1138start method. It has the same API as the :mod:`multiprocessing` module itself,
1139so you can use it to create :class:`~multiprocessing.pool.Pool`\ s and other
1140objects that will operate within that context. This allows a framework and an
1141application or different parts of the same application to use multiprocessing
1142without interfering with each other. (Contributed by Richard Oudkerk in
1143:issue:`18999`.)
1144
1145Except when using the old *fork* start method, child processes no longer
1146inherit unneeded handles/file descriptors from their parents (part of
1147:issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +01001148
Nick Coghlan9a767352013-12-17 22:17:26 +10001149:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
1150``-m`` switch) to initialise ``__main__`` appropriately in child processes
1151when using the ``spawn`` or ``forkserver`` start methods. This resolves some
Larry Hastings3732ed22014-03-15 21:13:56 -07001152edge cases where combining multiprocessing, the ``-m`` command line switch,
Nick Coghlan9a767352013-12-17 22:17:26 +10001153and explicit relative imports could cause obscure failures in child
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001154processes. (Contributed by Nick Coghlan in :issue:`19946`.)
Nick Coghlan9a767352013-12-17 22:17:26 +10001155
Richard Oudkerk84ed9a62013-08-14 15:35:41 +01001156
R David Murray98358272014-01-05 20:52:06 -05001157operator
1158--------
1159
Larry Hastings3732ed22014-03-15 21:13:56 -07001160New function :func:`~operator.length_hint` provides an implementation of the
1161specification for how the :meth:`~object.__length_hint__` special method should
1162be used, as part of the :pep:`424` formal specification of this language
1163feature. (Contributed by Armin Ronacher in :issue:`16148`.)
1164
R David Murray98358272014-01-05 20:52:06 -05001165There is now a pure-python version of the :mod:`operator` module available for
1166reference and for use by alternate implementations of Python. (Contributed by
1167Zachary Ware in :issue:`16694`.)
1168
1169
Victor Stinnerdaf45552013-08-28 00:53:59 +02001170os
1171--
1172
Larry Hastings3732ed22014-03-15 21:13:56 -07001173There are new functions to get and set the :ref:`inheritable flag
1174<fd_inheritance>` of a file descriptor (:func:`os.get_inheritable`,
1175:func:`os.set_inheritable`) or a Windows handle
1176(:func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`).
Victor Stinnerdaf45552013-08-28 00:53:59 +02001177
Larry Hastings3732ed22014-03-15 21:13:56 -07001178New function :func:`~os.cpu_count` reports the number of CPUs available on the
1179platform on which Python is running (or ``None`` if the count can't be
1180determined). The :func:`multiprocessing.cpu_count` function is now implemented
1181in terms of this function). (Contributed by Trent Nelson, Yogesh Chaudhari,
1182Victor Stinner, and Charles-François Natali in :issue:`17914`.)
Victor Stinnerdaf45552013-08-28 00:53:59 +02001183
Larry Hastings3732ed22014-03-15 21:13:56 -07001184:func:`os.path.samestat` is now available on the Windows platform (and the
1185:func:`os.path.samefile` implementation is now shared between Unix and
1186Windows). (Contributed by Brian Curtin in :issue:`11939`.)
1187
1188:func:`os.path.ismount` now recognizes volumes mounted below a drive
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001189root on Windows. (Contributed by Tim Golden in :issue:`9035`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07001190
1191:func:`os.open` supports two new flags on platforms that provide them,
1192:data:`~os.O_PATH` (un-opened file descriptor), and :data:`~os.O_TMPFILE`
1193(unnamed temporary file; as of 3.4.0 release available only on Linux systems
1194with a kernel version of 3.11 or newer that have uapi headers). (Contributed
1195by Christian Heimes in :issue:`18673` and Benjamin Peterson, respectively.)
R David Murray66bf12a2014-01-08 17:21:22 -05001196
Victor Stinnerdaf45552013-08-28 00:53:59 +02001197
R David Murray78d692f2013-10-10 17:23:26 -04001198pdb
1199---
1200
Larry Hastings3732ed22014-03-15 21:13:56 -07001201:mod:`pdb` has been enhanced to handle generators, :keyword:`yield`, and
1202``yield from`` in a more useful fashion. This is especially helpful when
1203debugging :mod:`asyncio` based programs. (Contributed by Andrew Svetlov and
1204Xavier de Gaye in :issue:`16596`.)
1205
R David Murray78d692f2013-10-10 17:23:26 -04001206The ``print`` command has been removed from :mod:`pdb`, restoring access to the
Larry Hastings3732ed22014-03-15 21:13:56 -07001207Python :func:`print` function from the pdb command line. Python2's ``pdb`` did
1208not have a ``print`` command; instead, entering ``print`` executed the
1209``print`` statement. In Python3 ``print`` was mistakenly made an alias for the
1210pdb :pdbcmd:`p` command. ``p``, however, prints the ``repr`` of its argument,
1211not the ``str`` like the Python2 ``print`` command did. Worse, the Python3
1212``pdb print`` command shadowed the Python3 ``print`` function, making it
1213inaccessible at the ``pdb`` prompt. (Contributed by Connor Osborn in
1214:issue:`18764`.)
R David Murray78d692f2013-10-10 17:23:26 -04001215
1216
R David Murray809487e2013-12-22 20:49:40 -05001217.. _whatsnew-protocol-4:
1218
R David Murray5ea95242013-12-24 15:59:57 -05001219pickle
R David Murray809487e2013-12-22 20:49:40 -05001220------
1221
R David Murray809487e2013-12-22 20:49:40 -05001222:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
1223protocol 4. This new protocol addresses a number of issues that were present
1224in previous protocols, such as the serialization of nested classes, very large
Larry Hastings3732ed22014-03-15 21:13:56 -07001225strings and containers, and classes whose :meth:`__new__` method takes
R David Murray809487e2013-12-22 20:49:40 -05001226keyword-only arguments. It also provides some efficiency improvements.
1227
1228.. seealso::
1229
R David Murray061efb12013-12-24 12:35:59 -05001230 :pep:`3154` -- Pickle protocol 4
R David Murray809487e2013-12-22 20:49:40 -05001231 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
1232
1233
Nick Coghlanaa029da2014-02-09 10:10:24 +10001234plistlib
1235--------
1236
Larry Hastings3732ed22014-03-15 21:13:56 -07001237:mod:`plistlib` now has an API that is similar to the standard pattern for
1238stdlib serialization protocols, with new :func:`~plistlib.load`,
1239:func:`~plistlib.dump`, :func:`~plistlib.loads`, and :func:`~plistlib.dumps`
1240functions. (The older API is now deprecated.) In addition to the already
1241supported XML plist format (:data:`~plistlib.FMT_XML`), it also now supports
1242the binary plist format (:data:`~plistlib.FMT_BINARY`). (Contributed by Ronald
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001243Oussoren and others in :issue:`14455`.)
Nick Coghlanaa029da2014-02-09 10:10:24 +10001244
1245
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001246poplib
1247------
1248
R David Murray473f45b2013-12-27 17:01:16 -05001249Two new methods have been added to :mod:`poplib`: :meth:`~poplib.POP3.capa`,
1250which returns the list of capabilities advertised by the POP server, and
1251:meth:`~poplib.POP3.stls`, which switches a clear-text POP3 session into an
1252encrypted POP3 session if the POP server supports it. (Contributed by Lorenzo
1253Catucci in :issue:`4473`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001254
1255
Serhiy Storchaka7c411a42013-10-02 11:56:18 +03001256pprint
1257------
1258
Larry Hastings3732ed22014-03-15 21:13:56 -07001259The :mod:`pprint` module's :class:`~pprint.PrettyPrinter` class and its
1260:func:`~pprint.pformat`, and :func:`~pprint.pprint` functions have a new
1261option, *compact*, that controls how the output is formatted. Currently
1262setting *compact* to ``True`` means that sequences will be printed with as many
1263sequence elements as will fit within *width* on each (indented) line.
1264(Contributed by Serhiy Storchaka in :issue:`19132`.)
Serhiy Storchaka7c411a42013-10-02 11:56:18 +03001265
R David Murrayb231b2b2014-01-04 17:11:23 -05001266Long strings are now wrapped using Python's normal line continuation
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001267syntax. (Contributed by Antoine Pitrou in :issue:`17150`.)
R David Murrayb231b2b2014-01-04 17:11:23 -05001268
Serhiy Storchaka7c411a42013-10-02 11:56:18 +03001269
R David Murray6e390152013-12-24 22:28:04 -05001270pty
1271---
1272
1273:func:`pty.spawn` now returns the status value from :func:`os.waitpid` on
1274the child process, instead of ``None``. (Contributed by Gregory P. Smith.)
1275
1276
Nick Coghlan367df122013-10-27 01:57:34 +10001277pydoc
1278-----
1279
Larry Hastings3732ed22014-03-15 21:13:56 -07001280The :mod:`pydoc` module is now based directly on the :func:`inspect.signature`
1281introspection API, allowing it to provide signature information for a wider
1282variety of callable objects. This change also means that ``__wrapped__``
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001283attributes are now taken into account when displaying help information.
1284(Contributed by Larry Hastings in :issue:`19674`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07001285
1286The :mod:`pydoc` module no longer displays the ``self`` parameter for
1287already bound methods. Instead, it aims to always display the exact current
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001288signature of the supplied callable. (Contributed by Larry Hastings in
1289:issue:`20710`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07001290
1291In addition to the changes that have been made to :mod:`pydoc` directly,
Nick Coghlan367df122013-10-27 01:57:34 +10001292its handling of custom ``__dir__`` methods and various descriptor
Larry Hastings3732ed22014-03-15 21:13:56 -07001293behaviours has also been improved substantially by the underlying changes in
Nick Coghlan367df122013-10-27 01:57:34 +10001294the :mod:`inspect` module.
1295
Larry Hastings3732ed22014-03-15 21:13:56 -07001296As the :func:`help` builtin is based on :mod:`pydoc`, the above changes also
1297affect the behaviour of :func:`help`.
1298
Nick Coghlan367df122013-10-27 01:57:34 +10001299
Serhiy Storchaka32eddc12013-11-23 23:20:30 +02001300re
1301--
1302
Larry Hastings3732ed22014-03-15 21:13:56 -07001303New :func:`~re.fullmatch` function and :meth:`.regex.fullmatch` method anchor
1304the pattern at both ends of the string to match. This provides a way to be
1305explicit about the goal of the match, which avoids a class of subtle bugs where
1306``$`` characters get lost during code changes or the addition of alternatives
1307to an existing regular expression. (Contributed by Matthew Barnett in
1308:issue:`16203`.)
Serhiy Storchaka32eddc12013-11-23 23:20:30 +02001309
Ezio Melottidd7e2912013-11-25 23:20:20 +02001310The repr of :ref:`regex objects <re-objects>` now includes the pattern
1311and the flags; the repr of :ref:`match objects <match-objects>` now
Larry Hastings3732ed22014-03-15 21:13:56 -07001312includes the start, end, and the part of the string that matched. (Contributed
1313by Hugo Lopes Tavares and Serhiy Storchaka in :issue:`13592` and
1314:issue:`17087`.)
Ezio Melottidd7e2912013-11-25 23:20:20 +02001315
1316
Christian Heimesb7bd5df2013-10-22 11:21:54 +02001317resource
1318--------
1319
Larry Hastings3732ed22014-03-15 21:13:56 -07001320New :func:`~resource.prlimit` function, available on Linux platforms with a
1321kernel version of 2.6.36 or later and glibc of 2.13 or later, provides the
1322ability to query or set the resource limits for processes other than the one
1323making the call. (Contributed by Christian Heimes in :issue:`16595`.)
1324
1325On Linux kernel version 2.6.36 or later, there are there are also some new
1326Linux specific constants: :attr:`~resource.RLIMIT_MSGQUEUE`,
1327:attr:`~resource.RLIMIT_NICE`, :attr:`~resource.RLIMIT_RTPRIO`,
1328:attr:`~resource.RLIMIT_RTTIME`, and :attr:`~resource.RLIMIT_SIGPENDING`.
1329(Contributed by Christian Heimes in :issue:`19324`.)
1330
1331On FreeBSD version 9 and later, there some new FreeBSD specific constants:
1332:attr:`~resource.RLIMIT_SBSIZE`, :attr:`~resource.RLIMIT_SWAP`, and
1333:attr:`~resource.RLIMIT_NPTS`. (Contributed by Claudiu Popa in
1334:issue:`19343`.)
Christian Heimesb7bd5df2013-10-22 11:21:54 +02001335
R David Murray575fb312013-12-25 23:21:03 -05001336
R David Murray2bc930f2013-12-31 11:17:21 -05001337select
1338------
1339
1340:class:`~select.epoll` objects now support the context management protocol.
1341When used in a :keyword:`with` statement, the :meth:`~select.epoll.close`
1342method will be called automatically at the end of the block. (Contributed
1343by Serhiy Storchaka in :issue:`16488`.)
1344
Larry Hastings3732ed22014-03-15 21:13:56 -07001345:class:`~select.devpoll` objects now have :meth:`~select.devpoll.fileno` and
1346:meth:`~select.devpoll.close` methods, as well as a new attribute
1347:attr:`~select.devpoll.closed`. (Contributed by Victor Stinner in
1348:issue:`18794`.)
1349
R David Murray2bc930f2013-12-31 11:17:21 -05001350
R David Murray575fb312013-12-25 23:21:03 -05001351shelve
1352------
1353
1354:class:`~shelve.Shelf` instances may now be used in :keyword:`with` statements,
1355and will be automatically closed at the end of the :keyword:`with` block.
1356(Contributed by Filip Gruszczyński in :issue:`13896`.)
1357
1358
Larry Hastings3732ed22014-03-15 21:13:56 -07001359shutil
1360------
1361
1362:func:`~shutil.copyfile` now raises a specific :exc:`~shutil.Error` subclass,
1363:exc:`~shutil.SameFileError`, when the source and destination are the same
1364file, which allows an application to take appropriate action on this specific
1365error. (Contributed by Atsuo Ishimoto and Hynek Schlawack in
1366:issue:`1492704`.)
1367
1368
R David Murrayf1e4fdc2014-01-21 18:30:42 -05001369smtpd
1370-----
1371
1372The :class:`~smtpd.SMTPServer` and :class:`~smtpd.SMTPChannel` classes now
Larry Hastings3732ed22014-03-15 21:13:56 -07001373accept a *map* keyword argument which, if specified, is passed in to
R David Murrayf1e4fdc2014-01-21 18:30:42 -05001374:class:`asynchat.async_chat` as its *map* argument. This allows an application
1375to avoid affecting the global socket map. (Contributed by Vinay Sajip in
1376:issue:`11959`.)
1377
1378
R David Murray8e37d5d2013-04-13 14:49:48 -04001379smtplib
1380-------
1381
R David Murray8a345962013-04-14 06:46:35 -04001382:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -04001383both socket level errors and SMTP protocol level errors to be caught in one
1384try/except statement by code that only cares whether or not an error occurred.
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001385(Contributed by Ned Jackson Lovely in :issue:`2118`.)
R David Murray8e37d5d2013-04-13 14:49:48 -04001386
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001387
Victor Stinnerdaf45552013-08-28 00:53:59 +02001388socket
1389------
1390
R David Murray33ef1ae2013-12-31 16:04:50 -05001391The socket module now supports the :data:`~socket.CAN_BCM` protocol on
1392platforms that support it. (Contributed by Brian Thorne in :issue:`15359`.)
1393
Georg Brandl5642ff92013-09-15 10:37:57 +02001394Socket objects have new methods to get or set their :ref:`inheritable flag
R David Murray33ef1ae2013-12-31 16:04:50 -05001395<fd_inheritance>`, :meth:`~socket.socket.get_inheritable` and
1396:meth:`~socket.socket.set_inheritable`.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001397
R David Murray33ef1ae2013-12-31 16:04:50 -05001398The ``socket.AF_*`` and ``socket.SOCK_*`` constants are now enumeration values
1399using the new :mod:`enum` module. This allows meaningful names to be printed
1400during debugging, instead of integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +02001401
R David Murray66bf12a2014-01-08 17:21:22 -05001402The :data:`~socket.AF_LINK` constant is now available on BSD and OSX.
1403
Larry Hastings3732ed22014-03-15 21:13:56 -07001404:func:`~socket.inet_pton` and :func:`~socket.inet_ntop` are now supported
1405on Windows. (Contributed by Atsuo Ishimoto in :issue:`7171`.)
1406
R David Murray8b2d6822013-12-31 15:06:05 -05001407
R David Murray9025f1c2014-01-02 13:44:18 -05001408sqlite3
1409-------
1410
Larry Hastings3732ed22014-03-15 21:13:56 -07001411A new boolean parameter to the :func:`~sqlite3.connect` function, *uri*, can be
1412used to indicate that the *database* parameter is a ``uri`` (see the `SQLite
1413URI documentation <http://www.sqlite.org/uri.html>`_). (Contributed by poq in
1414:issue:`13773`.)
R David Murray9025f1c2014-01-02 13:44:18 -05001415
1416
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001417ssl
1418---
1419
R David Murray748bad22013-12-20 17:08:39 -05001420.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001421
R David Murray748bad22013-12-20 17:08:39 -05001422:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
1423TLSv1.2 support) have been added; support for these protocols is only available if
1424Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001425Antoine Pitrou in :issue:`16692`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001426
Larry Hastings3732ed22014-03-15 21:13:56 -07001427.. _whatsnew34-sslcontext:
1428
1429New function :func:`~ssl.create_default_context` provides a standard way to
1430obtain an :class:`~ssl.SSLContext` whose settings are intended to be a
1431reasonable balance between compatibility and security. These settings are
1432more stringent than the defaults provided by the :class:`~ssl.SSLContext`
1433constructor, and may be adjusted in the future, without prior deprecation, if
1434best-practice security requirements change. The new recommended best
1435practice for using stdlib libraries that support SSL is to use
1436:func:`~ssl.create_default_context` to obtain an :class:`~ssl.SSLContext`
1437object, modify it if needed, and then pass it as the *context* argument
1438of the appropriate stdlib API. (Contributed by Christian Heimes
1439in :issue:`19689`.)
1440
1441:class:`~ssl.SSLContext` method :meth:`~ssl.SSLContext.load_verify_locations`
1442accepts a new optional argument *cadata*, which can be used to provide PEM or
1443DER encoded certificates directly via strings or bytes, respectively.
1444(Contributed by Christian Heimes in :issue:`18138`.)
1445
R David Murrayf1e4fdc2014-01-21 18:30:42 -05001446New function :func:`~ssl.get_default_verify_paths` returns
1447a named tuple of the paths and environment variables that the
1448:meth:`~ssl.SSLContext.set_default_verify_paths` method uses to set
1449OpenSSL's default ``cafile`` and ``capath``. This can be an aid in
1450debugging default verification issues. (Contributed by Christian Heimes
1451in :issue:`18143`.)
1452
1453:class:`~ssl.SSLContext` has a new method,
1454:meth:`~ssl.SSLContext.cert_store_stats`, that reports the number of loaded
1455``X.509`` certs, ``X.509 CA`` certs, and certificate revocation lists (``crl``\
1456s), as well as a :meth:`~ssl.SSLContext.get_ca_certs` method that returns a
1457list of the loaded ``CA`` certificates. (Contributed by Christian Heimes in
Larry Hastings3732ed22014-03-15 21:13:56 -07001458:issue:`18147`.)
1459
1460If OpenSSL 0.9.8 or later is available, :class:`~ssl.SSLContext` has an new
1461attribute :attr:`~ssl.SSLContext.verify_flags` that can be used to control the
1462certificate verification process by setting it to some combination of the new
1463constants :data:`~ssl.VERIFY_DEFAULT`, :data:`~ssl.VERIFY_CRL_CHECK_LEAF`,
1464:data:`~ssl.VERIFY_CRL_CHECK_CHAIN`, or :data:`~ssl.VERIFY_X509_STRICT`.
1465OpenSSL does not do any CRL verification by default. (Contributed by
1466Christien Heimes in :issue:`8813`.)
1467
1468New :class:`~ssl.SSLContext` method :meth:`~ssl.SSLContext.load_default_certs`
Jesus Ceacec25b02014-03-17 19:00:48 +01001469loads a set of default "certificate authority" (CA) certificates from default
Larry Hastings3732ed22014-03-15 21:13:56 -07001470locations, which vary according to the platform. It can be used to load both
1471TLS web server authentication certificates
1472(``purpose=``:data:`~ssl.Purpose.SERVER_AUTH`) for a client to use to verify a
1473server, and certificates for a server to use in verifying client certificates
1474(``purpose=``:data:`~ssl.Purpose.CLIENT_AUTH`). (Contributed by Christian
1475Heimes in :issue:`19292`.)
1476
1477.. _whatsnew34-win-cert-store:
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001478
R David Murray8c561b52014-02-01 12:27:07 -05001479Two new windows-only functions, :func:`~ssl.enum_certificates` and
1480:func:`~ssl.enum_crls` provide the ability to retrieve certificates,
1481certificate information, and CRLs from the Windows cert store. (Contributed
1482by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001483
Larry Hastings3732ed22014-03-15 21:13:56 -07001484.. _whatsnew34-sni:
1485
1486Support for server-side SNI (Server Name Indication) using the new
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001487:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001488(Contributed by Daniel Black in :issue:`8109`.)
1489
Larry Hastings3732ed22014-03-15 21:13:56 -07001490The dictionary returned by :meth:`.SSLSocket.getpeercert` contains additional
1491``X509v3`` extension items: ``crlDistributionPoints``, ``calIssuers``, and
1492``OCSP`` URIs. (Contributed by Christian Heimes in :issue:`18379`.)
1493
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001494
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001495stat
1496----
1497
1498The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
1499implementation is required as most of the values aren't standardized and
Larry Hastings3732ed22014-03-15 21:13:56 -07001500are platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001501
Larry Hastings3732ed22014-03-15 21:13:56 -07001502The module supports new :mod:`~stat.ST_MODE` flags, :mod:`~stat.S_IFDOOR`,
1503:attr:`~stat.S_IFPORT`, and :attr:`~stat.S_IFWHT`. (Contributed by
1504Christian Hiemes in :issue:`11016`.)
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001505
1506
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001507struct
1508------
1509
Larry Hastings3732ed22014-03-15 21:13:56 -07001510New function :mod:`~struct.iter_unpack` and a new
1511:meth:`struct.Struct.iter_unpack` method on compiled formats provide streamed
1512unpacking of a buffer containing repeated instances of a given format of data.
1513(Contributed by Antoine Pitrou in :issue:`17804`.)
R David Murray98358272014-01-05 20:52:06 -05001514
1515
1516subprocess
1517----------
1518
1519:func:`~subprocess.check_output` now accepts an *input* argument that can
1520be used to provide the contents of ``stdin`` for the command that is run.
1521(Contributed by Zack Weinberg in :issue:`16624`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001522
Larry Hastings3732ed22014-03-15 21:13:56 -07001523:func:`~subprocess.getstatus` and :func:`~subprocess.getstatusoutput` now
1524work on Windows. This change was actually inadvertently made in 3.3.4.
1525(Contributed by Tim Golden in :issue:`10197`.)
1526
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001527
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001528sunau
1529-----
1530
1531The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
1532plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
1533
Serhiy Storchaka14867992014-09-10 23:43:41 +03001534:meth:`sunau.open` now supports the context management protocol: when used in a
Larry Hastings3732ed22014-03-15 21:13:56 -07001535:keyword:`with` block, the ``close`` method of the returned object will be
1536called automatically at the end of the block. (Contributed by Serhiy Storchaka
1537in :issue:`18878`.)
1538
1539:meth:`.AU_write.setsampwidth` now supports 24 bit samples, thus adding
1540support for writing 24 sample using the module. (Contributed by
1541Serhiy Storchaka in :issue:`19261`.)
1542
1543The :meth:`~sunau.AU_write.writeframesraw` and
1544:meth:`~sunau.AU_write.writeframes` methods now accept any :term:`bytes-like
1545object`. (Contributed by Serhiy Storchaka in :issue:`8311`.)
Serhiy Storchaka34d20132013-09-05 17:01:53 +03001546
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001547
R David Murrayd17aba72013-12-24 14:46:23 -05001548sys
1549---
1550
1551New function :func:`sys.getallocatedblocks` returns the current number of
Larry Hastings3732ed22014-03-15 21:13:56 -07001552blocks allocated by the interpreter. (In CPython with the default
R David Murrayd17aba72013-12-24 14:46:23 -05001553``--with-pymalloc`` setting, this is allocations made through the
Larry Hastings3732ed22014-03-15 21:13:56 -07001554:c:func:`PyObject_Malloc` API.) This can be useful for tracking memory leaks,
R David Murrayd17aba72013-12-24 14:46:23 -05001555especially if automated via a test suite. (Contributed by Antoine Pitrou
1556in :issue:`13390`.)
1557
Larry Hastings3732ed22014-03-15 21:13:56 -07001558When the Python interpreter starts in :ref:`interactive mode
1559<tut-interactive>`, it checks for an :data:`~sys.__interactivehook__` attribute
1560on the :mod:`sys` module. If the attribute exists, its value is called with no
1561arguments just before interactive mode is started. The check is made after the
1562:envvar:`PYTHONSTARTUP` file is read, so it can be set there. The :mod:`site`
1563module :ref:`sets it <rlcompleter-config>` to a function that enables tab
1564completion and history saving (in :file:`~/.python-history`) if the platform
1565supports :mod:`readline`. If you do not want this (new) behavior, you can
1566override it in :envvar:`PYTHONSTARTUP`, :mod:`sitecustomize`, or
1567:mod:`usercustomize` by deleting this attribute from :mod:`sys` (or setting it
1568to some other callable). (Contributed by Éric Araujo and Antoine Pitrou in
1569:issue:`5845`.)
1570
1571
1572tarfile
1573-------
1574
1575The :mod:`tarfile` module now supports a simple :ref:`tarfile-commandline` when
1576called as a script directly or via ``-m``. This can be used to create and
1577extract tarfile archives. (Contributed by Berker Peksag in :issue:`13477`.)
1578
1579
1580textwrap
1581--------
1582
1583The :class:`~textwrap.TextWrapper` class has two new attributes/constructor
1584arguments: :attr:`~textwrap.TextWrapper.max_lines`, which limits the number of
1585lines in the output, and :attr:`~textwrap.TextWrapper.placeholder`, which is a
1586string that will appear at the end of the output if it has been truncated
1587because of *max_lines*. Building on these capabilities, a new convenience
1588function :func:`~textwrap.shorten` collapses all of the whitespace in the input
1589to single spaces and produces a single line of a given *width* that ends with
1590the *placeholder* (by default, ``[...]``). (Contributed by Antoine Pitrou and
1591Serhiy Storchaka in :issue:`18585` and :issue:`18725`.)
1592
1593
1594threading
1595---------
1596
1597The :class:`~threading.Thread` object representing the main thread can be
1598obtained from the new :func:`~threading.main_thread` function. In normal
1599conditions this will be the thread from which the Python interpreter was
1600started. (Contributed by Andrew Svetlov in :issue:`18882`.)
1601
R David Murrayd17aba72013-12-24 14:46:23 -05001602
Andrew Kuchling173a1572013-09-15 18:15:56 -04001603traceback
1604---------
1605
1606A new :func:`traceback.clear_frames` function takes a traceback object
1607and clears the local variables in all of the frames it references,
Larry Hastings3732ed22014-03-15 21:13:56 -07001608reducing the amount of memory consumed. (Contributed by Andrew Kuchling in
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001609:issue:`1565525`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07001610
1611
1612types
1613-----
1614
1615A new :func:`~types.DynamicClassAttribute` descriptor provides a way to define
1616an attribute that acts normally when looked up through an instance object, but
1617which is routed to the *class* ``__getattr__`` when looked up through the
1618class. This allows one to have properties active on a class, and have virtual
1619attributes on the class with the same name (see :mod:`Enum` for an example).
1620(Contributed by Ethan Furman in :issue:`19030`.)
Andrew Kuchling173a1572013-09-15 18:15:56 -04001621
1622
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001623urllib
1624------
1625
R David Murray473f45b2013-12-27 17:01:16 -05001626:mod:`urllib.request` now supports ``data:`` URLs via the
1627:class:`~urllib.request.DataHandler` class. (Contributed by Mathias Panzenböck
1628in :issue:`16423`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001629
Larry Hastings3732ed22014-03-15 21:13:56 -07001630The http method that will be used by a :class:`~urllib.request.Request` class
1631can now be specified by setting a :class:`~urllib.request.Request.method`
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001632class attribute on the subclass. (Contributed by Jason R Coombs in
Larry Hastings3732ed22014-03-15 21:13:56 -07001633:issue:`18978`.)
1634
1635:class:`~urllib.request.Request` objects are now reusable: if the
1636:attr:`~urllib.request.Request.full_url` or :attr:`~urllib.request.Request.data`
1637attributes are modified, all relevant internal properties are updated. This
1638means, for example, that it is now possible to use the same
1639:class:`~urllib.request.Request` object in more than one
1640:meth:`.OpenerDirector.open` call with different *data* arguments, or to
1641modify a :class:`~urllib.request.Request`\ 's ``url`` rather than recomputing it
1642from scratch. There is also a new
1643:meth:`~urllib.request.Request.remove_header` method that can be used to remove
1644headers from a :class:`~urllib.request.Request`. (Contributed by Alexey
1645Kachayev in :issue:`16464`, Daniel Wozniak in :issue:`17485`, and Damien Brecht
1646and Senthil Kumaran in :issue:`17272`.)
1647
1648:class:`~urllib.error.HTTPError` objects now have a
1649:attr:`~urllib.error.HTTPError.headers` attribute that provides access to the
1650HTTP response headers associated with the error. (Contributed by
1651Berker Peksag in :issue:`15701`.)
1652
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001653
1654unittest
1655--------
1656
R David Murray57fcf762014-01-03 23:31:54 -05001657The :class:`~unittest.TestCase` class has a new method,
1658:meth:`~unittest.TestCase.subTest`, that produces a context manager whose
1659:keyword:`with` block becomes a "sub-test". This context manager allows a test
1660method to dynamically generate subtests by, say, calling the ``subTest``
1661context manager inside a loop. A single test method can thereby produce an
1662indefinite number of separately-identified and separately-counted tests, all of
1663which will run even if one or more of them fail. For example::
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001664
R David Murray57fcf762014-01-03 23:31:54 -05001665 class NumbersTest(unittest.TestCase):
1666 def test_even(self):
1667 for i in range(6):
Larry Hastings3732ed22014-03-15 21:13:56 -07001668 with self.subTest(i=i):
R David Murray57fcf762014-01-03 23:31:54 -05001669 self.assertEqual(i % 2, 0)
1670
1671will result in six subtests, each identified in the unittest verbose output
1672with a label consisting of the variable name ``i`` and a particular value for
1673that variable (``i=0``, ``i=1``, etc). See :ref:`subtests` for the full
1674version of this example. (Contributed by Antoine Pitrou in :issue:`16997`.)
1675
1676:func:`unittest.main` now accepts an iterable of test names for
R David Murray9025f1c2014-01-02 13:44:18 -05001677*defaultTest*, where previously it only accepted a single test name as a
1678string. (Contributed by Jyrki Pulliainen in :issue:`15132`.)
1679
R David Murray42fa1102014-01-03 13:03:36 -05001680If :class:`~unittest.SkipTest` is raised during test discovery (that is, at the
1681module level in the test file), it is now reported as a skip instead of an
1682error. (Contributed by Zach Ware in :issue:`16935`.)
1683
R David Murraydb085f52014-01-03 15:46:24 -05001684:meth:`~unittest.TestLoader.discover` now sorts the discovered files to provide
1685consistent test ordering. (Contributed by Martin Melin and Jeff Ramnani in
1686:issue:`16709`.)
1687
Larry Hastings3732ed22014-03-15 21:13:56 -07001688:class:`~unittest.TestSuite` now drops references to tests as soon as the test
1689has been run, if the test is successful. On Python interpreters that do
1690garbage collection, this allows the tests to be garbage collected if nothing
1691else is holding a reference to the test. It is possible to override this
1692behavior by creating a :class:`~unittest.TestSuite` subclass that defines a
1693custom ``_removeTestAtIndex`` method. (Contributed by Tom Wardill, Matt
1694McClure, and Andrew Svetlov in :issue:`11798`.)
1695
1696A new test assertion context-manager, :meth:`~unittest.TestCase.assertLogs`,
1697will ensure that a given block of code emits a log message using the
1698:mod:`logging` module. By default the message can come from any logger and
1699have a priority of ``INFO`` or higher, but both the logger name and an
1700alternative minimum logging level may be specified. The object returned by the
1701context manager can be queried for the :class:`~logging.LogRecord`\ s and/or
1702formatted messages that were logged. (Contributed by Antoine Pitrou in
1703:issue:`18937`.)
1704
1705Test discovery now works with namespace packages (Contributed by Claudiu Popa
1706in :issue:`17457`.)
1707
1708:mod:`unittest.mock` objects now inspect their specification signatures when
1709matching calls, which means an argument can now be matched by either position
1710or name, instead of only by position. (Contributed by Antoine Pitrou in
1711:issue:`17015`.)
1712
1713:func:`~mock.mock_open` objects now have ``readline`` and ``readlines``
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001714methods. (Contributed by Toshio Kuratomi in :issue:`17467`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07001715
R David Murray8e37d5d2013-04-13 14:49:48 -04001716
R David Murray575fb312013-12-25 23:21:03 -05001717venv
1718----
1719
1720:mod:`venv` now includes activation scripts for the ``csh`` and ``fish``
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001721shells. (Contributed by Andrew Svetlov in :issue:`15417`.)
R David Murray575fb312013-12-25 23:21:03 -05001722
Larry Hastings3732ed22014-03-15 21:13:56 -07001723:class:`~venv.EnvBuilder` and the :func:`~venv.create` convenience function
1724take a new keyword argument *with_pip*, which defaults to ``False``, that
1725controls whether or not :class:`~venv.EnvBuilder` ensures that ``pip`` is
1726installed in the virtual environment. (Contributed by Nick Coghlan in
1727:issue:`19552` as part of the :pep:`453` implementation.)
1728
R David Murray575fb312013-12-25 23:21:03 -05001729
R David Murray671cd322013-04-10 12:31:43 -04001730wave
1731----
1732
1733The :meth:`~wave.getparams` method now returns a namedtuple rather than a
1734plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
1735
Serhiy Storchaka14867992014-09-10 23:43:41 +03001736:meth:`wave.open` now supports the context management protocol. (Contributed
R David Murrayc91d5ee2013-07-31 13:46:08 -04001737by Claudiu Popa in :issue:`17616`.)
1738
Larry Hastings3732ed22014-03-15 21:13:56 -07001739:mod:`wave` can now :ref:`write output to unseekable files
1740<wave-write-objects>`. (Contributed by David Jones, Guilherme Polo, and Serhiy
1741Storchaka in :issue:`5202`.)
1742
1743The :meth:`~wave.Wave_write.writeframesraw` and
1744:meth:`~wave.Wave_write.writeframes` methods now accept any :term:`bytes-like
1745object`. (Contributed by Serhiy Storchaka in :issue:`8311`.)
1746
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001747
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001748weakref
1749-------
1750
1751New :class:`~weakref.WeakMethod` class simulates weak references to bound
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001752methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001753
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001754New :class:`~weakref.finalize` class makes it possible to register a callback
1755to be invoked when an object is garbage collected, without needing to
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001756carefully manage the lifecycle of the weak reference itself. (Contributed by
1757Richard Oudkerk in :issue:`15528`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001758
R David Murraya101bdb2014-01-06 16:32:05 -05001759The callback, if any, associated with a :class:`~weakref.ref` is now
1760exposed via the :attr:`~weakref.ref.__callback__` attribute. (Contributed
1761by Mark Dickinson in :issue:`17643`.)
1762
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001763
1764xml.etree
1765---------
1766
R David Murray410d3202014-01-04 23:52:50 -05001767A new parser, :class:`~xml.etree.ElementTree.XMLPullParser`, allows a
1768non-blocking applications to parse XML documents. An example can be
1769seen at :ref:`elementtree-pull-parsing`. (Contributed by Antoine
1770Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001771
R David Murray575fb312013-12-25 23:21:03 -05001772The :mod:`xml.etree.ElementTree` :func:`~xml.etree.ElementTree.tostring` and
1773:func:`~xml.etree.ElementTree.tostringlist` functions, and the
1774:class:`~xml.etree.ElementTree.ElementTree`
1775:meth:`~xml.etree.ElementTree.ElementTree.write` method, now have a
1776*short_empty_elements* :ref:`keyword-only parameter <keyword-only_parameter>`
1777providing control over whether elements with no content are written in
1778abbreviated (``<tag />``) or expanded (``<tag></tag>``) form. (Contributed by
1779Ariel Poliak and Serhiy Storchaka in :issue:`14377`.)
1780
Christian Tismer59202e52013-10-21 03:59:23 +02001781
Larry Hastings3732ed22014-03-15 21:13:56 -07001782zipfile
1783-------
Christian Tismer59202e52013-10-21 03:59:23 +02001784
Larry Hastings3732ed22014-03-15 21:13:56 -07001785The :meth:`~zipfile.PyZipFile.writepy` method of the
1786:class:`~zipfile.PyZipFile` class has a new *filterfunc* option that can be
1787used to control which directories and files are added to the archive. For
1788example, this could be used to exclude test files from the archive.
Christian Tismer59202e52013-10-21 03:59:23 +02001789(Contributed by Christian Tismer in :issue:`19274`.)
1790
Larry Hastings3732ed22014-03-15 21:13:56 -07001791The *allowZip64* parameter to :class:`~zipfile.ZipFile` and
1792:class:`~zipfile.PyZipfile` is now ``True`` by default. (Contributed by
1793William Mallard in :issue:`17201`.)
1794
Christian Tismer59202e52013-10-21 03:59:23 +02001795
R David Murraye6082552014-01-03 16:15:45 -05001796
Nick Coghlan367df122013-10-27 01:57:34 +10001797CPython Implementation Changes
1798==============================
1799
1800
R David Murrayc16dfe12013-12-21 12:32:10 -05001801.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +10001802
R David Murraye7cf6782013-12-24 14:51:25 -05001803PEP 445: Customization of CPython Memory Allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001804---------------------------------------------------
1805
1806:pep:`445` adds new C level interfaces to customize memory allocation in
1807the CPython interpreter.
1808
1809.. seealso::
1810
R David Murray061efb12013-12-24 12:35:59 -05001811 :pep:`445` -- Add new APIs to customize Python memory allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001812 PEP written and implemented by Victor Stinner.
1813
1814
R David Murrayc16dfe12013-12-21 12:32:10 -05001815.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +10001816
R David Murraye7cf6782013-12-24 14:51:25 -05001817PEP 442: Safe Object Finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001818---------------------------------
1819
1820:pep:`442` removes the current limitations and quirks of object finalization
1821in CPython. With it, objects with :meth:`__del__` methods, as well as
1822generators with :keyword:`finally` clauses, can be finalized when they are
1823part of a reference cycle.
1824
1825As part of this change, module globals are no longer forcibly set to
1826:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -05001827on the normal operation of the cyclic garbage collector. This avoids a
1828whole class of interpreter-shutdown-time errors, usually involving
1829``__del__`` methods, that have plagued Python since the cyclic GC
1830was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +10001831
1832.. seealso::
1833
R David Murray061efb12013-12-24 12:35:59 -05001834 :pep:`442` -- Safe object finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001835 PEP written and implemented by Antoine Pitrou.
1836
1837
R David Murrayc16dfe12013-12-21 12:32:10 -05001838.. _whatsnew-pep-456:
1839
1840PEP 456: Secure and Interchangeable Hash Algorithm
1841--------------------------------------------------
1842
1843:pep:`456` follows up on earlier security fix work done on Python's hash
1844algorithm to address certain DOS attacks to which public facing APIs backed by
1845dictionary lookups may be subject. (See :issue:`14621` for the start of the
1846current round of improvements.) The PEP unifies CPython's hash code to make it
1847easier for a packager to substitute a different hash algorithm, and switches
1848Python's default implementation to a SipHash implementation on platforms that
1849have a 64 bit data type. Any performance differences in comparison with the
1850older FNV algorithm are trivial.
1851
Jesus Ceabdb8bb32014-03-17 19:13:09 +01001852The PEP adds additional fields to the :attr:`sys.hash_info` struct sequence to
R David Murrayc16dfe12013-12-21 12:32:10 -05001853describe the hash algorithm in use by the currently executing binary. Otherwise,
1854the PEP does not alter any existing CPython APIs.
1855
1856
R David Murray6dd18302013-12-24 12:23:56 -05001857.. _whatsnew-pep-436:
1858
1859PEP 436: Argument Clinic
1860------------------------
1861
1862"Argument Clinic" (:pep:`436`) is now part of the CPython build process
1863and can be used to simplify the process of defining and maintaining
1864accurate signatures for builtins and standard library extension modules
1865implemented in C.
1866
Nick Coghlanaa029da2014-02-09 10:10:24 +10001867Some standard library extension modules have been converted to use Argument
Larry Hastings3732ed22014-03-15 21:13:56 -07001868Clinic in Python 3.4, and :mod:`pydoc` and :mod:`inspect` have been updated
1869accordingly.
1870
1871It is expected that signature metadata for programmatic introspection will
1872be added to additional callables implemented in C as part of Python 3.4
1873maintenance releases.
Nick Coghlanaa029da2014-02-09 10:10:24 +10001874
R David Murray6dd18302013-12-24 12:23:56 -05001875.. note::
1876 The Argument Clinic PEP is not fully up to date with the state of the
1877 implementation. This has been deemed acceptable by the release manager
1878 and core development team in this case, as Argument Clinic will not
1879 be made available as a public API for third party use in Python 3.4.
1880
1881.. seealso::
1882
R David Murray061efb12013-12-24 12:35:59 -05001883 :pep:`436` -- The Argument Clinic DSL
R David Murray6dd18302013-12-24 12:23:56 -05001884 PEP written and implemented by Larry Hastings.
1885
1886
R David Murraye7cf6782013-12-24 14:51:25 -05001887Other Build and C API Changes
Nick Coghlan367df122013-10-27 01:57:34 +10001888-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02001889
Nick Coghlanaa029da2014-02-09 10:10:24 +10001890* The new :c:func:`PyType_GetSlot` function has been added to the stable ABI,
1891 allowing retrieval of function pointers from named type slots when using
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001892 the limited API. (Contributed by Martin von Löwis in :issue:`17162`.)
Nick Coghlanaa029da2014-02-09 10:10:24 +10001893
Nick Coghlan7d270ee2013-10-17 22:35:35 +10001894* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
1895 allows applications embedding the CPython interpreter to reliably force
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001896 a particular encoding and error handler for the standard streams.
1897 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`.)
Georg Brandlb80f5112012-09-30 09:11:58 +02001898
Nick Coghlan0acceb72013-10-20 13:22:21 +10001899* Most Python C APIs that don't mutate string arguments are now correctly
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001900 marked as accepting ``const char *`` rather than ``char *``. (Contributed
1901 by Serhiy Storchaka in :issue:`1772673`.)
Nick Coghlan0acceb72013-10-20 13:22:21 +10001902
Larry Hastings3732ed22014-03-15 21:13:56 -07001903* A new shell version of ``python-config`` can be used even when a python
R David Murrayd91ba202013-12-24 12:13:44 -05001904 interpreter is not available (for example, in cross compilation scenarios).
1905
Larry Hastings3732ed22014-03-15 21:13:56 -07001906* :c:func:`PyUnicode_FromFormat` now supports width and precision
1907 specifications for ``%s``, ``%A``, ``%U``, ``%V``, ``%S``, and ``%R``.
1908 (Contributed by Ysj Ray and Victor Stinner in :issue:`7330`.)
Georg Brandlb80f5112012-09-30 09:11:58 +02001909
Larry Hastings3732ed22014-03-15 21:13:56 -07001910* New function :c:func:`PyStructSequence_InitType2` supplements the
1911 existing :c:func:`PyStructSequence_InitType` function. The difference
1912 is that it returns ``0`` on success and ``-1`` on failure.
1913
1914* The CPython source can now be compiled using the address sanity checking
1915 features of recent versions of GCC and clang: the false alarms in the small
1916 object allocator have been silenced. (Contributed by Dhiru Kholia in
1917 :issue:`18596`.)
1918
1919* The Windows build now uses `Address Space Layout Randomization
Georg Brandl5d941342016-02-26 19:37:12 +01001920 <https://en.wikipedia.org/wiki/Address_space_layout_randomization>`_ and `Data Execution Prevention
1921 <https://en.wikipedia.org/wiki/Data_Execution_Prevention>`_. (Contributed by
Larry Hastings3732ed22014-03-15 21:13:56 -07001922 Christian Heimes in :issue:`16632`.)
1923
1924* New function :c:func:`PyObject_LengthHint` is the C API equivalent
1925 of :func:`operator.length_hint`. (Contributed by Armin Ronacher in
1926 :issue:`16148`.)
1927
1928
1929.. _other-improvements-3.4:
R David Murraye6082552014-01-03 16:15:45 -05001930
R David Murraye7cf6782013-12-24 14:51:25 -05001931Other Improvements
Larry Hastings3732ed22014-03-15 21:13:56 -07001932------------------
R David Murraybcaaecf2013-12-23 21:23:36 -05001933
Larry Hastings3732ed22014-03-15 21:13:56 -07001934.. _whatsnew-isolated-mode:
1935
1936* The :ref:`python <using-on-cmdline>` command has a new :ref:`option
1937 <using-on-misc-options>`, ``-I``, which causes it to run in "isolated mode",
1938 which means that :data:`sys.path` contains neither the script's directory nor
1939 the user's ``site-packages`` directory, and all :envvar:`PYTHON*` environment
1940 variables are ignored (it implies both ``-s`` and ``-E``). Other
1941 restrictions may also be applied in the future, with the goal being to
1942 isolate the execution of a script from the user's environment. This is
1943 appropriate, for example, when Python is used to run a system script. On
1944 most POSIX systems it can and should be used in the ``#!`` line of system
1945 scripts. (Contributed by Christian Heimes in :issue:`16499`.)
1946
1947* Tab-completion is now enabled by default in the interactive interpreter
1948 on systems that support :mod:`readline`. History is also enabled by default,
1949 and is written to (and read from) the file :file:`~/.python-history`.
R David Murraybcaaecf2013-12-23 21:23:36 -05001950 (Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
1951
1952* Invoking the Python interpreter with ``--version`` now outputs the version to
1953 standard output instead of standard error (:issue:`18338`). Similar changes
1954 were made to :mod:`argparse` (:issue:`18920`) and other modules that have
1955 script-like invocation capabilities (:issue:`18922`).
1956
R David Murray72420ff2013-12-24 10:46:44 -05001957* The CPython Windows installer now adds ``.py`` to the :envvar:`PATHEXT`
1958 variable when extensions are registered, allowing users to run a python
1959 script at the windows command prompt by just typing its name without the
1960 ``.py`` extension. (Contributed by Paul Moore in :issue:`18569`.)
1961
R David Murrayd17aba72013-12-24 14:46:23 -05001962* A new ``make`` target `coverage-report
Georg Brandle73778c2014-10-29 08:36:35 +01001963 <https://docs.python.org/devguide/coverage.html#measuring-coverage-of-c-code-with-gcov-and-lcov>`_
R David Murrayd17aba72013-12-24 14:46:23 -05001964 will build python, run the test suite, and generate an HTML coverage report
1965 for the C codebase using ``gcov`` and `lcov
1966 <http://ltp.sourceforge.net/coverage/lcov.php>`_.
1967
1968* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now
1969 also checks for memory allocation leaks, using
1970 :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02001971 :issue:`13390`.)
R David Murrayd17aba72013-12-24 14:46:23 -05001972
R David Murray5147e002014-02-02 12:19:57 -05001973* ``python -m`` now works with namespace packages.
1974
R David Murraya56d4e82014-02-02 12:50:48 -05001975* The :mod:`stat` module is now implemented in C, which means it gets the
1976 values for its constants from the C header files, instead of having the
1977 values hard-coded in the python module as was previously the case.
1978
Larry Hastings3732ed22014-03-15 21:13:56 -07001979* Loading multiple python modules from a single OS module (``.so``, ``.dll``)
1980 now works correctly (previously it silently returned the first python
1981 module in the file). (Contributed by Václav Šmilauer in :issue:`16421`.)
1982
1983* A new opcode, :opcode:`LOAD_CLASSDEREF`, has been added to fix a bug in the
1984 loading of free variables in class bodies that could be triggered by certain
1985 uses of :ref:`__prepare__ <prepare>`. (Contributed by Benjamin Peterson in
1986 :issue:`17853`.)
1987
1988* A number of MemoryError-related crashes were identified and fixed by Victor
1989 Stinner using his :pep:`445`-based ``pyfailmalloc`` tool (:issue:`18408`,
1990 :issue:`18520`).
1991
1992* The :ref:`pyvenv <scripts-pyvenv>` command now accepts a ``--copies`` option
1993 to use copies rather than symlinks even on systems where symlinks are the
1994 default. (Contributed by Vinay Sajip in :issue:`18807`.)
1995
1996* The :ref:`pyvenv <scripts-pyvenv>` command also accepts a ``--without-pip``
1997 option to suppress the otherwise-automatic bootstrapping of pip into
1998 the virtual environment. (Contributed by Nick Coghlan in :issue:`19552`
1999 as part of the :pep:`453` implementation.)
2000
2001* The encoding name is now optional in the value set for the
2002 :envvar:`PYTHONIOENCODING` environment variable. This makes it possible to
2003 set just the error handler, without changing the default encoding.
2004 (Contributed by Serhiy Storchaka in :issue:`18818`.)
2005
2006* The :mod:`bz2`, :mod:`lzma`, and :mod:`gzip` module ``open`` functions now
2007 support ``x`` (exclusive creation) mode. (Contributed by Tim Heaney and
2008 Vajrasky Kok in :issue:`19201`, :issue:`19222`, and :issue:`19223`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05002009
R David Murraye6082552014-01-03 16:15:45 -05002010
R David Murrayd74d09a2013-12-24 15:33:02 -05002011Significant Optimizations
Larry Hastings3732ed22014-03-15 21:13:56 -07002012-------------------------
R David Murraybcaaecf2013-12-23 21:23:36 -05002013
R David Murray4908f4a2014-01-04 18:07:20 -05002014* The UTF-32 decoder is now 3x to 4x faster. (Contributed by Serhiy Storchaka
2015 in :issue:`14625`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05002016
2017* The cost of hash collisions for sets is now reduced. Each hash table
2018 probe now checks a series of consecutive, adjacent key/hash pairs before
2019 continuing to make random probes through the hash table. This exploits
2020 cache locality to make collision resolution less expensive.
R David Murraybcaaecf2013-12-23 21:23:36 -05002021 The collision resolution scheme can be described as a hybrid of linear
2022 probing and open addressing. The number of additional linear probes
2023 defaults to nine. This can be changed at compile-time by defining
2024 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
R David Murray59171722014-01-03 15:52:22 -05002025 linear probing entirely. (Contributed by Raymond Hettinger in
2026 :issue:`18771`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05002027
2028* The interpreter starts about 30% faster. A couple of measures lead to the
2029 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
2030 :mod:`collections` and :mod:`locale` modules and their dependencies are no
2031 longer imported by default. The marshal module has been improved to load
R David Murray59171722014-01-03 15:52:22 -05002032 compiled Python code faster. (Contributed by Antoine Pitrou, Christian
2033 Heimes and Victor Stinner in :issue:`19219`, :issue:`19218`, :issue:`19209`,
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02002034 :issue:`19205` and :issue:`9548`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05002035
R David Murray6e390152013-12-24 22:28:04 -05002036* :class:`bz2.BZ2File` is now as fast or faster than the Python2 version for
2037 most cases. :class:`lzma.LZMAFile` has also been optimized. (Contributed by
2038 Serhiy Storchaka and Nadeem Vawda in :issue:`16034`.)
2039
R David Murray8b2d6822013-12-31 15:06:05 -05002040* :func:`random.getrandbits` is 20%-40% faster for small integers (the most
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02002041 common use case). (Contributed by Serhiy Storchaka in :issue:`16674`.)
R David Murray8b2d6822013-12-31 15:06:05 -05002042
R David Murrayb231b2b2014-01-04 17:11:23 -05002043* By taking advantage of the new storage format for strings, pickling of
2044 strings is now significantly faster. (Contributed by Victor Stinner and
2045 Antoine Pitrou in :issue:`15596`.)
2046
R David Murray66bf12a2014-01-08 17:21:22 -05002047* A performance issue in :meth:`io.FileIO.readall` has been solved. This
2048 particularly affects Windows, and significantly speeds up the case of piping
2049 significant amounts of data through :mod:`subprocess`. (Contributed
2050 by Richard Oudkerk in :issue:`15758`.)
2051
R David Murraybf0ab832014-02-03 01:14:03 -05002052* :func:`html.escape` is now 10x faster. (Contributed by Matt Bryant in
2053 :issue:`18020`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05002054
Larry Hastings3732ed22014-03-15 21:13:56 -07002055* On Windows, the native ``VirtualAlloc`` is now used instead of the CRT
2056 ``malloc`` in ``obmalloc``. Artificial benchmarks show about a 3% memory
2057 savings.
2058
2059* :func:`os.urandom` now uses a lazily-opened persistent file descriptor
2060 so as to avoid using many file descriptors when run in parallel from
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02002061 multiple threads. (Contributed by Antoine Pitrou in :issue:`18756`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07002062
2063
2064.. _deprecated-3.4:
R David Murraye6082552014-01-03 16:15:45 -05002065
Georg Brandlb80f5112012-09-30 09:11:58 +02002066Deprecated
2067==========
2068
R David Murrayd74d09a2013-12-24 15:33:02 -05002069This section covers various APIs and other features that have been deprecated
2070in Python 3.4, and will be removed in Python 3.5 or later. In most (but not
2071all) cases, using the deprecated APIs will produce a :exc:`DeprecationWarning`
2072when the interpreter is run with deprecation warnings enabled (for example, by
2073using ``-Wd``).
2074
Georg Brandlb80f5112012-09-30 09:11:58 +02002075
Larry Hastings3732ed22014-03-15 21:13:56 -07002076Deprecations in the Python API
2077------------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02002078
Martin Panter1f1177d2015-10-31 11:48:53 +00002079* As mentioned in :ref:`whatsnew-pep-451`, a number of :mod:`importlib`
R David Murrayb79b7852014-02-22 14:28:46 -05002080 methods and functions are deprecated: :meth:`importlib.find_loader` is
2081 replaced by :func:`importlib.util.find_spec`;
2082 :meth:`importlib.machinery.PathFinder.find_module` is replaced by
2083 :meth:`importlib.machinery.PathFinder.find_spec`;
2084 :meth:`importlib.abc.MetaPathFinder.find_module` is replaced by
2085 :meth:`importlib.abc.MetaPathFinder.find_spec`;
2086 :meth:`importlib.abc.PathEntryFinder.find_loader` and
2087 :meth:`~importlib.abc.PathEntryFinder.find_module` are replaced by
2088 :meth:`importlib.abc.PathEntryFinder.find_spec`; all of the ``xxxLoader`` ABC
2089 ``load_module`` methods (:meth:`importlib.abc.Loader.load_module`,
2090 :meth:`importlib.abc.InspectLoader.load_module`,
2091 :meth:`importlib.abc.FileLoader.load_module`,
2092 :meth:`importlib.abc.SourceLoader.load_module`) should no longer be
2093 implemented, instead loaders should implement an
2094 ``exec_module`` method
2095 (:meth:`importlib.abc.Loader.exec_module`,
2096 :meth:`importlib.abc.InspectLoader.exec_module`
2097 :meth:`importlib.abc.SourceLoader.exec_module`) and let the import system
2098 take care of the rest; and
2099 :meth:`importlib.abc.Loader.module_repr`,
2100 :meth:`importlib.util.module_for_loader`, :meth:`importlib.util.set_loader`,
2101 and :meth:`importlib.util.set_package` are no longer needed because their
2102 functions are now handled automatically by the import system.
Brett Cannon82b3d6a2013-06-14 22:37:11 -04002103
Brett Cannone4f41de2013-06-16 13:13:40 -04002104* The :mod:`imp` module is pending deprecation. To keep compatibility with
2105 Python 2/3 code bases, the module's removal is currently not scheduled.
2106
Brett Cannon1448ecf2013-10-04 11:38:59 -04002107* The :mod:`formatter` module is pending deprecation and is slated for removal
2108 in Python 3.6.
2109
Larry Hastings3732ed22014-03-15 21:13:56 -07002110* ``MD5`` as the default *digestmod* for the :func:`hmac.new` function is
2111 deprecated. Python 3.6 will require an explicit digest name or constructor as
2112 *digestmod* argument.
Christian Heimes634919a2013-11-20 17:23:06 +01002113
R David Murray9025f1c2014-01-02 13:44:18 -05002114* The internal ``Netrc`` class in the :mod:`ftplib` module has been documented
2115 as deprecated in its docstring for quite some time. It now emits a
2116 :exc:`DeprecationWarning` and will be removed completely in Python 3.5.
2117
Larry Hastings3732ed22014-03-15 21:13:56 -07002118* The undocumented *endtime* argument to :meth:`subprocess.Popen.wait` should
2119 not have been exposed and is hopefully not in use; it is deprecated and
2120 will mostly likely be removed in Python 3.5.
Georg Brandlb80f5112012-09-30 09:11:58 +02002121
Larry Hastings3732ed22014-03-15 21:13:56 -07002122* The *strict* argument of :class:`~html.parser.HTMLParser` is deprecated.
Georg Brandlb80f5112012-09-30 09:11:58 +02002123
Larry Hastings3732ed22014-03-15 21:13:56 -07002124* The :mod:`plistlib` :func:`~plistlib.readPlist`,
2125 :func:`~plistlib.writePlist`, :func:`~plistlib.readPlistFromBytes`, and
2126 :func:`~plistlib.writePlistToBytes` functions are deprecated in favor of the
2127 corresponding new functions :func:`~plistlib.load`, :func:`~plistlib.dump`,
2128 :func:`~plistlib.loads`, and :func:`~plistlib.dumps`. :func:`~plistlib.Data`
2129 is deprecated in favor of just using the :class:`bytes` constructor.
2130
2131* The :mod:`sysconfig` key ``SO`` is deprecated, it has been replaced by
2132 ``EXT_SUFFIX``.
2133
2134* The ``U`` mode accepted by various ``open`` functions is deprecated.
2135 In Python3 it does not do anything useful, and should be replaced by
2136 appropriate uses of :class:`io.TextIOWrapper` (if needed) and its *newline*
2137 argument.
2138
2139* The *parser* argument of :func:`xml.etree.ElementTree.iterparse` has
2140 been deprecated, as has the *html* argument of
2141 :func:`~xml.etree.ElementTree.XMLParser`. To prepare for the removal of the
2142 latter, all arguments to ``XMLParser`` should be passed by keyword.
Georg Brandlb80f5112012-09-30 09:11:58 +02002143
2144
R David Murraye7cf6782013-12-24 14:51:25 -05002145Deprecated Features
Georg Brandlb80f5112012-09-30 09:11:58 +02002146-------------------
2147
R David Murray5ea95242013-12-24 15:59:57 -05002148* Running :ref:`idle` with the ``-n`` flag (no subprocess) is deprecated.
2149 However, the feature will not be removed until :issue:`18823` is resolved.
2150
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02002151* The site module adding a "site-python" directory to sys.path, if it
2152 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02002153
2154
R David Murray59171722014-01-03 15:52:22 -05002155
R David Murray72420ff2013-12-24 10:46:44 -05002156Removed
2157=======
2158
R David Murray59171722014-01-03 15:52:22 -05002159
2160Operating Systems No Longer Supported
2161-------------------------------------
2162
2163Support for the following operating systems has been removed from the source
2164and build tools:
2165
2166* OS/2 (:issue:`16135`).
2167* Windows 2000 (changeset e52df05b496a).
Larry Hastings3732ed22014-03-15 21:13:56 -07002168* Windows systems where ``COMSPEC`` points to ``command.com`` (:issue:`14470`).
R David Murray59171722014-01-03 15:52:22 -05002169* VMS (:issue:`16136`).
2170
2171
2172API and Feature Removals
2173------------------------
2174
R David Murrayd2653812013-12-27 14:06:15 -05002175The following obsolete and previously deprecated APIs and features have been
R David Murray59171722014-01-03 15:52:22 -05002176removed:
R David Murray076dead2013-12-24 14:59:50 -05002177
R David Murray72420ff2013-12-24 10:46:44 -05002178* The unmaintained ``Misc/TextMate`` and ``Misc/vim`` directories have been
Georg Brandle73778c2014-10-29 08:36:35 +01002179 removed (see the `devguide <https://docs.python.org/devguide>`_
R David Murray00569362014-01-03 13:04:25 -05002180 for suggestions on what to use instead).
R David Murray72420ff2013-12-24 10:46:44 -05002181
R David Murrayd17aba72013-12-24 14:46:23 -05002182* The ``SO`` makefile macro is removed (it was replaced by the
2183 ``SHLIB_SUFFIX`` and ``EXT_SUFFIX`` macros) (:issue:`16754`).
2184
R David Murrayd74d09a2013-12-24 15:33:02 -05002185* The ``PyThreadState.tick_counter`` field has been removed; its value has
Larry Hastings3732ed22014-03-15 21:13:56 -07002186 been meaningless since Python 3.2, when the "new GIL" was introduced
2187 (:issue:`19199`).
R David Murrayd74d09a2013-12-24 15:33:02 -05002188
R David Murrayd2653812013-12-27 14:06:15 -05002189* ``PyLoader`` and ``PyPycLoader`` have been removed from :mod:`importlib`.
2190 (Contributed by Taras Lyapun in :issue:`15641`.)
2191
R David Murraya2924ca2014-01-03 14:06:01 -05002192* The *strict* argument to :class:`~http.client.HTTPConnection` and
2193 :class:`~http.client.HTTPSConnection` has been removed. HTTP 0.9-style
2194 "Simple Responses" are no longer supported.
R David Murray00569362014-01-03 13:04:25 -05002195
R David Murraydb085f52014-01-03 15:46:24 -05002196* The deprecated :mod:`urllib.request.Request` getter and setter methods
2197 ``add_data``, ``has_data``, ``get_data``, ``get_type``, ``get_host``,
2198 ``get_selector``, ``set_proxy``, ``get_origin_req_host``, and
2199 ``is_unverifiable`` have been removed (use direct attribute access instead).
2200
R David Murray244ad602014-01-04 21:17:52 -05002201* Support for loading the deprecated ``TYPE_INT64`` has been removed from
2202 :mod:`marshal`. (Contributed by Dan Riti in :issue:`15480`.)
2203
Yury Selivanov2393dca2014-01-27 15:07:58 -05002204* :class:`inspect.Signature`: positional-only parameters are now required
2205 to have a valid name.
2206
Larry Hastings3732ed22014-03-15 21:13:56 -07002207* :meth:`object.__format__` no longer accepts non-empty format strings, it now
2208 raises a :exc:`TypeError` instead. Using a non-empty string has been
2209 deprecated since Python 3.2. This change has been made to prevent a
2210 situation where previously working (but incorrect) code would start failing
2211 if an object gained a __format__ method, which means that your code may now
2212 raise a :exc:`TypeError` if you are using an ``'s'`` format code with objects
2213 that do not have a __format__ method that handles it. See :issue:`7994` for
2214 background.
2215
R David Murray6dfc6322014-03-13 21:34:54 -04002216* :meth:`difflib.SequenceMatcher.isbjunk` and
2217 :meth:`difflib.SequenceMatcher.isbpopular` were deprecated in 3.2, and have
2218 now been removed: use ``x in sm.bjunk`` and
2219 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object
2220 (:issue:`13248`).
2221
R David Murray72420ff2013-12-24 10:46:44 -05002222
R David Murray98358272014-01-05 20:52:06 -05002223Code Cleanups
2224-------------
2225
2226* The unused and undocumented internal ``Scanner`` class has been removed from
2227 the :mod:`pydoc` module.
2228
R David Murraybf0ab832014-02-03 01:14:03 -05002229* The private and effectively unused ``_gestalt`` module has been removed,
2230 along with the private :mod:`platform` functions ``_mac_ver_lookup``,
2231 ``_mac_ver_gstalt``, and ``_bcd2str``, which would only have ever been called
2232 on badly broken OSX systems (see :issue:`18393`).
2233
Larry Hastings3732ed22014-03-15 21:13:56 -07002234* The hardcoded copies of certain :mod:`stat` constants that were included in
2235 the :mod:`tarfile` module namespace have been removed.
2236
R David Murray98358272014-01-05 20:52:06 -05002237
R David Murraye6082552014-01-03 16:15:45 -05002238
Benjamin Peterson88f3b232012-10-04 12:45:10 -04002239Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02002240=====================
2241
2242This section lists previously described changes and other bugfixes
2243that may require changes to your code.
2244
Larry Hastings3732ed22014-03-15 21:13:56 -07002245
2246Changes in 'python' Command Behavior
2247------------------------------------
2248
2249* In a posix shell, setting the :envvar:`PATH` environment variable to
2250 an empty value is equivalent to not setting it at all. However, setting
2251 :envvar:`PYTHONPATH` to an empty value was *not* equivalent to not setting it
2252 at all: setting :envvar:`PYTHONPATH` to an empty value was equivalent to
2253 setting it to ``.``, which leads to confusion when reasoning by analogy to
2254 how :envvar:`PATH` works. The behavior now conforms to the posix convention
2255 for :envvar:`PATH`.
2256
2257* The [X refs, Y blocks] output of a debug (``--with-pydebug``) build of the
2258 CPython interpreter is now off by default. It can be re-enabled using the
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02002259 ``-X showrefcount`` option. (Contributed by Ezio Melotti in :issue:`17323`.)
Larry Hastings3732ed22014-03-15 21:13:56 -07002260
2261* The python command and most stdlib scripts (as well as :mod:`argparse`) now
2262 output ``--version`` information to ``stdout`` instead of ``stderr`` (for
2263 issue list see :ref:`other-improvements-3.4` above).
2264
2265
R David Murrayd74d09a2013-12-24 15:33:02 -05002266Changes in the Python API
2267-------------------------
2268
Brett Cannon777622b2013-04-09 17:03:10 -04002269* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
2270 exception or return a default value instead of raising
2271 :exc:`NotImplementedError` blindly. This will only affect code calling
2272 :func:`super` and falling through all the way to the ABCs. For compatibility,
2273 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04002274
2275* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
2276 attributes to ``None`` by default. To determine if these attributes were set
2277 in a backwards-compatible fashion, use e.g.
Larry Hastings3732ed22014-03-15 21:13:56 -07002278 ``getattr(module, '__loader__', None) is not None``. (:issue:`17115`.)
Brett Cannon3dc48d62013-05-28 18:35:54 -04002279
2280* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
2281 ``__package__`` unconditionally to properly support reloading. If this is not
2282 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04002283 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04002284
2285* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
2286 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
Larry Hastings3732ed22014-03-15 21:13:56 -07002287 Note that this restores a pre-3.3 behavior in that it means a module is
2288 re-found when re-loaded (:issue:`19413`).
Brett Cannon3e0651b2013-05-31 23:18:39 -04002289
Brett Cannon1448ecf2013-10-04 11:38:59 -04002290* Frozen packages no longer set ``__path__`` to a list containing the package
Larry Hastings3732ed22014-03-15 21:13:56 -07002291 name, they now set it to an empty list. The previous behavior could cause
2292 the import system to do the wrong thing on submodule imports if there was
2293 also a directory with the same name as the frozen package. The correct way
Larry Hastings0548f5c2014-03-15 22:29:19 -07002294 to determine if a module is a package or not is to use ``hasattr(module,
Larry Hastings3732ed22014-03-15 21:13:56 -07002295 '__path__')`` (:issue:`18065`).
2296
2297* Frozen modules no longer define a ``__file__`` attribute. It's semantically
2298 incorrect for frozen modules to set the attribute as they are not loaded from
2299 any explicit location. If you must know that a module comes from frozen code
2300 then you can see if the module's ``__spec__.location`` is set to ``'frozen'``,
2301 check if the loader is a subclass of
2302 :class:`importlib.machinery.FrozenImporter`,
2303 or if Python 2 compatibility is necessary you can use :func:`imp.is_frozen`.
Brett Cannon8f5ac512013-06-12 23:29:18 -04002304
Brett Cannon33915eb2013-06-14 18:33:00 -04002305* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
2306 it would write to is a symlink or a non-regular file. This is to act as a
2307 warning that import will overwrite those files with a regular file regardless
2308 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04002309
2310* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
2311 :exc:`ImportError` when the source code being loaded triggers a
2312 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
2313 meant to be raised only when source code cannot be found but it should, it was
2314 felt to be over-reaching/overloading of that meaning when the source code is
2315 found but improperly structured. If you were catching ImportError before and
2316 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02002317 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10002318
2319* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
R David Murraybf0ab832014-02-03 01:14:03 -05002320 set the ``__wrapped__`` attribute to the function being wrapped, even if
Nick Coghlan367df122013-10-27 01:57:34 +10002321 that function also had its ``__wrapped__`` attribute set. This means
2322 ``__wrapped__`` attributes now correctly link a stack of decorated
2323 functions rather than every ``__wrapped__`` attribute in the chain
2324 referring to the innermost function. Introspection libraries that
2325 assumed the previous behaviour was intentional can use
2326 :func:`inspect.unwrap` to access the first function in the chain that has
2327 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02002328
Larry Hastings3732ed22014-03-15 21:13:56 -07002329* :func:`inspect.getfullargspec` has been reimplemented on top of
2330 :func:`inspect.signature` and hence handles a much wider variety of callable
2331 objects than it did in the past. It is expected that additional builtin and
2332 extension module callables will gain signature metadata over the course of
2333 the Python 3.4 series. Code that assumes that
2334 :func:`inspect.getfullargspec` will fail on non-Python callables may need
2335 to be adjusted accordingly.
2336
Georg Brandl0f5bff22013-10-19 17:46:38 +02002337* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04002338 directory to objects in :data:`sys.path_hooks` for the empty string. This
2339 results in :data:`sys.path_importer_cache` never containing ``''``, thus
2340 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
2341 will not find all keys. A module's ``__file__`` when imported in the current
2342 working directory will also now have an absolute path, including when using
Larry Hastings3732ed22014-03-15 21:13:56 -07002343 ``-m`` with the interpreter (except for ``__main__.__file__`` when a script
2344 has been executed directly using a relative path) (Contributed by Brett
2345 Cannon in :issue:`18416`). is specified on the command-line)
2346 (:issue:`18416`).
Victor Stinner2748bc72013-12-13 10:57:04 +01002347
R David Murraya2924ca2014-01-03 14:06:01 -05002348* The removal of the *strict* argument to :class:`~http.client.HTTPConnection`
2349 and :class:`~http.client.HTTPSConnection` changes the meaning of the
2350 remaining arguments if you are specifying them positionally rather than by
2351 keyword. If you've been paying attention to deprecation warnings your code
2352 should already be specifying any additional arguments via keywords.
2353
R David Murray4908f4a2014-01-04 18:07:20 -05002354* Strings between ``from __future__ import ...`` statements now *always* raise
2355 a :exc:`SyntaxError`. Previously if there was no leading docstring, an
2356 interstitial string would sometimes be ignored. This brings CPython into
2357 compliance with the language spec; Jython and PyPy already were.
2358 (:issue:`17434`).
2359
R David Murraya101bdb2014-01-06 16:32:05 -05002360* :meth:`ssl.SSLSocket.getpeercert` and :meth:`ssl.SSLSocket.do_handshake`
2361 now raise an :exc:`OSError` with ``ENOTCONN`` when the ``SSLSocket`` is not
2362 connected, instead of the previous behavior of raising an
Jesus Cea28a965f2014-03-17 19:22:59 +01002363 :exc:`AttributeError`. In addition, :meth:`~ssl.SSLSocket.getpeercert`
R David Murraya101bdb2014-01-06 16:32:05 -05002364 will raise a :exc:`ValueError` if the handshake has not yet been done.
2365
R David Murray0ae7ae12014-01-08 18:16:02 -05002366* :func:`base64.b32decode` now raises a :exc:`binascii.Error` when the
2367 input string contains non-b32-alphabet characters, instead of a
2368 :exc:`TypeError`. This particular :exc:`TypeError` was missed when the other
2369 :exc:`TypeError`\ s were converted. (Contributed by Serhiy Storchaka in
2370 :issue:`18011`.) Note: this change was also inadvertently applied in Python
2371 3.3.3.
2372
Brett Cannonc089f702014-01-17 11:03:19 -05002373* The :attr:`~cgi.FieldStorage.file` attribute is now automatically closed when
2374 the creating :class:`cgi.FieldStorage` instance is garbage collected. If you
2375 were pulling the file object out separately from the :class:`cgi.FieldStorage`
2376 instance and not keeping the instance alive, then you should either store the
2377 entire :class:`cgi.FieldStorage` instance or read the contents of the file
2378 before the :class:`cgi.FieldStorage` instance is garbage collected.
2379
R David Murray45e732d2014-02-03 01:33:39 -05002380* Calling ``read`` or ``write`` on a closed SSL socket now raises an
2381 informative :exc:`ValueError` rather than the previous more mysterious
2382 :exc:`AttributeError` (:issue:`9177`).
2383
Larry Hastings3732ed22014-03-15 21:13:56 -07002384* :meth:`slice.indices` no longer produces an :exc:`OverflowError` for huge
2385 values. As a consequence of this fix, :meth:`slice.indices` now raises a
2386 :exc:`ValueError` if given a negative length; previously it returned nonsense
2387 values (:issue:`14794`).
2388
2389* The :class:`complex` constructor, unlike the :mod:`cmath` functions, was
2390 incorrectly accepting :class:`float` values if an object's ``__complex__``
2391 special method returned one. This now raises a :exc:`TypeError`.
2392 (:issue:`16290`.)
2393
2394* The :class:`int` constructor in 3.2 and 3.3 erroneously accepts :class:`float`
2395 values for the *base* parameter. It is unlikely anyone was doing this, but
2396 if so, it will now raise a :exc:`TypeError` (:issue:`16772`).
2397
2398* Defaults for keyword-only arguments are now evaluated *after* defaults for
2399 regular keyword arguments, instead of before. Hopefully no one wrote any
2400 code that depends on the previous buggy behavior (:issue:`16967`).
2401
2402* Stale thread states are now cleared after :func:`~os.fork`. This may cause
2403 some system resources to be released that previously were incorrectly kept
2404 perpetually alive (for example, database connections kept in thread-local
2405 storage). (:issue:`17094`.)
2406
2407* Parameter names in ``__annotations__`` dicts are now mangled properly,
Serhiy Storchakae5cf4862014-11-02 19:18:52 +02002408 similarly to ``__kwdefaults__``. (Contributed by Yury Selivanov in
2409 :issue:`20625`.)
Yury Selivanov026019f2014-02-18 12:49:41 -05002410
Larry Hastings3732ed22014-03-15 21:13:56 -07002411* :attr:`hashlib.hash.name` now always returns the identifier in lower case.
2412 Previously some builtin hashes had uppercase names, but now that it is a
2413 formal public interface the naming has been made consistent (:issue:`18532`).
2414
2415* Because :mod:`unittest.TestSuite` now drops references to tests after they
2416 are run, test harnesses that re-use a :class:`~unittest.TestSuite` to re-run
2417 a set of tests may fail. Test suites should not be re-used in this fashion
2418 since it means state is retained between test runs, breaking the test
2419 isolation that :mod:`unittest` is designed to provide. However, if the lack
2420 of isolation is considered acceptable, the old behavior can be restored by
2421 creating a :mod:`~unittest.TestSuite` subclass that defines a
2422 ``_removeTestAtIndex`` method that does nothing (see
2423 :meth:`.TestSuite.__iter__`) (:issue:`11798`).
2424
2425* :mod:`unittest` now uses :mod:`argparse` for command line parsing. There are
2426 certain invalid command forms that used to work that are no longer allowed;
2427 in theory this should not cause backward compatibility issues since the
2428 disallowed command forms didn't make any sense and are unlikely to be in use.
2429
2430* The :func:`re.split`, :func:`re.findall`, and :func:`re.sub` functions, and
2431 the :meth:`~re.match.group` and :meth:`~re.match.groups` methods of
2432 ``match`` objects now always return a *bytes* object when the string
2433 to be matched is a :term:`bytes-like object`. Previously the return type
2434 matched the input type, so if your code was depending on the return value
2435 being, say, a ``bytearray``, you will need to change your code.
2436
2437* :mod:`audioop` functions now raise an error immediately if passed string
2438 input, instead of failing randomly later on (:issue:`16685`).
2439
2440* The new *convert_charrefs* argument to :class:`~html.parser.HTMLParser`
2441 currently defaults to ``False`` for backward compatibility, but will
2442 eventually be changed to default to ``True``. It is recommended that you add
2443 this keyword, with the appropriate value, to any
2444 :class:`~html.parser.HTMLParser` calls in your code (:issue:`13633`).
2445
2446* Since the *digestmod* argument to the :func:`hmac.new` function will in the
2447 future have no default, all calls to :func:`hmac.new` should be changed to
2448 explicitly specify a *digestmod* (:issue:`17276`).
2449
2450* Calling :func:`sysconfig.get_config_var` with the ``SO`` key, or looking
2451 ``SO`` up in the results of a call to :func:`sysconfig.get_config_vars`
2452 is deprecated. This key should be replaced by ``EXT_SUFFIX`` or
2453 ``SHLIB_SUFFIX``, depending on the context (:issue:`19555`).
2454
2455* Any calls to ``open`` functions that specify ``U`` should be modified.
2456 ``U`` is ineffective in Python3 and will eventually raise an error if used.
2457 Depending on the function, the equivalent of its old Python2 behavior can be
2458 achieved using either a *newline* argument, or if necessary by wrapping the
2459 stream in :mod:`~io.TextIOWrapper` to use its *newline* argument
2460 (:issue:`15204`).
2461
2462* If you use :ref:`pyvenv <scripts-pyvenv>` in a script and desire that pip
2463 *not* be installed, you must add ``--without-pip`` to your command
2464 invocation.
2465
2466* The default behavior of :func:`json.dump` and :func:`json.dumps` when
2467 an indent is specified has changed: it no longer produces trailing
2468 spaces after the item separating commas at the ends of lines. This
2469 will matter only if you have tests that are doing white-space-sensitive
2470 comparisons of such output (:issue:`16333`).
2471
2472* :mod:`doctest` now looks for doctests in extension module ``__doc__``
2473 strings, so if your doctest test discovery includes extension modules that
2474 have things that look like doctests in them you may see test failures you've
2475 never seen before when running your tests (:issue:`3158`).
2476
2477* The :mod:`collections.abc` module has been slightly refactored as
2478 part of the Python startup improvements. As a consequence of this, it is no
2479 longer the case that importing :mod:`collections` automatically imports
2480 :mod:`collections.abc`. If your program depended on the (undocumented)
2481 implicit import, you will need to add an explicit ``import collections.abc``
2482 (:issue:`20784`).
2483
R David Murrayd2653812013-12-27 14:06:15 -05002484
Victor Stinner774b2e02013-12-13 14:33:01 +01002485Changes in the C API
2486--------------------
2487
Larry Hastingsad88d7a2014-02-10 04:26:10 -08002488* :c:func:`PyEval_EvalFrameEx`, :c:func:`PyObject_Repr`, and
Nick Coghlanc0bc0b42014-02-09 12:00:01 +10002489 :c:func:`PyObject_Str`, along with some other internal C APIs, now include
2490 a debugging assertion that ensures they are not used in situations where
2491 they may silently discard a currently active exception. In cases where
Nick Coghlan3d7b3642014-02-09 10:57:34 +10002492 discarding the active exception is expected and desired (for example,
Nick Coghlanc0bc0b42014-02-09 12:00:01 +10002493 because it has already been saved locally with :c:func:`PyErr_Fetch` or
2494 is being deliberately replaced with a different exception), an explicit
2495 :c:func:`PyErr_Clear` call will be needed to avoid triggering the
Nick Coghlan72318b92014-02-09 12:05:13 +10002496 assertion when invoking these operations (directly or indirectly) and
2497 running against a version of Python that is compiled with assertions
2498 enabled.
Nick Coghlan3d7b3642014-02-09 10:57:34 +10002499
Victor Stinner774b2e02013-12-13 14:33:01 +01002500* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
2501 argument is not set. Previously only ``NULL`` was returned with no exception
2502 set.
2503
2504* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
2505 now be a string allocated by :c:func:`PyMem_RawMalloc` or
2506 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
Larry Hastings3732ed22014-03-15 21:13:56 -07002507 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`
2508 (:issue:`16742`)
Victor Stinner774b2e02013-12-13 14:33:01 +01002509
2510* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01002511 3.3, the function did nothing if the key already exists (if the current
2512 value is a non-NULL pointer).
2513
Victor Stinner774b2e02013-12-13 14:33:01 +01002514* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
2515 structure has been removed to fix a bug: see :issue:`14432` for the
2516 rationale.
Benjamin Peterson4ffb0752014-11-03 14:29:33 -05002517
2518Changed in 3.4.3
2519================
2520
2521.. _pep-476:
2522
2523PEP 476: Enabling certificate verification by default for stdlib http clients
2524-----------------------------------------------------------------------------
2525
2526:mod:`http.client` and modules which use it, such as :mod:`urllib.request` and
2527:mod:`xmlrpc.client`, will now verify that the server presents a certificate
2528which is signed by a CA in the platform trust store and whose hostname matches
2529the hostname being requested by default, significantly improving security for
2530many applications.
2531
2532For applications which require the old previous behavior, they can pass an
2533alternate context::
2534
2535 import urllib.request
2536 import ssl
2537
2538 # This disables all verification
2539 context = ssl._create_unverified_context()
2540
2541 # This allows using a specific certificate for the host, which doesn't need
2542 # to be in the trust store
2543 context = ssl.create_default_context(cafile="/path/to/file.crt")
2544
2545 urllib.request.urlopen("https://invalid-cert", context=context)