blob: 75bc7fb3c21c949328403bf66af867326a2c8886 [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
Gregory P. Smithad577b92015-05-22 16:18:14 -0700100* You may now pass bytes to the :mod:`tempfile` module's APIs and it will
101 return the temporary pathname as bytes instead of str. It also accepts
102 a value of ``None`` on parameters where only str was accepted in the past to
103 do the right thing based on the types of the other inputs. Two functions,
104 :func:`gettempdirb` and :func:`gettempprefixb`, have been added to go along
105 with this. This behavior matches that of the :mod:`os` APIs.
Victor Stinner01adf062014-03-18 00:53:32 +0100106
107Security improvements:
108
109* None yet.
110
111Please read on for a comprehensive list of user-facing changes.
112
113
114.. PEP-sized items next.
115
116.. _pep-4XX:
117
118.. PEP 4XX: Virtual Environments
119.. =============================
120
121
122.. (Implemented by Foo Bar.)
123
124.. .. seealso::
125
126 :pep:`4XX` - Python Virtual Environments
127 PEP written by Carl Meyer
128
129
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400130PEP 492 - Coroutines with async and await syntax
131------------------------------------------------
132
133The PEP added dedicated syntax for declaring :term:`coroutines <coroutine>`,
134:keyword:`await` expressions, new asynchronous :keyword:`async for`
135and :keyword:`async with` statements.
136
137Example::
138
139 async def read_data(db):
140 async with db.transaction():
141 data = await db.fetch('SELECT ...')
142
143PEP written and implemented by Yury Selivanov.
144
145.. seealso::
146
147 :pep:`492` -- Coroutines with async and await syntax
148
149
Benjamin Peterson5562c9032015-05-13 11:19:06 -0400150PEP 461 - Adding formatting to bytes and bytearray
151--------------------------------------------------
Victor Stinner93692bb2015-03-30 15:04:45 +0200152
153This PEP proposes adding % formatting operations similar to Python 2's ``str``
154type to :class:`bytes` and :class:`bytearray`.
155
156Examples::
157
158 >>> b'Hello %s!' % b'World'
159 b'Hello World!'
160 >>> b'x=%i y=%f' % (1, 2.5)
161 b'x=1 y=2.500000'
162
163Unicode is not allowed for ``%s``, but it is accepted by ``%a`` (equivalent of
164``repr(obj).encode('ascii', 'backslashreplace')``)::
165
166 >>> b'Hello %s!' % 'World'
167 Traceback (most recent call last):
168 File "<stdin>", line 1, in <module>
169 TypeError: %b requires bytes, or an object that implements __bytes__, not 'str'
170 >>> b'price: %a' % '10€'
171 b"price: '10\\u20ac'"
172
173.. seealso::
174
175 :pep:`461` -- Adding % formatting to bytes and bytearray
176
177
178PEP 465 - A dedicated infix operator for matrix multiplication
179--------------------------------------------------------------
180
181This PEP proposes a new binary operator to be used for matrix multiplication,
R David Murrayef2a3972015-04-01 09:15:02 -0400182called ``@``. (Mnemonic: ``@`` is ``*`` for mATrices.)
Victor Stinner93692bb2015-03-30 15:04:45 +0200183
184.. seealso::
185
186 :pep:`465` -- A dedicated infix operator for matrix multiplication
187
Victor Stinner6036e442015-03-08 01:58:04 +0100188
189PEP 471 - os.scandir() function -- a better and faster directory iterator
190-------------------------------------------------------------------------
191
Victor Stinner37f20342015-03-10 13:29:41 +0100192:pep:`471` adds a new directory iteration function, :func:`os.scandir`,
193to the standard library. Additionally, :func:`os.walk` is now
194implemented using :func:`os.scandir`, which speeds it up by 3-5 times
195on POSIX systems and by 7-20 times on Windows systems.
196
197PEP and implementation written by Ben Hoyt with the help of Victor Stinner.
Victor Stinner6036e442015-03-08 01:58:04 +0100198
199.. seealso::
200
201 :pep:`471` -- os.scandir() function -- a better and faster directory
Victor Stinner37f20342015-03-10 13:29:41 +0100202 iterator
Victor Stinner6036e442015-03-08 01:58:04 +0100203
204
Charles-François Natali6e6c59b2015-02-07 13:27:50 +0000205PEP 475: Retry system calls failing with EINTR
206----------------------------------------------
207
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200208:pep:`475` adds support for automatic retry of system calls failing with
209:py:data:`~errno.EINTR`: this means that user code doesn't have to deal with
210EINTR or :exc:`InterruptedError` manually, and should make it more robust
211against asynchronous signal reception.
Charles-François Natali6e6c59b2015-02-07 13:27:50 +0000212
213.. seealso::
214
215 :pep:`475` -- Retry system calls failing with EINTR
Victor Stinner01adf062014-03-18 00:53:32 +0100216
217
Yury Selivanov8d006e72015-05-22 11:30:45 -0400218PEP 479: Change StopIteration handling inside generators
219--------------------------------------------------------
220
221:pep:`479` changes the behavior of generators: when a :exc:`StopIteration`
222exception is raised inside a generator, it is replaced with a
223:exc:`RuntimeError`. To enable the feature a ``__future__`` import should
224be used::
225
226 from __future__ import generator_stop
227
228Without a ``__future__`` import, a :exc:`PendingDeprecationWarning` will be
229raised.
230
231PEP written by Chris Angelico and Guido van Rossum. Implemented by
232Chris Angelico, Yury Selivanov and Nick Coghlan.
233
234.. seealso::
235
236 :pep:`479` -- Change StopIteration handling inside generators
237
238
Steve Dower76998fe2015-02-26 14:25:33 -0800239PEP 486: Make the Python Launcher aware of virtual environments
240---------------------------------------------------------------
241
242:pep:`486` makes the Windows launcher (see :pep:`397`) aware of an active
243virtual environment. When the default interpreter would be used and the
244``VIRTUAL_ENV`` environment variable is set, the interpreter in the virtual
245environment will be used.
246
247.. seealso::
248
249 :pep:`486` -- Make the Python Launcher aware of virtual environments
250
Brett Cannonf299abd2015-04-13 14:21:02 -0400251
252PEP 488: Elimination of PYO files
253---------------------------------
254
255:pep:`488` does away with the concept of ``.pyo`` files. This means that
256``.pyc`` files represent both unoptimized and optimized bytecode. To prevent
257the need to constantly regenerate bytecode files, ``.pyc`` files now have an
258optional ``opt-`` tag in their name when the bytecode is optimized. This has
259the side-effect of no more bytecode file name clashes when running under either
260``-O`` or ``-OO``, thus allowing unoptimized, ``-O``, and ``-OO`` bytecode files
261to all exist simultaneously. :func:`importlib.util.cache_from_source` has an
262updated API to help with this change.
263
264.. seealso::
265
266 :pep:`488` -- Elimination of PYO files
267
268
Nick Coghland5cacbb2015-05-23 22:24:10 +1000269PEP 489: Multi-phase extension module initialization
270----------------------------------------------------
271
272:pep:`489` updates extension module initialization to take advantage of the
273two step module loading mechanism introduced by :pep:`451` in Python 3.4.
274
275This change brings the import semantics of extension modules that opt-in to
276using the new mechanism much closer to those of Python source and bytecode
277modules, including the ability to any valid identifier as a module name,
278rather than being restricted to ASCII.
279
280.. seealso::
281
282 :pep:`488` -- Multi-phase extension module initialization
283
Victor Stinner01adf062014-03-18 00:53:32 +0100284Other Language Changes
285======================
286
287Some smaller changes made to the core Python language are:
288
Serhiy Storchaka07985ef2015-01-25 22:56:57 +0200289* Added the ``'namereplace'`` error handlers. The ``'backslashreplace'``
290 error handlers now works with decoding and translating.
291 (Contributed by Serhiy Storchaka in :issue:`19676` and :issue:`22286`.)
Victor Stinner01adf062014-03-18 00:53:32 +0100292
Serhiy Storchaka1dd49822015-03-20 16:54:57 +0200293* The :option:`-b` option now affects comparisons of :class:`bytes` with
294 :class:`int`. (Contributed by Serhiy Storchaka in :issue:`23681`)
Victor Stinner01adf062014-03-18 00:53:32 +0100295
Serhiy Storchakaad8a1c32015-05-12 23:16:55 +0300296* New Kazakh :ref:`codec <standard-encodings>` ``kz1048``. (Contributed by
297 Serhiy Storchaka in :issue:`22682`.)
298
Raymond Hettingereac503a2015-05-13 01:09:59 -0700299* Property docstrings are now writable. This is especially useful for
300 :func:`collections.namedtuple` docstrings.
301 (Contributed by Berker Peksag in :issue:`24064`.)
302
Serhiy Storchakaf0eeedf2015-05-12 23:24:19 +0300303* New Tajik :ref:`codec <standard-encodings>` ``koi8_t``. (Contributed by
304 Serhiy Storchaka in :issue:`22681`.)
305
Victor Stinner01adf062014-03-18 00:53:32 +0100306
307New Modules
308===========
309
Brett Cannoncc4dfc12015-03-13 10:40:49 -0400310.. _whatsnew-zipapp:
Victor Stinner01adf062014-03-18 00:53:32 +0100311
Brett Cannoncc4dfc12015-03-13 10:40:49 -0400312zipapp
313------
314
315The new :mod:`zipapp` module (specified in :pep:`441`) provides an API and
316command line tool for creating executable Python Zip Applications, which
317were introduced in Python 2.6 in :issue:`1739468` but which were not well
318publicised, either at the time or since.
319
320With the new module, bundling your application is as simple as putting all
321the files, including a ``__main__.py`` file, into a directory ``myapp``
322and running::
323
324 $ python -m zipapp myapp
325 $ python myapp.pyz
Victor Stinner01adf062014-03-18 00:53:32 +0100326
327
328Improved Modules
329================
330
Berker Peksag8089cd62015-02-14 01:39:17 +0200331argparse
332--------
333
334* :class:`~argparse.ArgumentParser` now allows to disable
335 :ref:`abbreviated usage <prefix-matching>` of long options by setting
336 :ref:`allow_abbrev` to ``False``.
337 (Contributed by Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.)
338
Berker Peksagbf5e9602015-02-06 10:21:37 +0200339cgi
340---
341
Berker Peksagbd09d7b2015-02-11 15:32:34 +0200342* :class:`~cgi.FieldStorage` now supports the context management protocol.
Berker Peksagbf5e9602015-02-06 10:21:37 +0200343 (Contributed by Berker Peksag in :issue:`20289`.)
344
R David Murrayc31e6222014-09-29 11:25:00 -0400345code
346----
347
348* The :func:`code.InteractiveInterpreter.showtraceback` method now prints
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200349 the full chained traceback, just like the interactive interpreter.
Berker Peksag088ca8b2015-02-06 10:17:49 +0200350 (Contributed by Claudiu Popa in :issue:`17442`.)
R David Murrayc31e6222014-09-29 11:25:00 -0400351
Raymond Hettingereac503a2015-05-13 01:09:59 -0700352collections
353-----------
354
355* You can now update docstrings produced by :func:`collections.namedtuple`::
356
357 Point = namedtuple('Point', ['x', 'y'])
358 Point.__doc__ = 'ordered pair'
359 Point.x.__doc__ = 'abscissa'
360 Point.y.__doc__ = 'ordinate'
361
362 (Contributed by Berker Peksag in :issue:`24064`.)
363
Brett Cannonf1a8df02014-09-12 10:39:48 -0400364compileall
365----------
366
367* :func:`compileall.compile_dir` and :mod:`compileall`'s command-line interface
368 can now do parallel bytecode compilation.
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200369 (Contributed by Claudiu Popa in :issue:`16104`.)
Brett Cannonf1a8df02014-09-12 10:39:48 -0400370
Berker Peksagbb44fe02014-11-28 23:28:06 +0200371contextlib
372----------
373
374* The new :func:`contextlib.redirect_stderr` context manager(similar to
375 :func:`contextlib.redirect_stdout`) makes it easier for utility scripts to
376 handle inflexible APIs that write their output to :data:`sys.stderr` and
377 don't provide any options to redirect it.
378 (Contributed by Berker Peksag in :issue:`22389`.)
379
Steve Dowerd2bc3892015-04-15 18:06:05 -0400380curses
381------
382* The new :func:`curses.update_lines_cols` function updates the variables
383 :envvar:`curses.LINES` and :envvar:`curses.COLS`.
384
Berker Peksag102029d2015-03-15 01:18:47 +0200385difflib
386-------
387
388* The charset of the HTML document generated by :meth:`difflib.HtmlDiff.make_file`
389 can now be customized by using *charset* keyword-only parameter. The default
390 charset of HTML document changed from ``'ISO-8859-1'`` to ``'utf-8'``.
391 (Contributed by Berker Peksag in :issue:`2052`.)
392
Greg Ward4d9d2562015-04-20 20:21:21 -0400393* It's now possible to compare lists of byte strings with
394 :func:`difflib.diff_bytes` (fixes a regression from Python 2).
395
Berker Peksag618e3152015-01-27 02:59:09 +0200396distutils
397---------
398
399* The ``build`` and ``build_ext`` commands now accept a ``-j``
400 option to enable parallel building of extension modules.
401 (Contributed by Antoine Pitrou in :issue:`5309`.)
402
Serhiy Storchakab9cec6a2015-05-16 22:13:27 +0300403* Added support for the LZMA compression.
404 (Contributed by Serhiy Storchaka in :issue:`16314`.)
405
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200406doctest
407-------
Giampaolo Rodola'e09fb712014-04-04 15:34:17 +0200408
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200409* :func:`doctest.DocTestSuite` returns an empty :class:`unittest.TestSuite` if
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200410 *module* contains no docstrings instead of raising :exc:`ValueError`.
411 (Contributed by Glenn Jones in :issue:`15916`.)
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200412
R David Murrayb744f3a2015-05-16 15:41:07 -0400413email
414-----
415
R David Murrayfdb23c22015-05-17 14:24:33 -0400416* A new policy option :attr:`~email.policy.Policy.mangle_from_` controls
417 whether or not lines that start with "From " in email bodies are prefixed with
418 a '>' character by generators. The default is ``True`` for
419 :attr:`~email.policy.compat32` and ``False`` for all other policies.
420 (Contributed by Milan Oberkirch in :issue:`20098`.)
421
R David Murrayb744f3a2015-05-16 15:41:07 -0400422* A new method :meth:`~email.message.Message.get_content_disposition` provides
423 easy access to a canonical value for the :mailheader:`Content-Disposition`
424 header (``None`` if there is no such header). (Contributed by Abhilash Raj
425 in :issue:`21083`.)
426
R David Murray224ef3e2015-05-17 11:29:21 -0400427* A new policy option :attr:`~email.policy.EmailPolicy.utf8` can be set
428 ``True`` to encode email headers using the utf8 charset instead of using
429 encoded words. This allows ``Messages`` to be formatted according to
430 :rfc:`6532` and used with an SMTP server that supports the :rfc:`6531`
431 ``SMTPUTF8`` extension. (Contributed by R. David Murray in :issue:`24211`.)
432
Serhiy Storchakac2edcdd2014-09-11 12:17:37 +0300433glob
434----
435
436* :func:`~glob.iglob` and :func:`~glob.glob` now support recursive search in
437 subdirectories using the "``**``" pattern.
438 (Contributed by Serhiy Storchaka in :issue:`13968`.)
439
Serhiy Storchaka38684c32014-09-09 19:07:49 +0300440imaplib
441-------
442
443* :class:`IMAP4` now supports the context management protocol. When used in a
444 :keyword:`with` statement, the IMAP4 ``LOGOUT`` command will be called
445 automatically at the end of the block. (Contributed by Tarek Ziadé and
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200446 Serhiy Storchaka in :issue:`4972`.)
Serhiy Storchaka38684c32014-09-09 19:07:49 +0300447
R David Murraya6429db2015-05-10 19:17:23 -0400448* :mod:`imaplib` now supports :rfc:`5161`: the :meth:`~imaplib.IMAP4.enable`
449 extension), and :rfc:`6855`: utf-8 support (internationalized email, via the
450 ``UTF8=ACCEPT`` argument to :meth:`~imaplib.IMAP4.enable`). A new attribute,
451 :attr:`~imaplib.IMAP4.utf8_enabled`, tracks whether or not :rfc:`6855`
452 support is enabled. Milan Oberkirch, R. David Murray, and Maciej Szulik in
453 :issue:`21800`.)
454
455* :mod:`imaplib` now automatically encodes non-ASCII string usernames and
456 passwords using ``UTF8``, as recommended by the RFCs. (Contributed by Milan
457 Oberkirch in :issue:`21800`.)
458
R David Murray2f608202014-06-26 12:27:57 -0400459imghdr
460------
461
462* :func:`~imghdr.what` now recognizes the `OpenEXR <http://www.openexr.com>`_
Berker Peksag088ca8b2015-02-06 10:17:49 +0200463 format. (Contributed by Martin Vignali and Claudiu Popa in :issue:`20295`.)
R David Murray2f608202014-06-26 12:27:57 -0400464
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200465importlib
466---------
467
468* :class:`importlib.util.LazyLoader` allows for the lazy loading of modules in
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200469 applications where startup time is paramount.
470 (Contributed by Brett Cannon in :issue:`17621`.)
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200471
472* :func:`importlib.abc.InspectLoader.source_to_code` is now a
473 static method to make it easier to work with source code in a string.
474 With a module object that you want to initialize you can then use
475 ``exec(code, module.__dict__)`` to execute the code in the module.
476
Brett Cannon2a17bde2014-05-30 14:55:29 -0400477* :func:`importlib.util.module_from_spec` is now the preferred way to create a
478 new module. Compared to :class:`types.ModuleType`, this new function will set
479 the various import-controlled attributes based on the passed-in spec object.
480
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200481inspect
482-------
Victor Stinner01adf062014-03-18 00:53:32 +0100483
Yury Selivanova5d63dd2014-03-27 11:31:43 -0400484* :class:`inspect.Signature` and :class:`inspect.Parameter` are now
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200485 picklable and hashable. (Contributed by Yury Selivanov in :issue:`20726`
486 and :issue:`20334`.)
Yury Selivanova5d63dd2014-03-27 11:31:43 -0400487
Yury Selivanovb907a512015-05-16 13:45:09 -0400488* New method :meth:`inspect.BoundArguments.apply_defaults`. (Contributed
489 by Yury Selivanov in :issue:`24190`.)
490
Yury Selivanovda396452014-03-27 12:09:24 -0400491* New class method :meth:`inspect.Signature.from_callable`, which makes
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200492 subclassing of :class:`~inspect.Signature` easier. (Contributed
493 by Yury Selivanov and Eric Snow in :issue:`17373`.)
Yury Selivanovda396452014-03-27 12:09:24 -0400494
Yury Selivanovbcd4fc12015-05-20 14:30:08 -0400495* New argument ``follow_wrapped`` for :func:`inspect.signature`.
496 (Contributed by Yury Selivanov in :issue:`20691`.)
497
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400498* New :func:`~inspect.iscoroutine`, :func:`~inspect.iscoroutinefunction`,
499 and :func:`~inspect.isawaitable` functions. (Contributed by Yury Selivanov
500 in :issue:`24017`.)
501
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200502ipaddress
503---------
504
505* :class:`ipaddress.IPv4Network` and :class:`ipaddress.IPv6Network` now
506 accept an ``(address, netmask)`` tuple argument, so as to easily construct
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200507 network objects from existing addresses. (Contributed by Peter Moody
508 and Antoine Pitrou in :issue:`16531`.)
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200509
Berker Peksag39e4c4d2014-11-10 09:56:54 +0200510json
511----
512
513* The output of :mod:`json.tool` command line interface is now in the same
514 order as the input. Use the :option:`--sort-keys` option to sort the output
515 of dictionaries alphabetically by key. (Contributed by Berker Peksag in
516 :issue:`21650`.)
517
Serhiy Storchaka47efb4a2015-01-26 13:16:30 +0200518* JSON decoder now raises :exc:`json.JSONDecodeError` instead of
519 :exc:`ValueError`. (Contributed by Serhiy Storchaka in :issue:`19361`.)
520
Zachary Ware63f277b2014-06-19 09:46:37 -0500521os
522--
523
Victor Stinner37f20342015-03-10 13:29:41 +0100524* New :func:`os.scandir` function that exposes file information from
525 the operating system when listing a directory. :func:`os.scandir`
526 returns an iterator of :class:`os.DirEntry` objects corresponding to
527 the entries in the directory given by *path*. (Contributed by Ben
528 Hoyt with the help of Victor Stinner in :issue:`22524`.)
Victor Stinner6036e442015-03-08 01:58:04 +0100529
Victor Stinnere1d24f72014-07-24 12:44:07 +0200530* :class:`os.stat_result` now has a :attr:`~os.stat_result.st_file_attributes`
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200531 attribute on Windows. (Contributed by Ben Hoyt in :issue:`21719`.)
Zachary Ware63f277b2014-06-19 09:46:37 -0500532
Serhiy Storchaka38220932015-03-31 15:31:53 +0300533os.path
534-------
535
536* New :func:`~os.path.commonpath` function that extracts common path prefix.
537 Unlike the :func:`~os.path.commonprefix` function, it always returns a valid
538 patch. (Contributed by Rafik Draoui and Serhiy Storchaka in :issue:`10395`.)
539
Serhiy Storchaka58e41342015-03-31 14:07:24 +0300540pickle
541------
542
543* Serializing more "lookupable" objects (such as unbound methods or nested
544 classes) now are supported with pickle protocols < 4.
545 (Contributed by Serhiy Storchaka in :issue:`23611`.)
546
R David Murrayb8cd3e42015-05-16 15:05:53 -0400547poplib
548------
549
550* A new command :meth:`~poplib.POP3.utf8` enables :rfc:`6856`
551 (internationalized email) support if the POP server supports it. (Contributed
552 by Milan OberKirch in :issue:`21804`.)
553
Serhiy Storchaka9baa5b22014-09-29 22:49:23 +0300554re
555--
556
557* Number of capturing groups in regular expression is no longer limited by 100.
558 (Contributed by Serhiy Storchaka in :issue:`22437`.)
559
Serhiy Storchaka7438e4b2014-10-10 11:06:31 +0300560* Now unmatched groups are replaced with empty strings in :func:`re.sub`
561 and :func:`re.subn`. (Contributed by Serhiy Storchaka in :issue:`1519638`.)
562
Mark Dickinsona5d0c7c2015-01-11 11:55:29 +0000563math
564----
565
566* :data:`math.inf` and :data:`math.nan` constants added. (Contributed by Mark
567 Dickinson in :issue:`23185`.)
568
R David Murray6ffface2014-06-11 14:40:13 -0400569shutil
570------
571
572* :func:`~shutil.move` now accepts a *copy_function* argument, allowing,
573 for example, :func:`~shutil.copy` to be used instead of the default
574 :func:`~shutil.copy2` if there is a need to ignore metadata. (Contributed by
575 Claudiu Popa in :issue:`19840`.)
576
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200577signal
578------
Brett Cannona04dbe42014-04-04 13:53:38 -0400579
Victor Stinnerbbe38032015-04-01 16:32:32 +0200580* On Windows, :func:`signal.set_wakeup_fd` now also supports socket handles.
581 (Contributed by Victor Stinner in :issue:`22018`.)
582
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200583* Different constants of :mod:`signal` module are now enumeration values using
584 the :mod:`enum` module. This allows meaningful names to be printed during
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200585 debugging, instead of integer “magic numbers”. (Contributed by Giampaolo
586 Rodola' in :issue:`21076`.)
R David Murray1976d9b2014-04-14 20:28:36 -0400587
R David Murray554bcbf2014-06-11 11:18:08 -0400588smtpd
589-----
590
591* Both :class:`~smtpd.SMTPServer` and :class:`smtpd.SMTPChannel` now accept a
592 *decode_data* keyword to determine if the DATA portion of the SMTP
593 transaction is decoded using the ``utf-8`` codec or is instead provided to
594 :meth:`~smtpd.SMTPServer.process_message` as a byte string. The default
595 is ``True`` for backward compatibility reasons, but will change to ``False``
R David Murraya33df312015-05-11 12:11:40 -0400596 in Python 3.6. If *decode_data* is set to ``False``, the
597 :meth:`~smtpd.SMTPServer.process_message` method must be prepared to accept
598 keyword arguments. (Contributed by Maciej Szulik in :issue:`19662`.)
599
600* :class:`~smtpd.SMTPServer` now advertises the ``8BITMIME`` extension
601 (:rfc:`6152`) if if *decode_data* has been set ``True``. If the client
602 specifies ``BODY=8BITMIME`` on the ``MAIL`` command, it is passed to
603 :meth:`~smtpd.SMTPServer.process_message` via the ``mail_options`` keyword.
604 (Contributed by Milan Oberkirch and R. David Murray in :issue:`21795`.)
605
606* :class:`~smtpd.SMTPServer` now supports the ``SMTPUTF8`` extension
607 (:rfc:`6531`: Internationalized Email). If the client specified ``SMTPUTF8
608 BODY=8BITMIME`` on the ``MAIL`` command, they are passed to
609 :meth:`~smtpd.SMTPServer.process_message` via the ``mail_options`` keyword.
610 It is the responsibility of the :meth:`~smtpd.SMTPServer.process_message`
611 method to correctly handle the ``SMTPUTF8`` data. (Contributed by Milan
612 Oberkirch in :issue:`21725`.)
R David Murray554bcbf2014-06-11 11:18:08 -0400613
R David Murray6fe56a32014-06-11 13:48:58 -0400614* It is now possible to provide, directly or via name resolution, IPv6
615 addresses in the :class:`~smtpd.SMTPServer` constructor, and have it
616 successfully connect. (Contributed by Milan Oberkirch in :issue:`14758`.)
617
R David Murray76e13c12014-07-03 14:47:46 -0400618smtplib
619-------
620
621* A new :meth:`~smtplib.SMTP.auth` method provides a convenient way to
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200622 implement custom authentication mechanisms.
623 (Contributed by Milan Oberkirch in :issue:`15014`.)
R David Murray76e13c12014-07-03 14:47:46 -0400624
R David Murray0c49b892015-04-16 17:14:42 -0400625* Additional debuglevel (2) shows timestamps for debug messages in
626 :class:`smtplib.SMTP`. (Contributed by Gavin Chappell and Maciej Szulik in
627 :issue:`16914`.)
628
R David Murray83084442015-05-17 19:27:22 -0400629* :mod:`smtplib` now supports :rfc:`6531` (SMTPUTF8) in both the
630 :meth:`~smtplib.SMTP.sendmail` and :meth:`~smtplib.SMTP.send_message`
631 commands. (Contributed by Milan Oberkirch and R. David Murray in
632 :issue:`22027`.)
R David Murraycee7cf62015-05-16 13:58:14 -0400633
R David Murray4487dd02014-10-09 16:59:30 -0400634sndhdr
635------
636
637* :func:`~sndhdr.what` and :func:`~sndhdr.whathdr` now return
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200638 :func:`~collections.namedtuple`.
639 (Contributed by Claudiu Popa in :issue:`18615`.)
R David Murray4487dd02014-10-09 16:59:30 -0400640
Giampaolo Rodola'915d1412014-06-11 03:54:30 +0200641socket
642------
643
644* New :meth:`socket.socket.sendfile` method allows to send a file over a socket
645 by using high-performance :func:`os.sendfile` function on UNIX resulting in
646 uploads being from 2x to 3x faster than when using plain
647 :meth:`socket.socket.send`.
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200648 (Contributed by Giampaolo Rodola' in :issue:`17552`.)
Giampaolo Rodola'915d1412014-06-11 03:54:30 +0200649
Gregory P. Smith6e730002015-04-14 16:14:25 -0700650subprocess
651----------
652
653* The new :func:`subprocess.run` function runs subprocesses and returns a
654 :class:`subprocess.CompletedProcess` object. It Provides a more consistent
655 API than :func:`~subprocess.call`, :func:`~subprocess.check_call` and
656 :func:`~subprocess.check_output`.
657
Eric V. Smith7a803892015-04-15 10:27:58 -0400658sysconfig
659---------
660
661* The user scripts directory on Windows is now versioned.
662 (Contributed by Paul Moore in :issue:`23437`.)
663
664tarfile
665-------
666
667* The :func:`tarfile.open` function now supports ``'x'`` (exclusive creation)
668 mode. (Contributed by Berker Peksag in :issue:`21717`.)
669
670* The :meth:`~tarfile.TarFile.extractall` and :meth:`~tarfile.TarFile.extract`
671 methods now take a keyword parameter *numeric_only*. If set to ``True``,
672 the extracted files and directories will be owned by the numeric uid and gid
673 from the tarfile. If set to ``False`` (the default, and the behavior in
674 versions prior to 3.5), they will be owned bythe named user and group in the
675 tarfile. (Contributed by Michael Vogt and Eric Smith in :issue:`23193`.)
676
Victor Stinnerae586492014-09-02 23:18:25 +0200677time
678----
679
Berker Peksag882c95c2014-10-09 11:46:56 +0300680* The :func:`time.monotonic` function is now always available. (Contributed by
681 Victor Stinner in :issue:`22043`.)
Victor Stinnerae586492014-09-02 23:18:25 +0200682
Zachary Ware7dc9dea2015-05-22 11:36:53 -0500683tkinter
684-------
685
Nick Coghland5cacbb2015-05-23 22:24:10 +1000686* The :mod:`tkinter._fix` module used for setting up the Tcl/Tk environment
Zachary Ware7dc9dea2015-05-22 11:36:53 -0500687 on Windows has been replaced by a private function in the :module:`_tkinter`
688 module which makes no permanent changes to environment variables.
689 (Contributed by Zachary Ware in :issue:`20035`.)
690
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400691types
692-----
693
694* New :func:`~types.coroutine` function. (Contributed by Yury Selivanov
695 in :issue:`24017`.)
696
Berker Peksagbd09d7b2015-02-11 15:32:34 +0200697urllib
698------
Nick Coghlanc216c482014-11-12 23:33:50 +1000699
R David Murray4c7f9952015-04-16 16:36:18 -0400700* A new :class:`~urllib.request.HTTPPasswordMgrWithPriorAuth` allows HTTP Basic
701 Authentication credentials to be managed so as to eliminate unnecessary
702 ``401`` response handling, or to unconditionally send credentials
703 on the first request in order to communicate with servers that return a
704 ``404`` response instead of a ``401`` if the ``Authorization`` header is not
705 sent. (Contributed by Matej Cepl in :issue:`19494` and Akshit Khurana in
706 :issue:`7159`.)
Nick Coghlanc216c482014-11-12 23:33:50 +1000707
R David Murrayc17686f2015-05-17 20:44:50 -0400708* A new :func:`~urllib.parse.urlencode` parameter *quote_via* provides a way to
709 control the encoding of query parts if needed. (Contributed by Samwyse and
710 Arnon Yaari in :issue:`13866`.)
711
Berker Peksag3e887222014-07-02 08:37:22 +0300712wsgiref
713-------
714
715* *headers* parameter of :class:`wsgiref.headers.Headers` is now optional.
716 (Contributed by Pablo Torres Navarrete and SilentGhost in :issue:`5800`.)
717
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200718xmlrpc
719------
720
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200721* :class:`xmlrpc.client.ServerProxy` is now a :term:`context manager`.
722 (Contributed by Claudiu Popa in :issue:`20627`.)
Brett Cannon6eaac132014-05-09 12:28:22 -0400723
Serhiy Storchaka61de0872015-04-02 21:00:13 +0300724xml.sax
725-------
726
727* SAX parsers now support a character stream of
728 :class:`~xml.sax.xmlreader.InputSource` object.
729 (Contributed by Serhiy Storchaka in :issue:`2175`.)
730
Victor Stinner95bb7142015-03-12 15:32:03 +0100731faulthandler
732------------
733
734* :func:`~faulthandler.enable`, :func:`~faulthandler.register`,
735 :func:`~faulthandler.dump_traceback` and
736 :func:`~faulthandler.dump_traceback_later` functions now accept file
737 descriptors. (Contributed by Wei Wu in :issue:`23566`.)
738
Serhiy Storchaka77d89972015-03-23 01:09:35 +0200739zipfile
740-------
741
742* Added support for writing ZIP files to unseekable streams.
743 (Contributed by Serhiy Storchaka in :issue:`23252`.)
744
Serhiy Storchaka764fc9b2015-03-25 10:09:41 +0200745* The :func:`zipfile.ZipFile.open` function now supports ``'x'`` (exclusive
746 creation) mode. (Contributed by Serhiy Storchaka in :issue:`21717`.)
747
Victor Stinner01adf062014-03-18 00:53:32 +0100748
749Optimizations
750=============
751
Antoine Pitroub9d9ce72014-05-15 22:47:33 +0200752The following performance enhancements have been added:
Victor Stinner01adf062014-03-18 00:53:32 +0100753
Victor Stinner37f20342015-03-10 13:29:41 +0100754* :func:`os.walk` has been sped up by 3-5x on POSIX systems and 7-20x
755 on Windows. This was done using the new :func:`os.scandir` function,
756 which exposes file information from the underlying ``readdir`` and
757 ``FindFirstFile``/``FindNextFile`` system calls. (Contributed by
758 Ben Hoyt with help from Victor Stinner in :issue:`23605`.)
759
Brett Cannonf299abd2015-04-13 14:21:02 -0400760* Construction of ``bytes(int)`` (filled by zero bytes) is faster and uses less
Victor Stinner2bc4d952014-06-02 22:22:42 +0200761 memory for large objects. ``calloc()`` is used instead of ``malloc()`` to
Victor Stinnerdb067af2014-05-02 22:31:14 +0200762 allocate memory for these objects.
Victor Stinner01adf062014-03-18 00:53:32 +0100763
Antoine Pitrou0dfce562014-05-15 22:55:40 +0200764* Some operations on :class:`~ipaddress.IPv4Network` and
765 :class:`~ipaddress.IPv6Network` have been massively sped up, such as
766 :meth:`~ipaddress.IPv4Network.subnets`, :meth:`~ipaddress.IPv4Network.supernet`,
767 :func:`~ipaddress.summarize_address_range`, :func:`~ipaddress.collapse_addresses`.
768 The speed up can range from 3x to 15x.
769 (:issue:`21486`, :issue:`21487`, :issue:`20826`)
770
Serhiy Storchaka87d0b452015-02-03 11:30:10 +0200771* Many operations on :class:`io.BytesIO` are now 50% to 100% faster.
Berker Peksag9121fe82015-02-15 00:45:57 +0200772 (Contributed by Serhiy Storchaka in :issue:`15381` and David Wilson in
773 :issue:`22003`.)
Serhiy Storchaka87d0b452015-02-03 11:30:10 +0200774
Serhiy Storchakac1efe5f2015-02-11 15:54:54 +0200775* :func:`marshal.dumps` is now faster (65%-85% with versions 3--4, 20-25% with
776 versions 0--2 on typical data, and up to 5x in best cases).
777 (Contributed by Serhiy Storchaka in :issue:`20416` and :issue:`23344`.)
Serhiy Storchakace921c622015-02-11 15:53:31 +0200778
Serhiy Storchaka0d4df752015-05-12 23:12:45 +0300779* The UTF-32 encoder is now 3x to 7x faster. (Contributed by Serhiy Storchaka
780 in :issue:`15027`.)
781
Victor Stinner01adf062014-03-18 00:53:32 +0100782
783Build and C API Changes
784=======================
785
786Changes to Python's build process and to the C API include:
787
Victor Stinnerdb067af2014-05-02 22:31:14 +0200788* New ``calloc`` functions:
789
790 * :c:func:`PyMem_RawCalloc`
791 * :c:func:`PyMem_Calloc`
792 * :c:func:`PyObject_Calloc`
793 * :c:func:`_PyObject_GC_Calloc`
Victor Stinner01adf062014-03-18 00:53:32 +0100794
795
796Deprecated
797==========
798
799Unsupported Operating Systems
800-----------------------------
801
Zachary Ware38019d12015-04-13 15:51:59 -0500802* Windows XP - Per :PEP:`11`, Microsoft support of Windows XP has ended.
Victor Stinner01adf062014-03-18 00:53:32 +0100803
804
805Deprecated Python modules, functions and methods
806------------------------------------------------
807
Brett Cannona77d0c32014-03-21 10:52:33 -0400808* The :mod:`formatter` module has now graduated to full deprecation and is still
809 slated for removal in Python 3.6.
Victor Stinner01adf062014-03-18 00:53:32 +0100810
R David Murray554bcbf2014-06-11 11:18:08 -0400811* :mod:`smtpd` has in the past always decoded the DATA portion of email
812 messages using the ``utf-8`` codec. This can now be controlled by the new
813 *decode_data* keyword to :class:`~smtpd.SMTPServer`. The default value is
814 ``True``, but this default is deprecated. Specify the *decode_data* keyword
815 with an appropriate value to avoid the deprecation warning.
816
R David Murray1813c172015-03-29 17:09:21 -0400817* Directly assigning values to the :attr:`~http.cookies.Morsel.key`,
818 :attr:`~http.cookies.Morsel.value` and
819 :attr:`~http.cookies.Morsel.coded_value` of :class:`~http.cookies.Morsel`
820 objects is deprecated. Use the :func:`~http.cookies.Morsel.set` method
821 instead. In addition, the undocumented *LegalChars* parameter of
822 :func:`~http.cookies.Morsel.set` is deprecated, and is now ignored.
Serhiy Storchaka9c1a9b22015-03-18 10:59:57 +0200823
Serhiy Storchakab876df42015-03-24 22:30:46 +0200824* Passing a format string as keyword argument *format_string* to the
825 :meth:`~string.Formatter.format` method of the :class:`string.Formatter`
826 class has been deprecated.
827
Berker Peksag2f3742b2015-05-13 12:32:20 +0300828* :func:`platform.dist` and :func:`platform.linux_distribution` functions are
829 now deprecated and will be removed in Python 3.7. Linux distributions use
830 too many different ways of describing themselves, so the functionality is
831 left to a package.
832 (Contributed by Vajrasky Kok and Berker Peksag in :issue:`1322`.)
Victor Stinner01adf062014-03-18 00:53:32 +0100833
Benjamin Petersonb1cc37c2015-05-20 22:09:43 -0500834* The previously undocumented ``from_function`` and ``from_builtin`` methods of
835 :class:`inspect.Signature` are deprecated. Use new
Yury Selivanov57c74fc2015-05-20 23:07:02 -0400836 :meth:`inspect.Signature.from_callable` instead. (Contributed by Yury
837 Selivanov in :issue:`24248`.)
838
Yury Selivanov945fff42015-05-22 16:28:05 -0400839* :func:`inspect.getargspec` is deprecated and scheduled to be removed in
840 Python 3.6. (See :issue:`20438` for details.)
841
842* :func:`~inspect.getfullargspec`, :func:`~inspect.getargvalues`,
843 :func:`~inspect.getcallargs`, :func:`~inspect.getargvalues`,
844 :func:`~inspect.formatargspec`, and :func:`~inspect.formatargvalues` are
845 deprecated in favor of :func:`inspect.signature` API. (See :issue:`20438`
846 for details.)
847
848
Victor Stinner01adf062014-03-18 00:53:32 +0100849Deprecated functions and types of the C API
850-------------------------------------------
851
852* None yet.
853
854
855Deprecated features
856-------------------
857
858* None yet.
859
860
R David Murraydf75fee2014-10-03 13:02:47 -0400861Removed
862=======
863
Berker Peksag8f791d32014-11-01 10:45:57 +0200864API and Feature Removals
865------------------------
866
867The following obsolete and previously deprecated APIs and features have been
868removed:
869
R David Murraydf75fee2014-10-03 13:02:47 -0400870* The ``__version__`` attribute has been dropped from the email package. The
871 email code hasn't been shipped separately from the stdlib for a long time,
872 and the ``__version__`` string was not updated in the last few releases.
873
Berker Peksag8f791d32014-11-01 10:45:57 +0200874* The internal ``Netrc`` class in the :mod:`ftplib` module was deprecated in
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200875 3.4, and has now been removed.
876 (Contributed by Matt Chaput in :issue:`6623`.)
R David Murraydf75fee2014-10-03 13:02:47 -0400877
Brett Cannonf299abd2015-04-13 14:21:02 -0400878* The concept of ``.pyo`` files has been removed.
879
R David Murraye81a7732015-04-12 18:47:56 -0400880* The JoinableQueue class in the provisional asyncio module was deprecated
881 in 3.4.4 and is now removed (:issue:`23464`).
882
883
Victor Stinner01adf062014-03-18 00:53:32 +0100884Porting to Python 3.5
885=====================
886
887This section lists previously described changes and other bugfixes
888that may require changes to your code.
889
Victor Stinnerdb067af2014-05-02 22:31:14 +0200890Changes in the Python API
891-------------------------
892
Victor Stinnerf70e1ca2015-03-30 21:16:11 +0200893* :pep:`475`: Examples of functions which are now retried when interrupted
894 instead of raising :exc:`InterruptedError` if the signal handler does not
895 raise an exception:
Victor Stinnera766ddf2015-03-26 23:50:57 +0100896
Victor Stinner45ca48b2015-03-31 12:10:33 +0200897 - :func:`open`, :func:`os.open`, :func:`io.open`
Victor Stinneracd8e7c2015-04-02 13:56:29 +0200898 - functions of the :mod:`faulthandler` module
899 - :mod:`os` functions:
900
901 * :func:`os.fchdir`
902 * :func:`os.fchmod`
903 * :func:`os.fchown`
904 * :func:`os.fdatasync`
905 * :func:`os.fstat`
906 * :func:`os.fstatvfs`
907 * :func:`os.fsync`
908 * :func:`os.ftruncate`
909 * :func:`os.mkfifo`
910 * :func:`os.mknod`
911 * :func:`os.posix_fadvise`
912 * :func:`os.posix_fallocate`
913 * :func:`os.pread`
914 * :func:`os.pwrite`
915 * :func:`os.read`
916 * :func:`os.readv`
917 * :func:`os.sendfile`
918 * :func:`os.wait3`
919 * :func:`os.wait4`
920 * :func:`os.wait`
921 * :func:`os.waitid`
922 * :func:`os.waitpid`
923 * :func:`os.write`
924 * :func:`os.writev`
925 * special cases: :func:`os.close` and :func:`os.dup2` now ignore
926 :py:data:`~errno.EINTR` error, the syscall is not retried (see the PEP
927 for the rationale)
928
Victor Stinner4448c082015-03-31 11:48:34 +0200929 - :func:`select.select`, :func:`select.poll.poll`, :func:`select.epoll.poll`,
Victor Stinner45ca48b2015-03-31 12:10:33 +0200930 :func:`select.kqueue.control`, :func:`select.devpoll.poll`
Victor Stinner708d9ba2015-04-02 11:49:42 +0200931 - :func:`socket.socket` methods:
932
933 * :meth:`~socket.socket.accept`
Victor Stinner81c41db2015-04-02 11:50:57 +0200934 * :meth:`~socket.socket.connect` (except for non-blocking sockets)
Victor Stinner708d9ba2015-04-02 11:49:42 +0200935 * :meth:`~socket.socket.recv`
936 * :meth:`~socket.socket.recvfrom`
937 * :meth:`~socket.socket.recvmsg`
938 * :meth:`~socket.socket.send`
939 * :meth:`~socket.socket.sendall`
940 * :meth:`~socket.socket.sendmsg`
941 * :meth:`~socket.socket.sendto`
942
Victor Stinnereb011cb2015-03-31 12:19:15 +0200943 - :func:`signal.sigtimedwait`, :func:`signal.sigwaitinfo`
Victor Stinnera766ddf2015-03-26 23:50:57 +0100944 - :func:`time.sleep`
945
Benjamin Petersonee6bdc02014-03-20 18:00:35 -0500946* Before Python 3.5, a :class:`datetime.time` object was considered to be false
947 if it represented midnight in UTC. This behavior was considered obscure and
948 error-prone and has been removed in Python 3.5. See :issue:`13936` for full
949 details.
Antoine Pitrou92c4d452014-04-29 10:05:59 +0200950
951* :meth:`ssl.SSLSocket.send()` now raises either :exc:`ssl.SSLWantReadError`
952 or :exc:`ssl.SSLWantWriteError` on a non-blocking socket if the operation
953 would block. Previously, it would return 0. See :issue:`20951`.
Victor Stinnerdb067af2014-05-02 22:31:14 +0200954
Victor Stinner40ee3012014-06-16 15:59:28 +0200955* The ``__name__`` attribute of generator is now set from the function name,
956 instead of being set from the code name. Use ``gen.gi_code.co_name`` to
957 retrieve the code name. Generators also have a new ``__qualname__``
958 attribute, the qualified name, which is now used for the representation
959 of a generator (``repr(gen)``). See :issue:`21205`.
960
Ezio Melotti045160b2014-08-02 18:54:30 +0300961* The deprecated "strict" mode and argument of :class:`~html.parser.HTMLParser`,
962 :meth:`HTMLParser.error`, and the :exc:`HTMLParserError` exception have been
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200963 removed. (Contributed by Ezio Melotti in :issue:`15114`.)
Ezio Melotti045160b2014-08-02 18:54:30 +0300964 The *convert_charrefs* argument of :class:`~html.parser.HTMLParser` is
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200965 now ``True`` by default. (Contributed by Berker Peksag in :issue:`21047`.)
Ezio Melotti045160b2014-08-02 18:54:30 +0300966
R David Murray861470c2014-10-05 11:47:01 -0400967* Although it is not formally part of the API, it is worth noting for porting
968 purposes (ie: fixing tests) that error messages that were previously of the
969 form "'sometype' does not support the buffer protocol" are now of the form "a
Serhiy Storchakac1ded292014-11-02 19:22:02 +0200970 bytes-like object is required, not 'sometype'". (Contributed by Ezio Melotti
971 in :issue:`16518`.)
R David Murray861470c2014-10-05 11:47:01 -0400972
Brett Cannonb6e25562014-11-21 12:19:28 -0500973* If the current directory is set to a directory that no longer exists then
974 :exc:`FileNotFoundError` will no longer be raised and instead
975 :meth:`~importlib.machinery.FileFinder.find_spec` will return ``None``
976 **without** caching ``None`` in :data:`sys.path_importer_cache` which is
977 different than the typical case (:issue:`22834`).
978
Berker Peksag088ca8b2015-02-06 10:17:49 +0200979* HTTP status code and messages from :mod:`http.client` and :mod:`http.server`
980 were refactored into a common :class:`~http.HTTPStatus` enum. The values in
981 :mod:`http.client` and :mod:`http.server` remain available for backwards
982 compatibility. (Contributed by Demian Brecht in :issue:`21793`.)
Serhiy Storchakae4db7692014-12-23 16:28:28 +0200983
Brett Cannon02d84542015-01-09 11:39:21 -0500984* When an import loader defines :meth:`~importlib.machinery.Loader.exec_module`
985 it is now expected to also define
986 :meth:`~importlib.machinery.Loader.create_module` (raises a
987 :exc:`DeprecationWarning` now, will be an error in Python 3.6). If the loader
988 inherits from :class:`importlib.abc.Loader` then there is nothing to do, else
989 simply define :meth:`~importlib.machinery.Loader.create_module` to return
990 ``None`` (:issue:`23014`).
991
Serhiy Storchaka83e80272015-02-03 11:04:19 +0200992* :func:`re.split` always ignored empty pattern matches, so the ``'x*'``
993 pattern worked the same as ``'x+'``, and the ``'\b'`` pattern never worked.
994 Now :func:`re.split` raises a warning if the pattern could match
995 an empty string. For compatibility use patterns that never match an empty
996 string (e.g. ``'x+'`` instead of ``'x*'``). Patterns that could only match
997 an empty string (such as ``'\b'``) now raise an error.
998
R David Murray1813c172015-03-29 17:09:21 -0400999* The :class:`~http.cookies.Morsel` dict-like interface has been made self
1000 consistent: morsel comparison now takes the :attr:`~http.cookies.Morsel.key`
1001 and :attr:`~http.cookies.Morsel.value` into account,
1002 :meth:`~http.cookies.Morsel.copy` now results in a
R David Murrayba6ea9b2015-03-30 11:48:50 -04001003 :class:`~http.cookies.Morsel` instance rather than a :class:`dict`, and
1004 :meth:`~http.cookies.Morsel.update` will now raise an exception if any of the
R David Murray1813c172015-03-29 17:09:21 -04001005 keys in the update dictionary are invalid. In addition, the undocumented
1006 *LegalChars* parameter of :func:`~http.cookies.Morsel.set` is deprecated and
1007 is now ignored. (:issue:`2211`)
1008
Brett Cannonf299abd2015-04-13 14:21:02 -04001009* :pep:`488` has removed ``.pyo`` files from Python and introduced the optional
1010 ``opt-`` tag in ``.pyc`` file names. The
1011 :func:`importlib.util.cache_from_source` has gained an *optimization*
1012 parameter to help control the ``opt-`` tag. Because of this, the
1013 *debug_override* parameter of the function is now deprecated. `.pyo` files
1014 are also no longer supported as a file argument to the Python interpreter and
1015 thus serve no purpose when distributed on their own (i.e. sourcless code
1016 distribution). Due to the fact that the magic number for bytecode has changed
1017 in Python 3.5, all old `.pyo` files from previous versions of Python are
1018 invalid regardless of this PEP.
1019
Larry Hastingsa6cc5512015-04-13 17:48:40 -04001020 * The :mod:`socket` module now exports the CAN_RAW_FD_FRAMES constant on linux
1021 3.6 and greater.
1022
R David Murray2b781292015-04-16 12:15:09 -04001023* The `pygettext.py` Tool now uses the standard +NNNN format for timezones in
1024 the POT-Creation-Date header.
1025
R David Murray0c49b892015-04-16 17:14:42 -04001026* The :mod:`smtplib` module now uses :data:`sys.stderr` instead of previous
1027 module level :data:`stderr` variable for debug output. If your (test)
1028 program depends on patching the module level variable to capture the debug
1029 output, you will need to update it to capture sys.stderr instead.
1030
Victor Stinnerdb067af2014-05-02 22:31:14 +02001031Changes in the C API
1032--------------------
1033
Stefan Krahf5324d72015-01-29 14:29:51 +01001034* The undocumented :c:member:`~PyMemoryViewObject.format` member of the
1035 (non-public) :c:type:`PyMemoryViewObject` structure has been removed.
1036
1037 All extensions relying on the relevant parts in ``memoryobject.h``
1038 must be rebuilt.
1039
Victor Stinnerd8f0d922014-06-02 21:57:10 +02001040* The :c:type:`PyMemAllocator` structure was renamed to
1041 :c:type:`PyMemAllocatorEx` and a new ``calloc`` field was added.
Serhiy Storchakadf4518c2014-11-18 23:34:33 +02001042
1043* Removed non-documented macro :c:macro:`PyObject_REPR` which leaked references.
1044 Use format character ``%R`` in :c:func:`PyUnicode_FromFormat`-like functions
1045 to format the :func:`repr` of the object.
Serhiy Storchaka490055a2015-03-01 10:03:02 +02001046
1047* Because the lack of the :attr:`__module__` attribute breaks pickling and
1048 introspection, a deprecation warning now is raised for builtin type without
1049 the :attr:`__module__` attribute. Would be an AttributeError in future.
1050 (:issue:`20204`)
Yury Selivanov50960882015-05-12 00:15:05 -04001051
1052* As part of PEP 492 implementation, ``tp_reserved`` slot of
Yury Selivanovf3e40fa2015-05-21 11:50:30 -04001053 :c:type:`PyTypeObject` was replaced with a
1054 :c:member:`PyTypeObject.tp_as_async` slot.