blob: e36fe7387e8bb11f0a68a13ffae9505695c4a629 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Georg Brandl3b80d342012-10-28 13:37:54 +01005.. :Author: Someone <email>
6 (uncomment if there is a principal author)
Georg Brandlb80f5112012-09-30 09:11:58 +02007
8.. Rules for maintenance:
9
Nick Coghlan03074fd2012-09-30 18:51:53 +053010 * Anyone can add text to this document, but the maintainer reserves the
11 right to rewrite any additions. In particular, for obscure or esoteric
12 features, the maintainer may reduce any addition to a simple reference to
13 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020014
Nick Coghlan03074fd2012-09-30 18:51:53 +053015 * While the maintainer will periodically go through Misc/NEWS
16 and add changes, it's best not to rely on this. We know from experience
17 that any changes that aren't in the What's New documentation around the
18 time of the original release will remain largely unknown to the community
19 for years, even if they're added later. We also know from experience that
20 other priorities can arise, and the maintainer will run out of time to do
21 updates - in such cases, end users will be much better served by partial
22 notifications that at least give a hint about new features to
23 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020024
25 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053026 is the purpose of Misc/NEWS. The What's New should focus on changes that
27 are visible to Python *users* and that *require* a feature release (i.e.
28 most bug fixes should only be recorded in Misc/NEWS)
29
30 * PEPs should not be marked Final until they have an entry in What's New.
31 A placeholder entry that is just a section header and a link to the PEP
32 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
33 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020034
35 * If you want to draw your new text to the attention of the
36 maintainer, add 'XXX' to the beginning of the paragraph or
37 section.
38
Nick Coghlan03074fd2012-09-30 18:51:53 +053039 * It's OK to add just a very brief note about a change. For
40 example: "The :ref:`~socket.transmogrify()` function was added to the
41 :mod:`socket` module." The maintainer will research the change and
42 write the necessary text (if appropriate). The advantage of doing this
43 is that even if no more descriptive text is ever added, readers will at
44 least have a notification that the new feature exists and a link to the
45 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020046
47 * You can comment out your additions if you like, but it's not
48 necessary (especially when a final release is some months away).
49
50 * Credit the author of a patch or bugfix. Just the name is
51 sufficient; the e-mail address isn't necessary.
52
53 * It's helpful to add the bug/patch number as a comment:
54
Nick Coghlan03074fd2012-09-30 18:51:53 +053055 The :ref:`~socket.transmogrify()` function was added to the
56 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020057
58 This saves the maintainer the effort of going through the Mercurial log
59 when researching a change.
60
Nick Coghlan03074fd2012-09-30 18:51:53 +053061 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
62 while :ref:`~mod.attr` will display as ``attr``.
63
Georg Brandlb80f5112012-09-30 09:11:58 +020064This article explains the new features in Python 3.4, compared to 3.3.
65
Nick Coghlan03074fd2012-09-30 18:51:53 +053066.. Python 3.4 was released on TBD.
Georg Brandlb80f5112012-09-30 09:11:58 +020067
Ezio Melotti25bbe5e2012-11-17 19:30:48 +020068For full details, see the
69`changelog <http://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020070
71.. note:: Prerelease users should be aware that this document is currently in
72 draft form. It will be updated substantially as Python 3.4 moves towards
73 release, so it's worth checking back even after reading earlier versions.
74
75
76.. seealso::
77
Nick Coghlan367df122013-10-27 01:57:34 +100078 :pep:`429` - Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
81Summary -- Release highlights
82=============================
83
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000084.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020085 Brevity is key.
86
87New syntax features:
88
Nick Coghlan0acceb72013-10-20 13:22:21 +100089* No new syntax features are planned for Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
91New library modules:
92
Nick Coghlan0acceb72013-10-20 13:22:21 +100093* :mod:`asyncio`: New provisonal API for asynchronous IO (:pep:`3156`).
94* :mod:`enum`: Support for enumeration types (:pep:`435`).
Nick Coghland0cf0632013-11-11 22:11:55 +100095* :mod:`ensurepip`: Bootstrapping the pip installer (:pep:`453`).
Antoine Pitrou31119e42013-11-22 17:38:12 +010096* :mod:`pathlib`: Object-oriented filesystem paths (:pep:`428`).
Victor Stinner4aea4a02013-09-04 20:30:34 +020097* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
98 :mod:`select` module primitives.
Nick Coghlan0acceb72013-10-20 13:22:21 +100099* :mod:`statistics`: A basic numerically stable statistics library (:pep:`450`).
Victor Stinnerd2736af2013-11-25 09:40:27 +0100100* :mod:`tracemalloc`: Trace Python memory allocations (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200101
Nick Coghlan367df122013-10-27 01:57:34 +1000102New expected features for Python implementations:
Georg Brandlb80f5112012-09-30 09:11:58 +0200103
R David Murrayf9909c22013-12-20 14:50:12 -0500104* :pep:`446`: :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`.
Nick Coghlan367df122013-10-27 01:57:34 +1000105* command line option for :ref:`isolated mode <using-on-misc-options>`,
106 (:issue:`16499`).
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000107* :ref:`improvements <codec-handling-improvements>` in the handling of
108 codecs that are not text encodings
Georg Brandlb80f5112012-09-30 09:11:58 +0200109
110Significantly Improved Library Modules:
111
Nick Coghlan367df122013-10-27 01:57:34 +1000112* Single-dispatch generic functions in :mod:`functoools` (:pep:`443`)
Antoine Pitrouc9dc4a22013-11-23 18:59:12 +0100113* New :mod:`pickle` protocol 4 (:pep:`3154`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200114* SHA-3 (Keccak) support for :mod:`hashlib`.
115* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100116* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
117 on Unix (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500118* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
119 a new :mod:`~email.message.Message` subclass
120 (:class:`~email.contentmanager.EmailMessage`) that simplify MIME handling.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200121
Nick Coghlan367df122013-10-27 01:57:34 +1000122CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200123
Nick Coghlan367df122013-10-27 01:57:34 +1000124* :ref:`PEP 442: Safe object finalization <pep-442>`
125* :ref:`PEP 445: Configurable memory allocators <pep-445>`
Christian Heimes985ecdc2013-11-20 11:46:18 +0100126* :pep:`456` Secure and interchangeable hash algorithm
Nick Coghlan367df122013-10-27 01:57:34 +1000127* Improve finalization of Python modules to avoid setting their globals
128 to None, in most cases (:issue:`18214`).
129* A more efficient :mod:`marshal` format (:issue:`16475`).
130* "Argument Clinic", an initial step towards providing improved introspection
131 support for builtin and standard library extension types implemented in C
132 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200133
134Please read on for a comprehensive list of user-facing changes.
135
Nick Coghland0cf0632013-11-11 22:11:55 +1000136
137PEP 453: Explicit bootstrapping of pip in Python installations
138==============================================================
139
140The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
141cross-platform mechanism to boostrap the pip installer into Python
142installations and virtual environments.
143
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000144The :mod:`venv` module and the :command:`pyvenv` utility make use of this
145module to make ``pip`` readily available in virtual environments. When
146using the command line interface, ``pip`` is installed by default, while
147for the module API installation of ``pip`` must be requested explicitly.
148
149For CPython source builds on POSIX systems, the ``make install`` and
150``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
151can be controlled through configure options, and overridden through
152Makefile options.
153
Ned Deily44a0db02013-11-22 22:39:09 -0800154On Windows and Mac OS X, the CPython installers now offer the option to
155install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000156
Nick Coghland0cf0632013-11-11 22:11:55 +1000157.. note::
158
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000159 The implementation of PEP 453 is still a work in progress. Refer to
160 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000161
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000162 * Having the binary installers install ``pip`` by default
163 * Recommending the use of ``pip`` in the "Installing Python Module"
164 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000165
166.. seealso::
167
168 :pep:`453` - Explicit bootstrapping of pip in Python installations
169 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000170 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000171
172
R David Murrayf9909c22013-12-20 14:50:12 -0500173.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200174
175PEP 446: Make newly created file descriptors non-inheritable
176============================================================
177
Nick Coghlan367df122013-10-27 01:57:34 +1000178:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200179<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200180
181* :func:`os.get_inheritable`, :func:`os.set_inheritable`
182* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
183* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
184
Antoine Pitrou796564c2013-07-30 19:59:21 +0200185.. seealso::
186
Nick Coghlan367df122013-10-27 01:57:34 +1000187 :pep:`446` - Make newly created file descriptors non-inheritable
188 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200189
Georg Brandlb80f5112012-09-30 09:11:58 +0200190
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000191.. _codec-handling-improvements:
192
193Improvements to codec handling
194==============================
Nick Coghlan8b097b42013-11-13 23:49:21 +1000195
196Since it was first introduced, the :mod:`codecs` module has always been
197intended to operate as a type-neutral dynamic encoding and decoding
198system. However, its close coupling with the Python text model, especially
199the type restricted convenience methods on the builtin :class:`str`,
200:class:`bytes` and :class:`bytearray` types, has historically obscured that
201fact.
202
203As a key step in clarifying the situation, the :meth:`codecs.encode` and
204:meth:`codecs.decode` convenience functions are now properly documented in
205Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000206module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000207but were previously only discoverable through runtime introspection.
208
209Unlike the convenience methods on :class:`str`, :class:`bytes` and
210:class:`bytearray`, these convenience functions support arbitrary codecs
211in both Python 2 and Python 3, rather than being limited to Unicode text
212encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
213(in Python 2).
214
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000215In Python 3.4, the interpreter is able to identify the known non-text
216encodings provided in the standard library and direct users towards these
217general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000218
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000219 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000220 Traceback (most recent call last):
221 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000222 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000223
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000224 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000225 Traceback (most recent call last):
226 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000227 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000228
229In a related change, whenever it is feasible without breaking backwards
230compatibility, exceptions raised during encoding and decoding operations
231will be wrapped in a chained exception of the same type that mentions the
232name of the codec responsible for producing the error::
233
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000234 >>> import codecs
235
236 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000237 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000238
239 The above exception was the direct cause of the following exception:
240
241 Traceback (most recent call last):
242 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000243 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000244
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000245 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000246 TypeError: 'str' does not support the buffer interface
247
248 The above exception was the direct cause of the following exception:
249
250 Traceback (most recent call last):
251 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000252 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000253
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000254Finally, as the examples above show, these improvements have permitted
255the restoration of the convenience aliases for the non-Unicode codecs that
256were themselves restored in Python 3.2. This means that encoding binary data
257to and from its hexadecimal representation (for example) can now be written
258as::
259
260 >>> from codecs import encode, decode
261 >>> encode(b"hello", "hex")
262 b'68656c6c6f'
263 >>> decode(b"68656c6c6f", "hex")
264 b'hello'
265
266The binary and text transforms provided in the standard library are detailed
267in :ref:`binary-transforms` and :ref:`text-transforms`.
268
269(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
270:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000271
Eric Snowb523f842013-11-22 09:05:39 -0700272.. _pep-451:
273
274PEP 451: A ModuleSpec Type for the Import System
275================================================
276
277:pep:`451` provides an encapsulation of the information about a module
278that the import machinery will use to load it, (i.e. a module spec).
279This helps simplify both the import implementation and several
280import-related APIs. The change is also a stepping stone for several
281future import-related improvements.
282
283https://mail.python.org/pipermail/python-dev/2013-November/130111.html
284
285The public-facing changes from the PEP are entirely backward-compatible.
286Furthermore, they should be transparent to everyone but importer
287authors. Key finder and loader methods have been deprecated, but they
288will continue working. New importers should use the new methods
289described in the PEP. Existing importers should be updated to implement
290the new methods.
291
Nick Coghlan8b097b42013-11-13 23:49:21 +1000292
Antoine Pitrouc9dc4a22013-11-23 18:59:12 +0100293Pickle protocol 4
294=================
295
296The new :mod:`pickle` protocol addresses a number of issues that were present
297in previous protocols, such as the serialization of nested classes, very
298large strings and containers, or classes whose :meth:`__new__` method takes
299keyword-only arguments. It also brings a couple efficiency improvements.
300
301.. seealso::
302
303 :pep:`3154` - Pickle protocol 4
304 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
305
306
Georg Brandlb80f5112012-09-30 09:11:58 +0200307Other Language Changes
308======================
309
310Some smaller changes made to the core Python language are:
311
Ezio Melotti34808e22013-10-12 16:36:13 +0300312* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200313
R David Murray9a2f1392013-06-28 13:31:19 -0400314* :func:`min` and :func:`max` now accept a *default* argument that can be used
315 to specify the value they return if the iterable they are evaluating has no
316 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200317
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200318* Module objects are now :mod:`weakref`'able.
319
Nick Coghlan0acceb72013-10-20 13:22:21 +1000320* Module ``__file__`` attributes (and related values) should now always
321 contain absolute paths by default, with the sole exception of
322 ``__main__.__file__`` when a script has been executed directly using
323 a relative path (Contributed by Brett Cannon in :issue:`18416`).
324
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200325* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
326 encoding and decoding unless the ``surrogatepass`` error handler is used,
327 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
328 and the UTF-16 encoder that produces them while encoding non-BMP characters.
329 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
330 :issue:`12892`.
331
Georg Brandlb80f5112012-09-30 09:11:58 +0200332
333New Modules
334===========
335
Nick Coghlan0acceb72013-10-20 13:22:21 +1000336
337asyncio
338-------
339
340The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
341pluggable event loop model for Python, providing solid asynchronous IO
342support in the standard library, and making it easier for other event loop
343implementations to interoperate with the standard library and each other.
344
345For Python 3.4, this module is considered a :term:`provisional API`.
346
Nick Coghlan367df122013-10-27 01:57:34 +1000347.. seealso::
348
349 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
350 PEP written and implementation led by Guido van Rossum.
351
Nick Coghlan0acceb72013-10-20 13:22:21 +1000352enum
353----
354
Nick Coghlan367df122013-10-27 01:57:34 +1000355The new :mod:`enum` module (defined in :pep:`435`) provides a standard
356implementation of enumeration types, allowing other modules (such as
357:mod:`socket`) to provide more informative error messages and better
358debugging support by replacing opaque integer constants with backwards
359compatible enumeration values.
360
361.. seealso::
362
363 :pep:`435` - Adding an Enum type to the Python standard library
364 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
365 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000366
367
Antoine Pitrou31119e42013-11-22 17:38:12 +0100368pathlib
369-------
370
371The new :mod:`pathlib` module offers classes representing filesystem paths
372with semantics appropriate for different operating systems. Path classes are
373divided between *pure paths*, which provide purely computational operations
374without I/O, and *concrete paths*, which inherit from pure paths but also
375provide I/O operations.
376
377For Python 3.4, this module is considered a :term:`provisional API`.
378
379.. seealso::
380
381 :pep:`428` - The pathlib module -- object-oriented filesystem paths
382 PEP written and implemented by Antoine Pitrou.
383
384
Charles-François Natali243d8d82013-09-04 19:02:49 +0200385selectors
386---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200387
Nick Coghlan0acceb72013-10-20 13:22:21 +1000388The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
389allows high-level and efficient I/O multiplexing, built upon the
390:mod:`select` module primitives.
391
392
393statistics
394----------
395
396The new :mod:`statistics` module (defined in :pep:`450`) offers some core
397statistics functionality directly in the standard library. This module
398supports calculation of the mean, median, mode, variance and standard
399deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200400
Nick Coghlan367df122013-10-27 01:57:34 +1000401.. seealso::
402
403 :pep:`450` - Adding A Statistics Module To The Standard Library
404 PEP written and implemented by Steven D'Aprano
405
Georg Brandlb80f5112012-09-30 09:11:58 +0200406
Victor Stinnerd2736af2013-11-25 09:40:27 +0100407tracemalloc
408-----------
409
410The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
411trace memory blocks allocated by Python. It provides the following information:
412
413* Traceback where an object was allocated
414* Statistics on allocated memory blocks per filename and per line number:
415 total size, number and average size of allocated memory blocks
416* Compute the differences between two snapshots to detect memory leaks
417
418.. seealso::
419
420 :pep:`454` - Add a new tracemalloc module to trace Python memory allocations
421 PEP written and implemented by Victor Stinner
422
423
Georg Brandlb80f5112012-09-30 09:11:58 +0200424Improved Modules
425================
426
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200427aifc
428----
429
430The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
431plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
432
433
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300434audioop
435-------
436
437Added support for 24-bit samples (:issue:`12866`).
438
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200439Added the :func:`~audioop.byteswap` function to convert big-endian samples
440to little-endian and vice versa (:issue:`19641`).
441
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300442
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000443base64
444------
445
446The encoding and decoding functions in :mod:`base64` now accept any
447:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100448:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000449
450
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200451colorsys
452--------
453
454The number of digits in the coefficients for the RGB --- YIQ conversions have
455been expanded so that they match the FCC NTSC versions. The change in
456results should be less than 1% and may better match results found elsewhere.
457
R David Murray8e37d5d2013-04-13 14:49:48 -0400458
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000459contextlib
460----------
461
Nick Coghlan240f86d2013-10-17 23:40:57 +1000462The new :class:`contextlib.suppress` context manager helps to clarify the
463intent of code that deliberately suppresses exceptions from a single
464statement. (Contributed by Raymond Hettinger in :issue:`15806` and
465Zero Piraeus in :issue:`19266`)
466
Victor Stinner6633c392013-10-21 13:27:11 +0200467The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000468for utility scripts to handle inflexible APIs that don't provide any
469options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000470other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
471this context manager is also useful for checking expected output from
472command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
473
474The :mod:`contextlib` documentation has also been updated to include a
475:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
476differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000477
478
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000479dis
480---
481
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300482The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
483that provides details of individual bytecode operations and a
484:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000485given piece of Python code. The various display tools in the :mod:`dis`
486module have been updated to be based on these new components.
487
488The new :class:`dis.Bytecode` class provides an object-oriented API for
489inspecting bytecode, both in human-readable form and for iterating over
490instructions.
491
Nick Coghlan50c48b82013-11-23 00:57:00 +1000492(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
493and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000494
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200495
R David Murray5a9d7062012-11-21 15:09:21 -0500496doctest
497-------
498
R David Murray5707d502013-06-23 14:24:13 -0400499Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
500failure is detected. (Contributed by R. David Murray and Daniel Urban in
501:issue:`16522`.)
502
503Updated the doctest command line interface to use :mod:`argparse`, and added
504``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
505be specified on the command line, and ``-f`` is a shorthand for ``-o
506FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
507CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200508
R David Murray8e37d5d2013-04-13 14:49:48 -0400509
R David Murraybb17d2b2013-08-09 16:15:28 -0400510email
511-----
512
513:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
514override the default policy of the message when generating a string
515representation of it. This means that ``as_string`` can now be used in more
516circumstances, instead of having to create and use a :mod:`~email.generator` in
517order to pass formatting parameters to its ``flatten`` method.
518
519New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
520representation of the message in a fashion similar to how ``as_string``
521produces a string representation. It does not accept the *maxheaderlen*
522argument, but does accept the *unixfrom* and *policy* arguments. The
523:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
524calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
525result: a bytes object containing the fully formatted message.
526
527(Contributed by R. David Murray in :issue:`18600`.)
528
R David Murray3da240f2013-10-16 22:48:40 -0400529A pair of new subclasses of :class:`~email.message.Message` have been added,
530along with a new sub-module, :mod:`~email.contentmanager`. All documentation
531is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000532:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400533number of new methods that make extracting content from and inserting content
534into email messages much easier. See the :mod:`~email.contentmanager`
535documentation for details.
536
537These API additions complete the bulk of the work that was planned as part of
538the email6 project. The currently provisional API is scheduled to become final
539in Python 3.5 (possibly with a few minor additions in the area of error
540handling).
541
542(Contributed by R. David Murray in :issue:`18891`.)
543
R David Murraybb17d2b2013-08-09 16:15:28 -0400544
Victor Stinner854ffcb2013-06-21 00:36:30 +0200545functools
546---------
547
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000548The new :func:`~functools.partialmethod` descriptor bring partial argument
549application to descriptors, just as :func:`~functools.partial` provides
550for normal callables. The new descriptor also makes it easier to get
551arbitrary callables (including :func:`~functools.partial` instances)
552to behave like normal instance methods when included in a class definition.
553
554(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
555
556The new :func:`~functools.singledispatch` decorator brings support for
557single-dispatch generic functions to the Python standard library. Where
558object oriented programming focuses on grouping multiple operations on a
559common set of data into a class, a generic function focuses on grouping
560multiple implementations of an operation that allows it to work with
561*different* kinds of data.
562
563.. seealso::
564
565 :pep:`443` - Single-dispatch generic functions
566 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200567
Nick Coghlane8c45d62013-07-28 20:00:01 +1000568
Christian Heimese92ef132013-10-13 00:52:43 +0200569hashlib
570-------
571
572New :func:`hashlib.pbkdf2_hmac` function.
573
574(Contributed by Christian Heimes in :issue:`18582`)
575
576
Ezio Melotti250a06c2013-11-25 06:18:47 +0200577html
578----
579
580Added a new :func:`html.unescape` function that converts HTML5 character
581references to the corresponding Unicode characters.
582
583(Contributed by Ezio Melotti in :issue:`2927`)
584
585Added a new *convert_charrefs* keyword argument to
586:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
587all character references. For backward-compatibility, its value defaults
588to ``False``, but it will change to ``True`` in future versions, so you
589are invited to set it explicitly and update your code to use this new feature.
590
591(Contributed by Ezio Melotti in :issue:`13633`)
592
593The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
594
595(Contributed by Ezio Melotti in :issue:`15114`)
596
597
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200598inspect
599-------
600
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000601
Nick Coghlan367df122013-10-27 01:57:34 +1000602The inspect module now offers a basic :ref:`command line interface
603<inspect-module-cli>` to quickly display source code and other
604information for modules, classes and functions. (Contributed by Claudiu Popa
605and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000606
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200607:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
608created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000609``__wrapped__`` attribute on a wrapper function). (Contributed by
610Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
611
612As part of the implementation of the new :mod:`enum` module, the
613:mod:`inspect` module now has substantially better support for custom
614``__dir__`` methods and dynamic class attributes provided through
615metaclasses (Contributed by Ethan Furman in :issue:`18929` and
616:issue:`19030`)
617
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200618
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200619mmap
620----
621
622mmap objects can now be weakref'ed.
623
624(Contributed by Valerie Lambert in :issue:`4885`.)
625
626
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100627multiprocessing
628---------------
629
Nick Coghlan9a767352013-12-17 22:17:26 +1000630On Unix, two new *start methods* (``spawn`` and ``forkserver``) have been
631added for starting processes using :mod:`multiprocessing`. These make
632the mixing of processes with threads more robust, and the ``spawn``
633method matches the semantics that multiprocessing has always used on
634Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100635
636Also, except when using the old *fork* start method, child processes
637will no longer inherit unneeded handles/file descriptors from their parents.
638
Nick Coghlan9a767352013-12-17 22:17:26 +1000639:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
640``-m`` switch) to initialise ``__main__`` appropriately in child processes
641when using the ``spawn`` or ``forkserver`` start methods. This resolves some
642edge cases where combining multiprocessing, the ``-m`` command line switch
643and explicit relative imports could cause obscure failures in child
644processes. (Contributed by Nick Coghlan in :issue:`19946`)
645
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100646
Victor Stinnerdaf45552013-08-28 00:53:59 +0200647os
648--
649
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200650New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200651descriptors or a Windows handle:
652
653* :func:`os.get_inheritable`, :func:`os.set_inheritable`
654* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
655
656
R David Murray78d692f2013-10-10 17:23:26 -0400657pdb
658---
659
660The ``print`` command has been removed from :mod:`pdb`, restoring access to the
661``print`` function.
662
663Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
664entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
665mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
666prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
667command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
668``print`` function, making it inaccessible at the ``pdb`` prompt.
669
670(Contributed by Connor Osborn in :issue:`18764`.)
671
672
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200673poplib
674------
675
676New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
677an encrypted POP3 session.
678
679New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
680POP3 server.
681
682(Contributed by Lorenzo Catucci in :issue:`4473`.)
683
684
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300685pprint
686------
687
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200688The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300689sequences (:issue:`19132`).
690
691
Nick Coghlan367df122013-10-27 01:57:34 +1000692pydoc
693-----
694
695While significant changes have not been made to :mod:`pydoc` directly,
696its handling of custom ``__dir__`` methods and various descriptor
697behaviours has been improved substantially by the underlying changes in
698the :mod:`inspect` module.
699
700
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200701re
702--
703
704Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
705which anchor the pattern at both ends of the string to match.
706(Contributed by Matthew Barnett in :issue:`16203`.)
707
Ezio Melottidd7e2912013-11-25 23:20:20 +0200708The repr of :ref:`regex objects <re-objects>` now includes the pattern
709and the flags; the repr of :ref:`match objects <match-objects>` now
710includes the start, end, and the part of the string that matched.
711
712(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
713
714
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200715resource
716--------
717
718New :func:`resource.prlimit` function and Linux specific constants.
719(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
720
R David Murray8e37d5d2013-04-13 14:49:48 -0400721smtplib
722-------
723
R David Murray8a345962013-04-14 06:46:35 -0400724:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400725both socket level errors and SMTP protocol level errors to be caught in one
726try/except statement by code that only cares whether or not an error occurred.
727(:issue:`2118`).
728
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200729
Victor Stinnerdaf45552013-08-28 00:53:59 +0200730socket
731------
732
Georg Brandl5642ff92013-09-15 10:37:57 +0200733Socket objects have new methods to get or set their :ref:`inheritable flag
734<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200735
736* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
737
Eli Bendersky34567ec2013-08-31 15:18:48 -0700738The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
739using the new :mod:`enum` module. This allows descriptive reporting during
740debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200741
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200742ssl
743---
744
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200745TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200746
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200747(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200748
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200749* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
750 :meth:`~ssl.SSLContext.cert_store_stats` and
751 :meth:`~ssl.SSLContext.get_ca_certs`
752
753* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
754 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200755
756(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Serhiy Storchaka6de88b32013-12-02 20:31:00 +0200757:issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200758
759Support for server-side SNI using the new
760:meth:`ssl.SSLContext.set_servername_callback` method.
761
762(Contributed by Daniel Black in :issue:`8109`.)
763
764
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200765stat
766----
767
768The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
769implementation is required as most of the values aren't standardized and
770platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
771
772The module supports new file types: door, event port and whiteout.
773
774
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200775struct
776------
777
778Streaming struct unpacking using :func:`struct.iter_unpack`.
779
780(Contributed by Antoine Pitrou in :issue:`17804`.)
781
782
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300783sunau
784-----
785
786The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
787plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
788
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300789:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
790
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300791
Andrew Kuchling173a1572013-09-15 18:15:56 -0400792traceback
793---------
794
795A new :func:`traceback.clear_frames` function takes a traceback object
796and clears the local variables in all of the frames it references,
797reducing the amount of memory consumed (:issue:`1565525`).
798
799
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200800urllib
801------
802
803Add support.for ``data:`` URLs in :mod:`urllib.request`.
804
805(Contributed by Mathias Panzenböck in :issue:`16423`.)
806
807
808unittest
809--------
810
811Support for easy dynamically-generated subtests using the
812:meth:`~unittest.TestCase.subTest` context manager.
813
814(Contributed by Antoine Pitrou in :issue:`16997`.)
815
R David Murray8e37d5d2013-04-13 14:49:48 -0400816
R David Murray671cd322013-04-10 12:31:43 -0400817wave
818----
819
820The :meth:`~wave.getparams` method now returns a namedtuple rather than a
821plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
822
R David Murrayc91d5ee2013-07-31 13:46:08 -0400823:meth:`wave.open` now supports the context manager protocol. (Contributed
824by Claudiu Popa in :issue:`17616`.)
825
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200826
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200827weakref
828-------
829
830New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000831methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200832
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000833New :class:`~weakref.finalize` class makes it possible to register a callback
834to be invoked when an object is garbage collected, without needing to
835carefully manage the lifecycle of the weak reference itself. (Contributed by
836Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200837
838
839xml.etree
840---------
841
842Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700843:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200844
Eli Benderskyb5869342013-08-30 05:51:20 -0700845(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200846
Christian Tismer59202e52013-10-21 03:59:23 +0200847
848zipfile.PyZipfile
849-----------------
850
851Add a filter function to ignore some packages (tests for instance),
852:meth:`~zipfile.PyZipFile.writepy`.
853
854(Contributed by Christian Tismer in :issue:`19274`.)
855
856
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200857Other improvements
858==================
859
860Tab-completion is now enabled by default in the interactive interpreter.
861
862(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
863
Eli Bendersky96d848a2013-09-06 06:55:58 -0700864Python invocation changes
865=========================
866
867Invoking the Python interpreter with ``--version`` now outputs the version to
868standard output instead of standard error (:issue:`18338`). Similar changes
869were made to :mod:`argparse` (:issue:`18920`) and other modules that have
870script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200871
Georg Brandlb80f5112012-09-30 09:11:58 +0200872Optimizations
873=============
874
875Major performance enhancements have been added:
876
Victor Stinnere64322e2012-10-30 23:12:47 +0100877* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200878
Raymond Hettingerc301b552013-08-19 09:12:20 -0700879* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700880 probe now checks a series of consecutive, adjacent key/hash pairs before
881 continuing to make random probes through the hash table. This exploits
882 cache locality to make collision resolution less expensive.
883
884 The collision resolution scheme can be described as a hybrid of linear
885 probing and open addressing. The number of additional linear probes
886 defaults to nine. This can be changed at compile-time by defining
887 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
888 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700889
Christian Heimes086b1af2013-10-22 11:49:34 +0200890 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700891
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200892* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400893 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200894 :mod:`collections` and :mod:`locale` modules and their dependencies are no
895 longer imported by default. The marshal module has been improved to load
896 compiled Python code faster.
897
898 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
899 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
900 :issue:`9548`)
901
902
Nick Coghlan367df122013-10-27 01:57:34 +1000903CPython Implementation Changes
904==============================
905
906
907.. _pep-445:
908
909PEP 445: Customization of CPython memory allocators
910---------------------------------------------------
911
912:pep:`445` adds new C level interfaces to customize memory allocation in
913the CPython interpreter.
914
915.. seealso::
916
917 :pep:`445` - Add new APIs to customize Python memory allocators
918 PEP written and implemented by Victor Stinner.
919
920
921.. _pep-442:
922
923PEP 442: Safe object finalization
924---------------------------------
925
926:pep:`442` removes the current limitations and quirks of object finalization
927in CPython. With it, objects with :meth:`__del__` methods, as well as
928generators with :keyword:`finally` clauses, can be finalized when they are
929part of a reference cycle.
930
931As part of this change, module globals are no longer forcibly set to
932:const:`None` during interpreter shutdown in most cases, instead relying
933on the normal operation of the cyclic garbage collector.
934
935.. seealso::
936
937 :pep:`442` - Safe object finalization
938 PEP written and implemented by Antoine Pitrou.
939
940
941Other build and C API changes
942-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200943
944Changes to Python's build process and to the C API include:
945
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000946* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
947 allows applications embedding the CPython interpreter to reliably force
948 a particular encoding and error handler for the standard streams
949 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200950
Nick Coghlan0acceb72013-10-20 13:22:21 +1000951* Most Python C APIs that don't mutate string arguments are now correctly
952 marked as accepting ``const char *`` rather than ``char *`` (Contributed
953 by Serhiy Storchaka in :issue:`1772673`).
954
955* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
956 and can be used to simplify the process of defining and maintaining
957 accurate signatures for builtins and standard library extension modules
958 implemented in C.
959
Nick Coghlan367df122013-10-27 01:57:34 +1000960 .. note::
961 The Argument Clinic PEP is not fully up to date with the state of the
962 implementation. This has been deemed acceptable by the release manager
963 and core development team in this case, as Argument Clinic will not
964 be made available as a public API for third party use in Python 3.4.
965
Georg Brandlb80f5112012-09-30 09:11:58 +0200966
967Deprecated
968==========
969
970Unsupported Operating Systems
971-----------------------------
972
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200973* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200974* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200975
976
977Deprecated Python modules, functions and methods
978------------------------------------------------
979
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400980* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400981 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
982 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200983
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400984* :func:`importlib.util.module_for_loader` is pending deprecation. Using
985 :func:`importlib.util.module_to_load` and
986 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
987 to more easily customize module loading.
988
Brett Cannone4f41de2013-06-16 13:13:40 -0400989* The :mod:`imp` module is pending deprecation. To keep compatibility with
990 Python 2/3 code bases, the module's removal is currently not scheduled.
991
Brett Cannon1448ecf2013-10-04 11:38:59 -0400992* The :mod:`formatter` module is pending deprecation and is slated for removal
993 in Python 3.6.
994
Christian Heimes634919a2013-11-20 17:23:06 +0100995* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
996 require an explicit digest name or constructor as *digestmod* argument.
997
Georg Brandlb80f5112012-09-30 09:11:58 +0200998
999Deprecated functions and types of the C API
1000-------------------------------------------
1001
Victor Stinner3dd263f2013-10-23 18:54:43 +02001002* The ``PyThreadState.tick_counter`` field has been removed: its value was
1003 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001004
1005
1006Deprecated features
1007-------------------
1008
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001009* The site module adding a "site-python" directory to sys.path, if it
1010 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001011
1012
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001013Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001014=====================
1015
Victor Stinner774b2e02013-12-13 14:33:01 +01001016Changes in the Python API
1017-------------------------
1018
Georg Brandlb80f5112012-09-30 09:11:58 +02001019This section lists previously described changes and other bugfixes
1020that may require changes to your code.
1021
Brett Cannon777622b2013-04-09 17:03:10 -04001022* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1023 exception or return a default value instead of raising
1024 :exc:`NotImplementedError` blindly. This will only affect code calling
1025 :func:`super` and falling through all the way to the ABCs. For compatibility,
1026 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001027
1028* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1029 attributes to ``None`` by default. To determine if these attributes were set
1030 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001031 ``getattr(module, '__loader__', None) is not None``.
1032
1033* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1034 ``__package__`` unconditionally to properly support reloading. If this is not
1035 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001036 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001037
1038* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1039 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1040
Brett Cannon1448ecf2013-10-04 11:38:59 -04001041* Frozen packages no longer set ``__path__`` to a list containing the package
1042 name but an empty list instead. Determing if a module is a package should be
1043 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001044
Brett Cannon33915eb2013-06-14 18:33:00 -04001045* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1046 it would write to is a symlink or a non-regular file. This is to act as a
1047 warning that import will overwrite those files with a regular file regardless
1048 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001049
1050* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1051 :exc:`ImportError` when the source code being loaded triggers a
1052 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1053 meant to be raised only when source code cannot be found but it should, it was
1054 felt to be over-reaching/overloading of that meaning when the source code is
1055 found but improperly structured. If you were catching ImportError before and
1056 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001057 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001058
1059* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001060 set the ``__wrapped__`` attribute to the function being wrapper, even if
1061 that function also had its ``__wrapped__`` attribute set. This means
1062 ``__wrapped__`` attributes now correctly link a stack of decorated
1063 functions rather than every ``__wrapped__`` attribute in the chain
1064 referring to the innermost function. Introspection libraries that
1065 assumed the previous behaviour was intentional can use
1066 :func:`inspect.unwrap` to access the first function in the chain that has
1067 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001068
Georg Brandl0f5bff22013-10-19 17:46:38 +02001069* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001070 directory to objects in :data:`sys.path_hooks` for the empty string. This
1071 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1072 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1073 will not find all keys. A module's ``__file__`` when imported in the current
1074 working directory will also now have an absolute path, including when using
1075 ``-m`` with the interpreter (this does not influence when the path to a file
1076 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001077
Victor Stinner774b2e02013-12-13 14:33:01 +01001078Changes in the C API
1079--------------------
1080
1081* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1082 argument is not set. Previously only ``NULL`` was returned with no exception
1083 set.
1084
1085* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1086 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1087 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1088 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1089
1090* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001091 3.3, the function did nothing if the key already exists (if the current
1092 value is a non-NULL pointer).
1093
Victor Stinner774b2e02013-12-13 14:33:01 +01001094* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1095 structure has been removed to fix a bug: see :issue:`14432` for the
1096 rationale.
1097