blob: a19a2895828116d84956659becccac94fa50afa6 [file] [log] [blame]
Ned Deily4829bc62016-09-12 17:29:04 -04001****************************
2 What's New In Python 3.7
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.7, compared to 3.6.
49
Steve Dower3e7d93d2016-09-22 17:11:53 -070050For full details, see the :ref:`changelog <changelog>`.
Ned Deily4829bc62016-09-12 17:29:04 -040051
52.. 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.7 moves towards release,
56 so it's worth checking back even after reading earlier versions.
57
58
59Summary -- Release highlights
60=============================
61
62.. This section singles out the most important changes in Python 3.7.
63 Brevity is key.
64
65
66.. PEP-sized items next.
67
68
69
70New Features
71============
72
Nick Coghlan6ea41862017-06-11 13:16:15 +100073.. _whatsnew37-pep538:
74
75PEP 538: Legacy C Locale Coercion
76---------------------------------
77
78An ongoing challenge within the Python 3 series has been determining a sensible
79default strategy for handling the "7-bit ASCII" text encoding assumption
80currently implied by the use of the default C locale on non-Windows platforms.
81
82:pep:`538` updates the default interpreter command line interface to
83automatically coerce that locale to an available UTF-8 based locale as
84described in the documentation of the new :envvar:`PYTHONCOERCECLOCALE`
85environment variable. Automatically setting ``LC_CTYPE`` this way means that
86both the core interpreter and locale-aware C extensions (such as
87:mod:`readline`) will assume the use of UTF-8 as the default text encoding,
88rather than ASCII.
89
90The platform support definition in :pep:`11` has also been updated to limit
91full text handling support to suitably configured non-ASCII based locales.
92
93As part of this change, the default error handler for ``stdin`` and ``stdout``
94is now ``surrogateescape`` (rather than ``strict``) when using any of the
95defined coercion target locales (currently ``C.UTF-8``, ``C.utf8``, and
96``UTF-8``). The default error handler for ``stderr`` continues to be
97``backslashreplace``, regardless of locale.
98
Nick Coghlaneb817952017-06-18 12:29:42 +100099Locale coercion is silent by default, but to assist in debugging potentially
100locale related integration problems, explicit warnings (emitted directly on
101``stderr`` can be requested by setting ``PYTHONCOERCECLOCALE=warn``. This
102setting will also cause the Python runtime to emit a warning if the legacy C
103locale remains active when the core interpreter is initialized.
Nick Coghlan6ea41862017-06-11 13:16:15 +1000104
105.. seealso::
106
107 :pep:`538` -- Coercing the legacy C locale to a UTF-8 based locale
108 PEP written and implemented by Nick Coghlan.
Ned Deily4829bc62016-09-12 17:29:04 -0400109
110
111Other Language Changes
112======================
113
Serhiy Storchaka5bb8b912016-12-16 19:19:02 +0200114* More than 255 arguments can now be passed to a function, and a function can
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800115 now have more than 255 parameters. (Contributed by Serhiy Storchaka in
116 :issue:`12844` and :issue:`18896`.)
Ned Deily4829bc62016-09-12 17:29:04 -0400117
Serhiy Storchakadd1da7f2016-12-19 18:51:37 +0200118* :meth:`bytes.fromhex` and :meth:`bytearray.fromhex` now ignore all ASCII
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800119 whitespace, not only spaces. (Contributed by Robert Xiao in :issue:`28927`.)
Serhiy Storchakadd1da7f2016-12-19 18:51:37 +0200120
Matthias Bussonnier1bc15642017-02-22 07:06:50 -0800121* :exc:`ImportError` now displays module name and module ``__file__`` path when
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800122 ``from ... import ...`` fails. (Contributed by Matthias Bussonnier in :issue:`29546`.)
Matthias Bussonnier1bc15642017-02-22 07:06:50 -0800123
Serhiy Storchakaf93234b2017-05-09 22:31:05 +0300124* Circular imports involving absolute imports with binding a submodule to
125 a name are now supported.
126 (Contributed by Serhiy Storchaka in :issue:`30024`.)
127
Serhiy Storchaka7e19dbc2017-05-13 12:40:52 +0300128* ``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather than
129 ``format(str(self), '')``.
130 (Contributed by Serhiy Storchaka in :issue:`28974`.)
131
Ned Deily4829bc62016-09-12 17:29:04 -0400132
133New Modules
134===========
135
136* None yet.
137
138
139Improved Modules
140================
141
Pierre Quentelcc3fa202017-05-08 14:08:34 +0200142
R. David Murray0f6b9d22017-09-06 20:25:40 -0400143argparse
144--------
145
146The :meth:`~argparse.ArgumentParser.parse_intermixed_args` supports letting
147the user intermix options and positional arguments on the command line,
148as is possible in many unix commands. It supports most but not all
149argparse features. (Contributed by paul.j3 in :issue:`14191`.)
150
151
Xiang Zhang13f1f422017-05-03 11:16:21 +0800152binascii
153--------
154
155The :func:`~binascii.b2a_uu` function now accepts an optional *backtick*
156keyword argument. When it's true, zeros are represented by ``'`'``
157instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.)
158
Oz N Tiram8b7a4cc2017-06-06 11:35:59 +0200159
160calendar
161--------
162
Walter Dörwaldf5c58c72017-06-26 18:31:52 +0200163The class :class:`~calendar.HTMLCalendar` has new class attributes which ease
164the customisation of the CSS classes in the produced HTML calendar.
Oz N Tiram8b7a4cc2017-06-06 11:35:59 +0200165(Contributed by Oz Tiram in :issue:`30095`.)
166
167cgi
168---
169
170:func:`~cgi.parse_multipart` returns the same results as
171:class:`~FieldStorage` : for non-file fields, the value associated to a key
172is a list of strings, not bytes.
173(Contributed by Pierre Quentel in :issue:`29979`.)
174
Jelle Zijlstra2e624692017-04-30 18:25:58 -0700175contextlib
176----------
177
178:func:`contextlib.asynccontextmanager` has been added. (Contributed by
179Jelle Zijlstra in :issue:`29679`.)
180
Serhiy Storchaka1efbf922017-06-11 14:09:39 +0300181dis
182---
183
184The :func:`~dis.dis` function now is able to
185disassemble nested code objects (the code of comprehensions, generator
186expressions and nested functions, and the code used for building nested
187classes). (Contributed by Serhiy Storchaka in :issue:`11822`.)
188
Ryan Gonzalezf9f87f02017-04-14 04:00:25 -0500189distutils
190---------
191
192README.rst is now included in the list of distutils standard READMEs and
193therefore included in source distributions.
194(Contributed by Ryan Gonzalez in :issue:`11913`.)
195
Pierre Quentel351adda2017-04-02 12:26:12 +0200196http.server
197-----------
198
199:class:`~http.server.SimpleHTTPRequestHandler` supports the HTTP
200If-Modified-Since header. The server returns the 304 response status if the
201target file was not modified after the time specified in the header.
202(Contributed by Pierre Quentel in :issue:`29654`.)
203
Stéphane Wirtela17a2f52017-05-24 09:29:06 +0200204Add the parameter ``directory`` to the :class:`~http.server.SimpleHTTPRequestHandler`
205and the ``--directory`` to the command line of the module :mod:`~http.server`.
206With this parameter, the server serves the specified directory, by default it uses the current working directory.
207(Contributed by Stéphane Wirtel and Julien Palard in :issue:`28707`.)
208
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800209locale
210------
211
212Added another argument *monetary* in :meth:`format_string` of :mod:`locale`.
213If *monetary* is true, the conversion uses monetary thousands separator and
214grouping strings. (Contributed by Garvit in :issue:`10379`.)
215
Mark Dickinsona0ce3752017-04-05 18:34:27 +0100216math
217----
218
219New :func:`~math.remainder` function, implementing the IEEE 754-style remainder
220operation. (Contributed by Mark Dickinson in :issue:`29962`.)
221
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +0200222os
223--
224
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800225Added support for :class:`bytes` paths in :func:`~os.fwalk`. (Contributed by
226Serhiy Storchaka in :issue:`28682`.)
Serhiy Storchaka8f6b3442017-03-07 14:33:21 +0200227
Serhiy Storchakaea720fe2017-03-30 09:12:31 +0300228Added support for :ref:`file descriptors <path_fd>` in :func:`~os.scandir`
229on Unix. (Contributed by Serhiy Storchaka in :issue:`25996`.)
230
Antoine Pitrouf7ecfac2017-05-28 11:35:14 +0200231New function :func:`os.register_at_fork` allows registering Python callbacks
232to be executed on a process fork. (Contributed by Antoine Pitrou in
233:issue:`16500`.)
234
Barry Warsaw35425d62017-09-22 12:29:42 -0400235pdb
236---
237
238:func:`~pdb.set_trace` now takes an optional ``header`` keyword-only
239argument. If given, this is printed to the console just before debugging
240begins.
241
Barry Warsaw973b9012017-09-04 17:29:27 -0400242string
243------
244
245:class:`string.Template` now lets you to optionally modify the regular
246expression pattern for braced placeholders and non-braced placeholders
247separately. (Contributed by Barry Warsaw in :issue:`1198569`.)
248
Serhiy Storchakad9c956f2017-01-11 20:13:03 +0200249unittest.mock
250-------------
251
252The :const:`~unittest.mock.sentinel` attributes now preserve their identity
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800253when they are :mod:`copied <copy>` or :mod:`pickled <pickle>`. (Contributed by
254Serhiy Storchaka in :issue:`20804`.)
Serhiy Storchakad9c956f2017-01-11 20:13:03 +0200255
Xiang Zhang267b9d22017-02-28 17:12:52 +0800256xmlrpc.server
257-------------
258
259:meth:`register_function` of :class:`xmlrpc.server.SimpleXMLRPCDispatcher` and
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800260its subclasses can be used as a decorator. (Contributed by Xiang Zhang in
261:issue:`7769`.)
Xiang Zhang267b9d22017-02-28 17:12:52 +0800262
Benjamin Peterson279a9622017-06-22 22:31:08 -0700263unicodedata
264-----------
265
266The internal :mod:`unicodedata` database has been upgraded to use `Unicode 10
267<http://www.unicode.org/versions/Unicode10.0.0/>`_. (Contributed by Benjamin
268Peterson.)
269
Ratnadeep Debnath21024f02017-02-25 14:30:28 +0530270urllib.parse
271------------
272
Daniel Himmelsteindadca482017-08-10 21:45:12 -0400273:func:`urllib.parse.quote` has been updated from RFC 2396 to RFC 3986,
Ratnadeep Debnath21024f02017-02-25 14:30:28 +0530274adding `~` to the set of characters that is never quoted by default.
275(Contributed by Christian Theune and Ratnadeep Debnath in :issue:`16285`.)
276
Xiang Zhang13f1f422017-05-03 11:16:21 +0800277uu
278--
279
280Function :func:`~uu.encode` now accepts an optional *backtick*
281keyword argument. When it's true, zeros are represented by ``'`'``
282instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.)
283
Paul Moore0780bf72017-08-26 18:04:12 +0100284zipapp
285------
286
287Function :func:`zipapp.create_archive` now accepts an optional *filter*
288argument, to allow the user to select which files should be included in the
289archive.
290
Ned Deily4829bc62016-09-12 17:29:04 -0400291
292Optimizations
293=============
294
Yury Selivanovf2392132016-12-13 19:03:51 -0500295* Added two new opcodes: ``LOAD_METHOD`` and ``CALL_METHOD`` to avoid
296 instantiation of bound method objects for method calls, which results
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800297 in method calls being faster up to 20%. (Contributed by Yury Selivanov and
298 INADA Naoki in :issue:`26110`.)
Yury Selivanovf2392132016-12-13 19:03:51 -0500299
Serhiy Storchaka0a58f722017-03-30 09:11:10 +0300300* Searching some unlucky Unicode characters (like Ukrainian capital "Є")
301 in a string was to 25 times slower than searching other characters.
302 Now it is slower only by 3 times in worst case.
303 (Contributed by Serhiy Storchaka in :issue:`24821`.)
304
Serhiy Storchaka97553fd2017-03-11 23:37:16 +0200305* Fast implementation from standard C library is now used for functions
Paul Romano992f6132017-09-15 12:00:57 -0500306 :func:`~math.erf` and :func:`~math.erfc` in the :mod:`math` module.
307 (Contributed by Serhiy Storchaka in :issue:`26121`.)
Serhiy Storchaka97553fd2017-03-11 23:37:16 +0200308
Serhiy Storchakaea720fe2017-03-30 09:12:31 +0300309* The :func:`os.fwalk` function has been sped up by 2 times. This was done
310 using the :func:`os.scandir` function.
311 (Contributed by Serhiy Storchaka in :issue:`25996`.)
312
Serhiy Storchaka6d336a02017-05-09 23:37:14 +0300313* Optimized case-insensitive matching and searching of :mod:`regular
314 expressions <re>`. Searching some patterns can now be up to 20 times faster.
315 (Contributed by Serhiy Storchaka in :issue:`30285`.)
316
Giampaolo Rodolafbfaa6f2017-06-09 22:20:41 +0200317* :meth:`selectors.EpollSelector.modify`, :meth:`selectors.PollSelector.modify`
318 and :meth:`selectors.DevpollSelector.modify` may be around 10% faster under
319 heavy loads. (Contributed by Giampaolo Rodola' in :issue:`30014`)
Ned Deily4829bc62016-09-12 17:29:04 -0400320
321Build and C API Changes
322=======================
323
Zachary Waref40d4dd2016-09-17 01:25:24 -0500324* A full copy of libffi is no longer bundled for use when building the
325 :mod:`_ctypes <ctypes>` module on non-OSX UNIX platforms. An installed copy
326 of libffi is now required when building ``_ctypes`` on such platforms.
327 Contributed by Zachary Ware in :issue:`27979`.
Ned Deily4829bc62016-09-12 17:29:04 -0400328
Serhiy Storchaka007d7ff2016-11-22 07:58:08 +0200329* The fields :c:member:`name` and :c:member:`doc` of structures
330 :c:type:`PyMemberDef`, :c:type:`PyGetSetDef`,
331 :c:type:`PyStructSequence_Field`, :c:type:`PyStructSequence_Desc`,
332 and :c:type:`wrapperbase` are now of type ``const char *`` rather of
333 ``char *``. (Contributed by Serhiy Storchaka in :issue:`28761`.)
334
Serhiy Storchaka2a404b62017-01-22 23:07:07 +0200335* The result of :c:func:`PyUnicode_AsUTF8AndSize` and :c:func:`PyUnicode_AsUTF8`
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800336 is now of type ``const char *`` rather of ``char *``. (Contributed by Serhiy
337 Storchaka in :issue:`28769`.)
Serhiy Storchaka2a404b62017-01-22 23:07:07 +0200338
Serhiy Storchaka6e08baf2017-01-25 13:27:44 +0200339* Added functions :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices`.
340 (Contributed by Serhiy Storchaka in :issue:`27867`.)
341
Antoine Pitrouf7ecfac2017-05-28 11:35:14 +0200342* :c:func:`PyOS_AfterFork` is deprecated in favour of the new functions
343 :c:func:`PyOS_BeforeFork`, :c:func:`PyOS_AfterFork_Parent` and
344 :c:func:`PyOS_AfterFork_Child`. (Contributed by Antoine Pitrou in
345 :issue:`16500`.)
346
Zachary Warecb8c0482017-06-15 22:34:59 -0500347* The Windows build process no longer depends on Subversion to pull in external
348 sources, a Python script is used to download zipfiles from GitHub instead.
349 If Python 3.6 is not found on the system (via ``py -3.6``), NuGet is used to
350 download a copy of 32-bit Python for this purpose. (Contributed by Zachary
351 Ware in :issue:`30450`.)
352
Antoine Pitroua6a4dc82017-09-07 18:56:24 +0200353* Support for building ``--without-threads`` is removed.
354 (Contributed by Antoine Pitrou in :issue:`31370`.).
355
Ned Deily4829bc62016-09-12 17:29:04 -0400356
Nick Coghlan5a851672017-09-08 10:14:16 +1000357Other CPython Implementation Changes
358====================================
359
360* Trace hooks may now opt out of receiving ``line`` events from the interpreter
361 by setting the new ``f_trace_lines`` attribute to :const:`False` on the frame
362 being traced. (Contributed by Nick Coghlan in :issue:`31344`.)
363
364* Trace hooks may now opt in to receiving ``opcode`` events from the interpreter
365 by setting the new ``f_trace_opcodes`` attribute to :const:`True` on the frame
366 being traced. (Contributed by Nick Coghlan in :issue:`31344`.)
367
368
Ned Deily4829bc62016-09-12 17:29:04 -0400369Deprecated
370==========
371
Serhiy Storchaka6e08baf2017-01-25 13:27:44 +0200372- Function :c:func:`PySlice_GetIndicesEx` is deprecated and replaced with
373 a macro if ``Py_LIMITED_API`` is not set or set to the value between
374 ``0x03050400`` and ``0x03060000`` (not including) or ``0x03060100`` or
375 higher. (Contributed by Serhiy Storchaka in :issue:`27867`.)
Ned Deily4829bc62016-09-12 17:29:04 -0400376
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800377- Deprecated :meth:`format` from :mod:`locale`, use the :meth:`format_string`
378 instead. (Contributed by Garvit in :issue:`10379`.)
379
Matthias Bussonnier1d4601c2017-02-15 18:00:32 -0800380- Methods
381 :meth:`MetaPathFinder.find_module() <importlib.abc.MetaPathFinder.find_module>`
382 (replaced by
383 :meth:`MetaPathFinder.find_spec() <importlib.abc.MetaPathFinder.find_spec>`
384 ) and
385 :meth:`PathEntryFinder.find_loader() <importlib.abc.PathEntryFinder.find_loader>`
386 (replaced by
387 :meth:`PathEntryFinder.find_spec() <importlib.abc.PathEntryFinder.find_spec>`)
388 both deprecated in Python 3.4 now emit :exc:`DeprecationWarning`. (Contributed
389 by Matthias Bussonnier in :issue:`29576`)
390
Serhiy Storchakaf6595982017-03-12 13:15:01 +0200391- Using non-integer value for selecting a plural form in :mod:`gettext` is
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800392 now deprecated. It never correctly worked. (Contributed by Serhiy Storchaka
393 in :issue:`28692`.)
Serhiy Storchakaf6595982017-03-12 13:15:01 +0200394
Victor Stinner89a1c932017-05-15 11:01:21 +0200395- The :mod:`macpath` is now deprecated and will be removed in Python 3.8.
396
Ned Deily4829bc62016-09-12 17:29:04 -0400397
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200398Changes in the C API
399--------------------
400
401- The type of results of :c:func:`PyThread_start_new_thread` and
402 :c:func:`PyThread_get_thread_ident`, and the *id* parameter of
403 :c:func:`PyThreadState_SetAsyncExc` changed from :c:type:`long` to
404 :c:type:`unsigned long`.
405 (Contributed by Serhiy Storchaka in :issue:`6532`.)
406
Serhiy Storchakae613e6a2017-06-27 16:03:14 +0300407- :c:func:`PyUnicode_AsWideCharString` now raises a :exc:`ValueError` if the
408 second argument is *NULL* and the :c:type:`wchar_t*` string contains null
409 characters. (Contributed by Serhiy Storchaka in :issue:`30708`.)
410
Serhiy Storchakaaefa7eb2017-03-23 15:48:39 +0200411
Steve (Gadget) Barnes5b8f9722017-06-28 20:14:52 +0100412Windows Only
413------------
414- The python launcher, (py.exe), can accept 32 & 64 bit specifiers **without**
415 having to specify a minor version as well. So ``py -3-32`` and ``py -3-64``
416 become valid as well as ``py -3.7-32``, also the -*m*-64 and -*m.n*-64 forms
417 are now accepted to force 64 bit python even if 32 bit would have otherwise
418 been used. If the specified version is not available py.exe will error exit.
419 (Contributed by Steve Barnes in :issue:`30291`.)
420
421- The launcher can be run as "py -0" to produce a list of the installed pythons,
422 *with default marked with an asterix*. Running "py -0p" will include the paths.
423 If py is run with a version specifier that cannot be matched it will also print
424 the *short form* list of available specifiers.
425 (Contributed by Steve Barnes in :issue:`30362`.)
426
Ned Deily4829bc62016-09-12 17:29:04 -0400427Removed
428=======
429
Serhiy Storchakaff3dbe92016-12-06 19:25:19 +0200430API and Feature Removals
431------------------------
432
433* Unknown escapes consisting of ``'\'`` and an ASCII letter in replacement
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200434 templates for :func:`re.sub` were deprecated in Python 3.5, and will now
435 cause an error.
Ned Deily4829bc62016-09-12 17:29:04 -0400436
Serhiy Storchaka4f76fb12017-01-13 13:25:24 +0200437* Removed support of the *exclude* argument in :meth:`tarfile.TarFile.add`.
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200438 It was deprecated in Python 2.7 and 3.2. Use the *filter* argument instead.
Serhiy Storchaka4f76fb12017-01-13 13:25:24 +0200439
Serhiy Storchaka9ed707e2017-01-13 20:55:05 +0200440* The ``splitunc()`` function in the :mod:`ntpath` module was deprecated in
441 Python 3.1, and has now been removed. Use the :func:`~os.path.splitdrive`
442 function instead.
443
Raymond Hettinger8b57d732017-09-10 10:23:36 -0700444* :func:`collections.namedtuple` no longer supports the *verbose* parameter
445 or ``_source`` attribute which showed the generated source code for the
446 named tuple class. This was part of an optimization designed to speed-up
447 class creation. (Contributed by Jelle Zijlstra with further improvements
448 by INADA Naoki, Serhiy Storchaka, and Raymond Hettinger in :issue:`28638`.)
449
Serhiy Storchaka2e564242017-03-06 17:01:06 +0200450* Functions :func:`bool`, :func:`float`, :func:`list` and :func:`tuple` no
451 longer take keyword arguments. The first argument of :func:`int` can now
Daniel Porteous77f68e32017-06-21 10:21:48 +1000452 be passed only as positional argument.
Serhiy Storchaka2e564242017-03-06 17:01:06 +0200453
Serhiy Storchakaedef3582017-05-15 13:21:31 +0300454* Removed previously deprecated in Python 2.4 classes ``Plist``, ``Dict`` and
455 ``_InternalDict`` in the :mod:`plistlib` module. Dict values in the result
456 of functions :func:`~plistlib.readPlist` and
457 :func:`~plistlib.readPlistFromBytes` are now normal dicts. You no longer
458 can use attribute access to access items of these dictionaries.
459
Ned Deily4829bc62016-09-12 17:29:04 -0400460
461Porting to Python 3.7
462=====================
463
464This section lists previously described changes and other bugfixes
465that may require changes to your code.
466
467
Serhiy Storchaka009b0a12017-01-13 09:10:51 +0200468Changes in the Python API
469-------------------------
470
Sanyam Khuranab9c3da52017-06-13 22:41:14 +0530471* :meth:`pkgutil.walk_packages` now raises ValueError if *path* is a string.
472 Previously an empty list was returned. (Contributed by Sanyam Khurana in
473 :issue:`24744`.)
474
Serhiy Storchaka009b0a12017-01-13 09:10:51 +0200475* A format string argument for :meth:`string.Formatter.format`
476 is now :ref:`positional-only <positional-only_parameter>`.
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800477 Passing it as a keyword argument was deprecated in Python 3.5. (Contributed
478 by Serhiy Storchaka in :issue:`29193`.)
Serhiy Storchakacc283372017-01-13 09:23:15 +0200479
480* Attributes :attr:`~http.cookies.Morsel.key`,
481 :attr:`~http.cookies.Morsel.value` and
482 :attr:`~http.cookies.Morsel.coded_value` of class
483 :class:`http.cookies.Morsel` are now read-only.
Serhiy Storchakab2d61792017-01-13 21:14:40 +0200484 Assigning to them was deprecated in Python 3.5.
Serhiy Storchakacc283372017-01-13 09:23:15 +0200485 Use the :meth:`~http.cookies.Morsel.set` method for setting them.
486 (Contributed by Serhiy Storchaka in :issue:`29192`.)
INADA Naoki015bce62017-01-16 17:23:30 +0900487
INADA Naokicb41b272017-02-23 00:31:59 +0900488* ``Module``, ``FunctionDef``, ``AsyncFunctionDef``, and
489 ``ClassDef`` AST nodes now have a new ``docstring`` field.
490 The first statement in their body is not considered as a docstring
491 anymore. ``co_firstlineno`` and ``co_lnotab`` of code object for class
Garvit Khatri1cf93a72017-03-28 23:43:38 +0800492 and module are affected by this change. (Contributed by INADA Naoki and
493 Eugene Toder in :issue:`29463`.)
INADA Naoki015bce62017-01-16 17:23:30 +0900494
Serhiy Storchakae304e332017-03-24 13:27:42 +0200495* The *mode* argument of :func:`os.makedirs` no longer affects the file
496 permission bits of newly-created intermediate-level directories.
497 To set their file permission bits you can set the umask before invoking
498 ``makedirs()``.
499 (Contributed by Serhiy Storchaka in :issue:`19930`.)
500
Victor Stinnerf87b85f2017-06-23 15:11:12 +0200501* The :attr:`struct.Struct.format` type is now :class:`str` instead of
502 :class:`bytes`. (Contributed by Victor Stinner in :issue:`21071`.)
503
Segev Finer9f3bdcb2017-06-28 23:51:00 +0300504* Due to internal changes in :mod:`socket` you won't be able to
505 :func:`socket.fromshare` a socket :func:`~socket.socket.share`-ed in older
506 Python versions.
507
Utkarsh Upadhyay8e453182017-07-28 14:42:56 +0200508* ``repr`` for :class:`datetime.timedelta` has changed to include keyword arguments
509 in the output. (Contributed by Utkarsh Upadhyay in :issue:`30302`.)
510
Serhiy Storchakae304e332017-03-24 13:27:42 +0200511
INADA Naoki015bce62017-01-16 17:23:30 +0900512CPython bytecode changes
513------------------------
514
Martin Panter91a88662017-01-24 00:30:06 +0000515* Added two new opcodes: :opcode:`LOAD_METHOD` and :opcode:`CALL_METHOD`.
INADA Naoki015bce62017-01-16 17:23:30 +0900516 (Contributed by Yury Selivanov and INADA Naoki in :issue:`26110`.)