blob: b60cd1b2a01285a88206ad2251f388c1a0d82e5c [file] [log] [blame]
Zachary Ware569db2c2015-05-22 11:42:20 -05001****************************
Victor Stinner01adf062014-03-18 00:53:32 +01002 What's New In Python 3.5
3****************************
4
5:Release: |release|
6:Date: |today|
7
8.. Rules for maintenance:
9
10 * Anyone can add text to this document. Do not spend very much time
11 on the wording of your changes, because your text will probably
12 get rewritten to some degree.
13
14 * The maintainer will go through Misc/NEWS periodically and add
15 changes; it's therefore more important to add your changes to
16 Misc/NEWS than to this file.
17
18 * This is not a complete list of every single change; completeness
19 is the purpose of Misc/NEWS. Some changes I consider too small
20 or esoteric to include. If such a change is added to the text,
21 I'll just remove it. (This is another reason you shouldn't spend
22 too much time on writing your addition.)
23
24 * If you want to draw your new text to the attention of the
25 maintainer, add 'XXX' to the beginning of the paragraph or
26 section.
27
28 * It's OK to just add a fragmentary note about a change. For
29 example: "XXX Describe the transmogrify() function added to the
30 socket module." The maintainer will research the change and
31 write the necessary text.
32
33 * You can comment out your additions if you like, but it's not
34 necessary (especially when a final release is some months away).
35
36 * Credit the author of a patch or bugfix. Just the name is
37 sufficient; the e-mail address isn't necessary.
38
39 * It's helpful to add the bug/patch number as a comment:
40
41 XXX Describe the transmogrify() function added to the socket
42 module.
43 (Contributed by P.Y. Developer in :issue:`12345`.)
44
45 This saves the maintainer the effort of going through the Mercurial log
46 when researching a change.
47
48This article explains the new features in Python 3.5, compared to 3.4.
49
50For full details, see the :source:`Misc/NEWS` file.
51
Benjamin Peterson52d14932015-03-27 16:07:35 -040052.. note::
53
54 Prerelease users should be aware that this document is currently in draft
55 form. It will be updated substantially as Python 3.5 moves towards release,
56 so it's worth checking back even after reading earlier versions.
Victor Stinner01adf062014-03-18 00:53:32 +010057
58
59.. seealso::
60
Berker Peksagfa0423b2014-10-09 11:38:19 +030061 :pep:`478` - Python 3.5 Release Schedule
Victor Stinner01adf062014-03-18 00:53:32 +010062
63
64Summary -- Release highlights
65=============================
66
Victor Stinner93692bb2015-03-30 15:04:45 +020067.. This section singles out the most important changes in Python 3.5.
Victor Stinner01adf062014-03-18 00:53:32 +010068 Brevity is key.
69
70New syntax features:
71
Benjamin Peterson14ef1a12015-05-13 11:19:27 -040072* :pep:`465`, a new matrix multiplication operator: ``a @ b``.
73* :pep:`492`, coroutines with async and await syntax.
Victor Stinner01adf062014-03-18 00:53:32 +010074
75New library modules:
76
Brett Cannoncc4dfc12015-03-13 10:40:49 -040077* :mod:`zipapp`: :ref:`Improving Python ZIP Application Support
78 <whatsnew-zipapp>` (:pep:`441`).
Victor Stinner01adf062014-03-18 00:53:32 +010079
80New built-in features:
81
Victor Stinner93692bb2015-03-30 15:04:45 +020082* ``bytes % args``, ``bytearray % args``: :pep:`461` - Adding ``%`` formatting
83 to bytes and bytearray
Gregory P. Smith8cb65692015-04-25 23:22:26 +000084* ``b'\xf0\x9f\x90\x8d'.hex()``, ``bytearray(b'\xf0\x9f\x90\x8d').hex()``,
85 ``memoryview(b'\xf0\x9f\x90\x8d').hex()``: :issue:`9951` - A ``hex`` method
86 has been added to bytes, bytearray, and memoryview.
Victor Stinner01adf062014-03-18 00:53:32 +010087
88Implementation improvements:
89
Victor Stinner71430292014-03-18 01:18:21 +010090* When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale),
91 :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the
92 ``surrogateescape`` error handler, instead of the ``strict`` error handler
93 (:issue:`19977`).
Victor Stinner01adf062014-03-18 00:53:32 +010094
Brett Cannonf299abd2015-04-13 14:21:02 -040095* :pep:`488`, the elimination of ``.pyo`` files.
Nick Coghland5cacbb2015-05-23 22:24:10 +100096* :pep:`489`, multi-phase initialization of extension modules.
Brett Cannonf299abd2015-04-13 14:21:02 -040097
Victor Stinner01adf062014-03-18 00:53:32 +010098Significantly Improved Library Modules:
99
Yury Selivanov58444362015-05-30 10:49:09 -0400100* :class:`collections.OrderedDict` is now implemented in C, which improves
101 its performance between 4x to 100x times. Contributed by Eric Snow in
102 :issue:`16991`.
103
Gregory P. Smithad577b92015-05-22 16:18:14 -0700104* You may now pass bytes to the :mod:`tempfile` module's APIs and it will
105 return the temporary pathname as bytes instead of str. It also accepts
106 a value of ``None`` on parameters where only str was accepted in the past to
107 do the right thing based on the types of the other inputs. Two functions,
108 :func:`gettempdirb` and :func:`gettempprefixb`, have been added to go along
109 with this. This behavior matches that of the :mod:`os` APIs.
Victor Stinner01adf062014-03-18 00:53:32 +0100110
111Security improvements:
112
113* None yet.
114
115Please read on for a comprehensive list of user-facing changes.
116
117
118.. PEP-sized items next.
119
120.. _pep-4XX:
121
122.. PEP 4XX: Virtual Environments
123.. =============================
124
125
126.. (Implemented by Foo Bar.)
127
128.. .. seealso::
129
130 :pep:`4XX` - Python Virtual Environments
131 PEP written by Carl Meyer
132
133
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400134PEP 492 - Coroutines with async and await syntax
135------------------------------------------------
136
137The PEP added dedicated syntax for declaring :term:`coroutines <coroutine>`,
138:keyword:`await` expressions, new asynchronous :keyword:`async for`
139and :keyword:`async with` statements.
140
141Example::
142
143 async def read_data(db):
144 async with db.transaction():
145 data = await db.fetch('SELECT ...')
146
147PEP written and implemented by Yury Selivanov.
148
149.. seealso::
150
151 :pep:`492` -- Coroutines with async and await syntax
152
153
Benjamin Peterson3d4a4572015-05-31 00:22:42 -0500154PEP 461 - Formatting support for bytes and bytearray
155----------------------------------------------------
Victor Stinner93692bb2015-03-30 15:04:45 +0200156
157This PEP proposes adding % formatting operations similar to Python 2's ``str``
158type to :class:`bytes` and :class:`bytearray`.
159
160Examples::
161
162 >>> b'Hello %s!' % b'World'
163 b'Hello World!'
164 >>> b'x=%i y=%f' % (1, 2.5)
165 b'x=1 y=2.500000'
166
167Unicode is not allowed for ``%s``, but it is accepted by ``%a`` (equivalent of
168``repr(obj).encode('ascii', 'backslashreplace')``)::
169
170 >>> b'Hello %s!' % 'World'
171 Traceback (most recent call last):
172 File "<stdin>", line 1, in <module>
173 TypeError: %b requires bytes, or an object that implements __bytes__, not 'str'
174 >>> b'price: %a' % '10€'
175 b"price: '10\\u20ac'"
176
177.. seealso::
178
179 :pep:`461` -- Adding % formatting to bytes and bytearray
180
181
182PEP 465 - A dedicated infix operator for matrix multiplication
183--------------------------------------------------------------
184
185This PEP proposes a new binary operator to be used for matrix multiplication,
R David Murrayef2a3972015-04-01 09:15:02 -0400186called ``@``. (Mnemonic: ``@`` is ``*`` for mATrices.)
Victor Stinner93692bb2015-03-30 15:04:45 +0200187
188.. seealso::
189
190 :pep:`465` -- A dedicated infix operator for matrix multiplication
191
Victor Stinner6036e442015-03-08 01:58:04 +0100192
193PEP 471 - os.scandir() function -- a better and faster directory iterator
194-------------------------------------------------------------------------
195
Victor Stinner37f20342015-03-10 13:29:41 +0100196:pep:`471` adds a new directory iteration function, :func:`os.scandir`,
197to the standard library. Additionally, :func:`os.walk` is now
198implemented using :func:`os.scandir`, which speeds it up by 3-5 times
199on POSIX systems and by 7-20 times on Windows systems.
200
201PEP and implementation written by Ben Hoyt with the help of Victor Stinner.
Victor Stinner6036e442015-03-08 01:58:04 +0100202
203.. seealso::
204
205 :pep:`471` -- os.scandir() function -- a better and faster directory
Victor Stinner37f20342015-03-10 13:29:41 +0100206 iterator
Victor Stinner6036e442015-03-08 01:58:04 +0100207
208
Charles-François Natali6e6c59b2015-02-07 13:27:50 +0000209PEP 475: Retry system calls failing with EINTR
210----------------------------------------------
211
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200212:pep:`475` adds support for automatic retry of system calls failing with
213:py:data:`~errno.EINTR`: this means that user code doesn't have to deal with
214EINTR or :exc:`InterruptedError` manually, and should make it more robust
215against asynchronous signal reception.
Charles-François Natali6e6c59b2015-02-07 13:27:50 +0000216
217.. seealso::
218
219 :pep:`475` -- Retry system calls failing with EINTR
Victor Stinner01adf062014-03-18 00:53:32 +0100220
221
Yury Selivanov8d006e72015-05-22 11:30:45 -0400222PEP 479: Change StopIteration handling inside generators
223--------------------------------------------------------
224
225:pep:`479` changes the behavior of generators: when a :exc:`StopIteration`
226exception is raised inside a generator, it is replaced with a
227:exc:`RuntimeError`. To enable the feature a ``__future__`` import should
228be used::
229
230 from __future__ import generator_stop
231
232Without a ``__future__`` import, a :exc:`PendingDeprecationWarning` will be
233raised.
234
235PEP written by Chris Angelico and Guido van Rossum. Implemented by
236Chris Angelico, Yury Selivanov and Nick Coghlan.
237
238.. seealso::
239
240 :pep:`479` -- Change StopIteration handling inside generators
241
242
Steve Dower76998fe2015-02-26 14:25:33 -0800243PEP 486: Make the Python Launcher aware of virtual environments
244---------------------------------------------------------------
245
246:pep:`486` makes the Windows launcher (see :pep:`397`) aware of an active
247virtual environment. When the default interpreter would be used and the
248``VIRTUAL_ENV`` environment variable is set, the interpreter in the virtual
249environment will be used.
250
251.. seealso::
252
253 :pep:`486` -- Make the Python Launcher aware of virtual environments
254
Brett Cannonf299abd2015-04-13 14:21:02 -0400255
256PEP 488: Elimination of PYO files
257---------------------------------
258
259:pep:`488` does away with the concept of ``.pyo`` files. This means that
Benjamin Petersone3283232015-05-26 21:40:28 -0500260``.pyc`` files represent both unoptimized and optimized bytecode. To prevent the
261need to constantly regenerate bytecode files, ``.pyc`` files now have an
262optional ``opt-`` tag in their name when the bytecode is optimized. This has the
263side-effect of no more bytecode file name clashes when running under either
264``-O`` or ``-OO``. Consequently, bytecode files generated from ``-O``, and
265``-OO`` may now exist simultaneously. :func:`importlib.util.cache_from_source`
266has an updated API to help with this change.
Brett Cannonf299abd2015-04-13 14:21:02 -0400267
268.. seealso::
269
270 :pep:`488` -- Elimination of PYO files
271
272
Nick Coghland5cacbb2015-05-23 22:24:10 +1000273PEP 489: Multi-phase extension module initialization
274----------------------------------------------------
275
276:pep:`489` updates extension module initialization to take advantage of the
277two step module loading mechanism introduced by :pep:`451` in Python 3.4.
278
279This change brings the import semantics of extension modules that opt-in to
280using the new mechanism much closer to those of Python source and bytecode
281modules, including the ability to any valid identifier as a module name,
282rather than being restricted to ASCII.
283
284.. seealso::
285
286 :pep:`488` -- Multi-phase extension module initialization
287
Tal Einatd5519ed2015-05-31 22:05:00 +0300288PEP 485: A function for testing approximate equality
289----------------------------------------------------
290
291:pep:`485` adds the :func:`math.isclose` and :func:`cmath.isclose`
292functions which tell whether two values are approximately equal or
293"close" to each other. Whether or not two values are considered
294close is determined according to given absolute and relative tolerances.
295
296.. seealso::
297
298 :pep:`485` -- A function for testing approximate equality
299
Victor Stinner01adf062014-03-18 00:53:32 +0100300Other Language Changes
301======================
302
303Some smaller changes made to the core Python language are:
304
Serhiy Storchaka07985ef2015-01-25 22:56:57 +0200305* Added the ``'namereplace'`` error handlers. The ``'backslashreplace'``
306 error handlers now works with decoding and translating.
307 (Contributed by Serhiy Storchaka in :issue:`19676` and :issue:`22286`.)
Victor Stinner01adf062014-03-18 00:53:32 +0100308
Serhiy Storchaka1dd49822015-03-20 16:54:57 +0200309* The :option:`-b` option now affects comparisons of :class:`bytes` with
310 :class:`int`. (Contributed by Serhiy Storchaka in :issue:`23681`)
Victor Stinner01adf062014-03-18 00:53:32 +0100311
Serhiy Storchakaad8a1c32015-05-12 23:16:55 +0300312* New Kazakh :ref:`codec <standard-encodings>` ``kz1048``. (Contributed by
313 Serhiy Storchaka in :issue:`22682`.)
314
Raymond Hettingereac503a2015-05-13 01:09:59 -0700315* Property docstrings are now writable. This is especially useful for
316 :func:`collections.namedtuple` docstrings.
317 (Contributed by Berker Peksag in :issue:`24064`.)
318
Serhiy Storchakaf0eeedf2015-05-12 23:24:19 +0300319* New Tajik :ref:`codec <standard-encodings>` ``koi8_t``. (Contributed by
320 Serhiy Storchaka in :issue:`22681`.)
321
Victor Stinner01adf062014-03-18 00:53:32 +0100322
323New Modules
324===========
325
Brett Cannoncc4dfc12015-03-13 10:40:49 -0400326.. _whatsnew-zipapp:
Victor Stinner01adf062014-03-18 00:53:32 +0100327
Brett Cannoncc4dfc12015-03-13 10:40:49 -0400328zipapp
329------
330
331The new :mod:`zipapp` module (specified in :pep:`441`) provides an API and
332command line tool for creating executable Python Zip Applications, which
333were introduced in Python 2.6 in :issue:`1739468` but which were not well
334publicised, either at the time or since.
335
336With the new module, bundling your application is as simple as putting all
337the files, including a ``__main__.py`` file, into a directory ``myapp``
338and running::
339
340 $ python -m zipapp myapp
341 $ python myapp.pyz
Victor Stinner01adf062014-03-18 00:53:32 +0100342
343
344Improved Modules
345================
346
Berker Peksag8089cd62015-02-14 01:39:17 +0200347argparse
348--------
349
350* :class:`~argparse.ArgumentParser` now allows to disable
351 :ref:`abbreviated usage <prefix-matching>` of long options by setting
352 :ref:`allow_abbrev` to ``False``.
353 (Contributed by Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.)
354
Berker Peksagbf5e9602015-02-06 10:21:37 +0200355cgi
356---
357
Berker Peksagbd09d7b2015-02-11 15:32:34 +0200358* :class:`~cgi.FieldStorage` now supports the context management protocol.
Berker Peksagbf5e9602015-02-06 10:21:37 +0200359 (Contributed by Berker Peksag in :issue:`20289`.)
360
Tal Einatd5519ed2015-05-31 22:05:00 +0300361cmath
362-----
363
364* :func:`cmath.isclose` function added.
365 (Contributed by Chris Barker and Tal Einat in :issue:`24270`.)
366
367
R David Murrayc31e6222014-09-29 11:25:00 -0400368code
369----
370
371* The :func:`code.InteractiveInterpreter.showtraceback` method now prints
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200372 the full chained traceback, just like the interactive interpreter.
Berker Peksag088ca8b2015-02-06 10:17:49 +0200373 (Contributed by Claudiu Popa in :issue:`17442`.)
R David Murrayc31e6222014-09-29 11:25:00 -0400374
Raymond Hettingereac503a2015-05-13 01:09:59 -0700375collections
376-----------
377
378* You can now update docstrings produced by :func:`collections.namedtuple`::
379
380 Point = namedtuple('Point', ['x', 'y'])
381 Point.__doc__ = 'ordered pair'
382 Point.x.__doc__ = 'abscissa'
383 Point.y.__doc__ = 'ordinate'
384
385 (Contributed by Berker Peksag in :issue:`24064`.)
386
Brett Cannonf1a8df02014-09-12 10:39:48 -0400387compileall
388----------
389
390* :func:`compileall.compile_dir` and :mod:`compileall`'s command-line interface
391 can now do parallel bytecode compilation.
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200392 (Contributed by Claudiu Popa in :issue:`16104`.)
Brett Cannonf1a8df02014-09-12 10:39:48 -0400393
Berker Peksagbb44fe02014-11-28 23:28:06 +0200394contextlib
395----------
396
397* The new :func:`contextlib.redirect_stderr` context manager(similar to
398 :func:`contextlib.redirect_stdout`) makes it easier for utility scripts to
399 handle inflexible APIs that write their output to :data:`sys.stderr` and
400 don't provide any options to redirect it.
401 (Contributed by Berker Peksag in :issue:`22389`.)
402
Steve Dowerd2bc3892015-04-15 18:06:05 -0400403curses
404------
405* The new :func:`curses.update_lines_cols` function updates the variables
406 :envvar:`curses.LINES` and :envvar:`curses.COLS`.
407
Berker Peksag102029d2015-03-15 01:18:47 +0200408difflib
409-------
410
411* The charset of the HTML document generated by :meth:`difflib.HtmlDiff.make_file`
412 can now be customized by using *charset* keyword-only parameter. The default
413 charset of HTML document changed from ``'ISO-8859-1'`` to ``'utf-8'``.
414 (Contributed by Berker Peksag in :issue:`2052`.)
415
Greg Ward4d9d2562015-04-20 20:21:21 -0400416* It's now possible to compare lists of byte strings with
417 :func:`difflib.diff_bytes` (fixes a regression from Python 2).
418
Berker Peksag618e3152015-01-27 02:59:09 +0200419distutils
420---------
421
422* The ``build`` and ``build_ext`` commands now accept a ``-j``
423 option to enable parallel building of extension modules.
424 (Contributed by Antoine Pitrou in :issue:`5309`.)
425
Serhiy Storchakab9cec6a2015-05-16 22:13:27 +0300426* Added support for the LZMA compression.
427 (Contributed by Serhiy Storchaka in :issue:`16314`.)
428
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200429doctest
430-------
Giampaolo Rodola'e09fb712014-04-04 15:34:17 +0200431
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200432* :func:`doctest.DocTestSuite` returns an empty :class:`unittest.TestSuite` if
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200433 *module* contains no docstrings instead of raising :exc:`ValueError`.
434 (Contributed by Glenn Jones in :issue:`15916`.)
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200435
R David Murrayb744f3a2015-05-16 15:41:07 -0400436email
437-----
438
R David Murrayfdb23c22015-05-17 14:24:33 -0400439* A new policy option :attr:`~email.policy.Policy.mangle_from_` controls
440 whether or not lines that start with "From " in email bodies are prefixed with
441 a '>' character by generators. The default is ``True`` for
442 :attr:`~email.policy.compat32` and ``False`` for all other policies.
443 (Contributed by Milan Oberkirch in :issue:`20098`.)
444
R David Murrayb744f3a2015-05-16 15:41:07 -0400445* A new method :meth:`~email.message.Message.get_content_disposition` provides
446 easy access to a canonical value for the :mailheader:`Content-Disposition`
447 header (``None`` if there is no such header). (Contributed by Abhilash Raj
448 in :issue:`21083`.)
449
R David Murray224ef3e2015-05-17 11:29:21 -0400450* A new policy option :attr:`~email.policy.EmailPolicy.utf8` can be set
451 ``True`` to encode email headers using the utf8 charset instead of using
452 encoded words. This allows ``Messages`` to be formatted according to
453 :rfc:`6532` and used with an SMTP server that supports the :rfc:`6531`
454 ``SMTPUTF8`` extension. (Contributed by R. David Murray in :issue:`24211`.)
455
Serhiy Storchakac2edcdd2014-09-11 12:17:37 +0300456glob
457----
458
459* :func:`~glob.iglob` and :func:`~glob.glob` now support recursive search in
460 subdirectories using the "``**``" pattern.
461 (Contributed by Serhiy Storchaka in :issue:`13968`.)
462
Guido van Rossum7ca13532015-05-23 15:27:51 -0700463idlelib and IDLE
Terry Jan Reedy44825cf2015-05-23 18:19:42 -0400464----------------
465
466Since idlelib implements the IDLE shell and editor and is not intended for
467import by other programs, it gets improvements with every release. See
468:file:`Lib/idlelib/NEWS.txt` for a cumulative list of changes since 3.4.0,
469as well as changes made in future 3.5.x releases. This file is also available
470from the IDLE Help -> About Idle dialog.
471
Serhiy Storchaka38684c32014-09-09 19:07:49 +0300472imaplib
473-------
474
475* :class:`IMAP4` now supports the context management protocol. When used in a
476 :keyword:`with` statement, the IMAP4 ``LOGOUT`` command will be called
477 automatically at the end of the block. (Contributed by Tarek Ziadé and
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200478 Serhiy Storchaka in :issue:`4972`.)
Serhiy Storchaka38684c32014-09-09 19:07:49 +0300479
R David Murraya6429db2015-05-10 19:17:23 -0400480* :mod:`imaplib` now supports :rfc:`5161`: the :meth:`~imaplib.IMAP4.enable`
481 extension), and :rfc:`6855`: utf-8 support (internationalized email, via the
482 ``UTF8=ACCEPT`` argument to :meth:`~imaplib.IMAP4.enable`). A new attribute,
483 :attr:`~imaplib.IMAP4.utf8_enabled`, tracks whether or not :rfc:`6855`
484 support is enabled. Milan Oberkirch, R. David Murray, and Maciej Szulik in
485 :issue:`21800`.)
486
487* :mod:`imaplib` now automatically encodes non-ASCII string usernames and
488 passwords using ``UTF8``, as recommended by the RFCs. (Contributed by Milan
489 Oberkirch in :issue:`21800`.)
490
R David Murray2f608202014-06-26 12:27:57 -0400491imghdr
492------
493
494* :func:`~imghdr.what` now recognizes the `OpenEXR <http://www.openexr.com>`_
Berker Peksag088ca8b2015-02-06 10:17:49 +0200495 format. (Contributed by Martin Vignali and Claudiu Popa in :issue:`20295`.)
R David Murray2f608202014-06-26 12:27:57 -0400496
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200497importlib
498---------
499
500* :class:`importlib.util.LazyLoader` allows for the lazy loading of modules in
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200501 applications where startup time is paramount.
502 (Contributed by Brett Cannon in :issue:`17621`.)
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200503
504* :func:`importlib.abc.InspectLoader.source_to_code` is now a
505 static method to make it easier to work with source code in a string.
506 With a module object that you want to initialize you can then use
507 ``exec(code, module.__dict__)`` to execute the code in the module.
508
Brett Cannon2a17bde2014-05-30 14:55:29 -0400509* :func:`importlib.util.module_from_spec` is now the preferred way to create a
510 new module. Compared to :class:`types.ModuleType`, this new function will set
511 the various import-controlled attributes based on the passed-in spec object.
512
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200513inspect
514-------
Victor Stinner01adf062014-03-18 00:53:32 +0100515
Yury Selivanova5d63dd2014-03-27 11:31:43 -0400516* :class:`inspect.Signature` and :class:`inspect.Parameter` are now
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200517 picklable and hashable. (Contributed by Yury Selivanov in :issue:`20726`
518 and :issue:`20334`.)
Yury Selivanova5d63dd2014-03-27 11:31:43 -0400519
Yury Selivanovb907a512015-05-16 13:45:09 -0400520* New method :meth:`inspect.BoundArguments.apply_defaults`. (Contributed
521 by Yury Selivanov in :issue:`24190`.)
522
Yury Selivanovda396452014-03-27 12:09:24 -0400523* New class method :meth:`inspect.Signature.from_callable`, which makes
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200524 subclassing of :class:`~inspect.Signature` easier. (Contributed
525 by Yury Selivanov and Eric Snow in :issue:`17373`.)
Yury Selivanovda396452014-03-27 12:09:24 -0400526
Yury Selivanovbcd4fc12015-05-20 14:30:08 -0400527* New argument ``follow_wrapped`` for :func:`inspect.signature`.
528 (Contributed by Yury Selivanov in :issue:`20691`.)
529
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400530* New :func:`~inspect.iscoroutine`, :func:`~inspect.iscoroutinefunction`,
531 and :func:`~inspect.isawaitable` functions. (Contributed by Yury Selivanov
532 in :issue:`24017`.)
533
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200534ipaddress
535---------
536
537* :class:`ipaddress.IPv4Network` and :class:`ipaddress.IPv6Network` now
538 accept an ``(address, netmask)`` tuple argument, so as to easily construct
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200539 network objects from existing addresses. (Contributed by Peter Moody
540 and Antoine Pitrou in :issue:`16531`.)
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200541
Berker Peksag39e4c4d2014-11-10 09:56:54 +0200542json
543----
544
545* The output of :mod:`json.tool` command line interface is now in the same
546 order as the input. Use the :option:`--sort-keys` option to sort the output
547 of dictionaries alphabetically by key. (Contributed by Berker Peksag in
548 :issue:`21650`.)
549
Serhiy Storchaka47efb4a2015-01-26 13:16:30 +0200550* JSON decoder now raises :exc:`json.JSONDecodeError` instead of
551 :exc:`ValueError`. (Contributed by Serhiy Storchaka in :issue:`19361`.)
552
Tal Einatf67b0a32015-05-31 22:18:31 +0300553math
554----
555
556* :data:`math.inf` and :data:`math.nan` constants added. (Contributed by Mark
557 Dickinson in :issue:`23185`.)
558* :func:`math.isclose` function added.
559 (Contributed by Chris Barker and Tal Einat in :issue:`24270`.)
560
Zachary Ware63f277b2014-06-19 09:46:37 -0500561os
562--
563
Victor Stinner37f20342015-03-10 13:29:41 +0100564* New :func:`os.scandir` function that exposes file information from
565 the operating system when listing a directory. :func:`os.scandir`
566 returns an iterator of :class:`os.DirEntry` objects corresponding to
567 the entries in the directory given by *path*. (Contributed by Ben
568 Hoyt with the help of Victor Stinner in :issue:`22524`.)
Victor Stinner6036e442015-03-08 01:58:04 +0100569
Victor Stinnere1d24f72014-07-24 12:44:07 +0200570* :class:`os.stat_result` now has a :attr:`~os.stat_result.st_file_attributes`
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200571 attribute on Windows. (Contributed by Ben Hoyt in :issue:`21719`.)
Zachary Ware63f277b2014-06-19 09:46:37 -0500572
Serhiy Storchaka38220932015-03-31 15:31:53 +0300573os.path
574-------
575
576* New :func:`~os.path.commonpath` function that extracts common path prefix.
577 Unlike the :func:`~os.path.commonprefix` function, it always returns a valid
578 patch. (Contributed by Rafik Draoui and Serhiy Storchaka in :issue:`10395`.)
579
Serhiy Storchaka58e41342015-03-31 14:07:24 +0300580pickle
581------
582
583* Serializing more "lookupable" objects (such as unbound methods or nested
584 classes) now are supported with pickle protocols < 4.
585 (Contributed by Serhiy Storchaka in :issue:`23611`.)
586
R David Murrayb8cd3e42015-05-16 15:05:53 -0400587poplib
588------
589
590* A new command :meth:`~poplib.POP3.utf8` enables :rfc:`6856`
591 (internationalized email) support if the POP server supports it. (Contributed
592 by Milan OberKirch in :issue:`21804`.)
593
Serhiy Storchaka9baa5b22014-09-29 22:49:23 +0300594re
595--
596
597* Number of capturing groups in regular expression is no longer limited by 100.
598 (Contributed by Serhiy Storchaka in :issue:`22437`.)
599
Serhiy Storchaka7438e4b2014-10-10 11:06:31 +0300600* Now unmatched groups are replaced with empty strings in :func:`re.sub`
601 and :func:`re.subn`. (Contributed by Serhiy Storchaka in :issue:`1519638`.)
602
R David Murray6ffface2014-06-11 14:40:13 -0400603shutil
604------
605
606* :func:`~shutil.move` now accepts a *copy_function* argument, allowing,
607 for example, :func:`~shutil.copy` to be used instead of the default
608 :func:`~shutil.copy2` if there is a need to ignore metadata. (Contributed by
609 Claudiu Popa in :issue:`19840`.)
610
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200611signal
612------
Brett Cannona04dbe42014-04-04 13:53:38 -0400613
Victor Stinnerbbe38032015-04-01 16:32:32 +0200614* On Windows, :func:`signal.set_wakeup_fd` now also supports socket handles.
615 (Contributed by Victor Stinner in :issue:`22018`.)
616
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200617* Different constants of :mod:`signal` module are now enumeration values using
618 the :mod:`enum` module. This allows meaningful names to be printed during
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200619 debugging, instead of integer “magic numbers”. (Contributed by Giampaolo
620 Rodola' in :issue:`21076`.)
R David Murray1976d9b2014-04-14 20:28:36 -0400621
R David Murray554bcbf2014-06-11 11:18:08 -0400622smtpd
623-----
624
625* Both :class:`~smtpd.SMTPServer` and :class:`smtpd.SMTPChannel` now accept a
626 *decode_data* keyword to determine if the DATA portion of the SMTP
627 transaction is decoded using the ``utf-8`` codec or is instead provided to
628 :meth:`~smtpd.SMTPServer.process_message` as a byte string. The default
629 is ``True`` for backward compatibility reasons, but will change to ``False``
R David Murraya33df312015-05-11 12:11:40 -0400630 in Python 3.6. If *decode_data* is set to ``False``, the
631 :meth:`~smtpd.SMTPServer.process_message` method must be prepared to accept
632 keyword arguments. (Contributed by Maciej Szulik in :issue:`19662`.)
633
634* :class:`~smtpd.SMTPServer` now advertises the ``8BITMIME`` extension
635 (:rfc:`6152`) if if *decode_data* has been set ``True``. If the client
636 specifies ``BODY=8BITMIME`` on the ``MAIL`` command, it is passed to
637 :meth:`~smtpd.SMTPServer.process_message` via the ``mail_options`` keyword.
638 (Contributed by Milan Oberkirch and R. David Murray in :issue:`21795`.)
639
640* :class:`~smtpd.SMTPServer` now supports the ``SMTPUTF8`` extension
641 (:rfc:`6531`: Internationalized Email). If the client specified ``SMTPUTF8
642 BODY=8BITMIME`` on the ``MAIL`` command, they are passed to
643 :meth:`~smtpd.SMTPServer.process_message` via the ``mail_options`` keyword.
644 It is the responsibility of the :meth:`~smtpd.SMTPServer.process_message`
645 method to correctly handle the ``SMTPUTF8`` data. (Contributed by Milan
646 Oberkirch in :issue:`21725`.)
R David Murray554bcbf2014-06-11 11:18:08 -0400647
R David Murray6fe56a32014-06-11 13:48:58 -0400648* It is now possible to provide, directly or via name resolution, IPv6
649 addresses in the :class:`~smtpd.SMTPServer` constructor, and have it
650 successfully connect. (Contributed by Milan Oberkirch in :issue:`14758`.)
651
R David Murray76e13c12014-07-03 14:47:46 -0400652smtplib
653-------
654
655* A new :meth:`~smtplib.SMTP.auth` method provides a convenient way to
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200656 implement custom authentication mechanisms.
657 (Contributed by Milan Oberkirch in :issue:`15014`.)
R David Murray76e13c12014-07-03 14:47:46 -0400658
R David Murray0c49b892015-04-16 17:14:42 -0400659* Additional debuglevel (2) shows timestamps for debug messages in
660 :class:`smtplib.SMTP`. (Contributed by Gavin Chappell and Maciej Szulik in
661 :issue:`16914`.)
662
R David Murray83084442015-05-17 19:27:22 -0400663* :mod:`smtplib` now supports :rfc:`6531` (SMTPUTF8) in both the
664 :meth:`~smtplib.SMTP.sendmail` and :meth:`~smtplib.SMTP.send_message`
665 commands. (Contributed by Milan Oberkirch and R. David Murray in
666 :issue:`22027`.)
R David Murraycee7cf62015-05-16 13:58:14 -0400667
R David Murray4487dd02014-10-09 16:59:30 -0400668sndhdr
669------
670
671* :func:`~sndhdr.what` and :func:`~sndhdr.whathdr` now return
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200672 :func:`~collections.namedtuple`.
673 (Contributed by Claudiu Popa in :issue:`18615`.)
R David Murray4487dd02014-10-09 16:59:30 -0400674
Giampaolo Rodola'915d1412014-06-11 03:54:30 +0200675socket
676------
677
678* New :meth:`socket.socket.sendfile` method allows to send a file over a socket
679 by using high-performance :func:`os.sendfile` function on UNIX resulting in
680 uploads being from 2x to 3x faster than when using plain
681 :meth:`socket.socket.send`.
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200682 (Contributed by Giampaolo Rodola' in :issue:`17552`.)
Giampaolo Rodola'915d1412014-06-11 03:54:30 +0200683
Gregory P. Smith6e730002015-04-14 16:14:25 -0700684subprocess
685----------
686
687* The new :func:`subprocess.run` function runs subprocesses and returns a
688 :class:`subprocess.CompletedProcess` object. It Provides a more consistent
689 API than :func:`~subprocess.call`, :func:`~subprocess.check_call` and
690 :func:`~subprocess.check_output`.
691
Eric V. Smith7a803892015-04-15 10:27:58 -0400692sysconfig
693---------
694
695* The user scripts directory on Windows is now versioned.
696 (Contributed by Paul Moore in :issue:`23437`.)
697
698tarfile
699-------
700
701* The :func:`tarfile.open` function now supports ``'x'`` (exclusive creation)
702 mode. (Contributed by Berker Peksag in :issue:`21717`.)
703
704* The :meth:`~tarfile.TarFile.extractall` and :meth:`~tarfile.TarFile.extract`
705 methods now take a keyword parameter *numeric_only*. If set to ``True``,
706 the extracted files and directories will be owned by the numeric uid and gid
707 from the tarfile. If set to ``False`` (the default, and the behavior in
708 versions prior to 3.5), they will be owned bythe named user and group in the
709 tarfile. (Contributed by Michael Vogt and Eric Smith in :issue:`23193`.)
710
Victor Stinnerae586492014-09-02 23:18:25 +0200711time
712----
713
Berker Peksag882c95c2014-10-09 11:46:56 +0300714* The :func:`time.monotonic` function is now always available. (Contributed by
715 Victor Stinner in :issue:`22043`.)
Victor Stinnerae586492014-09-02 23:18:25 +0200716
Zachary Ware7dc9dea2015-05-22 11:36:53 -0500717tkinter
718-------
719
Nick Coghland5cacbb2015-05-23 22:24:10 +1000720* The :mod:`tkinter._fix` module used for setting up the Tcl/Tk environment
Berker Peksag1a90b172015-05-24 00:26:05 +0300721 on Windows has been replaced by a private function in the :mod:`_tkinter`
Zachary Ware7dc9dea2015-05-22 11:36:53 -0500722 module which makes no permanent changes to environment variables.
723 (Contributed by Zachary Ware in :issue:`20035`.)
724
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400725types
726-----
727
728* New :func:`~types.coroutine` function. (Contributed by Yury Selivanov
729 in :issue:`24017`.)
730
Berker Peksagbd09d7b2015-02-11 15:32:34 +0200731urllib
732------
Nick Coghlanc216c482014-11-12 23:33:50 +1000733
R David Murray4c7f9952015-04-16 16:36:18 -0400734* A new :class:`~urllib.request.HTTPPasswordMgrWithPriorAuth` allows HTTP Basic
735 Authentication credentials to be managed so as to eliminate unnecessary
736 ``401`` response handling, or to unconditionally send credentials
737 on the first request in order to communicate with servers that return a
738 ``404`` response instead of a ``401`` if the ``Authorization`` header is not
739 sent. (Contributed by Matej Cepl in :issue:`19494` and Akshit Khurana in
740 :issue:`7159`.)
Nick Coghlanc216c482014-11-12 23:33:50 +1000741
R David Murrayc17686f2015-05-17 20:44:50 -0400742* A new :func:`~urllib.parse.urlencode` parameter *quote_via* provides a way to
743 control the encoding of query parts if needed. (Contributed by Samwyse and
744 Arnon Yaari in :issue:`13866`.)
745
Berker Peksag3e887222014-07-02 08:37:22 +0300746wsgiref
747-------
748
749* *headers* parameter of :class:`wsgiref.headers.Headers` is now optional.
750 (Contributed by Pablo Torres Navarrete and SilentGhost in :issue:`5800`.)
751
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200752xmlrpc
753------
754
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200755* :class:`xmlrpc.client.ServerProxy` is now a :term:`context manager`.
756 (Contributed by Claudiu Popa in :issue:`20627`.)
Brett Cannon6eaac132014-05-09 12:28:22 -0400757
Serhiy Storchaka61de0872015-04-02 21:00:13 +0300758xml.sax
759-------
760
761* SAX parsers now support a character stream of
762 :class:`~xml.sax.xmlreader.InputSource` object.
763 (Contributed by Serhiy Storchaka in :issue:`2175`.)
764
Victor Stinner95bb7142015-03-12 15:32:03 +0100765faulthandler
766------------
767
768* :func:`~faulthandler.enable`, :func:`~faulthandler.register`,
769 :func:`~faulthandler.dump_traceback` and
770 :func:`~faulthandler.dump_traceback_later` functions now accept file
771 descriptors. (Contributed by Wei Wu in :issue:`23566`.)
772
Serhiy Storchaka77d89972015-03-23 01:09:35 +0200773zipfile
774-------
775
776* Added support for writing ZIP files to unseekable streams.
777 (Contributed by Serhiy Storchaka in :issue:`23252`.)
778
Serhiy Storchaka764fc9b2015-03-25 10:09:41 +0200779* The :func:`zipfile.ZipFile.open` function now supports ``'x'`` (exclusive
780 creation) mode. (Contributed by Serhiy Storchaka in :issue:`21717`.)
781
Victor Stinner01adf062014-03-18 00:53:32 +0100782
783Optimizations
784=============
785
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200786The following performance enhancements have been added:
Victor Stinner01adf062014-03-18 00:53:32 +0100787
Victor Stinner37f20342015-03-10 13:29:41 +0100788* :func:`os.walk` has been sped up by 3-5x on POSIX systems and 7-20x
789 on Windows. This was done using the new :func:`os.scandir` function,
790 which exposes file information from the underlying ``readdir`` and
791 ``FindFirstFile``/``FindNextFile`` system calls. (Contributed by
792 Ben Hoyt with help from Victor Stinner in :issue:`23605`.)
793
Brett Cannonf299abd2015-04-13 14:21:02 -0400794* Construction of ``bytes(int)`` (filled by zero bytes) is faster and uses less
Victor Stinner2bc4d952014-06-02 22:22:42 +0200795 memory for large objects. ``calloc()`` is used instead of ``malloc()`` to
Victor Stinnerdb067af2014-05-02 22:31:14 +0200796 allocate memory for these objects.
Victor Stinner01adf062014-03-18 00:53:32 +0100797
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200798* Some operations on :class:`~ipaddress.IPv4Network` and
799 :class:`~ipaddress.IPv6Network` have been massively sped up, such as
800 :meth:`~ipaddress.IPv4Network.subnets`, :meth:`~ipaddress.IPv4Network.supernet`,
801 :func:`~ipaddress.summarize_address_range`, :func:`~ipaddress.collapse_addresses`.
802 The speed up can range from 3x to 15x.
803 (:issue:`21486`, :issue:`21487`, :issue:`20826`)
804
Serhiy Storchaka87d0b452015-02-03 11:30:10 +0200805* Many operations on :class:`io.BytesIO` are now 50% to 100% faster.
Berker Peksag9121fe82015-02-15 00:45:57 +0200806 (Contributed by Serhiy Storchaka in :issue:`15381` and David Wilson in
807 :issue:`22003`.)
Serhiy Storchaka87d0b452015-02-03 11:30:10 +0200808
Serhiy Storchakac1efe5f2015-02-11 15:54:54 +0200809* :func:`marshal.dumps` is now faster (65%-85% with versions 3--4, 20-25% with
810 versions 0--2 on typical data, and up to 5x in best cases).
811 (Contributed by Serhiy Storchaka in :issue:`20416` and :issue:`23344`.)
Serhiy Storchakace921c622015-02-11 15:53:31 +0200812
Serhiy Storchaka0d4df752015-05-12 23:12:45 +0300813* The UTF-32 encoder is now 3x to 7x faster. (Contributed by Serhiy Storchaka
814 in :issue:`15027`.)
815
Victor Stinner01adf062014-03-18 00:53:32 +0100816
817Build and C API Changes
818=======================
819
820Changes to Python's build process and to the C API include:
821
Victor Stinnerdb067af2014-05-02 22:31:14 +0200822* New ``calloc`` functions:
823
824 * :c:func:`PyMem_RawCalloc`
825 * :c:func:`PyMem_Calloc`
826 * :c:func:`PyObject_Calloc`
827 * :c:func:`_PyObject_GC_Calloc`
Victor Stinner01adf062014-03-18 00:53:32 +0100828
829
830Deprecated
831==========
832
Yury Selivanov8fa6d4f2015-05-28 17:09:14 -0400833New Keywords
834------------
835
836``async`` and ``await`` are not recommended to be used as variable, class or
837function names. Introduced by :pep:`492` in Python 3.5, they will become
838proper keywords in Python 3.7.
839
840
Victor Stinner01adf062014-03-18 00:53:32 +0100841Unsupported Operating Systems
842-----------------------------
843
Zachary Ware38019d12015-04-13 15:51:59 -0500844* Windows XP - Per :PEP:`11`, Microsoft support of Windows XP has ended.
Victor Stinner01adf062014-03-18 00:53:32 +0100845
846
847Deprecated Python modules, functions and methods
848------------------------------------------------
849
Brett Cannona77d0c32014-03-21 10:52:33 -0400850* The :mod:`formatter` module has now graduated to full deprecation and is still
851 slated for removal in Python 3.6.
Victor Stinner01adf062014-03-18 00:53:32 +0100852
R David Murray554bcbf2014-06-11 11:18:08 -0400853* :mod:`smtpd` has in the past always decoded the DATA portion of email
854 messages using the ``utf-8`` codec. This can now be controlled by the new
855 *decode_data* keyword to :class:`~smtpd.SMTPServer`. The default value is
856 ``True``, but this default is deprecated. Specify the *decode_data* keyword
857 with an appropriate value to avoid the deprecation warning.
858
R David Murray1813c172015-03-29 17:09:21 -0400859* Directly assigning values to the :attr:`~http.cookies.Morsel.key`,
860 :attr:`~http.cookies.Morsel.value` and
861 :attr:`~http.cookies.Morsel.coded_value` of :class:`~http.cookies.Morsel`
862 objects is deprecated. Use the :func:`~http.cookies.Morsel.set` method
863 instead. In addition, the undocumented *LegalChars* parameter of
864 :func:`~http.cookies.Morsel.set` is deprecated, and is now ignored.
Serhiy Storchaka9c1a9b22015-03-18 10:59:57 +0200865
Serhiy Storchakab876df42015-03-24 22:30:46 +0200866* Passing a format string as keyword argument *format_string* to the
867 :meth:`~string.Formatter.format` method of the :class:`string.Formatter`
868 class has been deprecated.
869
Berker Peksag2f3742b2015-05-13 12:32:20 +0300870* :func:`platform.dist` and :func:`platform.linux_distribution` functions are
871 now deprecated and will be removed in Python 3.7. Linux distributions use
872 too many different ways of describing themselves, so the functionality is
873 left to a package.
874 (Contributed by Vajrasky Kok and Berker Peksag in :issue:`1322`.)
Victor Stinner01adf062014-03-18 00:53:32 +0100875
Benjamin Petersonb1cc37c2015-05-20 22:09:43 -0500876* The previously undocumented ``from_function`` and ``from_builtin`` methods of
877 :class:`inspect.Signature` are deprecated. Use new
Yury Selivanov57c74fc2015-05-20 23:07:02 -0400878 :meth:`inspect.Signature.from_callable` instead. (Contributed by Yury
879 Selivanov in :issue:`24248`.)
880
Yury Selivanov945fff42015-05-22 16:28:05 -0400881* :func:`inspect.getargspec` is deprecated and scheduled to be removed in
882 Python 3.6. (See :issue:`20438` for details.)
883
884* :func:`~inspect.getfullargspec`, :func:`~inspect.getargvalues`,
885 :func:`~inspect.getcallargs`, :func:`~inspect.getargvalues`,
886 :func:`~inspect.formatargspec`, and :func:`~inspect.formatargvalues` are
887 deprecated in favor of :func:`inspect.signature` API. (See :issue:`20438`
888 for details.)
889
890
Victor Stinner01adf062014-03-18 00:53:32 +0100891Deprecated functions and types of the C API
892-------------------------------------------
893
894* None yet.
895
896
897Deprecated features
898-------------------
899
900* None yet.
901
902
R David Murraydf75fee2014-10-03 13:02:47 -0400903Removed
904=======
905
Berker Peksag8f791d32014-11-01 10:45:57 +0200906API and Feature Removals
907------------------------
908
909The following obsolete and previously deprecated APIs and features have been
910removed:
911
R David Murraydf75fee2014-10-03 13:02:47 -0400912* The ``__version__`` attribute has been dropped from the email package. The
913 email code hasn't been shipped separately from the stdlib for a long time,
914 and the ``__version__`` string was not updated in the last few releases.
915
Berker Peksag8f791d32014-11-01 10:45:57 +0200916* The internal ``Netrc`` class in the :mod:`ftplib` module was deprecated in
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200917 3.4, and has now been removed.
918 (Contributed by Matt Chaput in :issue:`6623`.)
R David Murraydf75fee2014-10-03 13:02:47 -0400919
Brett Cannonf299abd2015-04-13 14:21:02 -0400920* The concept of ``.pyo`` files has been removed.
921
R David Murraye81a7732015-04-12 18:47:56 -0400922* The JoinableQueue class in the provisional asyncio module was deprecated
923 in 3.4.4 and is now removed (:issue:`23464`).
924
925
Victor Stinner01adf062014-03-18 00:53:32 +0100926Porting to Python 3.5
927=====================
928
929This section lists previously described changes and other bugfixes
930that may require changes to your code.
931
Victor Stinnerdb067af2014-05-02 22:31:14 +0200932Changes in the Python API
933-------------------------
934
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200935* :pep:`475`: Examples of functions which are now retried when interrupted
936 instead of raising :exc:`InterruptedError` if the signal handler does not
937 raise an exception:
Victor Stinnera766ddf2015-03-26 23:50:57 +0100938
Victor Stinner45ca48b2015-03-31 12:10:33 +0200939 - :func:`open`, :func:`os.open`, :func:`io.open`
Victor Stinneracd8e7c2015-04-02 13:56:29 +0200940 - functions of the :mod:`faulthandler` module
941 - :mod:`os` functions:
942
943 * :func:`os.fchdir`
944 * :func:`os.fchmod`
945 * :func:`os.fchown`
946 * :func:`os.fdatasync`
947 * :func:`os.fstat`
948 * :func:`os.fstatvfs`
949 * :func:`os.fsync`
950 * :func:`os.ftruncate`
951 * :func:`os.mkfifo`
952 * :func:`os.mknod`
953 * :func:`os.posix_fadvise`
954 * :func:`os.posix_fallocate`
955 * :func:`os.pread`
956 * :func:`os.pwrite`
957 * :func:`os.read`
958 * :func:`os.readv`
959 * :func:`os.sendfile`
960 * :func:`os.wait3`
961 * :func:`os.wait4`
962 * :func:`os.wait`
963 * :func:`os.waitid`
964 * :func:`os.waitpid`
965 * :func:`os.write`
966 * :func:`os.writev`
967 * special cases: :func:`os.close` and :func:`os.dup2` now ignore
968 :py:data:`~errno.EINTR` error, the syscall is not retried (see the PEP
969 for the rationale)
970
Victor Stinner4448c082015-03-31 11:48:34 +0200971 - :func:`select.select`, :func:`select.poll.poll`, :func:`select.epoll.poll`,
Victor Stinner45ca48b2015-03-31 12:10:33 +0200972 :func:`select.kqueue.control`, :func:`select.devpoll.poll`
Victor Stinner708d9ba2015-04-02 11:49:42 +0200973 - :func:`socket.socket` methods:
974
975 * :meth:`~socket.socket.accept`
Victor Stinner81c41db2015-04-02 11:50:57 +0200976 * :meth:`~socket.socket.connect` (except for non-blocking sockets)
Victor Stinner708d9ba2015-04-02 11:49:42 +0200977 * :meth:`~socket.socket.recv`
978 * :meth:`~socket.socket.recvfrom`
979 * :meth:`~socket.socket.recvmsg`
980 * :meth:`~socket.socket.send`
981 * :meth:`~socket.socket.sendall`
982 * :meth:`~socket.socket.sendmsg`
983 * :meth:`~socket.socket.sendto`
984
Victor Stinnereb011cb2015-03-31 12:19:15 +0200985 - :func:`signal.sigtimedwait`, :func:`signal.sigwaitinfo`
Victor Stinnera766ddf2015-03-26 23:50:57 +0100986 - :func:`time.sleep`
987
Benjamin Petersonee6bdc02014-03-20 18:00:35 -0500988* Before Python 3.5, a :class:`datetime.time` object was considered to be false
989 if it represented midnight in UTC. This behavior was considered obscure and
990 error-prone and has been removed in Python 3.5. See :issue:`13936` for full
991 details.
Antoine Pitrou92c4d452014-04-29 10:05:59 +0200992
993* :meth:`ssl.SSLSocket.send()` now raises either :exc:`ssl.SSLWantReadError`
994 or :exc:`ssl.SSLWantWriteError` on a non-blocking socket if the operation
995 would block. Previously, it would return 0. See :issue:`20951`.
Victor Stinnerdb067af2014-05-02 22:31:14 +0200996
Victor Stinner40ee3012014-06-16 15:59:28 +0200997* The ``__name__`` attribute of generator is now set from the function name,
998 instead of being set from the code name. Use ``gen.gi_code.co_name`` to
999 retrieve the code name. Generators also have a new ``__qualname__``
1000 attribute, the qualified name, which is now used for the representation
1001 of a generator (``repr(gen)``). See :issue:`21205`.
1002
Ezio Melotti045160b2014-08-02 18:54:30 +03001003* The deprecated "strict" mode and argument of :class:`~html.parser.HTMLParser`,
1004 :meth:`HTMLParser.error`, and the :exc:`HTMLParserError` exception have been
Serhiy Storchakac1ded292014-11-02 19:22:02 +02001005 removed. (Contributed by Ezio Melotti in :issue:`15114`.)
Ezio Melotti045160b2014-08-02 18:54:30 +03001006 The *convert_charrefs* argument of :class:`~html.parser.HTMLParser` is
Serhiy Storchakac1ded292014-11-02 19:22:02 +02001007 now ``True`` by default. (Contributed by Berker Peksag in :issue:`21047`.)
Ezio Melotti045160b2014-08-02 18:54:30 +03001008
R David Murray861470c2014-10-05 11:47:01 -04001009* Although it is not formally part of the API, it is worth noting for porting
1010 purposes (ie: fixing tests) that error messages that were previously of the
1011 form "'sometype' does not support the buffer protocol" are now of the form "a
Serhiy Storchakac1ded292014-11-02 19:22:02 +02001012 bytes-like object is required, not 'sometype'". (Contributed by Ezio Melotti
1013 in :issue:`16518`.)
R David Murray861470c2014-10-05 11:47:01 -04001014
Brett Cannonb6e25562014-11-21 12:19:28 -05001015* If the current directory is set to a directory that no longer exists then
1016 :exc:`FileNotFoundError` will no longer be raised and instead
1017 :meth:`~importlib.machinery.FileFinder.find_spec` will return ``None``
1018 **without** caching ``None`` in :data:`sys.path_importer_cache` which is
1019 different than the typical case (:issue:`22834`).
1020
Berker Peksag088ca8b2015-02-06 10:17:49 +02001021* HTTP status code and messages from :mod:`http.client` and :mod:`http.server`
1022 were refactored into a common :class:`~http.HTTPStatus` enum. The values in
1023 :mod:`http.client` and :mod:`http.server` remain available for backwards
1024 compatibility. (Contributed by Demian Brecht in :issue:`21793`.)
Serhiy Storchakae4db7692014-12-23 16:28:28 +02001025
Brett Cannon02d84542015-01-09 11:39:21 -05001026* When an import loader defines :meth:`~importlib.machinery.Loader.exec_module`
1027 it is now expected to also define
1028 :meth:`~importlib.machinery.Loader.create_module` (raises a
1029 :exc:`DeprecationWarning` now, will be an error in Python 3.6). If the loader
1030 inherits from :class:`importlib.abc.Loader` then there is nothing to do, else
1031 simply define :meth:`~importlib.machinery.Loader.create_module` to return
1032 ``None`` (:issue:`23014`).
1033
Serhiy Storchaka83e80272015-02-03 11:04:19 +02001034* :func:`re.split` always ignored empty pattern matches, so the ``'x*'``
1035 pattern worked the same as ``'x+'``, and the ``'\b'`` pattern never worked.
1036 Now :func:`re.split` raises a warning if the pattern could match
1037 an empty string. For compatibility use patterns that never match an empty
1038 string (e.g. ``'x+'`` instead of ``'x*'``). Patterns that could only match
1039 an empty string (such as ``'\b'``) now raise an error.
1040
R David Murray1813c172015-03-29 17:09:21 -04001041* The :class:`~http.cookies.Morsel` dict-like interface has been made self
1042 consistent: morsel comparison now takes the :attr:`~http.cookies.Morsel.key`
1043 and :attr:`~http.cookies.Morsel.value` into account,
1044 :meth:`~http.cookies.Morsel.copy` now results in a
R David Murrayba6ea9b2015-03-30 11:48:50 -04001045 :class:`~http.cookies.Morsel` instance rather than a :class:`dict`, and
1046 :meth:`~http.cookies.Morsel.update` will now raise an exception if any of the
R David Murray1813c172015-03-29 17:09:21 -04001047 keys in the update dictionary are invalid. In addition, the undocumented
1048 *LegalChars* parameter of :func:`~http.cookies.Morsel.set` is deprecated and
1049 is now ignored. (:issue:`2211`)
1050
Brett Cannonf299abd2015-04-13 14:21:02 -04001051* :pep:`488` has removed ``.pyo`` files from Python and introduced the optional
1052 ``opt-`` tag in ``.pyc`` file names. The
1053 :func:`importlib.util.cache_from_source` has gained an *optimization*
1054 parameter to help control the ``opt-`` tag. Because of this, the
1055 *debug_override* parameter of the function is now deprecated. `.pyo` files
1056 are also no longer supported as a file argument to the Python interpreter and
1057 thus serve no purpose when distributed on their own (i.e. sourcless code
1058 distribution). Due to the fact that the magic number for bytecode has changed
1059 in Python 3.5, all old `.pyo` files from previous versions of Python are
1060 invalid regardless of this PEP.
1061
Larry Hastingsa6cc5512015-04-13 17:48:40 -04001062 * The :mod:`socket` module now exports the CAN_RAW_FD_FRAMES constant on linux
1063 3.6 and greater.
1064
R David Murray2b781292015-04-16 12:15:09 -04001065* The `pygettext.py` Tool now uses the standard +NNNN format for timezones in
1066 the POT-Creation-Date header.
1067
R David Murray0c49b892015-04-16 17:14:42 -04001068* The :mod:`smtplib` module now uses :data:`sys.stderr` instead of previous
1069 module level :data:`stderr` variable for debug output. If your (test)
1070 program depends on patching the module level variable to capture the debug
1071 output, you will need to update it to capture sys.stderr instead.
1072
Serhiy Storchakad4ea03c2015-05-31 09:15:51 +03001073* The :meth:`str.startswith` and :meth:`str.endswith` methods no longer return
1074 ``True`` when finding the empty string and the indexes are completely out of
1075 range. See :issue:`24284`.
1076
Victor Stinnerdb067af2014-05-02 22:31:14 +02001077Changes in the C API
1078--------------------
1079
Stefan Krahf5324d72015-01-29 14:29:51 +01001080* The undocumented :c:member:`~PyMemoryViewObject.format` member of the
1081 (non-public) :c:type:`PyMemoryViewObject` structure has been removed.
1082
1083 All extensions relying on the relevant parts in ``memoryobject.h``
1084 must be rebuilt.
1085
Victor Stinnerd8f0d922014-06-02 21:57:10 +02001086* The :c:type:`PyMemAllocator` structure was renamed to
1087 :c:type:`PyMemAllocatorEx` and a new ``calloc`` field was added.
Serhiy Storchakadf4518c2014-11-18 23:34:33 +02001088
1089* Removed non-documented macro :c:macro:`PyObject_REPR` which leaked references.
1090 Use format character ``%R`` in :c:func:`PyUnicode_FromFormat`-like functions
1091 to format the :func:`repr` of the object.
Serhiy Storchaka490055a2015-03-01 10:03:02 +02001092
1093* Because the lack of the :attr:`__module__` attribute breaks pickling and
1094 introspection, a deprecation warning now is raised for builtin type without
1095 the :attr:`__module__` attribute. Would be an AttributeError in future.
1096 (:issue:`20204`)
Yury Selivanov50960882015-05-12 00:15:05 -04001097
1098* As part of PEP 492 implementation, ``tp_reserved`` slot of
Yury Selivanovf3e40fa2015-05-21 11:50:30 -04001099 :c:type:`PyTypeObject` was replaced with a
1100 :c:member:`PyTypeObject.tp_as_async` slot.