blob: f59af7f3c512104b76cf3e516a3e627a9dde4ec4 [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
R David Murraye0f7a782013-12-20 16:04:29 -050089* No new syntax features were added in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
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
R David Murray0a102162013-12-20 15:00:54 -0500112* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
113 :mod:`functools` (:pep:`443`)
Antoine Pitrouc9dc4a22013-11-23 18:59:12 +0100114* New :mod:`pickle` protocol 4 (:pep:`3154`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200115* SHA-3 (Keccak) support for :mod:`hashlib`.
116* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100117* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
118 on Unix (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500119* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
120 a new :mod:`~email.message.Message` subclass
121 (:class:`~email.contentmanager.EmailMessage`) that simplify MIME handling.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200122
Nick Coghlan367df122013-10-27 01:57:34 +1000123CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200124
Nick Coghlan367df122013-10-27 01:57:34 +1000125* :ref:`PEP 442: Safe object finalization <pep-442>`
126* :ref:`PEP 445: Configurable memory allocators <pep-445>`
Christian Heimes985ecdc2013-11-20 11:46:18 +0100127* :pep:`456` Secure and interchangeable hash algorithm
Nick Coghlan367df122013-10-27 01:57:34 +1000128* Improve finalization of Python modules to avoid setting their globals
129 to None, in most cases (:issue:`18214`).
130* A more efficient :mod:`marshal` format (:issue:`16475`).
131* "Argument Clinic", an initial step towards providing improved introspection
132 support for builtin and standard library extension types implemented in C
133 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200134
135Please read on for a comprehensive list of user-facing changes.
136
Nick Coghland0cf0632013-11-11 22:11:55 +1000137
138PEP 453: Explicit bootstrapping of pip in Python installations
139==============================================================
140
141The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
142cross-platform mechanism to boostrap the pip installer into Python
143installations and virtual environments.
144
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000145The :mod:`venv` module and the :command:`pyvenv` utility make use of this
146module to make ``pip`` readily available in virtual environments. When
147using the command line interface, ``pip`` is installed by default, while
148for the module API installation of ``pip`` must be requested explicitly.
149
150For CPython source builds on POSIX systems, the ``make install`` and
151``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
152can be controlled through configure options, and overridden through
153Makefile options.
154
Ned Deily44a0db02013-11-22 22:39:09 -0800155On Windows and Mac OS X, the CPython installers now offer the option to
156install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000157
Nick Coghland0cf0632013-11-11 22:11:55 +1000158.. note::
159
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000160 The implementation of PEP 453 is still a work in progress. Refer to
161 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000162
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000163 * Having the binary installers install ``pip`` by default
164 * Recommending the use of ``pip`` in the "Installing Python Module"
165 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000166
167.. seealso::
168
169 :pep:`453` - Explicit bootstrapping of pip in Python installations
170 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000171 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000172
173
R David Murrayf9909c22013-12-20 14:50:12 -0500174.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200175
176PEP 446: Make newly created file descriptors non-inheritable
177============================================================
178
Nick Coghlan367df122013-10-27 01:57:34 +1000179:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200180<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200181
182* :func:`os.get_inheritable`, :func:`os.set_inheritable`
183* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
184* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
185
Antoine Pitrou796564c2013-07-30 19:59:21 +0200186.. seealso::
187
Nick Coghlan367df122013-10-27 01:57:34 +1000188 :pep:`446` - Make newly created file descriptors non-inheritable
189 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200190
Georg Brandlb80f5112012-09-30 09:11:58 +0200191
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000192.. _codec-handling-improvements:
193
194Improvements to codec handling
195==============================
Nick Coghlan8b097b42013-11-13 23:49:21 +1000196
197Since it was first introduced, the :mod:`codecs` module has always been
198intended to operate as a type-neutral dynamic encoding and decoding
199system. However, its close coupling with the Python text model, especially
200the type restricted convenience methods on the builtin :class:`str`,
201:class:`bytes` and :class:`bytearray` types, has historically obscured that
202fact.
203
204As a key step in clarifying the situation, the :meth:`codecs.encode` and
205:meth:`codecs.decode` convenience functions are now properly documented in
206Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000207module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000208but were previously only discoverable through runtime introspection.
209
210Unlike the convenience methods on :class:`str`, :class:`bytes` and
211:class:`bytearray`, these convenience functions support arbitrary codecs
212in both Python 2 and Python 3, rather than being limited to Unicode text
213encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
214(in Python 2).
215
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000216In Python 3.4, the interpreter is able to identify the known non-text
217encodings provided in the standard library and direct users towards these
218general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000219
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000220 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000221 Traceback (most recent call last):
222 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000223 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000224
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000225 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000226 Traceback (most recent call last):
227 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000228 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000229
230In a related change, whenever it is feasible without breaking backwards
231compatibility, exceptions raised during encoding and decoding operations
232will be wrapped in a chained exception of the same type that mentions the
233name of the codec responsible for producing the error::
234
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000235 >>> import codecs
236
237 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000238 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000239
240 The above exception was the direct cause of the following exception:
241
242 Traceback (most recent call last):
243 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000244 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000245
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000246 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000247 TypeError: 'str' does not support the buffer interface
248
249 The above exception was the direct cause of the following exception:
250
251 Traceback (most recent call last):
252 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000253 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000254
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000255Finally, as the examples above show, these improvements have permitted
256the restoration of the convenience aliases for the non-Unicode codecs that
257were themselves restored in Python 3.2. This means that encoding binary data
258to and from its hexadecimal representation (for example) can now be written
259as::
260
261 >>> from codecs import encode, decode
262 >>> encode(b"hello", "hex")
263 b'68656c6c6f'
264 >>> decode(b"68656c6c6f", "hex")
265 b'hello'
266
267The binary and text transforms provided in the standard library are detailed
268in :ref:`binary-transforms` and :ref:`text-transforms`.
269
270(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
271:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000272
Eric Snowb523f842013-11-22 09:05:39 -0700273.. _pep-451:
274
275PEP 451: A ModuleSpec Type for the Import System
276================================================
277
278:pep:`451` provides an encapsulation of the information about a module
279that the import machinery will use to load it, (i.e. a module spec).
280This helps simplify both the import implementation and several
281import-related APIs. The change is also a stepping stone for several
282future import-related improvements.
283
284https://mail.python.org/pipermail/python-dev/2013-November/130111.html
285
286The public-facing changes from the PEP are entirely backward-compatible.
287Furthermore, they should be transparent to everyone but importer
288authors. Key finder and loader methods have been deprecated, but they
289will continue working. New importers should use the new methods
290described in the PEP. Existing importers should be updated to implement
291the new methods.
292
Nick Coghlan8b097b42013-11-13 23:49:21 +1000293
Antoine Pitrouc9dc4a22013-11-23 18:59:12 +0100294Pickle protocol 4
295=================
296
297The new :mod:`pickle` protocol addresses a number of issues that were present
298in previous protocols, such as the serialization of nested classes, very
299large strings and containers, or classes whose :meth:`__new__` method takes
300keyword-only arguments. It also brings a couple efficiency improvements.
301
302.. seealso::
303
304 :pep:`3154` - Pickle protocol 4
305 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
306
307
Georg Brandlb80f5112012-09-30 09:11:58 +0200308Other Language Changes
309======================
310
311Some smaller changes made to the core Python language are:
312
Ezio Melotti34808e22013-10-12 16:36:13 +0300313* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200314
R David Murray9a2f1392013-06-28 13:31:19 -0400315* :func:`min` and :func:`max` now accept a *default* argument that can be used
316 to specify the value they return if the iterable they are evaluating has no
317 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200318
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200319* Module objects are now :mod:`weakref`'able.
320
Nick Coghlan0acceb72013-10-20 13:22:21 +1000321* Module ``__file__`` attributes (and related values) should now always
322 contain absolute paths by default, with the sole exception of
323 ``__main__.__file__`` when a script has been executed directly using
324 a relative path (Contributed by Brett Cannon in :issue:`18416`).
325
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200326* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
327 encoding and decoding unless the ``surrogatepass`` error handler is used,
328 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
329 and the UTF-16 encoder that produces them while encoding non-BMP characters.
330 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
331 :issue:`12892`.
332
Georg Brandlb80f5112012-09-30 09:11:58 +0200333
334New Modules
335===========
336
Nick Coghlan0acceb72013-10-20 13:22:21 +1000337
338asyncio
339-------
340
341The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
342pluggable event loop model for Python, providing solid asynchronous IO
343support in the standard library, and making it easier for other event loop
344implementations to interoperate with the standard library and each other.
345
346For Python 3.4, this module is considered a :term:`provisional API`.
347
Nick Coghlan367df122013-10-27 01:57:34 +1000348.. seealso::
349
350 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
351 PEP written and implementation led by Guido van Rossum.
352
Nick Coghlan0acceb72013-10-20 13:22:21 +1000353enum
354----
355
Nick Coghlan367df122013-10-27 01:57:34 +1000356The new :mod:`enum` module (defined in :pep:`435`) provides a standard
357implementation of enumeration types, allowing other modules (such as
358:mod:`socket`) to provide more informative error messages and better
359debugging support by replacing opaque integer constants with backwards
360compatible enumeration values.
361
362.. seealso::
363
364 :pep:`435` - Adding an Enum type to the Python standard library
365 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
366 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000367
368
Antoine Pitrou31119e42013-11-22 17:38:12 +0100369pathlib
370-------
371
372The new :mod:`pathlib` module offers classes representing filesystem paths
373with semantics appropriate for different operating systems. Path classes are
374divided between *pure paths*, which provide purely computational operations
375without I/O, and *concrete paths*, which inherit from pure paths but also
376provide I/O operations.
377
378For Python 3.4, this module is considered a :term:`provisional API`.
379
380.. seealso::
381
382 :pep:`428` - The pathlib module -- object-oriented filesystem paths
383 PEP written and implemented by Antoine Pitrou.
384
385
Charles-François Natali243d8d82013-09-04 19:02:49 +0200386selectors
387---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200388
Nick Coghlan0acceb72013-10-20 13:22:21 +1000389The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
390allows high-level and efficient I/O multiplexing, built upon the
391:mod:`select` module primitives.
392
393
394statistics
395----------
396
397The new :mod:`statistics` module (defined in :pep:`450`) offers some core
398statistics functionality directly in the standard library. This module
399supports calculation of the mean, median, mode, variance and standard
400deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200401
Nick Coghlan367df122013-10-27 01:57:34 +1000402.. seealso::
403
404 :pep:`450` - Adding A Statistics Module To The Standard Library
405 PEP written and implemented by Steven D'Aprano
406
Georg Brandlb80f5112012-09-30 09:11:58 +0200407
Victor Stinnerd2736af2013-11-25 09:40:27 +0100408tracemalloc
409-----------
410
411The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
412trace memory blocks allocated by Python. It provides the following information:
413
414* Traceback where an object was allocated
415* Statistics on allocated memory blocks per filename and per line number:
416 total size, number and average size of allocated memory blocks
417* Compute the differences between two snapshots to detect memory leaks
418
419.. seealso::
420
421 :pep:`454` - Add a new tracemalloc module to trace Python memory allocations
422 PEP written and implemented by Victor Stinner
423
424
Georg Brandlb80f5112012-09-30 09:11:58 +0200425Improved Modules
426================
427
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200428aifc
429----
430
431The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
432plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
433
434
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300435audioop
436-------
437
438Added support for 24-bit samples (:issue:`12866`).
439
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200440Added the :func:`~audioop.byteswap` function to convert big-endian samples
441to little-endian and vice versa (:issue:`19641`).
442
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300443
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000444base64
445------
446
447The encoding and decoding functions in :mod:`base64` now accept any
448:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100449:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000450
451
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200452colorsys
453--------
454
455The number of digits in the coefficients for the RGB --- YIQ conversions have
456been expanded so that they match the FCC NTSC versions. The change in
457results should be less than 1% and may better match results found elsewhere.
458
R David Murray8e37d5d2013-04-13 14:49:48 -0400459
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000460contextlib
461----------
462
Nick Coghlan240f86d2013-10-17 23:40:57 +1000463The new :class:`contextlib.suppress` context manager helps to clarify the
464intent of code that deliberately suppresses exceptions from a single
465statement. (Contributed by Raymond Hettinger in :issue:`15806` and
466Zero Piraeus in :issue:`19266`)
467
Victor Stinner6633c392013-10-21 13:27:11 +0200468The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000469for utility scripts to handle inflexible APIs that don't provide any
470options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000471other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
472this context manager is also useful for checking expected output from
473command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
474
475The :mod:`contextlib` documentation has also been updated to include a
476:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
477differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000478
479
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000480dis
481---
482
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300483The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
484that provides details of individual bytecode operations and a
485:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000486given piece of Python code. The various display tools in the :mod:`dis`
487module have been updated to be based on these new components.
488
489The new :class:`dis.Bytecode` class provides an object-oriented API for
490inspecting bytecode, both in human-readable form and for iterating over
491instructions.
492
Nick Coghlan50c48b82013-11-23 00:57:00 +1000493(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
494and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000495
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200496
R David Murray5a9d7062012-11-21 15:09:21 -0500497doctest
498-------
499
R David Murray5707d502013-06-23 14:24:13 -0400500Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
501failure is detected. (Contributed by R. David Murray and Daniel Urban in
502:issue:`16522`.)
503
504Updated the doctest command line interface to use :mod:`argparse`, and added
505``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
506be specified on the command line, and ``-f`` is a shorthand for ``-o
507FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
508CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200509
R David Murray8e37d5d2013-04-13 14:49:48 -0400510
R David Murraybb17d2b2013-08-09 16:15:28 -0400511email
512-----
513
514:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
515override the default policy of the message when generating a string
516representation of it. This means that ``as_string`` can now be used in more
517circumstances, instead of having to create and use a :mod:`~email.generator` in
518order to pass formatting parameters to its ``flatten`` method.
519
520New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
521representation of the message in a fashion similar to how ``as_string``
522produces a string representation. It does not accept the *maxheaderlen*
523argument, but does accept the *unixfrom* and *policy* arguments. The
524:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
525calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
526result: a bytes object containing the fully formatted message.
527
528(Contributed by R. David Murray in :issue:`18600`.)
529
R David Murray3da240f2013-10-16 22:48:40 -0400530A pair of new subclasses of :class:`~email.message.Message` have been added,
531along with a new sub-module, :mod:`~email.contentmanager`. All documentation
532is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000533:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400534number of new methods that make extracting content from and inserting content
535into email messages much easier. See the :mod:`~email.contentmanager`
536documentation for details.
537
538These API additions complete the bulk of the work that was planned as part of
539the email6 project. The currently provisional API is scheduled to become final
540in Python 3.5 (possibly with a few minor additions in the area of error
541handling).
542
543(Contributed by R. David Murray in :issue:`18891`.)
544
R David Murraybb17d2b2013-08-09 16:15:28 -0400545
Victor Stinner854ffcb2013-06-21 00:36:30 +0200546functools
547---------
548
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000549The new :func:`~functools.partialmethod` descriptor bring partial argument
550application to descriptors, just as :func:`~functools.partial` provides
551for normal callables. The new descriptor also makes it easier to get
552arbitrary callables (including :func:`~functools.partial` instances)
553to behave like normal instance methods when included in a class definition.
554
555(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
556
R David Murray0a102162013-12-20 15:00:54 -0500557.. _whatsnew-singledispatch:
558
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000559The new :func:`~functools.singledispatch` decorator brings support for
560single-dispatch generic functions to the Python standard library. Where
561object oriented programming focuses on grouping multiple operations on a
562common set of data into a class, a generic function focuses on grouping
563multiple implementations of an operation that allows it to work with
564*different* kinds of data.
565
566.. seealso::
567
568 :pep:`443` - Single-dispatch generic functions
569 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200570
Nick Coghlane8c45d62013-07-28 20:00:01 +1000571
Christian Heimese92ef132013-10-13 00:52:43 +0200572hashlib
573-------
574
575New :func:`hashlib.pbkdf2_hmac` function.
576
577(Contributed by Christian Heimes in :issue:`18582`)
578
579
Ezio Melotti250a06c2013-11-25 06:18:47 +0200580html
581----
582
583Added a new :func:`html.unescape` function that converts HTML5 character
584references to the corresponding Unicode characters.
585
586(Contributed by Ezio Melotti in :issue:`2927`)
587
588Added a new *convert_charrefs* keyword argument to
589:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
590all character references. For backward-compatibility, its value defaults
591to ``False``, but it will change to ``True`` in future versions, so you
592are invited to set it explicitly and update your code to use this new feature.
593
594(Contributed by Ezio Melotti in :issue:`13633`)
595
596The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
597
598(Contributed by Ezio Melotti in :issue:`15114`)
599
600
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200601inspect
602-------
603
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000604
Nick Coghlan367df122013-10-27 01:57:34 +1000605The inspect module now offers a basic :ref:`command line interface
606<inspect-module-cli>` to quickly display source code and other
607information for modules, classes and functions. (Contributed by Claudiu Popa
608and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000609
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200610:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
611created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000612``__wrapped__`` attribute on a wrapper function). (Contributed by
613Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
614
615As part of the implementation of the new :mod:`enum` module, the
616:mod:`inspect` module now has substantially better support for custom
617``__dir__`` methods and dynamic class attributes provided through
618metaclasses (Contributed by Ethan Furman in :issue:`18929` and
619:issue:`19030`)
620
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200621
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200622mmap
623----
624
625mmap objects can now be weakref'ed.
626
627(Contributed by Valerie Lambert in :issue:`4885`.)
628
629
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100630multiprocessing
631---------------
632
Nick Coghlan9a767352013-12-17 22:17:26 +1000633On Unix, two new *start methods* (``spawn`` and ``forkserver``) have been
634added for starting processes using :mod:`multiprocessing`. These make
635the mixing of processes with threads more robust, and the ``spawn``
636method matches the semantics that multiprocessing has always used on
637Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100638
639Also, except when using the old *fork* start method, child processes
640will no longer inherit unneeded handles/file descriptors from their parents.
641
Nick Coghlan9a767352013-12-17 22:17:26 +1000642:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
643``-m`` switch) to initialise ``__main__`` appropriately in child processes
644when using the ``spawn`` or ``forkserver`` start methods. This resolves some
645edge cases where combining multiprocessing, the ``-m`` command line switch
646and explicit relative imports could cause obscure failures in child
647processes. (Contributed by Nick Coghlan in :issue:`19946`)
648
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100649
Victor Stinnerdaf45552013-08-28 00:53:59 +0200650os
651--
652
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200653New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200654descriptors or a Windows handle:
655
656* :func:`os.get_inheritable`, :func:`os.set_inheritable`
657* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
658
659
R David Murray78d692f2013-10-10 17:23:26 -0400660pdb
661---
662
663The ``print`` command has been removed from :mod:`pdb`, restoring access to the
664``print`` function.
665
666Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
667entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
668mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
669prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
670command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
671``print`` function, making it inaccessible at the ``pdb`` prompt.
672
673(Contributed by Connor Osborn in :issue:`18764`.)
674
675
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200676poplib
677------
678
679New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
680an encrypted POP3 session.
681
682New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
683POP3 server.
684
685(Contributed by Lorenzo Catucci in :issue:`4473`.)
686
687
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300688pprint
689------
690
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200691The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300692sequences (:issue:`19132`).
693
694
Nick Coghlan367df122013-10-27 01:57:34 +1000695pydoc
696-----
697
698While significant changes have not been made to :mod:`pydoc` directly,
699its handling of custom ``__dir__`` methods and various descriptor
700behaviours has been improved substantially by the underlying changes in
701the :mod:`inspect` module.
702
703
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200704re
705--
706
707Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
708which anchor the pattern at both ends of the string to match.
709(Contributed by Matthew Barnett in :issue:`16203`.)
710
Ezio Melottidd7e2912013-11-25 23:20:20 +0200711The repr of :ref:`regex objects <re-objects>` now includes the pattern
712and the flags; the repr of :ref:`match objects <match-objects>` now
713includes the start, end, and the part of the string that matched.
714
715(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
716
717
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200718resource
719--------
720
721New :func:`resource.prlimit` function and Linux specific constants.
722(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
723
R David Murray8e37d5d2013-04-13 14:49:48 -0400724smtplib
725-------
726
R David Murray8a345962013-04-14 06:46:35 -0400727:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400728both socket level errors and SMTP protocol level errors to be caught in one
729try/except statement by code that only cares whether or not an error occurred.
730(:issue:`2118`).
731
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200732
Victor Stinnerdaf45552013-08-28 00:53:59 +0200733socket
734------
735
Georg Brandl5642ff92013-09-15 10:37:57 +0200736Socket objects have new methods to get or set their :ref:`inheritable flag
737<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200738
739* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
740
Eli Bendersky34567ec2013-08-31 15:18:48 -0700741The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
742using the new :mod:`enum` module. This allows descriptive reporting during
743debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200744
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200745ssl
746---
747
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200748TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200749
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200750(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200751
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200752* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
753 :meth:`~ssl.SSLContext.cert_store_stats` and
754 :meth:`~ssl.SSLContext.get_ca_certs`
755
756* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
757 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200758
759(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Serhiy Storchaka6de88b32013-12-02 20:31:00 +0200760:issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200761
762Support for server-side SNI using the new
763:meth:`ssl.SSLContext.set_servername_callback` method.
764
765(Contributed by Daniel Black in :issue:`8109`.)
766
767
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200768stat
769----
770
771The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
772implementation is required as most of the values aren't standardized and
773platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
774
775The module supports new file types: door, event port and whiteout.
776
777
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200778struct
779------
780
781Streaming struct unpacking using :func:`struct.iter_unpack`.
782
783(Contributed by Antoine Pitrou in :issue:`17804`.)
784
785
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300786sunau
787-----
788
789The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
790plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
791
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300792:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
793
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300794
Andrew Kuchling173a1572013-09-15 18:15:56 -0400795traceback
796---------
797
798A new :func:`traceback.clear_frames` function takes a traceback object
799and clears the local variables in all of the frames it references,
800reducing the amount of memory consumed (:issue:`1565525`).
801
802
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200803urllib
804------
805
806Add support.for ``data:`` URLs in :mod:`urllib.request`.
807
808(Contributed by Mathias Panzenböck in :issue:`16423`.)
809
810
811unittest
812--------
813
814Support for easy dynamically-generated subtests using the
815:meth:`~unittest.TestCase.subTest` context manager.
816
817(Contributed by Antoine Pitrou in :issue:`16997`.)
818
R David Murray8e37d5d2013-04-13 14:49:48 -0400819
R David Murray671cd322013-04-10 12:31:43 -0400820wave
821----
822
823The :meth:`~wave.getparams` method now returns a namedtuple rather than a
824plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
825
R David Murrayc91d5ee2013-07-31 13:46:08 -0400826:meth:`wave.open` now supports the context manager protocol. (Contributed
827by Claudiu Popa in :issue:`17616`.)
828
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200829
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200830weakref
831-------
832
833New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000834methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200835
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000836New :class:`~weakref.finalize` class makes it possible to register a callback
837to be invoked when an object is garbage collected, without needing to
838carefully manage the lifecycle of the weak reference itself. (Contributed by
839Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200840
841
842xml.etree
843---------
844
845Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700846:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200847
Eli Benderskyb5869342013-08-30 05:51:20 -0700848(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200849
Christian Tismer59202e52013-10-21 03:59:23 +0200850
851zipfile.PyZipfile
852-----------------
853
854Add a filter function to ignore some packages (tests for instance),
855:meth:`~zipfile.PyZipFile.writepy`.
856
857(Contributed by Christian Tismer in :issue:`19274`.)
858
859
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200860Other improvements
861==================
862
863Tab-completion is now enabled by default in the interactive interpreter.
864
865(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
866
Eli Bendersky96d848a2013-09-06 06:55:58 -0700867Python invocation changes
868=========================
869
870Invoking the Python interpreter with ``--version`` now outputs the version to
871standard output instead of standard error (:issue:`18338`). Similar changes
872were made to :mod:`argparse` (:issue:`18920`) and other modules that have
873script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200874
Georg Brandlb80f5112012-09-30 09:11:58 +0200875Optimizations
876=============
877
878Major performance enhancements have been added:
879
Victor Stinnere64322e2012-10-30 23:12:47 +0100880* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200881
Raymond Hettingerc301b552013-08-19 09:12:20 -0700882* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700883 probe now checks a series of consecutive, adjacent key/hash pairs before
884 continuing to make random probes through the hash table. This exploits
885 cache locality to make collision resolution less expensive.
886
887 The collision resolution scheme can be described as a hybrid of linear
888 probing and open addressing. The number of additional linear probes
889 defaults to nine. This can be changed at compile-time by defining
890 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
891 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700892
Christian Heimes086b1af2013-10-22 11:49:34 +0200893 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700894
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200895* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400896 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200897 :mod:`collections` and :mod:`locale` modules and their dependencies are no
898 longer imported by default. The marshal module has been improved to load
899 compiled Python code faster.
900
901 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
902 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
903 :issue:`9548`)
904
905
Nick Coghlan367df122013-10-27 01:57:34 +1000906CPython Implementation Changes
907==============================
908
909
910.. _pep-445:
911
912PEP 445: Customization of CPython memory allocators
913---------------------------------------------------
914
915:pep:`445` adds new C level interfaces to customize memory allocation in
916the CPython interpreter.
917
918.. seealso::
919
920 :pep:`445` - Add new APIs to customize Python memory allocators
921 PEP written and implemented by Victor Stinner.
922
923
924.. _pep-442:
925
926PEP 442: Safe object finalization
927---------------------------------
928
929:pep:`442` removes the current limitations and quirks of object finalization
930in CPython. With it, objects with :meth:`__del__` methods, as well as
931generators with :keyword:`finally` clauses, can be finalized when they are
932part of a reference cycle.
933
934As part of this change, module globals are no longer forcibly set to
935:const:`None` during interpreter shutdown in most cases, instead relying
936on the normal operation of the cyclic garbage collector.
937
938.. seealso::
939
940 :pep:`442` - Safe object finalization
941 PEP written and implemented by Antoine Pitrou.
942
943
944Other build and C API changes
945-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200946
947Changes to Python's build process and to the C API include:
948
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000949* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
950 allows applications embedding the CPython interpreter to reliably force
951 a particular encoding and error handler for the standard streams
952 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200953
Nick Coghlan0acceb72013-10-20 13:22:21 +1000954* Most Python C APIs that don't mutate string arguments are now correctly
955 marked as accepting ``const char *`` rather than ``char *`` (Contributed
956 by Serhiy Storchaka in :issue:`1772673`).
957
958* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
959 and can be used to simplify the process of defining and maintaining
960 accurate signatures for builtins and standard library extension modules
961 implemented in C.
962
Nick Coghlan367df122013-10-27 01:57:34 +1000963 .. note::
964 The Argument Clinic PEP is not fully up to date with the state of the
965 implementation. This has been deemed acceptable by the release manager
966 and core development team in this case, as Argument Clinic will not
967 be made available as a public API for third party use in Python 3.4.
968
Georg Brandlb80f5112012-09-30 09:11:58 +0200969
970Deprecated
971==========
972
973Unsupported Operating Systems
974-----------------------------
975
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200976* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200977* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200978
979
980Deprecated Python modules, functions and methods
981------------------------------------------------
982
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400983* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400984 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
985 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200986
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400987* :func:`importlib.util.module_for_loader` is pending deprecation. Using
988 :func:`importlib.util.module_to_load` and
989 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
990 to more easily customize module loading.
991
Brett Cannone4f41de2013-06-16 13:13:40 -0400992* The :mod:`imp` module is pending deprecation. To keep compatibility with
993 Python 2/3 code bases, the module's removal is currently not scheduled.
994
Brett Cannon1448ecf2013-10-04 11:38:59 -0400995* The :mod:`formatter` module is pending deprecation and is slated for removal
996 in Python 3.6.
997
Christian Heimes634919a2013-11-20 17:23:06 +0100998* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
999 require an explicit digest name or constructor as *digestmod* argument.
1000
Georg Brandlb80f5112012-09-30 09:11:58 +02001001
1002Deprecated functions and types of the C API
1003-------------------------------------------
1004
Victor Stinner3dd263f2013-10-23 18:54:43 +02001005* The ``PyThreadState.tick_counter`` field has been removed: its value was
1006 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001007
1008
1009Deprecated features
1010-------------------
1011
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001012* The site module adding a "site-python" directory to sys.path, if it
1013 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001014
1015
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001016Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001017=====================
1018
Victor Stinner774b2e02013-12-13 14:33:01 +01001019Changes in the Python API
1020-------------------------
1021
Georg Brandlb80f5112012-09-30 09:11:58 +02001022This section lists previously described changes and other bugfixes
1023that may require changes to your code.
1024
Brett Cannon777622b2013-04-09 17:03:10 -04001025* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1026 exception or return a default value instead of raising
1027 :exc:`NotImplementedError` blindly. This will only affect code calling
1028 :func:`super` and falling through all the way to the ABCs. For compatibility,
1029 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001030
1031* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1032 attributes to ``None`` by default. To determine if these attributes were set
1033 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001034 ``getattr(module, '__loader__', None) is not None``.
1035
1036* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1037 ``__package__`` unconditionally to properly support reloading. If this is not
1038 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001039 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001040
1041* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1042 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1043
Brett Cannon1448ecf2013-10-04 11:38:59 -04001044* Frozen packages no longer set ``__path__`` to a list containing the package
1045 name but an empty list instead. Determing if a module is a package should be
1046 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001047
Brett Cannon33915eb2013-06-14 18:33:00 -04001048* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1049 it would write to is a symlink or a non-regular file. This is to act as a
1050 warning that import will overwrite those files with a regular file regardless
1051 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001052
1053* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1054 :exc:`ImportError` when the source code being loaded triggers a
1055 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1056 meant to be raised only when source code cannot be found but it should, it was
1057 felt to be over-reaching/overloading of that meaning when the source code is
1058 found but improperly structured. If you were catching ImportError before and
1059 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001060 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001061
1062* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001063 set the ``__wrapped__`` attribute to the function being wrapper, even if
1064 that function also had its ``__wrapped__`` attribute set. This means
1065 ``__wrapped__`` attributes now correctly link a stack of decorated
1066 functions rather than every ``__wrapped__`` attribute in the chain
1067 referring to the innermost function. Introspection libraries that
1068 assumed the previous behaviour was intentional can use
1069 :func:`inspect.unwrap` to access the first function in the chain that has
1070 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001071
Georg Brandl0f5bff22013-10-19 17:46:38 +02001072* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001073 directory to objects in :data:`sys.path_hooks` for the empty string. This
1074 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1075 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1076 will not find all keys. A module's ``__file__`` when imported in the current
1077 working directory will also now have an absolute path, including when using
1078 ``-m`` with the interpreter (this does not influence when the path to a file
1079 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001080
Victor Stinner774b2e02013-12-13 14:33:01 +01001081Changes in the C API
1082--------------------
1083
1084* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1085 argument is not set. Previously only ``NULL`` was returned with no exception
1086 set.
1087
1088* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1089 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1090 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1091 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1092
1093* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001094 3.3, the function did nothing if the key already exists (if the current
1095 value is a non-NULL pointer).
1096
Victor Stinner774b2e02013-12-13 14:33:01 +01001097* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1098 structure has been removed to fix a bug: see :issue:`14432` for the
1099 rationale.
1100