1**************************** 2 What's New In Python 3.7 3**************************** 4 5:Editor: Elvis Pranskevichus <[email protected]> 6 7.. Rules for maintenance: 8 9 * Anyone can add text to this document. Do not spend very much time 10 on the wording of your changes, because your text will probably 11 get rewritten to some degree. 12 13 * The maintainer will go through Misc/NEWS periodically and add 14 changes; it's therefore more important to add your changes to 15 Misc/NEWS than to this file. 16 17 * This is not a complete list of every single change; completeness 18 is the purpose of Misc/NEWS. Some changes I consider too small 19 or esoteric to include. If such a change is added to the text, 20 I'll just remove it. (This is another reason you shouldn't spend 21 too much time on writing your addition.) 22 23 * If you want to draw your new text to the attention of the 24 maintainer, add 'XXX' to the beginning of the paragraph or 25 section. 26 27 * It's OK to just add a fragmentary note about a change. For 28 example: "XXX Describe the transmogrify() function added to the 29 socket module." The maintainer will research the change and 30 write the necessary text. 31 32 * You can comment out your additions if you like, but it's not 33 necessary (especially when a final release is some months away). 34 35 * Credit the author of a patch or bugfix. Just the name is 36 sufficient; the e-mail address isn't necessary. 37 38 * It's helpful to add the bug/patch number as a comment: 39 40 XXX Describe the transmogrify() function added to the socket 41 module. 42 (Contributed by P.Y. Developer in :issue:`12345`.) 43 44 This saves the maintainer the effort of going through the Git log 45 when researching a change. 46 47This article explains the new features in Python 3.7, compared to 3.6. 48Python 3.7 was released on June 27, 2018. 49For full details, see the :ref:`changelog <changelog>`. 50 51 52Summary -- Release Highlights 53============================= 54 55.. This section singles out the most important changes in Python 3.7. 56 Brevity is key. 57 58New syntax features: 59 60* :ref:`PEP 563 <whatsnew37-pep563>`, postponed evaluation of type annotations. 61 62Backwards incompatible syntax changes: 63 64* :keyword:`async` and :keyword:`await` are now reserved keywords. 65 66New library modules: 67 68* :mod:`contextvars`: :ref:`PEP 567 -- Context Variables <whatsnew37-pep567>` 69* :mod:`dataclasses`: :ref:`PEP 557 -- Data Classes <whatsnew37-pep557>` 70* :ref:`whatsnew37_importlib_resources` 71 72New built-in features: 73 74* :ref:`PEP 553 <whatsnew37-pep553>`, the new :func:`breakpoint` function. 75 76Python data model improvements: 77 78* :ref:`PEP 562 <whatsnew37-pep562>`, customization of access to 79 module attributes. 80 81* :ref:`PEP 560 <whatsnew37-pep560>`, core support for typing module and 82 generic types. 83 84* the insertion-order preservation nature of :ref:`dict <typesmapping>` 85 objects `has been declared`_ to be an official 86 part of the Python language spec. 87 88.. _has been declared: https://mail.python.org/pipermail/python-dev/2017-December/151283.html 89 90Significant improvements in the standard library: 91 92* The :mod:`asyncio` module has received new features, significant 93 :ref:`usability and performance improvements <whatsnew37_asyncio>`. 94 95* The :mod:`time` module gained support for 96 :ref:`functions with nanosecond resolution <whatsnew37-pep564>`. 97 98CPython implementation improvements: 99 100* Avoiding the use of ASCII as a default text encoding: 101 102 * :ref:`PEP 538 <whatsnew37-pep538>`, legacy C locale coercion 103 * :ref:`PEP 540 <whatsnew37-pep540>`, forced UTF-8 runtime mode 104* :ref:`PEP 552 <whatsnew37-pep552>`, deterministic .pycs 105* :ref:`New Python Development Mode <whatsnew37-devmode>` 106* :ref:`PEP 565 <whatsnew37-pep565>`, improved :exc:`DeprecationWarning` 107 handling 108 109C API improvements: 110 111* :ref:`PEP 539 <whatsnew37-pep539>`, new C API for thread-local storage 112 113Documentation improvements: 114 115* :ref:`PEP 545 <whatsnew37-pep545>`, Python documentation translations 116* New documentation translations: `Japanese <https://docs.python.org/ja/>`_, 117 `French <https://docs.python.org/fr/>`_, and 118 `Korean <https://docs.python.org/ko/>`_. 119 120This release features notable performance improvements in many areas. 121The :ref:`whatsnew37-perf` section lists them in detail. 122 123For a list of changes that may affect compatibility with previous Python 124releases please refer to the :ref:`porting-to-python-37` section. 125 126 127New Features 128============ 129 130.. _whatsnew37-pep563: 131 132PEP 563: Postponed Evaluation of Annotations 133-------------------------------------------- 134 135The advent of type hints in Python uncovered two glaring usability issues 136with the functionality of annotations added in :pep:`3107` and refined 137further in :pep:`526`: 138 139* annotations could only use names which were already available in the 140 current scope, in other words they didn't support forward references 141 of any kind; and 142 143* annotating source code had adverse effects on startup time of Python 144 programs. 145 146Both of these issues are fixed by postponing the evaluation of 147annotations. Instead of compiling code which executes expressions in 148annotations at their definition time, the compiler stores the annotation 149in a string form equivalent to the AST of the expression in question. 150If needed, annotations can be resolved at runtime using 151:func:`typing.get_type_hints`. In the common case where this is not 152required, the annotations are cheaper to store (since short strings 153are interned by the interpreter) and make startup time faster. 154 155Usability-wise, annotations now support forward references, making the 156following syntax valid:: 157 158 class C: 159 @classmethod 160 def from_string(cls, source: str) -> C: 161 ... 162 163 def validate_b(self, obj: B) -> bool: 164 ... 165 166 class B: 167 ... 168 169Since this change breaks compatibility, the new behavior needs to be enabled 170on a per-module basis in Python 3.7 using a :mod:`__future__` import:: 171 172 from __future__ import annotations 173 174It will become the default in Python 3.10. 175 176.. seealso:: 177 178 :pep:`563` -- Postponed evaluation of annotations 179 PEP written and implemented by Łukasz Langa. 180 181 182.. _whatsnew37-pep538: 183 184PEP 538: Legacy C Locale Coercion 185--------------------------------- 186 187An ongoing challenge within the Python 3 series has been determining a sensible 188default strategy for handling the "7-bit ASCII" text encoding assumption 189currently implied by the use of the default C or POSIX locale on non-Windows 190platforms. 191 192:pep:`538` updates the default interpreter command line interface to 193automatically coerce that locale to an available UTF-8 based locale as 194described in the documentation of the new :envvar:`PYTHONCOERCECLOCALE` 195environment variable. Automatically setting ``LC_CTYPE`` this way means that 196both the core interpreter and locale-aware C extensions (such as 197:mod:`readline`) will assume the use of UTF-8 as the default text encoding, 198rather than ASCII. 199 200The platform support definition in :pep:`11` has also been updated to limit 201full text handling support to suitably configured non-ASCII based locales. 202 203As part of this change, the default error handler for :data:`~sys.stdin` and 204:data:`~sys.stdout` is now ``surrogateescape`` (rather than ``strict``) when 205using any of the defined coercion target locales (currently ``C.UTF-8``, 206``C.utf8``, and ``UTF-8``). The default error handler for :data:`~sys.stderr` 207continues to be ``backslashreplace``, regardless of locale. 208 209Locale coercion is silent by default, but to assist in debugging potentially 210locale related integration problems, explicit warnings (emitted directly on 211:data:`~sys.stderr`) can be requested by setting ``PYTHONCOERCECLOCALE=warn``. 212This setting will also cause the Python runtime to emit a warning if the 213legacy C locale remains active when the core interpreter is initialized. 214 215While :pep:`538`'s locale coercion has the benefit of also affecting extension 216modules (such as GNU ``readline``), as well as child processes (including those 217running non-Python applications and older versions of Python), it has the 218downside of requiring that a suitable target locale be present on the running 219system. To better handle the case where no suitable target locale is available 220(as occurs on RHEL/CentOS 7, for example), Python 3.7 also implements 221:ref:`whatsnew37-pep540`. 222 223.. seealso:: 224 225 :pep:`538` -- Coercing the legacy C locale to a UTF-8 based locale 226 PEP written and implemented by Nick Coghlan. 227 228 229.. _whatsnew37-pep540: 230 231PEP 540: Forced UTF-8 Runtime Mode 232----------------------------------- 233 234The new :option:`-X` ``utf8`` command line option and :envvar:`PYTHONUTF8` 235environment variable can be used to enable the :ref:`Python UTF-8 Mode 236<utf8-mode>`. 237 238When in UTF-8 mode, CPython ignores the locale settings, and uses the 239UTF-8 encoding by default. The error handlers for :data:`sys.stdin` and 240:data:`sys.stdout` streams are set to ``surrogateescape``. 241 242The forced UTF-8 mode can be used to change the text handling behavior in 243an embedded Python interpreter without changing the locale settings of 244an embedding application. 245 246While :pep:`540`'s UTF-8 mode has the benefit of working regardless of which 247locales are available on the running system, it has the downside of having no 248effect on extension modules (such as GNU ``readline``), child processes running 249non-Python applications, and child processes running older versions of Python. 250To reduce the risk of corrupting text data when communicating with such 251components, Python 3.7 also implements :ref:`whatsnew37-pep540`). 252 253The UTF-8 mode is enabled by default when the locale is ``C`` or ``POSIX``, and 254the :pep:`538` locale coercion feature fails to change it to a UTF-8 based 255alternative (whether that failure is due to ``PYTHONCOERCECLOCALE=0`` being set, 256``LC_ALL`` being set, or the lack of a suitable target locale). 257 258.. seealso:: 259 260 :pep:`540` -- Add a new UTF-8 mode 261 PEP written and implemented by Victor Stinner 262 263 264.. _whatsnew37-pep553: 265 266PEP 553: Built-in ``breakpoint()`` 267---------------------------------- 268 269Python 3.7 includes the new built-in :func:`breakpoint` function as 270an easy and consistent way to enter the Python debugger. 271 272Built-in ``breakpoint()`` calls :func:`sys.breakpointhook`. By default, the 273latter imports :mod:`pdb` and then calls ``pdb.set_trace()``, but by binding 274``sys.breakpointhook()`` to the function of your choosing, ``breakpoint()`` can 275enter any debugger. Additionally, the environment variable 276:envvar:`PYTHONBREAKPOINT` can be set to the callable of your debugger of 277choice. Set ``PYTHONBREAKPOINT=0`` to completely disable built-in 278``breakpoint()``. 279 280.. seealso:: 281 282 :pep:`553` -- Built-in breakpoint() 283 PEP written and implemented by Barry Warsaw 284 285 286.. _whatsnew37-pep539: 287 288PEP 539: New C API for Thread-Local Storage 289------------------------------------------- 290 291While Python provides a C API for thread-local storage support; the existing 292:ref:`Thread Local Storage (TLS) API <thread-local-storage-api>` has used 293:c:expr:`int` to represent TLS keys across all platforms. This has not 294generally been a problem for officially support platforms, but that is neither 295POSIX-compliant, nor portable in any practical sense. 296 297:pep:`539` changes this by providing a new :ref:`Thread Specific Storage (TSS) 298API <thread-specific-storage-api>` to CPython which supersedes use of the 299existing TLS API within the CPython interpreter, while deprecating the existing 300API. The TSS API uses a new type :c:type:`Py_tss_t` instead of :c:expr:`int` 301to represent TSS keys--an opaque type the definition of which may depend on 302the underlying TLS implementation. Therefore, this will allow to build CPython 303on platforms where the native TLS key is defined in a way that cannot be safely 304cast to :c:expr:`int`. 305 306Note that on platforms where the native TLS key is defined in a way that cannot 307be safely cast to :c:expr:`int`, all functions of the existing TLS API will be 308no-op and immediately return failure. This indicates clearly that the old API 309is not supported on platforms where it cannot be used reliably, and that no 310effort will be made to add such support. 311 312.. seealso:: 313 314 :pep:`539` -- A New C-API for Thread-Local Storage in CPython 315 PEP written by Erik M. Bray; implementation by Masayuki Yamamoto. 316 317 318.. _whatsnew37-pep562: 319 320PEP 562: Customization of Access to Module Attributes 321----------------------------------------------------- 322 323Python 3.7 allows defining :meth:`__getattr__` on modules and will call 324it whenever a module attribute is otherwise not found. Defining 325:meth:`__dir__` on modules is now also allowed. 326 327A typical example of where this may be useful is module attribute deprecation 328and lazy loading. 329 330.. seealso:: 331 332 :pep:`562` -- Module ``__getattr__`` and ``__dir__`` 333 PEP written and implemented by Ivan Levkivskyi 334 335 336.. _whatsnew37-pep564: 337 338PEP 564: New Time Functions With Nanosecond Resolution 339------------------------------------------------------ 340 341The resolution of clocks in modern systems can exceed the limited precision 342of a floating point number returned by the :func:`time.time` function 343and its variants. To avoid loss of precision, :pep:`564` adds six new 344"nanosecond" variants of the existing timer functions to the :mod:`time` 345module: 346 347* :func:`time.clock_gettime_ns` 348* :func:`time.clock_settime_ns` 349* :func:`time.monotonic_ns` 350* :func:`time.perf_counter_ns` 351* :func:`time.process_time_ns` 352* :func:`time.time_ns` 353 354The new functions return the number of nanoseconds as an integer value. 355 356`Measurements <https://peps.python.org/pep-0564/#annex-clocks-resolution-in-python>`_ 357show that on Linux and Windows the resolution of :func:`time.time_ns` is 358approximately 3 times better than that of :func:`time.time`. 359 360.. seealso:: 361 362 :pep:`564` -- Add new time functions with nanosecond resolution 363 PEP written and implemented by Victor Stinner 364 365 366.. _whatsnew37-pep565: 367 368PEP 565: Show DeprecationWarning in ``__main__`` 369------------------------------------------------ 370 371The default handling of :exc:`DeprecationWarning` has been changed such that 372these warnings are once more shown by default, but only when the code 373triggering them is running directly in the :mod:`__main__` module. As a result, 374developers of single file scripts and those using Python interactively should 375once again start seeing deprecation warnings for the APIs they use, but 376deprecation warnings triggered by imported application, library and framework 377modules will continue to be hidden by default. 378 379As a result of this change, the standard library now allows developers to choose 380between three different deprecation warning behaviours: 381 382* :exc:`FutureWarning`: always displayed by default, recommended for warnings 383 intended to be seen by application end users (e.g. for deprecated application 384 configuration settings). 385* :exc:`DeprecationWarning`: displayed by default only in :mod:`__main__` and when 386 running tests, recommended for warnings intended to be seen by other Python 387 developers where a version upgrade may result in changed behaviour or an 388 error. 389* :exc:`PendingDeprecationWarning`: displayed by default only when running 390 tests, intended for cases where a future version upgrade will change the 391 warning category to :exc:`DeprecationWarning` or :exc:`FutureWarning`. 392 393Previously both :exc:`DeprecationWarning` and :exc:`PendingDeprecationWarning` 394were only visible when running tests, which meant that developers primarily 395writing single file scripts or using Python interactively could be surprised 396by breaking changes in the APIs they used. 397 398.. seealso:: 399 400 :pep:`565` -- Show DeprecationWarning in ``__main__`` 401 PEP written and implemented by Nick Coghlan 402 403 404.. _whatsnew37-pep560: 405 406PEP 560: Core Support for ``typing`` module and Generic Types 407------------------------------------------------------------- 408 409Initially :pep:`484` was designed in such way that it would not introduce *any* 410changes to the core CPython interpreter. Now type hints and the :mod:`typing` 411module are extensively used by the community, so this restriction is removed. 412The PEP introduces two special methods :meth:`__class_getitem__` and 413``__mro_entries__``, these methods are now used by most classes and special 414constructs in :mod:`typing`. As a result, the speed of various operations 415with types increased up to 7 times, the generic types can be used without 416metaclass conflicts, and several long standing bugs in :mod:`typing` module are 417fixed. 418 419.. seealso:: 420 421 :pep:`560` -- Core support for typing module and generic types 422 PEP written and implemented by Ivan Levkivskyi 423 424 425.. _whatsnew37-pep552: 426 427PEP 552: Hash-based .pyc Files 428------------------------------ 429 430Python has traditionally checked the up-to-dateness of bytecode cache files 431(i.e., ``.pyc`` files) by comparing the source metadata (last-modified timestamp 432and size) with source metadata saved in the cache file header when it was 433generated. While effective, this invalidation method has its drawbacks. When 434filesystem timestamps are too coarse, Python can miss source updates, leading to 435user confusion. Additionally, having a timestamp in the cache file is 436problematic for `build reproducibility <https://reproducible-builds.org/>`_ and 437content-based build systems. 438 439:pep:`552` extends the pyc format to allow the hash of the source file to be 440used for invalidation instead of the source timestamp. Such ``.pyc`` files are 441called "hash-based". By default, Python still uses timestamp-based invalidation 442and does not generate hash-based ``.pyc`` files at runtime. Hash-based ``.pyc`` 443files may be generated with :mod:`py_compile` or :mod:`compileall`. 444 445Hash-based ``.pyc`` files come in two variants: checked and unchecked. Python 446validates checked hash-based ``.pyc`` files against the corresponding source 447files at runtime but doesn't do so for unchecked hash-based pycs. Unchecked 448hash-based ``.pyc`` files are a useful performance optimization for environments 449where a system external to Python (e.g., the build system) is responsible for 450keeping ``.pyc`` files up-to-date. 451 452See :ref:`pyc-invalidation` for more information. 453 454.. seealso:: 455 456 :pep:`552` -- Deterministic pycs 457 PEP written and implemented by Benjamin Peterson 458 459 460.. _whatsnew37-pep545: 461 462PEP 545: Python Documentation Translations 463------------------------------------------ 464 465:pep:`545` describes the process of creating and maintaining Python 466documentation translations. 467 468Three new translations have been added: 469 470- Japanese: https://docs.python.org/ja/ 471- French: https://docs.python.org/fr/ 472- Korean: https://docs.python.org/ko/ 473 474.. seealso:: 475 476 :pep:`545` -- Python Documentation Translations 477 PEP written and implemented by Julien Palard, Inada Naoki, and 478 Victor Stinner. 479 480 481.. _whatsnew37-devmode: 482 483Python Development Mode (-X dev) 484-------------------------------- 485 486The new :option:`-X` ``dev`` command line option or the new 487:envvar:`PYTHONDEVMODE` environment variable can be used to enable 488:ref:`Python Development Mode <devmode>`. When in development mode, Python performs 489additional runtime checks that are too expensive to be enabled by default. 490See :ref:`Python Development Mode <devmode>` documentation for the full 491description. 492 493 494Other Language Changes 495====================== 496 497* An :keyword:`await` expression and comprehensions containing an 498 :keyword:`async for` clause were illegal in the expressions in 499 :ref:`formatted string literals <f-strings>` due to a problem with the 500 implementation. In Python 3.7 this restriction was lifted. 501 502* More than 255 arguments can now be passed to a function, and a function can 503 now have more than 255 parameters. (Contributed by Serhiy Storchaka in 504 :issue:`12844` and :issue:`18896`.) 505 506* :meth:`bytes.fromhex` and :meth:`bytearray.fromhex` now ignore all ASCII 507 whitespace, not only spaces. (Contributed by Robert Xiao in :issue:`28927`.) 508 509* :class:`str`, :class:`bytes`, and :class:`bytearray` gained support for 510 the new :meth:`isascii() <str.isascii>` method, which can be used to 511 test if a string or bytes contain only the ASCII characters. 512 (Contributed by INADA Naoki in :issue:`32677`.) 513 514* :exc:`ImportError` now displays module name and module ``__file__`` path when 515 ``from ... import ...`` fails. (Contributed by Matthias Bussonnier in 516 :issue:`29546`.) 517 518* Circular imports involving absolute imports with binding a submodule to 519 a name are now supported. 520 (Contributed by Serhiy Storchaka in :issue:`30024`.) 521 522* ``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather than 523 ``format(str(self), '')``. 524 (Contributed by Serhiy Storchaka in :issue:`28974`.) 525 526* In order to better support dynamic creation of stack traces, 527 :class:`types.TracebackType` can now be instantiated from Python code, and 528 the ``tb_next`` attribute on :ref:`tracebacks <traceback-objects>` is now 529 writable. 530 (Contributed by Nathaniel J. Smith in :issue:`30579`.) 531 532* When using the :option:`-m` switch, ``sys.path[0]`` is now eagerly expanded 533 to the full starting directory path, rather than being left as the empty 534 directory (which allows imports from the *current* working directory at the 535 time when an import occurs) 536 (Contributed by Nick Coghlan in :issue:`33053`.) 537 538* The new :option:`-X` ``importtime`` option or the 539 :envvar:`PYTHONPROFILEIMPORTTIME` environment variable can be used to show 540 the timing of each module import. 541 (Contributed by Inada Naoki in :issue:`31415`.) 542 543 544New Modules 545=========== 546 547.. _whatsnew37-pep567: 548 549contextvars 550----------- 551 552The new :mod:`contextvars` module and a set of 553:ref:`new C APIs <contextvarsobjects>` introduce 554support for *context variables*. Context variables are conceptually 555similar to thread-local variables. Unlike TLS, context variables 556support asynchronous code correctly. 557 558The :mod:`asyncio` and :mod:`decimal` modules have been updated to use 559and support context variables out of the box. Particularly the active 560decimal context is now stored in a context variable, which allows 561decimal operations to work with the correct context in asynchronous code. 562 563.. seealso:: 564 565 :pep:`567` -- Context Variables 566 PEP written and implemented by Yury Selivanov 567 568 569.. _whatsnew37-pep557: 570 571dataclasses 572----------- 573 574The new :func:`~dataclasses.dataclass` decorator provides a way to declare 575*data classes*. A data class describes its attributes using class variable 576annotations. Its constructor and other magic methods, such as 577:meth:`~object.__repr__`, :meth:`~object.__eq__`, and 578:meth:`~object.__hash__` are generated automatically. 579 580Example:: 581 582 @dataclass 583 class Point: 584 x: float 585 y: float 586 z: float = 0.0 587 588 p = Point(1.5, 2.5) 589 print(p) # produces "Point(x=1.5, y=2.5, z=0.0)" 590 591.. seealso:: 592 593 :pep:`557` -- Data Classes 594 PEP written and implemented by Eric V. Smith 595 596 597.. _whatsnew37_importlib_resources: 598 599importlib.resources 600------------------- 601 602The new :mod:`importlib.resources` module provides several new APIs and one 603new ABC for access to, opening, and reading *resources* inside packages. 604Resources are roughly similar to files inside packages, but they needn't 605be actual files on the physical file system. Module loaders can provide a 606:meth:`get_resource_reader()` function which returns 607a :class:`importlib.abc.ResourceReader` instance to support this 608new API. Built-in file path loaders and zip file loaders both support this. 609 610Contributed by Barry Warsaw and Brett Cannon in :issue:`32248`. 611 612.. seealso:: 613 614 `importlib_resources <https://importlib-resources.readthedocs.io/en/latest/>`_ 615 -- a PyPI backport for earlier Python versions. 616 617 618Improved Modules 619================ 620 621 622argparse 623-------- 624 625The new :meth:`ArgumentParser.parse_intermixed_args() 626<argparse.ArgumentParser.parse_intermixed_args>` 627method allows intermixing options and positional arguments. 628(Contributed by paul.j3 in :issue:`14191`.) 629 630 631.. _whatsnew37_asyncio: 632 633asyncio 634------- 635 636The :mod:`asyncio` module has received many new features, usability and 637:ref:`performance improvements <whatsnew37-asyncio-perf>`. Notable changes 638include: 639 640* The new :term:`provisional <provisional API>` :func:`asyncio.run` function can 641 be used to run a coroutine from synchronous code by automatically creating and 642 destroying the event loop. 643 (Contributed by Yury Selivanov in :issue:`32314`.) 644 645* asyncio gained support for :mod:`contextvars`. 646 :meth:`loop.call_soon() <asyncio.loop.call_soon>`, 647 :meth:`loop.call_soon_threadsafe() <asyncio.loop.call_soon_threadsafe>`, 648 :meth:`loop.call_later() <asyncio.loop.call_later>`, 649 :meth:`loop.call_at() <asyncio.loop.call_at>`, and 650 :meth:`Future.add_done_callback() <asyncio.Future.add_done_callback>` 651 have a new optional keyword-only *context* parameter. 652 :class:`Tasks <asyncio.Task>` now track their context automatically. 653 See :pep:`567` for more details. 654 (Contributed by Yury Selivanov in :issue:`32436`.) 655 656* The new :func:`asyncio.create_task` function has been added as a shortcut 657 to ``asyncio.get_event_loop().create_task()``. 658 (Contributed by Andrew Svetlov in :issue:`32311`.) 659 660* The new :meth:`loop.start_tls() <asyncio.loop.start_tls>` 661 method can be used to upgrade an existing connection to TLS. 662 (Contributed by Yury Selivanov in :issue:`23749`.) 663 664* The new :meth:`loop.sock_recv_into() <asyncio.loop.sock_recv_into>` 665 method allows reading data from a socket directly into a provided buffer making 666 it possible to reduce data copies. 667 (Contributed by Antoine Pitrou in :issue:`31819`.) 668 669* The new :func:`asyncio.current_task` function returns the currently running 670 :class:`~asyncio.Task` instance, and the new :func:`asyncio.all_tasks` 671 function returns a set of all existing ``Task`` instances in a given loop. 672 The :meth:`Task.current_task() <asyncio.Task.current_task>` and 673 :meth:`Task.all_tasks() <asyncio.Task.all_tasks>` methods have been deprecated. 674 (Contributed by Andrew Svetlov in :issue:`32250`.) 675 676* The new *provisional* :class:`~asyncio.BufferedProtocol` class allows 677 implementing streaming protocols with manual control over the receive buffer. 678 (Contributed by Yury Selivanov in :issue:`32251`.) 679 680* The new :func:`asyncio.get_running_loop` function returns the currently 681 running loop, and raises a :exc:`RuntimeError` if no loop is running. 682 This is in contrast with :func:`asyncio.get_event_loop`, which will *create* 683 a new event loop if none is running. 684 (Contributed by Yury Selivanov in :issue:`32269`.) 685 686* The new :meth:`StreamWriter.wait_closed() <asyncio.StreamWriter.wait_closed>` 687 coroutine method allows waiting until the stream writer is closed. The new 688 :meth:`StreamWriter.is_closing() <asyncio.StreamWriter.is_closing>` method 689 can be used to determine if the writer is closing. 690 (Contributed by Andrew Svetlov in :issue:`32391`.) 691 692* The new :meth:`loop.sock_sendfile() <asyncio.loop.sock_sendfile>` 693 coroutine method allows sending files using :mod:`os.sendfile` when possible. 694 (Contributed by Andrew Svetlov in :issue:`32410`.) 695 696* The new :meth:`Future.get_loop() <asyncio.Future.get_loop>` and 697 ``Task.get_loop()`` methods return the instance of the loop on which a task or 698 a future were created. 699 :meth:`Server.get_loop() <asyncio.Server.get_loop>` allows doing the same for 700 :class:`asyncio.Server` objects. 701 (Contributed by Yury Selivanov in :issue:`32415` and 702 Srinivas Reddy Thatiparthy in :issue:`32418`.) 703 704* It is now possible to control how instances of :class:`asyncio.Server` begin 705 serving. Previously, the server would start serving immediately when created. 706 The new *start_serving* keyword argument to 707 :meth:`loop.create_server() <asyncio.loop.create_server>` and 708 :meth:`loop.create_unix_server() <asyncio.loop.create_unix_server>`, 709 as well as :meth:`Server.start_serving() <asyncio.Server.start_serving>`, and 710 :meth:`Server.serve_forever() <asyncio.Server.serve_forever>` 711 can be used to decouple server instantiation and serving. The new 712 :meth:`Server.is_serving() <asyncio.Server.is_serving>` method returns ``True`` 713 if the server is serving. :class:`~asyncio.Server` objects are now 714 asynchronous context managers:: 715 716 srv = await loop.create_server(...) 717 718 async with srv: 719 # some code 720 721 # At this point, srv is closed and no longer accepts new connections. 722 723 (Contributed by Yury Selivanov in :issue:`32662`.) 724 725* Callback objects returned by 726 :func:`loop.call_later() <asyncio.loop.call_later>` 727 gained the new :meth:`when() <asyncio.TimerHandle.when>` method which 728 returns an absolute scheduled callback timestamp. 729 (Contributed by Andrew Svetlov in :issue:`32741`.) 730 731* The :meth:`loop.create_datagram_endpoint() \ 732 <asyncio.loop.create_datagram_endpoint>` method 733 gained support for Unix sockets. 734 (Contributed by Quentin Dawans in :issue:`31245`.) 735 736* The :func:`asyncio.open_connection`, :func:`asyncio.start_server` functions, 737 :meth:`loop.create_connection() <asyncio.loop.create_connection>`, 738 :meth:`loop.create_server() <asyncio.loop.create_server>`, 739 :meth:`loop.create_accepted_socket() <asyncio.loop.connect_accepted_socket>` 740 methods and their corresponding UNIX socket variants now accept the 741 *ssl_handshake_timeout* keyword argument. 742 (Contributed by Neil Aspinall in :issue:`29970`.) 743 744* The new :meth:`Handle.cancelled() <asyncio.Handle.cancelled>` method returns 745 ``True`` if the callback was cancelled. 746 (Contributed by Marat Sharafutdinov in :issue:`31943`.) 747 748* The asyncio source has been converted to use the 749 :keyword:`async`/:keyword:`await` syntax. 750 (Contributed by Andrew Svetlov in :issue:`32193`.) 751 752* The new :meth:`ReadTransport.is_reading() <asyncio.ReadTransport.is_reading>` 753 method can be used to determine the reading state of the transport. 754 Additionally, calls to 755 :meth:`ReadTransport.resume_reading() <asyncio.ReadTransport.resume_reading>` 756 and :meth:`ReadTransport.pause_reading() <asyncio.ReadTransport.pause_reading>` 757 are now idempotent. 758 (Contributed by Yury Selivanov in :issue:`32356`.) 759 760* Loop methods which accept socket paths now support passing 761 :term:`path-like objects <path-like object>`. 762 (Contributed by Yury Selivanov in :issue:`32066`.) 763 764* In :mod:`asyncio` TCP sockets on Linux are now created with ``TCP_NODELAY`` 765 flag set by default. 766 (Contributed by Yury Selivanov and Victor Stinner in :issue:`27456`.) 767 768* Exceptions occurring in cancelled tasks are no longer logged. 769 (Contributed by Yury Selivanov in :issue:`30508`.) 770 771* New ``WindowsSelectorEventLoopPolicy`` and 772 ``WindowsProactorEventLoopPolicy`` classes. 773 (Contributed by Yury Selivanov in :issue:`33792`.) 774 775Several ``asyncio`` APIs have been 776:ref:`deprecated <whatsnew37-asyncio-deprecated>`. 777 778 779binascii 780-------- 781 782The :func:`~binascii.b2a_uu` function now accepts an optional *backtick* 783keyword argument. When it's true, zeros are represented by ``'`'`` 784instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.) 785 786 787calendar 788-------- 789 790The :class:`~calendar.HTMLCalendar` class has new class attributes which ease 791the customization of CSS classes in the produced HTML calendar. 792(Contributed by Oz Tiram in :issue:`30095`.) 793 794 795collections 796----------- 797 798``collections.namedtuple()`` now supports default values. 799(Contributed by Raymond Hettinger in :issue:`32320`.) 800 801 802compileall 803---------- 804 805:func:`compileall.compile_dir` learned the new *invalidation_mode* parameter, 806which can be used to enable 807:ref:`hash-based .pyc invalidation <whatsnew37-pep552>`. The invalidation 808mode can also be specified on the command line using the new 809``--invalidation-mode`` argument. 810(Contributed by Benjamin Peterson in :issue:`31650`.) 811 812 813concurrent.futures 814------------------ 815 816:class:`ProcessPoolExecutor <concurrent.futures.ProcessPoolExecutor>` and 817:class:`ThreadPoolExecutor <concurrent.futures.ThreadPoolExecutor>` now 818support the new *initializer* and *initargs* constructor arguments. 819(Contributed by Antoine Pitrou in :issue:`21423`.) 820 821The :class:`ProcessPoolExecutor <concurrent.futures.ProcessPoolExecutor>` 822can now take the multiprocessing context via the new *mp_context* argument. 823(Contributed by Thomas Moreau in :issue:`31540`.) 824 825 826contextlib 827---------- 828 829The new :func:`~contextlib.nullcontext` is a simpler and faster no-op 830context manager than :class:`~contextlib.ExitStack`. 831(Contributed by Jesse-Bakker in :issue:`10049`.) 832 833The new :func:`~contextlib.asynccontextmanager`, 834:class:`~contextlib.AbstractAsyncContextManager`, and 835:class:`~contextlib.AsyncExitStack` have been added to 836complement their synchronous counterparts. (Contributed 837by Jelle Zijlstra in :issue:`29679` and :issue:`30241`, 838and by Alexander Mohr and Ilya Kulakov in :issue:`29302`.) 839 840 841cProfile 842-------- 843 844The :mod:`cProfile` command line now accepts ``-m module_name`` as an 845alternative to script path. (Contributed by Sanyam Khurana in :issue:`21862`.) 846 847 848crypt 849----- 850 851The :mod:`crypt` module now supports the Blowfish hashing method. 852(Contributed by Serhiy Storchaka in :issue:`31664`.) 853 854The :func:`~crypt.mksalt` function now allows specifying the number of rounds 855for hashing. (Contributed by Serhiy Storchaka in :issue:`31702`.) 856 857 858datetime 859-------- 860 861The new :meth:`datetime.fromisoformat() <datetime.datetime.fromisoformat>` 862method constructs a :class:`~datetime.datetime` object from a string 863in one of the formats output by 864:meth:`datetime.isoformat() <datetime.datetime.isoformat>`. 865(Contributed by Paul Ganssle in :issue:`15873`.) 866 867The :class:`tzinfo <datetime.tzinfo>` class now supports sub-minute offsets. 868(Contributed by Alexander Belopolsky in :issue:`5288`.) 869 870 871dbm 872--- 873 874:mod:`dbm.dumb` now supports reading read-only files and no longer writes the 875index file when it is not changed. 876 877 878decimal 879------- 880 881The :mod:`decimal` module now uses :ref:`context variables <whatsnew37-pep567>` 882to store the decimal context. 883(Contributed by Yury Selivanov in :issue:`32630`.) 884 885 886dis 887--- 888 889The :func:`~dis.dis` function is now able to 890disassemble nested code objects (the code of comprehensions, generator 891expressions and nested functions, and the code used for building nested 892classes). The maximum depth of disassembly recursion is controlled by 893the new *depth* parameter. 894(Contributed by Serhiy Storchaka in :issue:`11822`.) 895 896 897distutils 898--------- 899 900``README.rst`` is now included in the list of distutils standard READMEs and 901therefore included in source distributions. 902(Contributed by Ryan Gonzalez in :issue:`11913`.) 903 904 905enum 906---- 907 908The :class:`Enum <enum.Enum>` learned the new ``_ignore_`` class property, 909which allows listing the names of properties which should not become 910enum members. 911(Contributed by Ethan Furman in :issue:`31801`.) 912 913In Python 3.8, attempting to check for non-Enum objects in :class:`Enum` 914classes will raise a :exc:`TypeError` (e.g. ``1 in Color``); similarly, 915attempting to check for non-Flag objects in a :class:`Flag` member will 916raise :exc:`TypeError` (e.g. ``1 in Perm.RW``); currently, both operations 917return :const:`False` instead and are deprecated. 918(Contributed by Ethan Furman in :issue:`33217`.) 919 920 921functools 922--------- 923 924:func:`functools.singledispatch` now supports registering implementations 925using type annotations. 926(Contributed by Łukasz Langa in :issue:`32227`.) 927 928 929gc 930-- 931 932The new :func:`gc.freeze` function allows freezing all objects tracked 933by the garbage collector and excluding them from future collections. 934This can be used before a POSIX ``fork()`` call to make the GC copy-on-write 935friendly or to speed up collection. The new :func:`gc.unfreeze` functions 936reverses this operation. Additionally, :func:`gc.get_freeze_count` can 937be used to obtain the number of frozen objects. 938(Contributed by Li Zekun in :issue:`31558`.) 939 940 941hmac 942---- 943 944The :mod:`hmac` module now has an optimized one-shot :func:`~hmac.digest` 945function, which is up to three times faster than :func:`~hmac.HMAC`. 946(Contributed by Christian Heimes in :issue:`32433`.) 947 948 949http.client 950----------- 951 952:class:`~http.client.HTTPConnection` and :class:`~http.client.HTTPSConnection` 953now support the new *blocksize* argument for improved upload throughput. 954(Contributed by Nir Soffer in :issue:`31945`.) 955 956 957http.server 958----------- 959 960:class:`~http.server.SimpleHTTPRequestHandler` now supports the HTTP 961``If-Modified-Since`` header. The server returns the 304 response status if 962the target file was not modified after the time specified in the header. 963(Contributed by Pierre Quentel in :issue:`29654`.) 964 965:class:`~http.server.SimpleHTTPRequestHandler` accepts the new *directory* 966argument, in addition to the new ``--directory`` command line argument. 967With this parameter, the server serves the specified directory, by default it 968uses the current working directory. 969(Contributed by Stéphane Wirtel and Julien Palard in :issue:`28707`.) 970 971The new :class:`ThreadingHTTPServer <http.server.ThreadingHTTPServer>` class 972uses threads to handle requests using :class:`~socketserver.ThreadingMixin`. 973It is used when ``http.server`` is run with ``-m``. 974(Contributed by Julien Palard in :issue:`31639`.) 975 976 977idlelib and IDLE 978---------------- 979 980Multiple fixes for autocompletion. (Contributed by Louie Lu in :issue:`15786`.) 981 982Module Browser (on the File menu, formerly called Class Browser), 983now displays nested functions and classes in addition to top-level 984functions and classes. 985(Contributed by Guilherme Polo, Cheryl Sabella, and Terry Jan Reedy 986in :issue:`1612262`.) 987 988The Settings dialog (Options, Configure IDLE) has been partly rewritten 989to improve both appearance and function. 990(Contributed by Cheryl Sabella and Terry Jan Reedy in multiple issues.) 991 992The font sample now includes a selection of non-Latin characters so that 993users can better see the effect of selecting a particular font. 994(Contributed by Terry Jan Reedy in :issue:`13802`.) 995The sample can be edited to include other characters. 996(Contributed by Serhiy Storchaka in :issue:`31860`.) 997 998The IDLE features formerly implemented as extensions have been reimplemented 999as normal features. Their settings have been moved from the Extensions tab 1000to other dialog tabs. 1001(Contributed by Charles Wohlganger and Terry Jan Reedy in :issue:`27099`.) 1002 1003Editor code context option revised. Box displays all context lines up to 1004maxlines. Clicking on a context line jumps the editor to that line. Context 1005colors for custom themes is added to Highlights tab of Settings dialog. 1006(Contributed by Cheryl Sabella and Terry Jan Reedy in :issue:`33642`, 1007:issue:`33768`, and :issue:`33679`.) 1008 1009On Windows, a new API call tells Windows that tk scales for DPI. On Windows 10108.1+ or 10, with DPI compatibility properties of the Python binary 1011unchanged, and a monitor resolution greater than 96 DPI, this should 1012make text and lines sharper. It should otherwise have no effect. 1013(Contributed by Terry Jan Reedy in :issue:`33656`.) 1014 1015New in 3.7.1: 1016 1017Output over N lines (50 by default) is squeezed down to a button. 1018N can be changed in the PyShell section of the General page of the 1019Settings dialog. Fewer, but possibly extra long, lines can be squeezed by 1020right clicking on the output. Squeezed output can be expanded in place 1021by double-clicking the button or into the clipboard or a separate window 1022by right-clicking the button. (Contributed by Tal Einat in :issue:`1529353`.) 1023 1024The changes above have been backported to 3.6 maintenance releases. 1025 1026NEW in 3.7.4: 1027 1028Add "Run Customized" to the Run menu to run a module with customized 1029settings. Any command line arguments entered are added to sys.argv. 1030They re-appear in the box for the next customized run. One can also 1031suppress the normal Shell main module restart. (Contributed by Cheryl 1032Sabella, Terry Jan Reedy, and others in :issue:`5680` and :issue:`37627`.) 1033 1034New in 3.7.5: 1035 1036Add optional line numbers for IDLE editor windows. Windows 1037open without line numbers unless set otherwise in the General 1038tab of the configuration dialog. Line numbers for an existing 1039window are shown and hidden in the Options menu. 1040(Contributed by Tal Einat and Saimadhav Heblikar in :issue:`17535`.) 1041 1042 1043importlib 1044--------- 1045 1046The :class:`importlib.abc.ResourceReader` ABC was introduced to 1047support the loading of resources from packages. See also 1048:ref:`whatsnew37_importlib_resources`. 1049(Contributed by Barry Warsaw, Brett Cannon in :issue:`32248`.) 1050 1051:func:`importlib.reload` now raises :exc:`ModuleNotFoundError` if the module 1052lacks a spec. 1053(Contributed by Garvit Khatri in :issue:`29851`.) 1054 1055:func:`importlib.find_spec` now raises :exc:`ModuleNotFoundError` instead of 1056:exc:`AttributeError` if the specified parent module is not a package (i.e. 1057lacks a ``__path__`` attribute). 1058(Contributed by Milan Oberkirch in :issue:`30436`.) 1059 1060The new :func:`importlib.source_hash` can be used to compute the hash of 1061the passed source. A :ref:`hash-based .pyc file <whatsnew37-pep552>` 1062embeds the value returned by this function. 1063 1064 1065io 1066-- 1067 1068The new :meth:`TextIOWrapper.reconfigure() <io.TextIOWrapper.reconfigure>` 1069method can be used to reconfigure the text stream with the new settings. 1070(Contributed by Antoine Pitrou in :issue:`30526` and 1071INADA Naoki in :issue:`15216`.) 1072 1073 1074ipaddress 1075--------- 1076 1077The new ``subnet_of()`` and ``supernet_of()`` methods of 1078:class:`ipaddress.IPv6Network` and :class:`ipaddress.IPv4Network` can 1079be used for network containment tests. 1080(Contributed by Michel Albert and Cheryl Sabella in :issue:`20825`.) 1081 1082 1083itertools 1084--------- 1085 1086:func:`itertools.islice` now accepts 1087:meth:`integer-like objects <object.__index__>` as start, stop, 1088and slice arguments. 1089(Contributed by Will Roberts in :issue:`30537`.) 1090 1091 1092locale 1093------ 1094 1095The new *monetary* argument to :func:`locale.format_string` can be used 1096to make the conversion use monetary thousands separators and 1097grouping strings. (Contributed by Garvit in :issue:`10379`.) 1098 1099The :func:`locale.getpreferredencoding` function now always returns ``'UTF-8'`` 1100on Android or when in the :ref:`forced UTF-8 mode <whatsnew37-pep540>`. 1101 1102 1103logging 1104------- 1105 1106:class:`~logging.Logger` instances can now be pickled. 1107(Contributed by Vinay Sajip in :issue:`30520`.) 1108 1109The new :meth:`StreamHandler.setStream() <logging.StreamHandler.setStream>` 1110method can be used to replace the logger stream after handler creation. 1111(Contributed by Vinay Sajip in :issue:`30522`.) 1112 1113It is now possible to specify keyword arguments to handler constructors in 1114configuration passed to :func:`logging.config.fileConfig`. 1115(Contributed by Preston Landers in :issue:`31080`.) 1116 1117 1118math 1119---- 1120 1121The new :func:`math.remainder` function implements the IEEE 754-style remainder 1122operation. (Contributed by Mark Dickinson in :issue:`29962`.) 1123 1124 1125mimetypes 1126--------- 1127 1128The MIME type of .bmp has been changed from ``'image/x-ms-bmp'`` to 1129``'image/bmp'``. 1130(Contributed by Nitish Chandra in :issue:`22589`.) 1131 1132 1133msilib 1134------ 1135 1136The new :meth:`Database.Close() <msilib.Database.Close>` method can be used 1137to close the :abbr:`MSI` database. 1138(Contributed by Berker Peksag in :issue:`20486`.) 1139 1140 1141multiprocessing 1142--------------- 1143 1144The new :meth:`Process.close() <multiprocessing.Process.close>` method 1145explicitly closes the process object and releases all resources associated 1146with it. :exc:`ValueError` is raised if the underlying process is still 1147running. 1148(Contributed by Antoine Pitrou in :issue:`30596`.) 1149 1150The new :meth:`Process.kill() <multiprocessing.Process.kill>` method can 1151be used to terminate the process using the :data:`SIGKILL` signal on Unix. 1152(Contributed by Vitor Pereira in :issue:`30794`.) 1153 1154Non-daemonic threads created by :class:`~multiprocessing.Process` are now 1155joined on process exit. 1156(Contributed by Antoine Pitrou in :issue:`18966`.) 1157 1158 1159os 1160-- 1161 1162:func:`os.fwalk` now accepts the *path* argument as :class:`bytes`. 1163(Contributed by Serhiy Storchaka in :issue:`28682`.) 1164 1165:func:`os.scandir` gained support for :ref:`file descriptors <path_fd>`. 1166(Contributed by Serhiy Storchaka in :issue:`25996`.) 1167 1168The new :func:`~os.register_at_fork` function allows registering Python 1169callbacks to be executed at process fork. 1170(Contributed by Antoine Pitrou in :issue:`16500`.) 1171 1172Added :func:`os.preadv` (combine the functionality of :func:`os.readv` and 1173:func:`os.pread`) and :func:`os.pwritev` functions (combine the functionality 1174of :func:`os.writev` and :func:`os.pwrite`). (Contributed by Pablo Galindo in 1175:issue:`31368`.) 1176 1177The mode argument of :func:`os.makedirs` no longer affects the file 1178permission bits of newly created intermediate-level directories. 1179(Contributed by Serhiy Storchaka in :issue:`19930`.) 1180 1181:func:`os.dup2` now returns the new file descriptor. Previously, ``None`` 1182was always returned. 1183(Contributed by Benjamin Peterson in :issue:`32441`.) 1184 1185The structure returned by :func:`os.stat` now contains the 1186:attr:`~os.stat_result.st_fstype` attribute on Solaris and its derivatives. 1187(Contributed by Jesús Cea Avión in :issue:`32659`.) 1188 1189 1190pathlib 1191------- 1192 1193The new :meth:`Path.is_mount() <pathlib.Path.is_mount>` method is now available 1194on POSIX systems and can be used to determine whether a path is a mount point. 1195(Contributed by Cooper Ry Lees in :issue:`30897`.) 1196 1197 1198pdb 1199--- 1200 1201:func:`pdb.set_trace` now takes an optional *header* keyword-only 1202argument. If given, it is printed to the console just before debugging 1203begins. (Contributed by Barry Warsaw in :issue:`31389`.) 1204 1205:mod:`pdb` command line now accepts ``-m module_name`` as an alternative to 1206script file. (Contributed by Mario Corchero in :issue:`32206`.) 1207 1208 1209py_compile 1210---------- 1211 1212:func:`py_compile.compile` -- and by extension, :mod:`compileall` -- now 1213respects the :envvar:`SOURCE_DATE_EPOCH` environment variable by 1214unconditionally creating ``.pyc`` files for hash-based validation. 1215This allows for guaranteeing 1216`reproducible builds <https://reproducible-builds.org/>`_ of ``.pyc`` 1217files when they are created eagerly. (Contributed by Bernhard M. Wiedemann 1218in :issue:`29708`.) 1219 1220 1221pydoc 1222----- 1223 1224The pydoc server can now bind to an arbitrary hostname specified by the 1225new ``-n`` command-line argument. 1226(Contributed by Feanil Patel in :issue:`31128`.) 1227 1228 1229queue 1230----- 1231 1232The new :class:`~queue.SimpleQueue` class is an unbounded :abbr:`FIFO` queue. 1233(Contributed by Antoine Pitrou in :issue:`14976`.) 1234 1235 1236re 1237-- 1238 1239The flags :const:`re.ASCII`, :const:`re.LOCALE` and :const:`re.UNICODE` 1240can be set within the scope of a group. 1241(Contributed by Serhiy Storchaka in :issue:`31690`.) 1242 1243:func:`re.split` now supports splitting on a pattern like ``r'\b'``, 1244``'^$'`` or ``(?=-)`` that matches an empty string. 1245(Contributed by Serhiy Storchaka in :issue:`25054`.) 1246 1247Regular expressions compiled with the :const:`re.LOCALE` flag no longer 1248depend on the locale at compile time. Locale settings are applied only 1249when the compiled regular expression is used. 1250(Contributed by Serhiy Storchaka in :issue:`30215`.) 1251 1252:exc:`FutureWarning` is now emitted if a regular expression contains 1253character set constructs that will change semantically in the future, 1254such as nested sets and set operations. 1255(Contributed by Serhiy Storchaka in :issue:`30349`.) 1256 1257Compiled regular expression and match objects can now be copied 1258using :func:`copy.copy` and :func:`copy.deepcopy`. 1259(Contributed by Serhiy Storchaka in :issue:`10076`.) 1260 1261 1262signal 1263------ 1264 1265The new *warn_on_full_buffer* argument to the :func:`signal.set_wakeup_fd` 1266function makes it possible to specify whether Python prints a warning on 1267stderr when the wakeup buffer overflows. 1268(Contributed by Nathaniel J. Smith in :issue:`30050`.) 1269 1270 1271socket 1272------ 1273 1274The new :func:`socket.getblocking() <socket.socket.getblocking>` method 1275returns ``True`` if the socket is in blocking mode and ``False`` otherwise. 1276(Contributed by Yury Selivanov in :issue:`32373`.) 1277 1278The new :func:`socket.close` function closes the passed socket file descriptor. 1279This function should be used instead of :func:`os.close` for better 1280compatibility across platforms. 1281(Contributed by Christian Heimes in :issue:`32454`.) 1282 1283The :mod:`socket` module now exposes the :data:`socket.TCP_CONGESTION` 1284(Linux 2.6.13), :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37), and 1285:data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constants. 1286(Contributed by Omar Sandoval in :issue:`26273` and 1287Nathaniel J. Smith in :issue:`29728`.) 1288 1289Support for :data:`socket.AF_VSOCK` sockets has been added to allow 1290communication between virtual machines and their hosts. 1291(Contributed by Cathy Avery in :issue:`27584`.) 1292 1293Sockets now auto-detect family, type and protocol from file descriptor 1294by default. 1295(Contributed by Christian Heimes in :issue:`28134`.) 1296 1297 1298socketserver 1299------------ 1300 1301:meth:`socketserver.ThreadingMixIn.server_close` now waits until all non-daemon 1302threads complete. :meth:`socketserver.ForkingMixIn.server_close` now waits 1303until all child processes complete. 1304 1305Add a new :attr:`socketserver.ForkingMixIn.block_on_close` class attribute to 1306:class:`socketserver.ForkingMixIn` and :class:`socketserver.ThreadingMixIn` 1307classes. Set the class attribute to ``False`` to get the pre-3.7 behaviour. 1308 1309 1310sqlite3 1311------- 1312 1313:class:`sqlite3.Connection` now exposes the :meth:`~sqlite3.Connection.backup` 1314method when the underlying SQLite library is at version 3.6.11 or higher. 1315(Contributed by Lele Gaifax in :issue:`27645`.) 1316 1317The *database* argument of :func:`sqlite3.connect` now accepts any 1318:term:`path-like object`, instead of just a string. 1319(Contributed by Anders Lorentsen in :issue:`31843`.) 1320 1321 1322ssl 1323--- 1324 1325The :mod:`ssl` module now uses OpenSSL's builtin API instead of 1326:func:`~ssl.match_hostname` to check a host name or an IP address. Values 1327are validated during TLS handshake. Any certificate validation error 1328including failing the host name check now raises 1329:exc:`~ssl.SSLCertVerificationError` and aborts the handshake with a proper 1330TLS Alert message. The new exception contains additional information. 1331Host name validation can be customized with 1332:attr:`SSLContext.hostname_checks_common_name <ssl.SSLContext.hostname_checks_common_name>`. 1333(Contributed by Christian Heimes in :issue:`31399`.) 1334 1335.. note:: 1336 The improved host name check requires a *libssl* implementation compatible 1337 with OpenSSL 1.0.2 or 1.1. Consequently, OpenSSL 0.9.8 and 1.0.1 are no 1338 longer supported (see :ref:`37-platform-support-removals` for more details). 1339 The ssl module is mostly compatible with LibreSSL 2.7.2 and newer. 1340 1341The ``ssl`` module no longer sends IP addresses in SNI TLS extension. 1342(Contributed by Christian Heimes in :issue:`32185`.) 1343 1344:func:`~ssl.match_hostname` no longer supports partial wildcards like 1345``www*.example.org``. 1346(Contributed by Mandeep Singh in :issue:`23033` and Christian Heimes in 1347:issue:`31399`.) 1348 1349The default cipher suite selection of the ``ssl`` module now uses a blacklist 1350approach rather than a hard-coded whitelist. Python no longer re-enables 1351ciphers that have been blocked by OpenSSL security updates. Default cipher 1352suite selection can be configured at compile time. 1353(Contributed by Christian Heimes in :issue:`31429`.) 1354 1355Validation of server certificates containing internationalized domain names 1356(IDNs) is now supported. As part of this change, the 1357:attr:`SSLSocket.server_hostname <ssl.SSLSocket.server_hostname>` attribute 1358now stores the expected hostname in A-label form (``"xn--pythn-mua.org"``), 1359rather than the U-label form (``"pythön.org"``). (Contributed by 1360Nathaniel J. Smith and Christian Heimes in :issue:`28414`.) 1361 1362The ``ssl`` module has preliminary and experimental support for TLS 1.3 and 1363OpenSSL 1.1.1. At the time of Python 3.7.0 release, OpenSSL 1.1.1 is still 1364under development and TLS 1.3 hasn't been finalized yet. The TLS 1.3 1365handshake and protocol behaves slightly differently than TLS 1.2 and earlier, 1366see :ref:`ssl-tlsv1_3`. 1367(Contributed by Christian Heimes in :issue:`32947`, :issue:`20995`, 1368:issue:`29136`, :issue:`30622` and :issue:`33618`) 1369 1370:class:`~ssl.SSLSocket` and :class:`~ssl.SSLObject` no longer have a public 1371constructor. Direct instantiation was never a documented and supported 1372feature. Instances must be created with :class:`~ssl.SSLContext` methods 1373:meth:`~ssl.SSLContext.wrap_socket` and :meth:`~ssl.SSLContext.wrap_bio`. 1374(Contributed by Christian Heimes in :issue:`32951`) 1375 1376OpenSSL 1.1 APIs for setting the minimum and maximum TLS protocol version are 1377available as :attr:`SSLContext.minimum_version <ssl.SSLContext.minimum_version>` 1378and :attr:`SSLContext.maximum_version <ssl.SSLContext.maximum_version>`. 1379Supported protocols are indicated by several new flags, such as 1380:data:`~ssl.HAS_TLSv1_1`. 1381(Contributed by Christian Heimes in :issue:`32609`.) 1382 1383 1384string 1385------ 1386 1387:class:`string.Template` now lets you to optionally modify the regular 1388expression pattern for braced placeholders and non-braced placeholders 1389separately. (Contributed by Barry Warsaw in :issue:`1198569`.) 1390 1391 1392subprocess 1393---------- 1394 1395The :func:`subprocess.run` function accepts the new *capture_output* 1396keyword argument. When true, stdout and stderr will be captured. 1397This is equivalent to passing :data:`subprocess.PIPE` as *stdout* and 1398*stderr* arguments. 1399(Contributed by Bo Bayles in :issue:`32102`.) 1400 1401The ``subprocess.run`` function and the :class:`subprocess.Popen` constructor 1402now accept the *text* keyword argument as an alias 1403to *universal_newlines*. 1404(Contributed by Andrew Clegg in :issue:`31756`.) 1405 1406On Windows the default for *close_fds* was changed from ``False`` to 1407``True`` when redirecting the standard handles. It's now possible to set 1408*close_fds* to true when redirecting the standard handles. See 1409:class:`subprocess.Popen`. This means that *close_fds* now defaults to 1410``True`` on all supported platforms. 1411(Contributed by Segev Finer in :issue:`19764`.) 1412 1413The subprocess module is now more graceful when handling 1414:exc:`KeyboardInterrupt` during :func:`subprocess.call`, 1415:func:`subprocess.run`, or in a :class:`~subprocess.Popen` 1416context manager. It now waits a short amount of time for the child 1417to exit, before continuing the handling of the ``KeyboardInterrupt`` 1418exception. 1419(Contributed by Gregory P. Smith in :issue:`25942`.) 1420 1421 1422sys 1423--- 1424 1425The new :func:`sys.breakpointhook` hook function is called by the 1426built-in :func:`breakpoint`. 1427(Contributed by Barry Warsaw in :issue:`31353`.) 1428 1429On Android, the new :func:`sys.getandroidapilevel` returns the build-time 1430Android API version. 1431(Contributed by Victor Stinner in :issue:`28740`.) 1432 1433The new :func:`sys.get_coroutine_origin_tracking_depth` function returns 1434the current coroutine origin tracking depth, as set by 1435the new :func:`sys.set_coroutine_origin_tracking_depth`. :mod:`asyncio` 1436has been converted to use this new API instead of 1437the deprecated :func:`sys.set_coroutine_wrapper`. 1438(Contributed by Nathaniel J. Smith in :issue:`32591`.) 1439 1440 1441time 1442---- 1443 1444:pep:`564` adds six new functions with nanosecond resolution to the 1445:mod:`time` module: 1446 1447* :func:`time.clock_gettime_ns` 1448* :func:`time.clock_settime_ns` 1449* :func:`time.monotonic_ns` 1450* :func:`time.perf_counter_ns` 1451* :func:`time.process_time_ns` 1452* :func:`time.time_ns` 1453 1454New clock identifiers have been added: 1455 1456* :data:`time.CLOCK_BOOTTIME` (Linux): Identical to 1457 :data:`time.CLOCK_MONOTONIC`, except it also includes any time that the 1458 system is suspended. 1459* :data:`time.CLOCK_PROF` (FreeBSD, NetBSD and OpenBSD): High-resolution 1460 per-process CPU timer. 1461* :data:`time.CLOCK_UPTIME` (FreeBSD, OpenBSD): Time whose absolute value is 1462 the time the system has been running and not suspended, providing accurate 1463 uptime measurement. 1464 1465The new :func:`time.thread_time` and :func:`time.thread_time_ns` functions 1466can be used to get per-thread CPU time measurements. 1467(Contributed by Antoine Pitrou in :issue:`32025`.) 1468 1469The new :func:`time.pthread_getcpuclockid` function returns the clock ID 1470of the thread-specific CPU-time clock. 1471 1472 1473tkinter 1474------- 1475 1476The new :class:`tkinter.ttk.Spinbox` class is now available. 1477(Contributed by Alan Moore in :issue:`32585`.) 1478 1479 1480tracemalloc 1481----------- 1482 1483:class:`tracemalloc.Traceback` behaves more like regular tracebacks, 1484sorting the frames from oldest to most recent. 1485:meth:`Traceback.format() <tracemalloc.Traceback.format>` 1486now accepts negative *limit*, truncating the result to the 1487``abs(limit)`` oldest frames. To get the old behaviour, use 1488the new *most_recent_first* argument to ``Traceback.format()``. 1489(Contributed by Jesse Bakker in :issue:`32121`.) 1490 1491 1492types 1493----- 1494 1495The new :class:`~types.WrapperDescriptorType`, 1496:class:`~types.MethodWrapperType`, :class:`~types.MethodDescriptorType`, 1497and :class:`~types.ClassMethodDescriptorType` classes are now available. 1498(Contributed by Manuel Krebber and Guido van Rossum in :issue:`29377`, 1499and Serhiy Storchaka in :issue:`32265`.) 1500 1501The new :func:`types.resolve_bases` function resolves MRO entries 1502dynamically as specified by :pep:`560`. 1503(Contributed by Ivan Levkivskyi in :issue:`32717`.) 1504 1505 1506unicodedata 1507----------- 1508 1509The internal :mod:`unicodedata` database has been upgraded to use `Unicode 11 1510<https://www.unicode.org/versions/Unicode11.0.0/>`_. (Contributed by Benjamin 1511Peterson.) 1512 1513 1514unittest 1515-------- 1516 1517The new ``-k`` command-line option allows filtering tests by a name 1518substring or a Unix shell-like pattern. 1519For example, ``python -m unittest -k foo`` runs 1520``foo_tests.SomeTest.test_something``, ``bar_tests.SomeTest.test_foo``, 1521but not ``bar_tests.FooTest.test_something``. 1522(Contributed by Jonas Haag in :issue:`32071`.) 1523 1524 1525unittest.mock 1526------------- 1527 1528The :const:`~unittest.mock.sentinel` attributes now preserve their identity 1529when they are :mod:`copied <copy>` or :mod:`pickled <pickle>`. (Contributed by 1530Serhiy Storchaka in :issue:`20804`.) 1531 1532The new :func:`~unittest.mock.seal` function allows sealing 1533:class:`~unittest.mock.Mock` instances, which will disallow further creation 1534of attribute mocks. The seal is applied recursively to all attributes that 1535are themselves mocks. 1536(Contributed by Mario Corchero in :issue:`30541`.) 1537 1538 1539urllib.parse 1540------------ 1541 1542:func:`urllib.parse.quote` has been updated from :rfc:`2396` to :rfc:`3986`, 1543adding ``~`` to the set of characters that are never quoted by default. 1544(Contributed by Christian Theune and Ratnadeep Debnath in :issue:`16285`.) 1545 1546 1547uu 1548-- 1549 1550The :func:`uu.encode` function now accepts an optional *backtick* 1551keyword argument. When it's true, zeros are represented by ``'`'`` 1552instead of spaces. (Contributed by Xiang Zhang in :issue:`30103`.) 1553 1554 1555uuid 1556---- 1557 1558The new :attr:`UUID.is_safe <uuid.UUID.is_safe>` attribute relays information 1559from the platform about whether generated UUIDs are generated with a 1560multiprocessing-safe method. 1561(Contributed by Barry Warsaw in :issue:`22807`.) 1562 1563:func:`uuid.getnode` now prefers universally administered 1564MAC addresses over locally administered MAC addresses. 1565This makes a better guarantee for global uniqueness of UUIDs returned 1566from :func:`uuid.uuid1`. If only locally administered MAC addresses are 1567available, the first such one found is returned. 1568(Contributed by Barry Warsaw in :issue:`32107`.) 1569 1570 1571warnings 1572-------- 1573 1574The initialization of the default warnings filters has changed as follows: 1575 1576* warnings enabled via command line options (including those for :option:`-b` 1577 and the new CPython-specific :option:`-X` ``dev`` option) are always passed 1578 to the warnings machinery via the :data:`sys.warnoptions` attribute. 1579 1580* warnings filters enabled via the command line or the environment now have the 1581 following order of precedence: 1582 1583 * the ``BytesWarning`` filter for :option:`-b` (or ``-bb``) 1584 * any filters specified with the :option:`-W` option 1585 * any filters specified with the :envvar:`PYTHONWARNINGS` environment 1586 variable 1587 * any other CPython specific filters (e.g. the ``default`` filter added 1588 for the new ``-X dev`` mode) 1589 * any implicit filters defined directly by the warnings machinery 1590 1591* in :ref:`CPython debug builds <debug-build>`, all warnings are now displayed 1592 by default (the implicit filter list is empty) 1593 1594(Contributed by Nick Coghlan and Victor Stinner in :issue:`20361`, 1595:issue:`32043`, and :issue:`32230`.) 1596 1597Deprecation warnings are once again shown by default in single-file scripts and 1598at the interactive prompt. See :ref:`whatsnew37-pep565` for details. 1599(Contributed by Nick Coghlan in :issue:`31975`.) 1600 1601 1602xml.etree 1603--------- 1604 1605:ref:`ElementPath <elementtree-xpath>` predicates in the :meth:`find` 1606methods can now compare text of the current node with ``[. = "text"]``, 1607not only text in children. Predicates also allow adding spaces for 1608better readability. (Contributed by Stefan Behnel in :issue:`31648`.) 1609 1610 1611xmlrpc.server 1612------------- 1613 1614:meth:`SimpleXMLRPCDispatcher.register_function <xmlrpc.server.SimpleXMLRPCDispatcher>` 1615can now be used as a decorator. (Contributed by Xiang Zhang in 1616:issue:`7769`.) 1617 1618 1619zipapp 1620------ 1621 1622Function :func:`~zipapp.create_archive` now accepts an optional *filter* 1623argument to allow the user to select which files should be included in the 1624archive. (Contributed by Irmen de Jong in :issue:`31072`.) 1625 1626Function :func:`~zipapp.create_archive` now accepts an optional *compressed* 1627argument to generate a compressed archive. A command line option 1628``--compress`` has also been added to support compression. 1629(Contributed by Zhiming Wang in :issue:`31638`.) 1630 1631 1632zipfile 1633------- 1634 1635:class:`~zipfile.ZipFile` now accepts the new *compresslevel* parameter to 1636control the compression level. 1637(Contributed by Bo Bayles in :issue:`21417`.) 1638 1639Subdirectories in archives created by ``ZipFile`` are now stored in 1640alphabetical order. 1641(Contributed by Bernhard M. Wiedemann in :issue:`30693`.) 1642 1643 1644C API Changes 1645============= 1646 1647A new API for thread-local storage has been implemented. See 1648:ref:`whatsnew37-pep539` for an overview and 1649:ref:`thread-specific-storage-api` for a complete reference. 1650(Contributed by Masayuki Yamamoto in :issue:`25658`.) 1651 1652The new :ref:`context variables <whatsnew37-pep567>` functionality 1653exposes a number of :ref:`new C APIs <contextvarsobjects>`. 1654 1655The new :c:func:`PyImport_GetModule` function returns the previously 1656imported module with the given name. 1657(Contributed by Eric Snow in :issue:`28411`.) 1658 1659The new :c:macro:`Py_RETURN_RICHCOMPARE` macro eases writing rich 1660comparison functions. 1661(Contributed by Petr Victorin in :issue:`23699`.) 1662 1663The new :c:macro:`Py_UNREACHABLE` macro can be used to mark unreachable 1664code paths. 1665(Contributed by Barry Warsaw in :issue:`31338`.) 1666 1667The :mod:`tracemalloc` now exposes a C API through the new 1668:c:func:`PyTraceMalloc_Track` and :c:func:`PyTraceMalloc_Untrack` 1669functions. 1670(Contributed by Victor Stinner in :issue:`30054`.) 1671 1672The new :c:func:`import__find__load__start` and 1673:c:func:`import__find__load__done` static markers can be used to trace 1674module imports. 1675(Contributed by Christian Heimes in :issue:`31574`.) 1676 1677The fields :c:member:`name` and :c:member:`doc` of structures 1678:c:type:`PyMemberDef`, :c:type:`PyGetSetDef`, 1679:c:type:`PyStructSequence_Field`, :c:type:`PyStructSequence_Desc`, 1680and :c:type:`wrapperbase` are now of type ``const char *`` rather of 1681``char *``. (Contributed by Serhiy Storchaka in :issue:`28761`.) 1682 1683The result of :c:func:`PyUnicode_AsUTF8AndSize` and :c:func:`PyUnicode_AsUTF8` 1684is now of type ``const char *`` rather of ``char *``. (Contributed by Serhiy 1685Storchaka in :issue:`28769`.) 1686 1687The result of :c:func:`PyMapping_Keys`, :c:func:`PyMapping_Values` and 1688:c:func:`PyMapping_Items` is now always a list, rather than a list or a 1689tuple. (Contributed by Oren Milman in :issue:`28280`.) 1690 1691Added functions :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices`. 1692(Contributed by Serhiy Storchaka in :issue:`27867`.) 1693 1694:c:func:`PyOS_AfterFork` is deprecated in favour of the new functions 1695:c:func:`PyOS_BeforeFork`, :c:func:`PyOS_AfterFork_Parent` and 1696:c:func:`PyOS_AfterFork_Child`. (Contributed by Antoine Pitrou in 1697:issue:`16500`.) 1698 1699The ``PyExc_RecursionErrorInst`` singleton that was part of the public API 1700has been removed as its members being never cleared may cause a segfault 1701during finalization of the interpreter. Contributed by Xavier de Gaye in 1702:issue:`22898` and :issue:`30697`. 1703 1704Added C API support for timezones with timezone constructors 1705:c:func:`PyTimeZone_FromOffset` and :c:func:`PyTimeZone_FromOffsetAndName`, 1706and access to the UTC singleton with :c:data:`PyDateTime_TimeZone_UTC`. 1707Contributed by Paul Ganssle in :issue:`10381`. 1708 1709The type of results of :c:func:`PyThread_start_new_thread` and 1710:c:func:`PyThread_get_thread_ident`, and the *id* parameter of 1711:c:func:`PyThreadState_SetAsyncExc` changed from :c:expr:`long` to 1712:c:expr:`unsigned long`. 1713(Contributed by Serhiy Storchaka in :issue:`6532`.) 1714 1715:c:func:`PyUnicode_AsWideCharString` now raises a :exc:`ValueError` if the 1716second argument is ``NULL`` and the :c:expr:`wchar_t*` string contains null 1717characters. (Contributed by Serhiy Storchaka in :issue:`30708`.) 1718 1719Changes to the startup sequence and the management of dynamic memory 1720allocators mean that the long documented requirement to call 1721:c:func:`Py_Initialize` before calling most C API functions is now 1722relied on more heavily, and failing to abide by it may lead to segfaults in 1723embedding applications. See the :ref:`porting-to-python-37` section in this 1724document and the :ref:`pre-init-safe` section in the C API documentation 1725for more details. 1726 1727The new :c:func:`PyInterpreterState_GetID` returns the unique ID for a 1728given interpreter. 1729(Contributed by Eric Snow in :issue:`29102`.) 1730 1731:c:func:`Py_DecodeLocale`, :c:func:`Py_EncodeLocale` now use the UTF-8 1732encoding when the :ref:`UTF-8 mode <whatsnew37-pep540>` is enabled. 1733(Contributed by Victor Stinner in :issue:`29240`.) 1734 1735:c:func:`PyUnicode_DecodeLocaleAndSize` and :c:func:`PyUnicode_EncodeLocale` 1736now use the current locale encoding for ``surrogateescape`` error handler. 1737(Contributed by Victor Stinner in :issue:`29240`.) 1738 1739The *start* and *end* parameters of :c:func:`PyUnicode_FindChar` are 1740now adjusted to behave like string slices. 1741(Contributed by Xiang Zhang in :issue:`28822`.) 1742 1743 1744Build Changes 1745============= 1746 1747Support for building ``--without-threads`` has been removed. The 1748:mod:`threading` module is now always available. 1749(Contributed by Antoine Pitrou in :issue:`31370`.). 1750 1751A full copy of libffi is no longer bundled for use when building the 1752:mod:`_ctypes <ctypes>` module on non-OSX UNIX platforms. An installed copy 1753of libffi is now required when building ``_ctypes`` on such platforms. 1754(Contributed by Zachary Ware in :issue:`27979`.) 1755 1756The Windows build process no longer depends on Subversion to pull in external 1757sources, a Python script is used to download zipfiles from GitHub instead. 1758If Python 3.6 is not found on the system (via ``py -3.6``), NuGet is used to 1759download a copy of 32-bit Python for this purpose. (Contributed by Zachary 1760Ware in :issue:`30450`.) 1761 1762The :mod:`ssl` module requires OpenSSL 1.0.2 or 1.1 compatible libssl. 1763OpenSSL 1.0.1 has reached end of lifetime on 2016-12-31 and is no longer 1764supported. LibreSSL is temporarily not supported as well. LibreSSL releases 1765up to version 2.6.4 are missing required OpenSSL 1.0.2 APIs. 1766 1767 1768.. _whatsnew37-perf: 1769 1770Optimizations 1771============= 1772 1773The overhead of calling many methods of various standard library classes 1774implemented in C has been significantly reduced by porting more code 1775to use the ``METH_FASTCALL`` convention. 1776(Contributed by Victor Stinner in :issue:`29300`, :issue:`29507`, 1777:issue:`29452`, and :issue:`29286`.) 1778 1779Various optimizations have reduced Python startup time by 10% on Linux and 1780up to 30% on macOS. 1781(Contributed by Victor Stinner, INADA Naoki in :issue:`29585`, and 1782Ivan Levkivskyi in :issue:`31333`.) 1783 1784Method calls are now up to 20% faster due to the bytecode changes which 1785avoid creating bound method instances. 1786(Contributed by Yury Selivanov and INADA Naoki in :issue:`26110`.) 1787 1788.. _whatsnew37-asyncio-perf: 1789 1790The :mod:`asyncio` module received a number of notable optimizations for 1791commonly used functions: 1792 1793* The :func:`asyncio.get_event_loop` function has been reimplemented in C to 1794 make it up to 15 times faster. 1795 (Contributed by Yury Selivanov in :issue:`32296`.) 1796 1797* :class:`asyncio.Future` callback management has been optimized. 1798 (Contributed by Yury Selivanov in :issue:`32348`.) 1799 1800* :func:`asyncio.gather` is now up to 15% faster. 1801 (Contributed by Yury Selivanov in :issue:`32355`.) 1802 1803* :func:`asyncio.sleep` is now up to 2 times faster when the *delay* 1804 argument is zero or negative. 1805 (Contributed by Andrew Svetlov in :issue:`32351`.) 1806 1807* The performance overhead of asyncio debug mode has been reduced. 1808 (Contributed by Antoine Pitrou in :issue:`31970`.) 1809 1810As a result of :ref:`PEP 560 work <whatsnew37-pep560>`, the import time 1811of :mod:`typing` has been reduced by a factor of 7, and many typing operations 1812are now faster. 1813(Contributed by Ivan Levkivskyi in :issue:`32226`.) 1814 1815:func:`sorted` and :meth:`list.sort` have been optimized for common cases 1816to be up to 40-75% faster. 1817(Contributed by Elliot Gorokhovsky in :issue:`28685`.) 1818 1819:meth:`dict.copy` is now up to 5.5 times faster. 1820(Contributed by Yury Selivanov in :issue:`31179`.) 1821 1822:func:`hasattr` and :func:`getattr` are now about 4 times faster when 1823*name* is not found and *obj* does not override :meth:`object.__getattr__` 1824or :meth:`object.__getattribute__`. 1825(Contributed by INADA Naoki in :issue:`32544`.) 1826 1827Searching for certain Unicode characters (like Ukrainian capital "Є") 1828in a string was up to 25 times slower than searching for other characters. 1829It is now only 3 times slower in the worst case. 1830(Contributed by Serhiy Storchaka in :issue:`24821`.) 1831 1832The :func:`collections.namedtuple` factory has been reimplemented to 1833make the creation of named tuples 4 to 6 times faster. 1834(Contributed by Jelle Zijlstra with further improvements by INADA Naoki, 1835Serhiy Storchaka, and Raymond Hettinger in :issue:`28638`.) 1836 1837:meth:`date.fromordinal` and :meth:`date.fromtimestamp` are now up to 183830% faster in the common case. 1839(Contributed by Paul Ganssle in :issue:`32403`.) 1840 1841The :func:`os.fwalk` function is now up to 2 times faster thanks to 1842the use of :func:`os.scandir`. 1843(Contributed by Serhiy Storchaka in :issue:`25996`.) 1844 1845The speed of the :func:`shutil.rmtree` function has been improved by 184620--40% thanks to the use of the :func:`os.scandir` function. 1847(Contributed by Serhiy Storchaka in :issue:`28564`.) 1848 1849Optimized case-insensitive matching and searching of :mod:`regular 1850expressions <re>`. Searching some patterns can now be up to 20 times faster. 1851(Contributed by Serhiy Storchaka in :issue:`30285`.) 1852 1853:func:`re.compile` now converts ``flags`` parameter to int object if 1854it is ``RegexFlag``. It is now as fast as Python 3.5, and faster than 1855Python 3.6 by about 10% depending on the pattern. 1856(Contributed by INADA Naoki in :issue:`31671`.) 1857 1858The :meth:`~selectors.BaseSelector.modify` methods of classes 1859:class:`selectors.EpollSelector`, :class:`selectors.PollSelector` 1860and :class:`selectors.DevpollSelector` may be around 10% faster under 1861heavy loads. (Contributed by Giampaolo Rodola' in :issue:`30014`) 1862 1863Constant folding has been moved from the peephole optimizer to the new AST 1864optimizer, which is able perform optimizations more consistently. 1865(Contributed by Eugene Toder and INADA Naoki in :issue:`29469` and 1866:issue:`11549`.) 1867 1868Most functions and methods in :mod:`abc` have been rewritten in C. 1869This makes creation of abstract base classes, and calling :func:`isinstance` 1870and :func:`issubclass` on them 1.5x faster. This also reduces Python 1871start-up time by up to 10%. (Contributed by Ivan Levkivskyi and INADA Naoki 1872in :issue:`31333`) 1873 1874Significant speed improvements to alternate constructors for 1875:class:`datetime.date` and :class:`datetime.datetime` by using fast-path 1876constructors when not constructing subclasses. (Contributed by Paul Ganssle 1877in :issue:`32403`) 1878 1879The speed of comparison of :class:`array.array` instances has been 1880improved considerably in certain cases. It is now from 10x to 70x faster 1881when comparing arrays holding values of the same integer type. 1882(Contributed by Adrian Wielgosik in :issue:`24700`.) 1883 1884The :func:`math.erf` and :func:`math.erfc` functions now use the (faster) 1885C library implementation on most platforms. 1886(Contributed by Serhiy Storchaka in :issue:`26121`.) 1887 1888 1889Other CPython Implementation Changes 1890==================================== 1891 1892* Trace hooks may now opt out of receiving the ``line`` and opt into receiving 1893 the ``opcode`` events from the interpreter by setting the corresponding new 1894 ``f_trace_lines`` and ``f_trace_opcodes`` attributes on the 1895 frame being traced. (Contributed by Nick Coghlan in :issue:`31344`.) 1896 1897* Fixed some consistency problems with namespace package module attributes. 1898 Namespace module objects now have an ``__file__`` that is set to ``None`` 1899 (previously unset), and their ``__spec__.origin`` is also set to ``None`` 1900 (previously the string ``"namespace"``). See :issue:`32305`. Also, the 1901 namespace module object's ``__spec__.loader`` is set to the same value as 1902 ``__loader__`` (previously, the former was set to ``None``). See 1903 :issue:`32303`. 1904 1905* The :func:`locals` dictionary now displays in the lexical order that 1906 variables were defined. Previously, the order was undefined. 1907 (Contributed by Raymond Hettinger in :issue:`32690`.) 1908 1909* The :mod:`distutils` ``upload`` command no longer tries to change CR 1910 end-of-line characters to CRLF. This fixes a corruption issue with sdists 1911 that ended with a byte equivalent to CR. 1912 (Contributed by Bo Bayles in :issue:`32304`.) 1913 1914 1915Deprecated Python Behavior 1916========================== 1917 1918Yield expressions (both ``yield`` and ``yield from`` clauses) are now deprecated 1919in comprehensions and generator expressions (aside from the iterable expression 1920in the leftmost :keyword:`!for` clause). This ensures that comprehensions 1921always immediately return a container of the appropriate type (rather than 1922potentially returning a :term:`generator iterator` object), while generator 1923expressions won't attempt to interleave their implicit output with the output 1924from any explicit yield expressions. In Python 3.7, such expressions emit 1925:exc:`DeprecationWarning` when compiled, in Python 3.8 this will be a 1926:exc:`SyntaxError`. 1927(Contributed by Serhiy Storchaka in :issue:`10544`.) 1928 1929Returning a subclass of :class:`complex` from :meth:`object.__complex__` is 1930deprecated and will be an error in future Python versions. This makes 1931``__complex__()`` consistent with :meth:`object.__int__` and 1932:meth:`object.__float__`. 1933(Contributed by Serhiy Storchaka in :issue:`28894`.) 1934 1935 1936 1937Deprecated Python modules, functions and methods 1938================================================ 1939 1940aifc 1941---- 1942 1943:func:`aifc.openfp` has been deprecated and will be removed in Python 3.9. 1944Use :func:`aifc.open` instead. 1945(Contributed by Brian Curtin in :issue:`31985`.) 1946 1947 1948.. _whatsnew37-asyncio-deprecated: 1949 1950asyncio 1951------- 1952 1953Support for directly ``await``-ing instances of :class:`asyncio.Lock` and 1954other asyncio synchronization primitives has been deprecated. An 1955asynchronous context manager must be used in order to acquire and release 1956the synchronization resource. 1957(Contributed by Andrew Svetlov in :issue:`32253`.) 1958 1959The :meth:`asyncio.Task.current_task` and :meth:`asyncio.Task.all_tasks` 1960methods have been deprecated. 1961(Contributed by Andrew Svetlov in :issue:`32250`.) 1962 1963 1964collections 1965----------- 1966 1967In Python 3.8, the abstract base classes in :mod:`collections.abc` will no 1968longer be exposed in the regular :mod:`collections` module. This will help 1969create a clearer distinction between the concrete classes and the abstract 1970base classes. 1971(Contributed by Serhiy Storchaka in :issue:`25988`.) 1972 1973 1974dbm 1975--- 1976 1977:mod:`dbm.dumb` now supports reading read-only files and no longer writes the 1978index file when it is not changed. A deprecation warning is now emitted 1979if the index file is missing and recreated in the ``'r'`` and ``'w'`` 1980modes (this will be an error in future Python releases). 1981(Contributed by Serhiy Storchaka in :issue:`28847`.) 1982 1983 1984enum 1985---- 1986 1987In Python 3.8, attempting to check for non-Enum objects in :class:`Enum` 1988classes will raise a :exc:`TypeError` (e.g. ``1 in Color``); similarly, 1989attempting to check for non-Flag objects in a :class:`Flag` member will 1990raise :exc:`TypeError` (e.g. ``1 in Perm.RW``); currently, both operations 1991return :const:`False` instead. 1992(Contributed by Ethan Furman in :issue:`33217`.) 1993 1994 1995gettext 1996------- 1997 1998Using non-integer value for selecting a plural form in :mod:`gettext` is 1999now deprecated. It never correctly worked. (Contributed by Serhiy Storchaka 2000in :issue:`28692`.) 2001 2002 2003importlib 2004--------- 2005 2006Methods 2007:meth:`MetaPathFinder.find_module() <importlib.abc.MetaPathFinder.find_module>` 2008(replaced by 2009:meth:`MetaPathFinder.find_spec() <importlib.abc.MetaPathFinder.find_spec>`) 2010and 2011:meth:`PathEntryFinder.find_loader() <importlib.abc.PathEntryFinder.find_loader>` 2012(replaced by 2013:meth:`PathEntryFinder.find_spec() <importlib.abc.PathEntryFinder.find_spec>`) 2014both deprecated in Python 3.4 now emit :exc:`DeprecationWarning`. 2015(Contributed by Matthias Bussonnier in :issue:`29576`) 2016 2017The :class:`importlib.abc.ResourceLoader` ABC has been deprecated in 2018favour of :class:`importlib.abc.ResourceReader`. 2019 2020 2021locale 2022------ 2023 2024:func:`locale.format` has been deprecated, use :meth:`locale.format_string` 2025instead. (Contributed by Garvit in :issue:`10379`.) 2026 2027 2028macpath 2029------- 2030 2031The :mod:`macpath` is now deprecated and will be removed in Python 3.8. 2032(Contributed by Chi Hsuan Yen in :issue:`9850`.) 2033 2034 2035threading 2036--------- 2037 2038:mod:`dummy_threading` and :mod:`_dummy_thread` have been deprecated. It is 2039no longer possible to build Python with threading disabled. 2040Use :mod:`threading` instead. 2041(Contributed by Antoine Pitrou in :issue:`31370`.) 2042 2043 2044socket 2045------ 2046 2047The silent argument value truncation in :func:`socket.htons` and 2048:func:`socket.ntohs` has been deprecated. In future versions of Python, 2049if the passed argument is larger than 16 bits, an exception will be raised. 2050(Contributed by Oren Milman in :issue:`28332`.) 2051 2052 2053ssl 2054--- 2055 2056:func:`ssl.wrap_socket` is deprecated. Use 2057:meth:`ssl.SSLContext.wrap_socket` instead. 2058(Contributed by Christian Heimes in :issue:`28124`.) 2059 2060 2061sunau 2062----- 2063 2064:func:`sunau.openfp` has been deprecated and will be removed in Python 3.9. 2065Use :func:`sunau.open` instead. 2066(Contributed by Brian Curtin in :issue:`31985`.) 2067 2068 2069sys 2070--- 2071 2072Deprecated :func:`sys.set_coroutine_wrapper` and 2073:func:`sys.get_coroutine_wrapper`. 2074 2075The undocumented ``sys.callstats()`` function has been deprecated and 2076will be removed in a future Python version. 2077(Contributed by Victor Stinner in :issue:`28799`.) 2078 2079 2080wave 2081---- 2082 2083:func:`wave.openfp` has been deprecated and will be removed in Python 3.9. 2084Use :func:`wave.open` instead. 2085(Contributed by Brian Curtin in :issue:`31985`.) 2086 2087 2088Deprecated functions and types of the C API 2089=========================================== 2090 2091Function :c:func:`PySlice_GetIndicesEx` is deprecated and replaced with 2092a macro if ``Py_LIMITED_API`` is not set or set to a value in the range 2093between ``0x03050400`` and ``0x03060000`` (not inclusive), or is ``0x03060100`` 2094or higher. (Contributed by Serhiy Storchaka in :issue:`27867`.) 2095 2096:c:func:`PyOS_AfterFork` has been deprecated. Use :c:func:`PyOS_BeforeFork`, 2097:c:func:`PyOS_AfterFork_Parent` or :c:func:`PyOS_AfterFork_Child()` instead. 2098(Contributed by Antoine Pitrou in :issue:`16500`.) 2099 2100 2101.. _37-platform-support-removals: 2102 2103Platform Support Removals 2104========================= 2105 2106* FreeBSD 9 and older are no longer officially supported. 2107* For full Unicode support, including within extension modules, \*nix platforms 2108 are now expected to provide at least one of ``C.UTF-8`` (full locale), 2109 ``C.utf8`` (full locale) or ``UTF-8`` (``LC_CTYPE``-only locale) as an 2110 alternative to the legacy ``ASCII``-based ``C`` locale. 2111* OpenSSL 0.9.8 and 1.0.1 are no longer supported, which means building CPython 2112 3.7 with SSL/TLS support on older platforms still using these versions 2113 requires custom build options that link to a more recent version of OpenSSL. 2114 2115 Notably, this issue affects the Debian 8 (aka "jessie") and Ubuntu 14.04 2116 (aka "Trusty") LTS Linux distributions, as they still use OpenSSL 1.0.1 by 2117 default. 2118 2119 Debian 9 ("stretch") and Ubuntu 16.04 ("xenial"), as well as recent releases 2120 of other LTS Linux releases (e.g. RHEL/CentOS 7.5, SLES 12-SP3), use OpenSSL 2121 1.0.2 or later, and remain supported in the default build configuration. 2122 2123 CPython's own `CI configuration file 2124 <https://github.com/python/cpython/blob/v3.7.13/.travis.yml>`_ provides an 2125 example of using the SSL 2126 :source:`compatibility testing infrastructure <Tools/ssl/multissltests.py>` in 2127 CPython's test suite to build and link against OpenSSL 1.1.0 rather than an 2128 outdated system provided OpenSSL. 2129 2130 2131API and Feature Removals 2132======================== 2133 2134The following features and APIs have been removed from Python 3.7: 2135 2136* The ``os.stat_float_times()`` function has been removed. It was introduced in 2137 Python 2.3 for backward compatibility with Python 2.2, and was deprecated 2138 since Python 3.1. 2139 2140* Unknown escapes consisting of ``'\'`` and an ASCII letter in replacement 2141 templates for :func:`re.sub` were deprecated in Python 3.5, and will now 2142 cause an error. 2143 2144* Removed support of the *exclude* argument in :meth:`tarfile.TarFile.add`. 2145 It was deprecated in Python 2.7 and 3.2. Use the *filter* argument instead. 2146 2147* The ``splitunc()`` function in the :mod:`ntpath` module was deprecated in 2148 Python 3.1, and has now been removed. Use the :func:`~os.path.splitdrive` 2149 function instead. 2150 2151* :func:`collections.namedtuple` no longer supports the *verbose* parameter 2152 or ``_source`` attribute which showed the generated source code for the 2153 named tuple class. This was part of an optimization designed to speed-up 2154 class creation. (Contributed by Jelle Zijlstra with further improvements 2155 by INADA Naoki, Serhiy Storchaka, and Raymond Hettinger in :issue:`28638`.) 2156 2157* Functions :func:`bool`, :func:`float`, :func:`list` and :func:`tuple` no 2158 longer take keyword arguments. The first argument of :func:`int` can now 2159 be passed only as positional argument. 2160 2161* Removed previously deprecated in Python 2.4 classes ``Plist``, ``Dict`` and 2162 ``_InternalDict`` in the :mod:`plistlib` module. Dict values in the result 2163 of functions :func:`~plistlib.readPlist` and 2164 :func:`~plistlib.readPlistFromBytes` are now normal dicts. You no longer 2165 can use attribute access to access items of these dictionaries. 2166 2167* The ``asyncio.windows_utils.socketpair()`` function has been 2168 removed. Use the :func:`socket.socketpair` function instead, 2169 it is available on all platforms since Python 3.5. 2170 ``asyncio.windows_utils.socketpair`` was just an alias to 2171 ``socket.socketpair`` on Python 3.5 and newer. 2172 2173* :mod:`asyncio` no longer exports the :mod:`selectors` and 2174 :mod:`_overlapped` modules as ``asyncio.selectors`` and 2175 ``asyncio._overlapped``. Replace ``from asyncio import selectors`` with 2176 ``import selectors``. 2177 2178* Direct instantiation of :class:`ssl.SSLSocket` and :class:`ssl.SSLObject` 2179 objects is now prohibited. The constructors were never documented, tested, 2180 or designed as public constructors. Users were supposed to use 2181 :func:`ssl.wrap_socket` or :class:`ssl.SSLContext`. 2182 (Contributed by Christian Heimes in :issue:`32951`.) 2183 2184* The unused :mod:`distutils` ``install_misc`` command has been removed. 2185 (Contributed by Eric N. Vander Weele in :issue:`29218`.) 2186 2187 2188Module Removals 2189=============== 2190 2191The ``fpectl`` module has been removed. It was never enabled by 2192default, never worked correctly on x86-64, and it changed the Python 2193ABI in ways that caused unexpected breakage of C extensions. 2194(Contributed by Nathaniel J. Smith in :issue:`29137`.) 2195 2196 2197Windows-only Changes 2198==================== 2199 2200The python launcher, (py.exe), can accept 32 & 64 bit specifiers **without** 2201having to specify a minor version as well. So ``py -3-32`` and ``py -3-64`` 2202become valid as well as ``py -3.7-32``, also the -*m*-64 and -*m.n*-64 forms 2203are now accepted to force 64 bit python even if 32 bit would have otherwise 2204been used. If the specified version is not available py.exe will error exit. 2205(Contributed by Steve Barnes in :issue:`30291`.) 2206 2207The launcher can be run as ``py -0`` to produce a list of the installed pythons, 2208*with default marked with an asterisk*. Running ``py -0p`` will include the paths. 2209If py is run with a version specifier that cannot be matched it will also print 2210the *short form* list of available specifiers. 2211(Contributed by Steve Barnes in :issue:`30362`.) 2212 2213 2214.. _porting-to-python-37: 2215 2216Porting to Python 3.7 2217===================== 2218 2219This section lists previously described changes and other bugfixes 2220that may require changes to your code. 2221 2222 2223Changes in Python Behavior 2224-------------------------- 2225 2226* :keyword:`async` and :keyword:`await` names are now reserved keywords. 2227 Code using these names as identifiers will now raise a :exc:`SyntaxError`. 2228 (Contributed by Jelle Zijlstra in :issue:`30406`.) 2229 2230* :pep:`479` is enabled for all code in Python 3.7, meaning that 2231 :exc:`StopIteration` exceptions raised directly or indirectly in 2232 coroutines and generators are transformed into :exc:`RuntimeError` 2233 exceptions. 2234 (Contributed by Yury Selivanov in :issue:`32670`.) 2235 2236* :meth:`object.__aiter__` methods can no longer be declared as 2237 asynchronous. (Contributed by Yury Selivanov in :issue:`31709`.) 2238 2239* Due to an oversight, earlier Python versions erroneously accepted the 2240 following syntax:: 2241 2242 f(1 for x in [1],) 2243 2244 class C(1 for x in [1]): 2245 pass 2246 2247 Python 3.7 now correctly raises a :exc:`SyntaxError`, as a generator 2248 expression always needs to be directly inside a set of parentheses 2249 and cannot have a comma on either side, and the duplication of the 2250 parentheses can be omitted only on calls. 2251 (Contributed by Serhiy Storchaka in :issue:`32012` and :issue:`32023`.) 2252 2253* When using the :option:`-m` switch, the initial working directory is now added 2254 to :data:`sys.path`, rather than an empty string (which dynamically denoted 2255 the current working directory at the time of each import). Any programs that 2256 are checking for the empty string, or otherwise relying on the previous 2257 behaviour, will need to be updated accordingly (e.g. by also checking for 2258 ``os.getcwd()`` or ``os.path.dirname(__main__.__file__)``, depending on why 2259 the code was checking for the empty string in the first place). 2260 2261 2262Changes in the Python API 2263------------------------- 2264 2265* :meth:`socketserver.ThreadingMixIn.server_close` now waits until all 2266 non-daemon threads complete. Set the new 2267 :attr:`socketserver.ThreadingMixIn.block_on_close` class attribute to 2268 ``False`` to get the pre-3.7 behaviour. 2269 (Contributed by Victor Stinner in :issue:`31233` and :issue:`33540`.) 2270 2271* :meth:`socketserver.ForkingMixIn.server_close` now waits until all 2272 child processes complete. Set the new 2273 :attr:`socketserver.ForkingMixIn.block_on_close` class attribute to ``False`` 2274 to get the pre-3.7 behaviour. 2275 (Contributed by Victor Stinner in :issue:`31151` and :issue:`33540`.) 2276 2277* The :func:`locale.localeconv` function now temporarily sets the ``LC_CTYPE`` 2278 locale to the value of ``LC_NUMERIC`` in some cases. 2279 (Contributed by Victor Stinner in :issue:`31900`.) 2280 2281* :meth:`pkgutil.walk_packages` now raises a :exc:`ValueError` if *path* is 2282 a string. Previously an empty list was returned. 2283 (Contributed by Sanyam Khurana in :issue:`24744`.) 2284 2285* A format string argument for :meth:`string.Formatter.format` 2286 is now :ref:`positional-only <positional-only_parameter>`. 2287 Passing it as a keyword argument was deprecated in Python 3.5. (Contributed 2288 by Serhiy Storchaka in :issue:`29193`.) 2289 2290* Attributes :attr:`~http.cookies.Morsel.key`, 2291 :attr:`~http.cookies.Morsel.value` and 2292 :attr:`~http.cookies.Morsel.coded_value` of class 2293 :class:`http.cookies.Morsel` are now read-only. 2294 Assigning to them was deprecated in Python 3.5. 2295 Use the :meth:`~http.cookies.Morsel.set` method for setting them. 2296 (Contributed by Serhiy Storchaka in :issue:`29192`.) 2297 2298* The *mode* argument of :func:`os.makedirs` no longer affects the file 2299 permission bits of newly created intermediate-level directories. 2300 To set their file permission bits you can set the umask before invoking 2301 ``makedirs()``. 2302 (Contributed by Serhiy Storchaka in :issue:`19930`.) 2303 2304* The :attr:`struct.Struct.format` type is now :class:`str` instead of 2305 :class:`bytes`. (Contributed by Victor Stinner in :issue:`21071`.) 2306 2307* :func:`~cgi.parse_multipart` now accepts the *encoding* and *errors* 2308 arguments and returns the same results as 2309 :class:`~FieldStorage`: for non-file fields, the value associated to a key 2310 is a list of strings, not bytes. 2311 (Contributed by Pierre Quentel in :issue:`29979`.) 2312 2313* Due to internal changes in :mod:`socket`, calling :func:`socket.fromshare` 2314 on a socket created by :func:`socket.share <socket.socket.share>` in older 2315 Python versions is not supported. 2316 2317* ``repr`` for :exc:`BaseException` has changed to not include the trailing 2318 comma. Most exceptions are affected by this change. 2319 (Contributed by Serhiy Storchaka in :issue:`30399`.) 2320 2321* ``repr`` for :class:`datetime.timedelta` has changed to include the keyword 2322 arguments in the output. (Contributed by Utkarsh Upadhyay in :issue:`30302`.) 2323 2324* Because :func:`shutil.rmtree` is now implemented using the :func:`os.scandir` 2325 function, the user specified handler *onerror* is now called with the first 2326 argument ``os.scandir`` instead of ``os.listdir`` when listing the directory 2327 is failed. 2328 2329* Support for nested sets and set operations in regular expressions as in 2330 `Unicode Technical Standard #18`_ might be added in the future. This would 2331 change the syntax. To facilitate this future change a :exc:`FutureWarning` 2332 will be raised in ambiguous cases for the time being. 2333 That include sets starting with a literal ``'['`` or containing literal 2334 character sequences ``'--'``, ``'&&'``, ``'~~'``, and ``'||'``. To 2335 avoid a warning, escape them with a backslash. 2336 (Contributed by Serhiy Storchaka in :issue:`30349`.) 2337 2338 .. _Unicode Technical Standard #18: https://unicode.org/reports/tr18/ 2339 2340* The result of splitting a string on a :mod:`regular expression <re>` 2341 that could match an empty string has been changed. For example 2342 splitting on ``r'\s*'`` will now split not only on whitespaces as it 2343 did previously, but also on empty strings before all non-whitespace 2344 characters and just before the end of the string. 2345 The previous behavior can be restored by changing the pattern 2346 to ``r'\s+'``. A :exc:`FutureWarning` was emitted for such patterns since 2347 Python 3.5. 2348 2349 For patterns that match both empty and non-empty strings, the result of 2350 searching for all matches may also be changed in other cases. For example 2351 in the string ``'a\n\n'``, the pattern ``r'(?m)^\s*?$'`` will not only 2352 match empty strings at positions 2 and 3, but also the string ``'\n'`` at 2353 positions 2--3. To match only blank lines, the pattern should be rewritten 2354 as ``r'(?m)^[^\S\n]*$'``. 2355 2356 :func:`re.sub()` now replaces empty matches adjacent to a previous 2357 non-empty match. For example ``re.sub('x*', '-', 'abxd')`` returns now 2358 ``'-a-b--d-'`` instead of ``'-a-b-d-'`` (the first minus between 'b' and 2359 'd' replaces 'x', and the second minus replaces an empty string between 2360 'x' and 'd'). 2361 2362 (Contributed by Serhiy Storchaka in :issue:`25054` and :issue:`32308`.) 2363 2364* Change :func:`re.escape` to only escape regex special characters instead 2365 of escaping all characters other than ASCII letters, numbers, and ``'_'``. 2366 (Contributed by Serhiy Storchaka in :issue:`29995`.) 2367 2368* :class:`tracemalloc.Traceback` frames are now sorted from oldest to most 2369 recent to be more consistent with :mod:`traceback`. 2370 (Contributed by Jesse Bakker in :issue:`32121`.) 2371 2372* On OSes that support :const:`socket.SOCK_NONBLOCK` or 2373 :const:`socket.SOCK_CLOEXEC` bit flags, the 2374 :attr:`socket.type <socket.socket.type>` no longer has them applied. 2375 Therefore, checks like ``if sock.type == socket.SOCK_STREAM`` 2376 work as expected on all platforms. 2377 (Contributed by Yury Selivanov in :issue:`32331`.) 2378 2379* On Windows the default for the *close_fds* argument of 2380 :class:`subprocess.Popen` was changed from :const:`False` to :const:`True` 2381 when redirecting the standard handles. If you previously depended on handles 2382 being inherited when using :class:`subprocess.Popen` with standard io 2383 redirection, you will have to pass ``close_fds=False`` to preserve the 2384 previous behaviour, or use 2385 :attr:`STARTUPINFO.lpAttributeList <subprocess.STARTUPINFO.lpAttributeList>`. 2386 2387* :meth:`importlib.machinery.PathFinder.invalidate_caches` -- which implicitly 2388 affects :func:`importlib.invalidate_caches` -- now deletes entries 2389 in :data:`sys.path_importer_cache` which are set to ``None``. 2390 (Contributed by Brett Cannon in :issue:`33169`.) 2391 2392* In :mod:`asyncio`, 2393 :meth:`loop.sock_recv() <asyncio.loop.sock_recv>`, 2394 :meth:`loop.sock_sendall() <asyncio.loop.sock_sendall>`, 2395 :meth:`loop.sock_accept() <asyncio.loop.sock_accept>`, 2396 :meth:`loop.getaddrinfo() <asyncio.loop.getaddrinfo>`, 2397 :meth:`loop.getnameinfo() <asyncio.loop.getnameinfo>` 2398 have been changed to be proper coroutine methods to match their 2399 documentation. Previously, these methods returned :class:`asyncio.Future` 2400 instances. 2401 (Contributed by Yury Selivanov in :issue:`32327`.) 2402 2403* :attr:`asyncio.Server.sockets` now returns a copy of the internal list 2404 of server sockets, instead of returning it directly. 2405 (Contributed by Yury Selivanov in :issue:`32662`.) 2406 2407* :attr:`Struct.format <struct.Struct.format>` is now a :class:`str` instance 2408 instead of a :class:`bytes` instance. 2409 (Contributed by Victor Stinner in :issue:`21071`.) 2410 2411* :mod:`argparse` subparsers can now be made mandatory by passing ``required=True`` 2412 to :meth:`ArgumentParser.add_subparsers() <argparse.ArgumentParser.add_subparsers>`. 2413 (Contributed by Anthony Sottile in :issue:`26510`.) 2414 2415* :meth:`ast.literal_eval()` is now stricter. Addition and subtraction of 2416 arbitrary numbers are no longer allowed. 2417 (Contributed by Serhiy Storchaka in :issue:`31778`.) 2418 2419* :meth:`Calendar.itermonthdates <calendar.Calendar.itermonthdates>` 2420 will now consistently raise an exception when a date falls outside of the 2421 ``0001-01-01`` through ``9999-12-31`` range. To support applications that 2422 cannot tolerate such exceptions, the new 2423 :meth:`Calendar.itermonthdays3 <calendar.Calendar.itermonthdays3>` and 2424 :meth:`Calendar.itermonthdays4 <calendar.Calendar.itermonthdays4>` can be used. 2425 The new methods return tuples and are not restricted by the range supported by 2426 :class:`datetime.date`. 2427 (Contributed by Alexander Belopolsky in :issue:`28292`.) 2428 2429* :class:`collections.ChainMap` now preserves the order of the underlying 2430 mappings. (Contributed by Raymond Hettinger in :issue:`32792`.) 2431 2432* The ``submit()`` method of :class:`concurrent.futures.ThreadPoolExecutor` 2433 and :class:`concurrent.futures.ProcessPoolExecutor` now raises 2434 a :exc:`RuntimeError` if called during interpreter shutdown. 2435 (Contributed by Mark Nemec in :issue:`33097`.) 2436 2437* The :class:`configparser.ConfigParser` constructor now uses ``read_dict()`` 2438 to process the default values, making its behavior consistent with the 2439 rest of the parser. Non-string keys and values in the defaults 2440 dictionary are now being implicitly converted to strings. 2441 (Contributed by James Tocknell in :issue:`23835`.) 2442 2443* Several undocumented internal imports were removed. 2444 One example is that ``os.errno`` is no longer available; use ``import errno`` 2445 directly instead. 2446 Note that such undocumented internal imports may be removed any time without 2447 notice, even in micro version releases. 2448 2449 2450Changes in the C API 2451-------------------- 2452 2453The function :c:func:`PySlice_GetIndicesEx` is considered unsafe for 2454resizable sequences. If the slice indices are not instances of :class:`int`, 2455but objects that implement the :meth:`!__index__` method, the sequence can be 2456resized after passing its length to :c:func:`!PySlice_GetIndicesEx`. This 2457can lead to returning indices out of the length of the sequence. For 2458avoiding possible problems use new functions :c:func:`PySlice_Unpack` and 2459:c:func:`PySlice_AdjustIndices`. 2460(Contributed by Serhiy Storchaka in :issue:`27867`.) 2461 2462 2463CPython bytecode changes 2464------------------------ 2465 2466There are two new opcodes: :opcode:`LOAD_METHOD` and :opcode:`CALL_METHOD`. 2467(Contributed by Yury Selivanov and INADA Naoki in :issue:`26110`.) 2468 2469The :opcode:`STORE_ANNOTATION` opcode has been removed. 2470(Contributed by Mark Shannon in :issue:`32550`.) 2471 2472 2473Windows-only Changes 2474-------------------- 2475 2476The file used to override :data:`sys.path` is now called 2477``<python-executable>._pth`` instead of ``'sys.path'``. 2478See :ref:`windows_finding_modules` for more information. 2479(Contributed by Steve Dower in :issue:`28137`.) 2480 2481 2482Other CPython implementation changes 2483------------------------------------ 2484 2485In preparation for potential future changes to the public CPython runtime 2486initialization API (see :pep:`432` for an initial, but somewhat outdated, 2487draft), CPython's internal startup 2488and configuration management logic has been significantly refactored. While 2489these updates are intended to be entirely transparent to both embedding 2490applications and users of the regular CPython CLI, they're being mentioned 2491here as the refactoring changes the internal order of various operations 2492during interpreter startup, and hence may uncover previously latent defects, 2493either in embedding applications, or in CPython itself. 2494(Initially contributed by Nick Coghlan and Eric Snow as part of 2495:issue:`22257`, and further updated by Nick, Eric, and Victor Stinner in a 2496number of other issues). Some known details affected: 2497 2498* :c:func:`PySys_AddWarnOptionUnicode` is not currently usable by embedding 2499 applications due to the requirement to create a Unicode object prior to 2500 calling ``Py_Initialize``. Use :c:func:`PySys_AddWarnOption` instead. 2501 2502* warnings filters added by an embedding application with 2503 :c:func:`PySys_AddWarnOption` should now more consistently take precedence 2504 over the default filters set by the interpreter 2505 2506Due to changes in the way the default warnings filters are configured, 2507setting :c:data:`Py_BytesWarningFlag` to a value greater than one is no longer 2508sufficient to both emit :exc:`BytesWarning` messages and have them converted 2509to exceptions. Instead, the flag must be set (to cause the warnings to be 2510emitted in the first place), and an explicit ``error::BytesWarning`` 2511warnings filter added to convert them to exceptions. 2512 2513Due to a change in the way docstrings are handled by the compiler, the 2514implicit ``return None`` in a function body consisting solely of a docstring 2515is now marked as occurring on the same line as the docstring, not on the 2516function's header line. 2517 2518The current exception state has been moved from the frame object to the co-routine. 2519This simplified the interpreter and fixed a couple of obscure bugs caused by 2520having swap exception state when entering or exiting a generator. 2521(Contributed by Mark Shannon in :issue:`25612`.) 2522 2523Notable changes in Python 3.7.1 2524=============================== 2525 2526Starting in 3.7.1, :c:func:`Py_Initialize` now consistently reads and respects 2527all of the same environment settings as :c:func:`Py_Main` (in earlier Python 2528versions, it respected an ill-defined subset of those environment variables, 2529while in Python 3.7.0 it didn't read any of them due to :issue:`34247`). If 2530this behavior is unwanted, set :c:data:`Py_IgnoreEnvironmentFlag` to 1 before 2531calling :c:func:`Py_Initialize`. 2532 2533In 3.7.1 the C API for Context Variables 2534:ref:`was updated <contextvarsobjects_pointertype_change>` to use 2535:c:type:`PyObject` pointers. See also :issue:`34762`. 2536 2537In 3.7.1 the :mod:`tokenize` module now implicitly emits a ``NEWLINE`` token 2538when provided with input that does not have a trailing new line. This behavior 2539now matches what the C tokenizer does internally. 2540(Contributed by Ammar Askar in :issue:`33899`.) 2541 2542Notable changes in Python 3.7.2 2543=============================== 2544 2545In 3.7.2, :mod:`venv` on Windows no longer copies the original binaries, but 2546creates redirector scripts named ``python.exe`` and ``pythonw.exe`` instead. 2547This resolves a long standing issue where all virtual environments would have 2548to be upgraded or recreated with each Python update. However, note that this 2549release will still require recreation of virtual environments in order to get 2550the new scripts. 2551 2552Notable changes in Python 3.7.6 2553=============================== 2554 2555Due to significant security concerns, the *reuse_address* parameter of 2556:meth:`asyncio.loop.create_datagram_endpoint` is no longer supported. This is 2557because of the behavior of the socket option ``SO_REUSEADDR`` in UDP. For more 2558details, see the documentation for ``loop.create_datagram_endpoint()``. 2559(Contributed by Kyle Stanley, Antoine Pitrou, and Yury Selivanov in 2560:issue:`37228`.) 2561 2562Notable changes in Python 3.7.10 2563================================ 2564 2565Earlier Python versions allowed using both ``;`` and ``&`` as 2566query parameter separators in :func:`urllib.parse.parse_qs` and 2567:func:`urllib.parse.parse_qsl`. Due to security concerns, and to conform with 2568newer W3C recommendations, this has been changed to allow only a single 2569separator key, with ``&`` as the default. This change also affects 2570:func:`cgi.parse` and :func:`cgi.parse_multipart` as they use the affected 2571functions internally. For more details, please see their respective 2572documentation. 2573(Contributed by Adam Goldschmidt, Senthil Kumaran and Ken Jin in :issue:`42967`.) 2574