blob: 5a4fa862e04fc0593602ceac363fdbfafc92637b [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
Victor Stinnerdaf45552013-08-28 00:53:59 +0200104* :ref:`PEP 446: Make newly created file descriptors non-inheritable <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`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200118
Nick Coghlan367df122013-10-27 01:57:34 +1000119CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200120
Nick Coghlan367df122013-10-27 01:57:34 +1000121* :ref:`PEP 442: Safe object finalization <pep-442>`
122* :ref:`PEP 445: Configurable memory allocators <pep-445>`
Christian Heimes985ecdc2013-11-20 11:46:18 +0100123* :pep:`456` Secure and interchangeable hash algorithm
Nick Coghlan367df122013-10-27 01:57:34 +1000124* Improve finalization of Python modules to avoid setting their globals
125 to None, in most cases (:issue:`18214`).
126* A more efficient :mod:`marshal` format (:issue:`16475`).
127* "Argument Clinic", an initial step towards providing improved introspection
128 support for builtin and standard library extension types implemented in C
129 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200130
131Please read on for a comprehensive list of user-facing changes.
132
Nick Coghland0cf0632013-11-11 22:11:55 +1000133
134PEP 453: Explicit bootstrapping of pip in Python installations
135==============================================================
136
137The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
138cross-platform mechanism to boostrap the pip installer into Python
139installations and virtual environments.
140
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000141The :mod:`venv` module and the :command:`pyvenv` utility make use of this
142module to make ``pip`` readily available in virtual environments. When
143using the command line interface, ``pip`` is installed by default, while
144for the module API installation of ``pip`` must be requested explicitly.
145
146For CPython source builds on POSIX systems, the ``make install`` and
147``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
148can be controlled through configure options, and overridden through
149Makefile options.
150
Ned Deily44a0db02013-11-22 22:39:09 -0800151On Windows and Mac OS X, the CPython installers now offer the option to
152install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000153
Nick Coghland0cf0632013-11-11 22:11:55 +1000154.. note::
155
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000156 The implementation of PEP 453 is still a work in progress. Refer to
157 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000158
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000159 * Having the binary installers install ``pip`` by default
160 * Recommending the use of ``pip`` in the "Installing Python Module"
161 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000162
163.. seealso::
164
165 :pep:`453` - Explicit bootstrapping of pip in Python installations
166 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000167 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000168
169
Victor Stinnerdaf45552013-08-28 00:53:59 +0200170.. _pep-446:
171
172PEP 446: Make newly created file descriptors non-inheritable
173============================================================
174
Nick Coghlan367df122013-10-27 01:57:34 +1000175:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200176<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200177
178* :func:`os.get_inheritable`, :func:`os.set_inheritable`
179* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
180* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
181
Antoine Pitrou796564c2013-07-30 19:59:21 +0200182.. seealso::
183
Nick Coghlan367df122013-10-27 01:57:34 +1000184 :pep:`446` - Make newly created file descriptors non-inheritable
185 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200186
Georg Brandlb80f5112012-09-30 09:11:58 +0200187
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000188.. _codec-handling-improvements:
189
190Improvements to codec handling
191==============================
Nick Coghlan8b097b42013-11-13 23:49:21 +1000192
193Since it was first introduced, the :mod:`codecs` module has always been
194intended to operate as a type-neutral dynamic encoding and decoding
195system. However, its close coupling with the Python text model, especially
196the type restricted convenience methods on the builtin :class:`str`,
197:class:`bytes` and :class:`bytearray` types, has historically obscured that
198fact.
199
200As a key step in clarifying the situation, the :meth:`codecs.encode` and
201:meth:`codecs.decode` convenience functions are now properly documented in
202Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000203module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000204but were previously only discoverable through runtime introspection.
205
206Unlike the convenience methods on :class:`str`, :class:`bytes` and
207:class:`bytearray`, these convenience functions support arbitrary codecs
208in both Python 2 and Python 3, rather than being limited to Unicode text
209encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
210(in Python 2).
211
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000212In Python 3.4, the interpreter is able to identify the known non-text
213encodings provided in the standard library and direct users towards these
214general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000215
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000216 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000217 Traceback (most recent call last):
218 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000219 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000220
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000221 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000222 Traceback (most recent call last):
223 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000224 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000225
226In a related change, whenever it is feasible without breaking backwards
227compatibility, exceptions raised during encoding and decoding operations
228will be wrapped in a chained exception of the same type that mentions the
229name of the codec responsible for producing the error::
230
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000231 >>> import codecs
232
233 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000234 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000235
236 The above exception was the direct cause of the following exception:
237
238 Traceback (most recent call last):
239 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000240 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000241
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000242 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000243 TypeError: 'str' does not support the buffer interface
244
245 The above exception was the direct cause of the following exception:
246
247 Traceback (most recent call last):
248 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000249 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000250
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000251Finally, as the examples above show, these improvements have permitted
252the restoration of the convenience aliases for the non-Unicode codecs that
253were themselves restored in Python 3.2. This means that encoding binary data
254to and from its hexadecimal representation (for example) can now be written
255as::
256
257 >>> from codecs import encode, decode
258 >>> encode(b"hello", "hex")
259 b'68656c6c6f'
260 >>> decode(b"68656c6c6f", "hex")
261 b'hello'
262
263The binary and text transforms provided in the standard library are detailed
264in :ref:`binary-transforms` and :ref:`text-transforms`.
265
266(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
267:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000268
Eric Snowb523f842013-11-22 09:05:39 -0700269.. _pep-451:
270
271PEP 451: A ModuleSpec Type for the Import System
272================================================
273
274:pep:`451` provides an encapsulation of the information about a module
275that the import machinery will use to load it, (i.e. a module spec).
276This helps simplify both the import implementation and several
277import-related APIs. The change is also a stepping stone for several
278future import-related improvements.
279
280https://mail.python.org/pipermail/python-dev/2013-November/130111.html
281
282The public-facing changes from the PEP are entirely backward-compatible.
283Furthermore, they should be transparent to everyone but importer
284authors. Key finder and loader methods have been deprecated, but they
285will continue working. New importers should use the new methods
286described in the PEP. Existing importers should be updated to implement
287the new methods.
288
Nick Coghlan8b097b42013-11-13 23:49:21 +1000289
Antoine Pitrouc9dc4a22013-11-23 18:59:12 +0100290Pickle protocol 4
291=================
292
293The new :mod:`pickle` protocol addresses a number of issues that were present
294in previous protocols, such as the serialization of nested classes, very
295large strings and containers, or classes whose :meth:`__new__` method takes
296keyword-only arguments. It also brings a couple efficiency improvements.
297
298.. seealso::
299
300 :pep:`3154` - Pickle protocol 4
301 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
302
303
Georg Brandlb80f5112012-09-30 09:11:58 +0200304Other Language Changes
305======================
306
307Some smaller changes made to the core Python language are:
308
Ezio Melotti34808e22013-10-12 16:36:13 +0300309* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200310
R David Murray9a2f1392013-06-28 13:31:19 -0400311* :func:`min` and :func:`max` now accept a *default* argument that can be used
312 to specify the value they return if the iterable they are evaluating has no
313 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200314
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200315* Module objects are now :mod:`weakref`'able.
316
Nick Coghlan0acceb72013-10-20 13:22:21 +1000317* Module ``__file__`` attributes (and related values) should now always
318 contain absolute paths by default, with the sole exception of
319 ``__main__.__file__`` when a script has been executed directly using
320 a relative path (Contributed by Brett Cannon in :issue:`18416`).
321
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200322* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
323 encoding and decoding unless the ``surrogatepass`` error handler is used,
324 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
325 and the UTF-16 encoder that produces them while encoding non-BMP characters.
326 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
327 :issue:`12892`.
328
Georg Brandlb80f5112012-09-30 09:11:58 +0200329
330New Modules
331===========
332
Nick Coghlan0acceb72013-10-20 13:22:21 +1000333
334asyncio
335-------
336
337The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
338pluggable event loop model for Python, providing solid asynchronous IO
339support in the standard library, and making it easier for other event loop
340implementations to interoperate with the standard library and each other.
341
342For Python 3.4, this module is considered a :term:`provisional API`.
343
Nick Coghlan367df122013-10-27 01:57:34 +1000344.. seealso::
345
346 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
347 PEP written and implementation led by Guido van Rossum.
348
Nick Coghlan0acceb72013-10-20 13:22:21 +1000349enum
350----
351
Nick Coghlan367df122013-10-27 01:57:34 +1000352The new :mod:`enum` module (defined in :pep:`435`) provides a standard
353implementation of enumeration types, allowing other modules (such as
354:mod:`socket`) to provide more informative error messages and better
355debugging support by replacing opaque integer constants with backwards
356compatible enumeration values.
357
358.. seealso::
359
360 :pep:`435` - Adding an Enum type to the Python standard library
361 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
362 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000363
364
Antoine Pitrou31119e42013-11-22 17:38:12 +0100365pathlib
366-------
367
368The new :mod:`pathlib` module offers classes representing filesystem paths
369with semantics appropriate for different operating systems. Path classes are
370divided between *pure paths*, which provide purely computational operations
371without I/O, and *concrete paths*, which inherit from pure paths but also
372provide I/O operations.
373
374For Python 3.4, this module is considered a :term:`provisional API`.
375
376.. seealso::
377
378 :pep:`428` - The pathlib module -- object-oriented filesystem paths
379 PEP written and implemented by Antoine Pitrou.
380
381
Charles-François Natali243d8d82013-09-04 19:02:49 +0200382selectors
383---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200384
Nick Coghlan0acceb72013-10-20 13:22:21 +1000385The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
386allows high-level and efficient I/O multiplexing, built upon the
387:mod:`select` module primitives.
388
389
390statistics
391----------
392
393The new :mod:`statistics` module (defined in :pep:`450`) offers some core
394statistics functionality directly in the standard library. This module
395supports calculation of the mean, median, mode, variance and standard
396deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200397
Nick Coghlan367df122013-10-27 01:57:34 +1000398.. seealso::
399
400 :pep:`450` - Adding A Statistics Module To The Standard Library
401 PEP written and implemented by Steven D'Aprano
402
Georg Brandlb80f5112012-09-30 09:11:58 +0200403
Victor Stinnerd2736af2013-11-25 09:40:27 +0100404tracemalloc
405-----------
406
407The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
408trace memory blocks allocated by Python. It provides the following information:
409
410* Traceback where an object was allocated
411* Statistics on allocated memory blocks per filename and per line number:
412 total size, number and average size of allocated memory blocks
413* Compute the differences between two snapshots to detect memory leaks
414
415.. seealso::
416
417 :pep:`454` - Add a new tracemalloc module to trace Python memory allocations
418 PEP written and implemented by Victor Stinner
419
420
Georg Brandlb80f5112012-09-30 09:11:58 +0200421Improved Modules
422================
423
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200424aifc
425----
426
427The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
428plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
429
430
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300431audioop
432-------
433
434Added support for 24-bit samples (:issue:`12866`).
435
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200436Added the :func:`~audioop.byteswap` function to convert big-endian samples
437to little-endian and vice versa (:issue:`19641`).
438
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300439
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000440base64
441------
442
443The encoding and decoding functions in :mod:`base64` now accept any
444:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100445:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000446
447
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200448colorsys
449--------
450
451The number of digits in the coefficients for the RGB --- YIQ conversions have
452been expanded so that they match the FCC NTSC versions. The change in
453results should be less than 1% and may better match results found elsewhere.
454
R David Murray8e37d5d2013-04-13 14:49:48 -0400455
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000456contextlib
457----------
458
Nick Coghlan240f86d2013-10-17 23:40:57 +1000459The new :class:`contextlib.suppress` context manager helps to clarify the
460intent of code that deliberately suppresses exceptions from a single
461statement. (Contributed by Raymond Hettinger in :issue:`15806` and
462Zero Piraeus in :issue:`19266`)
463
Victor Stinner6633c392013-10-21 13:27:11 +0200464The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000465for utility scripts to handle inflexible APIs that don't provide any
466options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000467other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
468this context manager is also useful for checking expected output from
469command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
470
471The :mod:`contextlib` documentation has also been updated to include a
472:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
473differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000474
475
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000476dis
477---
478
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300479The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
480that provides details of individual bytecode operations and a
481:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000482given piece of Python code. The various display tools in the :mod:`dis`
483module have been updated to be based on these new components.
484
485The new :class:`dis.Bytecode` class provides an object-oriented API for
486inspecting bytecode, both in human-readable form and for iterating over
487instructions.
488
Nick Coghlan50c48b82013-11-23 00:57:00 +1000489(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
490and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000491
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200492
R David Murray5a9d7062012-11-21 15:09:21 -0500493doctest
494-------
495
R David Murray5707d502013-06-23 14:24:13 -0400496Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
497failure is detected. (Contributed by R. David Murray and Daniel Urban in
498:issue:`16522`.)
499
500Updated the doctest command line interface to use :mod:`argparse`, and added
501``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
502be specified on the command line, and ``-f`` is a shorthand for ``-o
503FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
504CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200505
R David Murray8e37d5d2013-04-13 14:49:48 -0400506
R David Murraybb17d2b2013-08-09 16:15:28 -0400507email
508-----
509
510:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
511override the default policy of the message when generating a string
512representation of it. This means that ``as_string`` can now be used in more
513circumstances, instead of having to create and use a :mod:`~email.generator` in
514order to pass formatting parameters to its ``flatten`` method.
515
516New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
517representation of the message in a fashion similar to how ``as_string``
518produces a string representation. It does not accept the *maxheaderlen*
519argument, but does accept the *unixfrom* and *policy* arguments. The
520:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
521calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
522result: a bytes object containing the fully formatted message.
523
524(Contributed by R. David Murray in :issue:`18600`.)
525
R David Murray3da240f2013-10-16 22:48:40 -0400526A pair of new subclasses of :class:`~email.message.Message` have been added,
527along with a new sub-module, :mod:`~email.contentmanager`. All documentation
528is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000529:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400530number of new methods that make extracting content from and inserting content
531into email messages much easier. See the :mod:`~email.contentmanager`
532documentation for details.
533
534These API additions complete the bulk of the work that was planned as part of
535the email6 project. The currently provisional API is scheduled to become final
536in Python 3.5 (possibly with a few minor additions in the area of error
537handling).
538
539(Contributed by R. David Murray in :issue:`18891`.)
540
R David Murraybb17d2b2013-08-09 16:15:28 -0400541
Victor Stinner854ffcb2013-06-21 00:36:30 +0200542functools
543---------
544
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000545The new :func:`~functools.partialmethod` descriptor bring partial argument
546application to descriptors, just as :func:`~functools.partial` provides
547for normal callables. The new descriptor also makes it easier to get
548arbitrary callables (including :func:`~functools.partial` instances)
549to behave like normal instance methods when included in a class definition.
550
551(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
552
553The new :func:`~functools.singledispatch` decorator brings support for
554single-dispatch generic functions to the Python standard library. Where
555object oriented programming focuses on grouping multiple operations on a
556common set of data into a class, a generic function focuses on grouping
557multiple implementations of an operation that allows it to work with
558*different* kinds of data.
559
560.. seealso::
561
562 :pep:`443` - Single-dispatch generic functions
563 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200564
Nick Coghlane8c45d62013-07-28 20:00:01 +1000565
Christian Heimese92ef132013-10-13 00:52:43 +0200566hashlib
567-------
568
569New :func:`hashlib.pbkdf2_hmac` function.
570
571(Contributed by Christian Heimes in :issue:`18582`)
572
573
Ezio Melotti250a06c2013-11-25 06:18:47 +0200574html
575----
576
577Added a new :func:`html.unescape` function that converts HTML5 character
578references to the corresponding Unicode characters.
579
580(Contributed by Ezio Melotti in :issue:`2927`)
581
582Added a new *convert_charrefs* keyword argument to
583:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
584all character references. For backward-compatibility, its value defaults
585to ``False``, but it will change to ``True`` in future versions, so you
586are invited to set it explicitly and update your code to use this new feature.
587
588(Contributed by Ezio Melotti in :issue:`13633`)
589
590The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
591
592(Contributed by Ezio Melotti in :issue:`15114`)
593
594
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200595inspect
596-------
597
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000598
Nick Coghlan367df122013-10-27 01:57:34 +1000599The inspect module now offers a basic :ref:`command line interface
600<inspect-module-cli>` to quickly display source code and other
601information for modules, classes and functions. (Contributed by Claudiu Popa
602and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000603
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200604:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
605created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000606``__wrapped__`` attribute on a wrapper function). (Contributed by
607Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
608
609As part of the implementation of the new :mod:`enum` module, the
610:mod:`inspect` module now has substantially better support for custom
611``__dir__`` methods and dynamic class attributes provided through
612metaclasses (Contributed by Ethan Furman in :issue:`18929` and
613:issue:`19030`)
614
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200615
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200616mmap
617----
618
619mmap objects can now be weakref'ed.
620
621(Contributed by Valerie Lambert in :issue:`4885`.)
622
623
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100624multiprocessing
625---------------
626
Nick Coghlan9a767352013-12-17 22:17:26 +1000627On Unix, two new *start methods* (``spawn`` and ``forkserver``) have been
628added for starting processes using :mod:`multiprocessing`. These make
629the mixing of processes with threads more robust, and the ``spawn``
630method matches the semantics that multiprocessing has always used on
631Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100632
633Also, except when using the old *fork* start method, child processes
634will no longer inherit unneeded handles/file descriptors from their parents.
635
Nick Coghlan9a767352013-12-17 22:17:26 +1000636:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
637``-m`` switch) to initialise ``__main__`` appropriately in child processes
638when using the ``spawn`` or ``forkserver`` start methods. This resolves some
639edge cases where combining multiprocessing, the ``-m`` command line switch
640and explicit relative imports could cause obscure failures in child
641processes. (Contributed by Nick Coghlan in :issue:`19946`)
642
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100643
Victor Stinnerdaf45552013-08-28 00:53:59 +0200644os
645--
646
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200647New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200648descriptors or a Windows handle:
649
650* :func:`os.get_inheritable`, :func:`os.set_inheritable`
651* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
652
653
R David Murray78d692f2013-10-10 17:23:26 -0400654pdb
655---
656
657The ``print`` command has been removed from :mod:`pdb`, restoring access to the
658``print`` function.
659
660Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
661entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
662mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
663prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
664command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
665``print`` function, making it inaccessible at the ``pdb`` prompt.
666
667(Contributed by Connor Osborn in :issue:`18764`.)
668
669
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200670poplib
671------
672
673New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
674an encrypted POP3 session.
675
676New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
677POP3 server.
678
679(Contributed by Lorenzo Catucci in :issue:`4473`.)
680
681
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300682pprint
683------
684
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200685The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300686sequences (:issue:`19132`).
687
688
Nick Coghlan367df122013-10-27 01:57:34 +1000689pydoc
690-----
691
692While significant changes have not been made to :mod:`pydoc` directly,
693its handling of custom ``__dir__`` methods and various descriptor
694behaviours has been improved substantially by the underlying changes in
695the :mod:`inspect` module.
696
697
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200698re
699--
700
701Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
702which anchor the pattern at both ends of the string to match.
703(Contributed by Matthew Barnett in :issue:`16203`.)
704
Ezio Melottidd7e2912013-11-25 23:20:20 +0200705The repr of :ref:`regex objects <re-objects>` now includes the pattern
706and the flags; the repr of :ref:`match objects <match-objects>` now
707includes the start, end, and the part of the string that matched.
708
709(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
710
711
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200712resource
713--------
714
715New :func:`resource.prlimit` function and Linux specific constants.
716(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
717
R David Murray8e37d5d2013-04-13 14:49:48 -0400718smtplib
719-------
720
R David Murray8a345962013-04-14 06:46:35 -0400721:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400722both socket level errors and SMTP protocol level errors to be caught in one
723try/except statement by code that only cares whether or not an error occurred.
724(:issue:`2118`).
725
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200726
Victor Stinnerdaf45552013-08-28 00:53:59 +0200727socket
728------
729
Georg Brandl5642ff92013-09-15 10:37:57 +0200730Socket objects have new methods to get or set their :ref:`inheritable flag
731<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200732
733* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
734
Eli Bendersky34567ec2013-08-31 15:18:48 -0700735The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
736using the new :mod:`enum` module. This allows descriptive reporting during
737debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200738
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200739ssl
740---
741
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200742TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200743
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200744(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200745
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200746* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
747 :meth:`~ssl.SSLContext.cert_store_stats` and
748 :meth:`~ssl.SSLContext.get_ca_certs`
749
750* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
751 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200752
753(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Serhiy Storchaka6de88b32013-12-02 20:31:00 +0200754:issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200755
756Support for server-side SNI using the new
757:meth:`ssl.SSLContext.set_servername_callback` method.
758
759(Contributed by Daniel Black in :issue:`8109`.)
760
761
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200762stat
763----
764
765The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
766implementation is required as most of the values aren't standardized and
767platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
768
769The module supports new file types: door, event port and whiteout.
770
771
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200772struct
773------
774
775Streaming struct unpacking using :func:`struct.iter_unpack`.
776
777(Contributed by Antoine Pitrou in :issue:`17804`.)
778
779
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300780sunau
781-----
782
783The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
784plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
785
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300786:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
787
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300788
Andrew Kuchling173a1572013-09-15 18:15:56 -0400789traceback
790---------
791
792A new :func:`traceback.clear_frames` function takes a traceback object
793and clears the local variables in all of the frames it references,
794reducing the amount of memory consumed (:issue:`1565525`).
795
796
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200797urllib
798------
799
800Add support.for ``data:`` URLs in :mod:`urllib.request`.
801
802(Contributed by Mathias Panzenböck in :issue:`16423`.)
803
804
805unittest
806--------
807
808Support for easy dynamically-generated subtests using the
809:meth:`~unittest.TestCase.subTest` context manager.
810
811(Contributed by Antoine Pitrou in :issue:`16997`.)
812
R David Murray8e37d5d2013-04-13 14:49:48 -0400813
R David Murray671cd322013-04-10 12:31:43 -0400814wave
815----
816
817The :meth:`~wave.getparams` method now returns a namedtuple rather than a
818plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
819
R David Murrayc91d5ee2013-07-31 13:46:08 -0400820:meth:`wave.open` now supports the context manager protocol. (Contributed
821by Claudiu Popa in :issue:`17616`.)
822
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200823
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200824weakref
825-------
826
827New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000828methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200829
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000830New :class:`~weakref.finalize` class makes it possible to register a callback
831to be invoked when an object is garbage collected, without needing to
832carefully manage the lifecycle of the weak reference itself. (Contributed by
833Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200834
835
836xml.etree
837---------
838
839Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700840:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200841
Eli Benderskyb5869342013-08-30 05:51:20 -0700842(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200843
Christian Tismer59202e52013-10-21 03:59:23 +0200844
845zipfile.PyZipfile
846-----------------
847
848Add a filter function to ignore some packages (tests for instance),
849:meth:`~zipfile.PyZipFile.writepy`.
850
851(Contributed by Christian Tismer in :issue:`19274`.)
852
853
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200854Other improvements
855==================
856
857Tab-completion is now enabled by default in the interactive interpreter.
858
859(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
860
Eli Bendersky96d848a2013-09-06 06:55:58 -0700861Python invocation changes
862=========================
863
864Invoking the Python interpreter with ``--version`` now outputs the version to
865standard output instead of standard error (:issue:`18338`). Similar changes
866were made to :mod:`argparse` (:issue:`18920`) and other modules that have
867script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200868
Georg Brandlb80f5112012-09-30 09:11:58 +0200869Optimizations
870=============
871
872Major performance enhancements have been added:
873
Victor Stinnere64322e2012-10-30 23:12:47 +0100874* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200875
Raymond Hettingerc301b552013-08-19 09:12:20 -0700876* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700877 probe now checks a series of consecutive, adjacent key/hash pairs before
878 continuing to make random probes through the hash table. This exploits
879 cache locality to make collision resolution less expensive.
880
881 The collision resolution scheme can be described as a hybrid of linear
882 probing and open addressing. The number of additional linear probes
883 defaults to nine. This can be changed at compile-time by defining
884 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
885 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700886
Christian Heimes086b1af2013-10-22 11:49:34 +0200887 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700888
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200889* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400890 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200891 :mod:`collections` and :mod:`locale` modules and their dependencies are no
892 longer imported by default. The marshal module has been improved to load
893 compiled Python code faster.
894
895 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
896 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
897 :issue:`9548`)
898
899
Nick Coghlan367df122013-10-27 01:57:34 +1000900CPython Implementation Changes
901==============================
902
903
904.. _pep-445:
905
906PEP 445: Customization of CPython memory allocators
907---------------------------------------------------
908
909:pep:`445` adds new C level interfaces to customize memory allocation in
910the CPython interpreter.
911
912.. seealso::
913
914 :pep:`445` - Add new APIs to customize Python memory allocators
915 PEP written and implemented by Victor Stinner.
916
917
918.. _pep-442:
919
920PEP 442: Safe object finalization
921---------------------------------
922
923:pep:`442` removes the current limitations and quirks of object finalization
924in CPython. With it, objects with :meth:`__del__` methods, as well as
925generators with :keyword:`finally` clauses, can be finalized when they are
926part of a reference cycle.
927
928As part of this change, module globals are no longer forcibly set to
929:const:`None` during interpreter shutdown in most cases, instead relying
930on the normal operation of the cyclic garbage collector.
931
932.. seealso::
933
934 :pep:`442` - Safe object finalization
935 PEP written and implemented by Antoine Pitrou.
936
937
938Other build and C API changes
939-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200940
941Changes to Python's build process and to the C API include:
942
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000943* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
944 allows applications embedding the CPython interpreter to reliably force
945 a particular encoding and error handler for the standard streams
946 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200947
Nick Coghlan0acceb72013-10-20 13:22:21 +1000948* Most Python C APIs that don't mutate string arguments are now correctly
949 marked as accepting ``const char *`` rather than ``char *`` (Contributed
950 by Serhiy Storchaka in :issue:`1772673`).
951
952* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
953 and can be used to simplify the process of defining and maintaining
954 accurate signatures for builtins and standard library extension modules
955 implemented in C.
956
Nick Coghlan367df122013-10-27 01:57:34 +1000957 .. note::
958 The Argument Clinic PEP is not fully up to date with the state of the
959 implementation. This has been deemed acceptable by the release manager
960 and core development team in this case, as Argument Clinic will not
961 be made available as a public API for third party use in Python 3.4.
962
Georg Brandlb80f5112012-09-30 09:11:58 +0200963
964Deprecated
965==========
966
967Unsupported Operating Systems
968-----------------------------
969
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200970* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200971* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200972
973
974Deprecated Python modules, functions and methods
975------------------------------------------------
976
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400977* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400978 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
979 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200980
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400981* :func:`importlib.util.module_for_loader` is pending deprecation. Using
982 :func:`importlib.util.module_to_load` and
983 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
984 to more easily customize module loading.
985
Brett Cannone4f41de2013-06-16 13:13:40 -0400986* The :mod:`imp` module is pending deprecation. To keep compatibility with
987 Python 2/3 code bases, the module's removal is currently not scheduled.
988
Brett Cannon1448ecf2013-10-04 11:38:59 -0400989* The :mod:`formatter` module is pending deprecation and is slated for removal
990 in Python 3.6.
991
Christian Heimes634919a2013-11-20 17:23:06 +0100992* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
993 require an explicit digest name or constructor as *digestmod* argument.
994
Georg Brandlb80f5112012-09-30 09:11:58 +0200995
996Deprecated functions and types of the C API
997-------------------------------------------
998
Victor Stinner3dd263f2013-10-23 18:54:43 +0200999* The ``PyThreadState.tick_counter`` field has been removed: its value was
1000 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001001
1002
1003Deprecated features
1004-------------------
1005
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001006* The site module adding a "site-python" directory to sys.path, if it
1007 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001008
1009
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001010Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001011=====================
1012
Victor Stinner774b2e02013-12-13 14:33:01 +01001013Changes in the Python API
1014-------------------------
1015
Georg Brandlb80f5112012-09-30 09:11:58 +02001016This section lists previously described changes and other bugfixes
1017that may require changes to your code.
1018
Brett Cannon777622b2013-04-09 17:03:10 -04001019* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1020 exception or return a default value instead of raising
1021 :exc:`NotImplementedError` blindly. This will only affect code calling
1022 :func:`super` and falling through all the way to the ABCs. For compatibility,
1023 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001024
1025* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1026 attributes to ``None`` by default. To determine if these attributes were set
1027 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001028 ``getattr(module, '__loader__', None) is not None``.
1029
1030* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1031 ``__package__`` unconditionally to properly support reloading. If this is not
1032 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001033 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001034
1035* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1036 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1037
Brett Cannon1448ecf2013-10-04 11:38:59 -04001038* Frozen packages no longer set ``__path__`` to a list containing the package
1039 name but an empty list instead. Determing if a module is a package should be
1040 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001041
Brett Cannon33915eb2013-06-14 18:33:00 -04001042* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1043 it would write to is a symlink or a non-regular file. This is to act as a
1044 warning that import will overwrite those files with a regular file regardless
1045 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001046
1047* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1048 :exc:`ImportError` when the source code being loaded triggers a
1049 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1050 meant to be raised only when source code cannot be found but it should, it was
1051 felt to be over-reaching/overloading of that meaning when the source code is
1052 found but improperly structured. If you were catching ImportError before and
1053 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001054 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001055
1056* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001057 set the ``__wrapped__`` attribute to the function being wrapper, even if
1058 that function also had its ``__wrapped__`` attribute set. This means
1059 ``__wrapped__`` attributes now correctly link a stack of decorated
1060 functions rather than every ``__wrapped__`` attribute in the chain
1061 referring to the innermost function. Introspection libraries that
1062 assumed the previous behaviour was intentional can use
1063 :func:`inspect.unwrap` to access the first function in the chain that has
1064 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001065
Georg Brandl0f5bff22013-10-19 17:46:38 +02001066* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001067 directory to objects in :data:`sys.path_hooks` for the empty string. This
1068 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1069 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1070 will not find all keys. A module's ``__file__`` when imported in the current
1071 working directory will also now have an absolute path, including when using
1072 ``-m`` with the interpreter (this does not influence when the path to a file
1073 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001074
Victor Stinner774b2e02013-12-13 14:33:01 +01001075Changes in the C API
1076--------------------
1077
1078* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1079 argument is not set. Previously only ``NULL`` was returned with no exception
1080 set.
1081
1082* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1083 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1084 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1085 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1086
1087* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001088 3.3, the function did nothing if the key already exists (if the current
1089 value is a non-NULL pointer).
1090
Victor Stinner774b2e02013-12-13 14:33:01 +01001091* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1092 structure has been removed to fix a bug: see :issue:`14432` for the
1093 rationale.
1094