mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
whatsnew/3.5: Edits
Patch by Elvis Pranskevichus
This commit is contained in:
parent
d7f65e5763
commit
46a8b40ca8
1 changed files with 129 additions and 10 deletions
|
@ -114,7 +114,7 @@ CPython implementation improvements:
|
||||||
* Builtin and extension modules are now initialized in a multi-phase process,
|
* Builtin and extension modules are now initialized in a multi-phase process,
|
||||||
which is similar to how Python modules are loaded. (:pep:`489`).
|
which is similar to how Python modules are loaded. (:pep:`489`).
|
||||||
|
|
||||||
Significantly Improved Library Modules:
|
Significantly improved library modules:
|
||||||
|
|
||||||
* :class:`collections.OrderedDict` is now implemented in C, which makes it
|
* :class:`collections.OrderedDict` is now implemented in C, which makes it
|
||||||
4 to 100 times faster. (Contributed by Eric Snow in :issue:`16991`.)
|
4 to 100 times faster. (Contributed by Eric Snow in :issue:`16991`.)
|
||||||
|
@ -432,7 +432,7 @@ PEP 475: Retry system calls failing with EINTR
|
||||||
|
|
||||||
:pep:`475` adds support for automatic retry of system calls failing with
|
:pep:`475` adds support for automatic retry of system calls failing with
|
||||||
:py:data:`~errno.EINTR`: this means that user code doesn't have to deal with
|
:py:data:`~errno.EINTR`: this means that user code doesn't have to deal with
|
||||||
EINTR or :exc:`InterruptedError` manually, and should make it more robust
|
``EINTR`` or :exc:`InterruptedError` manually, and should make it more robust
|
||||||
against asynchronous signal reception.
|
against asynchronous signal reception.
|
||||||
|
|
||||||
Examples of functions which are now retried when interrupted by a signal
|
Examples of functions which are now retried when interrupted by a signal
|
||||||
|
@ -656,6 +656,13 @@ The :class:`~cgi.FieldStorage` class now supports the context management
|
||||||
protocol. (Contributed by Berker Peksag in :issue:`20289`.)
|
protocol. (Contributed by Berker Peksag in :issue:`20289`.)
|
||||||
|
|
||||||
|
|
||||||
|
csv
|
||||||
|
---
|
||||||
|
|
||||||
|
:meth:`Writer.writerow <csv.Writer.writerow>` now supports arbitrary iterables,
|
||||||
|
not just sequences. (Contributed by Serhiy Storchaka in :issue:`23171`.)
|
||||||
|
|
||||||
|
|
||||||
cmath
|
cmath
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -709,10 +716,15 @@ methods to match corresponding methods of :class:`str`.
|
||||||
collections.abc
|
collections.abc
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
The :meth:`Sequence.index <collections.abc.Sequence.index>` method now
|
||||||
|
accepts *start* and *stop* arguments to match the corresponding methods
|
||||||
|
of :class:`tuple`, :class:`list`, etc.
|
||||||
|
(Contributed by Devin Jeanpierre in :issue:`23086`.)
|
||||||
|
|
||||||
A new :class:`~collections.abc.Generator` abstract base class. (Contributed
|
A new :class:`~collections.abc.Generator` abstract base class. (Contributed
|
||||||
by Stefan Behnel in :issue:`24018`.)
|
by Stefan Behnel in :issue:`24018`.)
|
||||||
|
|
||||||
New :class:`~collections.abc.Coroutine`,
|
New :class:`~collections.abc.Awaitable` :class:`~collections.abc.Coroutine`,
|
||||||
:class:`~collections.abc.AsyncIterator`, and
|
:class:`~collections.abc.AsyncIterator`, and
|
||||||
:class:`~collections.abc.AsyncIterable` abstract base classes.
|
:class:`~collections.abc.AsyncIterable` abstract base classes.
|
||||||
(Contributed by Yury Selivanov in :issue:`24184`.)
|
(Contributed by Yury Selivanov in :issue:`24184`.)
|
||||||
|
@ -726,6 +738,9 @@ sumultaneously to perform parallel bytecode compilation.
|
||||||
The :func:`~compileall.compile_dir` function has a corresponding ``workers``
|
The :func:`~compileall.compile_dir` function has a corresponding ``workers``
|
||||||
parameter. (Contributed by Claudiu Popa in :issue:`16104`.)
|
parameter. (Contributed by Claudiu Popa in :issue:`16104`.)
|
||||||
|
|
||||||
|
Another new option, ``-r``, allows to control the maximum recursion
|
||||||
|
level for subdirectories. (Contributed by Claudiu Popa in :issue:`19628`.)
|
||||||
|
|
||||||
The ``-q`` command line option can now be specified more than once, in
|
The ``-q`` command line option can now be specified more than once, in
|
||||||
which case all output, including errors, will be suppressed. The corresponding
|
which case all output, including errors, will be suppressed. The corresponding
|
||||||
``quiet`` parameter in :func:`~compileall.compile_dir`,
|
``quiet`` parameter in :func:`~compileall.compile_dir`,
|
||||||
|
@ -742,6 +757,19 @@ The :meth:`Executor.map <concurrent.futures.Executor.map>` method now accepts a
|
||||||
:meth:`~concurrent.futures.ProcessPoolExecutor` is used.
|
:meth:`~concurrent.futures.ProcessPoolExecutor` is used.
|
||||||
(Contributed by Dan O'Reilly in :issue:`11271`.)
|
(Contributed by Dan O'Reilly in :issue:`11271`.)
|
||||||
|
|
||||||
|
A number of workers in :class:`~concurrent.futures.ThreadPoolExecutor` is
|
||||||
|
optional now. The default value equals to 5 times the number of CPUs.
|
||||||
|
(Contributed by Claudiu Popa in :issue:`21527`.)
|
||||||
|
|
||||||
|
|
||||||
|
configparser
|
||||||
|
------------
|
||||||
|
|
||||||
|
Config parsers can be customized by providing a dictionary of converters in the
|
||||||
|
constructor. All converters defined in config parser (either by subclassing or
|
||||||
|
by providing in a constructor) will be available on all section proxies.
|
||||||
|
(Contributed by Łukasz Langa in :issue:`18159`.)
|
||||||
|
|
||||||
|
|
||||||
contextlib
|
contextlib
|
||||||
----------
|
----------
|
||||||
|
@ -761,6 +789,13 @@ and :envvar:`COLS` environment variables. This is useful for detecting
|
||||||
manual screen resize. (Contributed by Arnon Yaari in :issue:`4254`.)
|
manual screen resize. (Contributed by Arnon Yaari in :issue:`4254`.)
|
||||||
|
|
||||||
|
|
||||||
|
dbm
|
||||||
|
---
|
||||||
|
|
||||||
|
:func:`dumb.open <dbm.dumb.open>` always creates a new database when the flag
|
||||||
|
has the value ``'n'``. (Contributed by Claudiu Popa in :issue:`18039`.)
|
||||||
|
|
||||||
|
|
||||||
difflib
|
difflib
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
@ -818,6 +853,10 @@ of using encoded words. This allows ``Messages`` to be formatted according to
|
||||||
``SMTPUTF8`` extension. (Contributed by R. David Murray in
|
``SMTPUTF8`` extension. (Contributed by R. David Murray in
|
||||||
:issue:`24211`.)
|
:issue:`24211`.)
|
||||||
|
|
||||||
|
:class:`email.mime.text.MIMEText` constructor now accepts a
|
||||||
|
:class:`~email.charset.Charset` instance.
|
||||||
|
(Contributed by Claude Paroz and Berker Peksag in :issue:`16324`.)
|
||||||
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
----
|
----
|
||||||
|
@ -860,12 +899,20 @@ search in subdirectories using the ``"**"`` pattern.
|
||||||
(Contributed by Serhiy Storchaka in :issue:`13968`.)
|
(Contributed by Serhiy Storchaka in :issue:`13968`.)
|
||||||
|
|
||||||
|
|
||||||
|
gzip
|
||||||
|
----
|
||||||
|
|
||||||
|
The *mode* argument of :class:`~gzip.GzipFile` constructor now
|
||||||
|
accepts ``"x"`` to request exclusive creation.
|
||||||
|
(Contributed by Tim Heaney in :issue:`19222`.)
|
||||||
|
|
||||||
|
|
||||||
heapq
|
heapq
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Element comparison in :func:`~heapq.merge` can now be customized by
|
Element comparison in :func:`~heapq.merge` can now be customized by
|
||||||
passing a :term:`key function` in a new optional ``key`` keyword argument.
|
passing a :term:`key function` in a new optional *key* keyword argument.
|
||||||
A new optional ``reverse`` keyword argument can be used to reverse element
|
A new optional *reverse* keyword argument can be used to reverse element
|
||||||
comparison. (Contributed by Raymond Hettinger in :issue:`13742`.)
|
comparison. (Contributed by Raymond Hettinger in :issue:`13742`.)
|
||||||
|
|
||||||
|
|
||||||
|
@ -877,6 +924,18 @@ HTTP status codes, reason phrases and long descriptions written in English.
|
||||||
(Contributed by Demian Brecht in :issue:`21793`.)
|
(Contributed by Demian Brecht in :issue:`21793`.)
|
||||||
|
|
||||||
|
|
||||||
|
http.client
|
||||||
|
-----------
|
||||||
|
|
||||||
|
:meth:`HTTPConnection.getresponse() <http.client.HTTPConnection.getresponse>`
|
||||||
|
now raises a :exc:`~http.client.RemoteDisconnected` exception when a
|
||||||
|
remote server connection is closed unexpectedly. Additionally, if a
|
||||||
|
:exc:`ConnectionError` (of which ``RemoteDisconnected``
|
||||||
|
is a subclass) is raised, the client socket is now closed automatically,
|
||||||
|
and will reconnect on the next request.
|
||||||
|
(Contributed by Martin Panter in :issue:`3566`.)
|
||||||
|
|
||||||
|
|
||||||
idlelib and IDLE
|
idlelib and IDLE
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
@ -1006,7 +1065,18 @@ to sort the keys alphabetically. (Contributed by Berker Peksag
|
||||||
in :issue:`21650`.)
|
in :issue:`21650`.)
|
||||||
|
|
||||||
JSON decoder now raises :exc:`json.JSONDecodeError` instead of
|
JSON decoder now raises :exc:`json.JSONDecodeError` instead of
|
||||||
:exc:`ValueError`. (Contributed by Serhiy Storchaka in :issue:`19361`.)
|
:exc:`ValueError` to provide better context information about the error.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`19361`.)
|
||||||
|
|
||||||
|
|
||||||
|
linecache
|
||||||
|
---------
|
||||||
|
|
||||||
|
A new :func:`~linecache.lazycache` function can be used to capture information
|
||||||
|
about a non-file based module to permit getting its lines later via
|
||||||
|
:func:`~linecache.getline`. This avoids doing I/O until a line is actually
|
||||||
|
needed, without having to carry the module globals around indefinitely.
|
||||||
|
(Contributed by Robert Collins in :issue:`17911`.)
|
||||||
|
|
||||||
|
|
||||||
locale
|
locale
|
||||||
|
@ -1060,6 +1130,14 @@ function is now deprecated. (Contributed by Mark Dickinson and Serhiy
|
||||||
Storchaka in :issue:`22486`.)
|
Storchaka in :issue:`22486`.)
|
||||||
|
|
||||||
|
|
||||||
|
multiprocessing
|
||||||
|
---------------
|
||||||
|
|
||||||
|
:func:`~multiprocessing.synchronized` objects now support the
|
||||||
|
:term:`context manager` protocol. (Contributed by Charles-François Natali in
|
||||||
|
:issue:`21565`.)
|
||||||
|
|
||||||
|
|
||||||
operator
|
operator
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -1155,6 +1233,10 @@ A new :meth:`POP3.utf8 <poplib.POP3.utf8>` command enables :rfc:`6856`
|
||||||
re
|
re
|
||||||
--
|
--
|
||||||
|
|
||||||
|
References and conditional references to groups with fixed length are now
|
||||||
|
allowed in lookbehind assertions.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`9179`.)
|
||||||
|
|
||||||
The number of capturing groups in regular expression is no longer limited by
|
The number of capturing groups in regular expression is no longer limited by
|
||||||
100. (Contributed by Serhiy Storchaka in :issue:`22437`.)
|
100. (Contributed by Serhiy Storchaka in :issue:`22437`.)
|
||||||
|
|
||||||
|
@ -1400,8 +1482,9 @@ A new :func:`~sys.set_coroutine_wrapper` function allows setting a global
|
||||||
hook that will be called whenever a :term:`coroutine object <coroutine>`
|
hook that will be called whenever a :term:`coroutine object <coroutine>`
|
||||||
is created by an :keyword:`async def` function. A corresponding
|
is created by an :keyword:`async def` function. A corresponding
|
||||||
:func:`~sys.get_coroutine_wrapper` can be used to obtain a currently set
|
:func:`~sys.get_coroutine_wrapper` can be used to obtain a currently set
|
||||||
wrapper. Both functions are provisional, and are intended for debugging
|
wrapper. Both functions are :term:`provisional <provisional package>`,
|
||||||
purposes only. (Contributed by Yury Selivanov in :issue:`24017`.)
|
and are intended for debugging purposes only. (Contributed by Yury Selivanov
|
||||||
|
in :issue:`24017`.)
|
||||||
|
|
||||||
A new :func:`~sys.is_finalizing` function can be used to check if the Python
|
A new :func:`~sys.is_finalizing` function can be used to check if the Python
|
||||||
interpreter is :term:`shutting down <interpreter shutdown>`.
|
interpreter is :term:`shutting down <interpreter shutdown>`.
|
||||||
|
@ -1430,6 +1513,11 @@ If set to ``False`` (the default, and the behavior in versions prior to 3.5),
|
||||||
they will be owned by the named user and group in the tarfile.
|
they will be owned by the named user and group in the tarfile.
|
||||||
(Contributed by Michael Vogt and Eric Smith in :issue:`23193`.)
|
(Contributed by Michael Vogt and Eric Smith in :issue:`23193`.)
|
||||||
|
|
||||||
|
The :meth:`TarFile.list <tarfile.TarFile.list>` now accepts an optional
|
||||||
|
*members* keyword argument that can be set to a subset of the list returned
|
||||||
|
by :meth:`TarFile.getmembers <tarfile.TarFile.getmembers>`.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`21549`.)
|
||||||
|
|
||||||
|
|
||||||
threading
|
threading
|
||||||
---------
|
---------
|
||||||
|
@ -1535,6 +1623,18 @@ The :mod:`unicodedata` module now uses data from `Unicode 8.0.0
|
||||||
unittest
|
unittest
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
The :meth:`TestLoader.loadTestsFromModule <unittest.TestLoader.loadTestsFromModule>`
|
||||||
|
method now accepts a keyword-only argument *pattern* which is passed to
|
||||||
|
``load_tests`` as the third argument. Found packages are now checked for
|
||||||
|
``load_tests`` regardless of whether their path matches *pattern*, because it
|
||||||
|
is impossible for a package name to match the default pattern.
|
||||||
|
(Contributed by Robert Collins and Barry A. Warsaw in :issue:`16662`.)
|
||||||
|
|
||||||
|
Unittest discovery errors now are exposed in
|
||||||
|
:data:`TestLoader.errors <unittest.TestLoader.errors>` attribute of the
|
||||||
|
:class:`~unittest.TestLoader` instance.
|
||||||
|
(Contributed by Robert Collins in :issue:`19746`.)
|
||||||
|
|
||||||
A new command line option ``--locals`` to show local variables in
|
A new command line option ``--locals`` to show local variables in
|
||||||
tracebacks. (Contributed by Robert Collins in :issue:`22936`.)
|
tracebacks. (Contributed by Robert Collins in :issue:`22936`.)
|
||||||
|
|
||||||
|
@ -1558,6 +1658,10 @@ The :class:`~unittest.mock.MagicMock` class now supports :meth:`__truediv__`,
|
||||||
(Contributed by Johannes Baiter in :issue:`20968`, and Håkan Lövdahl
|
(Contributed by Johannes Baiter in :issue:`20968`, and Håkan Lövdahl
|
||||||
in :issue:`23581` and :issue:`23568`.)
|
in :issue:`23581` and :issue:`23568`.)
|
||||||
|
|
||||||
|
It is no longer necessary to explicitly pass ``create=True`` to the
|
||||||
|
:func:`~unittest.mock.patch` function when patching builtin names.
|
||||||
|
(Contributed by Kushal Das in :issue:`17660`.)
|
||||||
|
|
||||||
|
|
||||||
wsgiref
|
wsgiref
|
||||||
-------
|
-------
|
||||||
|
@ -1586,6 +1690,9 @@ SAX parsers now support a character stream of the
|
||||||
:class:`xmlreader.InputSource <xml.sax.xmlreader.InputSource>` object.
|
:class:`xmlreader.InputSource <xml.sax.xmlreader.InputSource>` object.
|
||||||
(Contributed by Serhiy Storchaka in :issue:`2175`.)
|
(Contributed by Serhiy Storchaka in :issue:`2175`.)
|
||||||
|
|
||||||
|
:func:`~xml.sax.parseString` now accepts a :class:`str` instance.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`10590`.)
|
||||||
|
|
||||||
|
|
||||||
zipfile
|
zipfile
|
||||||
-------
|
-------
|
||||||
|
@ -1808,6 +1915,7 @@ instead. In addition, the undocumented *LegalChars* parameter of
|
||||||
Passing a format string as keyword argument *format_string* to the
|
Passing a format string as keyword argument *format_string* to the
|
||||||
:meth:`~string.Formatter.format` method of the :class:`string.Formatter`
|
:meth:`~string.Formatter.format` method of the :class:`string.Formatter`
|
||||||
class has been deprecated.
|
class has been deprecated.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`23671`.)
|
||||||
|
|
||||||
The :func:`platform.dist` and :func:`platform.linux_distribution` functions
|
The :func:`platform.dist` and :func:`platform.linux_distribution` functions
|
||||||
are now deprecated and will be removed in Python 3.7. Linux distributions use
|
are now deprecated and will be removed in Python 3.7. Linux distributions use
|
||||||
|
@ -1833,6 +1941,16 @@ The :mod:`inspect` :func:`~inspect.getfullargspec`,
|
||||||
Use of ``re.LOCALE`` flag with str patterns or ``re.ASCII`` is now
|
Use of ``re.LOCALE`` flag with str patterns or ``re.ASCII`` is now
|
||||||
deprecated. (Contributed by Serhiy Storchaka in :issue:`22407`.)
|
deprecated. (Contributed by Serhiy Storchaka in :issue:`22407`.)
|
||||||
|
|
||||||
|
Use of unrecognized special sequences consisting of ``'\'`` and an ASCII letter
|
||||||
|
in regular expression patterns and replacement patterns now raises a
|
||||||
|
deprecation warning and will be forbidden in Python 3.6.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`23622`.)
|
||||||
|
|
||||||
|
The undocumented and unofficial *use_load_tests* default argument of the
|
||||||
|
:meth:`unittest.TestLoader.loadTestsFromModule` method now is
|
||||||
|
deprecated and ignored.
|
||||||
|
(Contributed by Robert Collins and Barry A. Warsaw in :issue:`16662`.)
|
||||||
|
|
||||||
|
|
||||||
Removed
|
Removed
|
||||||
=======
|
=======
|
||||||
|
@ -1853,8 +1971,8 @@ removed:
|
||||||
|
|
||||||
* The concept of ``.pyo`` files has been removed.
|
* The concept of ``.pyo`` files has been removed.
|
||||||
|
|
||||||
* The JoinableQueue class in the provisional asyncio module was deprecated
|
* The JoinableQueue class in the provisional :mod:`asyncio` module was
|
||||||
in 3.4.4 and is now removed.
|
deprecated in 3.4.4 and is now removed.
|
||||||
(Contributed by A. Jesse Jiryu Davis in :issue:`23464`.)
|
(Contributed by A. Jesse Jiryu Davis in :issue:`23464`.)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1925,6 +2043,7 @@ Changes in the Python API
|
||||||
an empty string. For compatibility use patterns that never match an empty
|
an empty string. For compatibility use patterns that never match an empty
|
||||||
string (e.g. ``"x+"`` instead of ``"x*"``). Patterns that could only match
|
string (e.g. ``"x+"`` instead of ``"x*"``). Patterns that could only match
|
||||||
an empty string (such as ``"\b"``) now raise an error.
|
an empty string (such as ``"\b"``) now raise an error.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`22818`.)
|
||||||
|
|
||||||
* The :class:`~http.cookies.Morsel` dict-like interface has been made self
|
* The :class:`~http.cookies.Morsel` dict-like interface has been made self
|
||||||
consistent: morsel comparison now takes the :attr:`~http.cookies.Morsel.key`
|
consistent: morsel comparison now takes the :attr:`~http.cookies.Morsel.key`
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue