1**************************** 2 What's New In Python 3.4 3**************************** 4 5:Author: R. David Murray <rdmurray@bitdance.com> (Editor) 6 7.. Rules for maintenance: 8 9 * Anyone can add text to this document, but the maintainer reserves the 10 right to rewrite any additions. In particular, for obscure or esoteric 11 features, the maintainer may reduce any addition to a simple reference to 12 the new documentation rather than explaining the feature inline. 13 14 * While the maintainer will periodically go through Misc/NEWS 15 and add changes, it's best not to rely on this. We know from experience 16 that any changes that aren't in the What's New documentation around the 17 time of the original release will remain largely unknown to the community 18 for years, even if they're added later. We also know from experience that 19 other priorities can arise, and the maintainer will run out of time to do 20 updates -- in such cases, end users will be much better served by partial 21 notifications that at least give a hint about new features to 22 investigate. 23 24 * This is not a complete list of every single change; completeness 25 is the purpose of Misc/NEWS. The What's New should focus on changes that 26 are visible to Python *users* and that *require* a feature release (i.e. 27 most bug fixes should only be recorded in Misc/NEWS) 28 29 * PEPs should not be marked Final until they have an entry in What's New. 30 A placeholder entry that is just a section header and a link to the PEP 31 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been 32 implemented and noted in What's New, don't forget to mark it as Final! 33 34 * If you want to draw your new text to the attention of the 35 maintainer, add 'XXX' to the beginning of the paragraph or 36 section. 37 38 * It's OK to add just a very brief note about a change. For 39 example: "The :ref:`~socket.transmogrify()` function was added to the 40 :mod:`socket` module." The maintainer will research the change and 41 write the necessary text (if appropriate). The advantage of doing this 42 is that even if no more descriptive text is ever added, readers will at 43 least have a notification that the new feature exists and a link to the 44 relevant documentation. 45 46 * You can comment out your additions if you like, but it's not 47 necessary (especially when a final release is some months away). 48 49 * Credit the author of a patch or bugfix. Just the name is 50 sufficient; the e-mail address isn't necessary. 51 52 * It's helpful to add the bug/patch number as a comment: 53 54 The :ref:`~socket.transmogrify()` function was added to the 55 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.) 56 57 This saves the maintainer the effort of going through the Mercurial log 58 when researching a change. 59 60 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``, 61 while :ref:`~mod.attr` will display as ``attr``. 62 63This article explains the new features in Python 3.4, compared to 3.3. 64Python 3.4 was released on March 16, 2014. For full details, see the 65`changelog <https://docs.python.org/3.4/whatsnew/changelog.html>`_. 66 67 68.. seealso:: 69 70 :pep:`429` -- Python 3.4 Release Schedule 71 72 73 74Summary -- Release Highlights 75============================= 76 77.. This section singles out the most important changes in Python 3.4. 78 Brevity is key. 79 80New syntax features: 81 82* No new syntax features were added in Python 3.4. 83 84Other new features: 85 86* :ref:`pip should always be available <whatsnew-pep-453>` (:pep:`453`). 87* :ref:`Newly created file descriptors are non-inheritable <whatsnew-pep-446>` 88 (:pep:`446`). 89* command line option for :ref:`isolated mode <whatsnew-isolated-mode>` 90 (:issue:`16499`). 91* :ref:`improvements in the handling of codecs <codec-handling-improvements>` 92 that are not text encodings (multiple issues). 93* :ref:`A ModuleSpec Type <whatsnew-pep-451>` for the Import System 94 (:pep:`451`). (Affects importer authors.) 95* The :mod:`marshal` format has been made :ref:`more compact and efficient 96 <whatsnew-marshal-3>` (:issue:`16475`). 97 98New library modules: 99 100* :mod:`asyncio`: :ref:`New provisional API for asynchronous IO 101 <whatsnew-asyncio>` (:pep:`3156`). 102* :mod:`ensurepip`: :ref:`Bootstrapping the pip installer <whatsnew-ensurepip>` 103 (:pep:`453`). 104* :mod:`enum`: :ref:`Support for enumeration types <whatsnew-enum>` 105 (:pep:`435`). 106* :mod:`pathlib`: :ref:`Object-oriented filesystem paths <whatsnew-pathlib>` 107 (:pep:`428`). 108* :mod:`selectors`: :ref:`High-level and efficient I/O multiplexing 109 <whatsnew-selectors>`, built upon the :mod:`select` module primitives (part 110 of :pep:`3156`). 111* :mod:`statistics`: A basic :ref:`numerically stable statistics library 112 <whatsnew-statistics>` (:pep:`450`). 113* :mod:`tracemalloc`: :ref:`Trace Python memory allocations 114 <whatsnew-tracemalloc>` (:pep:`454`). 115 116Significantly improved library modules: 117 118* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in 119 :mod:`functools` (:pep:`443`). 120* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`). 121* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork 122 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`). 123* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and 124 a new :mod:`~email.message.Message` subclass 125 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME 126 handling <whatsnew_email_contentmanager>` (:issue:`18891`). 127* The :mod:`inspect` and :mod:`pydoc` modules are now capable of 128 correct introspection of a much wider variety of callable objects, 129 which improves the output of the Python :func:`help` system. 130* The :mod:`ipaddress` module API has been declared stable 131 132Security improvements: 133 134* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>` 135 (:pep:`456`). 136* :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>` 137 (:pep:`446`) to avoid leaking file descriptors to child processes. 138* New command line option for :ref:`isolated mode <whatsnew-isolated-mode>`, 139 (:issue:`16499`). 140* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork 141 on Unix <whatsnew-multiprocessing-no-fork>`. *spawn* and *forkserver* are 142 more secure because they avoid sharing data with child processes. 143* :mod:`multiprocessing` child processes on Windows no longer inherit 144 all of the parent's inheritable handles, only the necessary ones. 145* A new :func:`hashlib.pbkdf2_hmac` function provides 146 the `PKCS#5 password-based key derivation function 2 147 <https://en.wikipedia.org/wiki/PBKDF2>`_. 148* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`. 149* :ref:`Retrieving certificates from the Windows system cert store support 150 <whatsnew34-win-cert-store>` for :mod:`ssl`. 151* :ref:`Server-side SNI (Server Name Indication) support 152 <whatsnew34-sni>` for :mod:`ssl`. 153* The :class:`ssl.SSLContext` class has a :ref:`lot of improvements 154 <whatsnew34-sslcontext>`. 155* All modules in the standard library that support SSL now support server 156 certificate verification, including hostname matching 157 (:func:`ssl.match_hostname`) and CRLs (Certificate Revocation lists, see 158 :func:`ssl.SSLContext.load_verify_locations`). 159 160CPython implementation improvements: 161 162* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`). 163* Leveraging :pep:`442`, in most cases :ref:`module globals are no longer set 164 to None during finalization <whatsnew-pep-442>` (:issue:`18214`). 165* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`). 166* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`). 167 168Please read on for a comprehensive list of user-facing changes, including many 169other smaller improvements, CPython optimizations, deprecations, and potential 170porting issues. 171 172 173 174New Features 175============ 176 177.. _whatsnew-pep-453: 178 179PEP 453: Explicit Bootstrapping of PIP in Python Installations 180-------------------------------------------------------------- 181 182Bootstrapping pip By Default 183~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184 185The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard 186cross-platform mechanism to bootstrap the pip installer into Python 187installations and virtual environments. The version of ``pip`` included 188with Python 3.4.0 is ``pip`` 1.5.4, and future 3.4.x maintenance releases 189will update the bundled version to the latest version of ``pip`` that is 190available at the time of creating the release candidate. 191 192By default, the commands ``pipX`` and ``pipX.Y`` will be installed on all 193platforms (where X.Y stands for the version of the Python installation), 194along with the ``pip`` Python package and its dependencies. On Windows and 195in virtual environments on all platforms, the unversioned ``pip`` command 196will also be installed. On other platforms, the system wide unversioned 197``pip`` command typically refers to the separately installed Python 2 198version. 199 200The ``pyvenv`` command line utility and the :mod:`venv` 201module make use of the :mod:`ensurepip` module to make ``pip`` readily 202available in virtual environments. When using the command line utility, 203``pip`` is installed by default, while when using the :mod:`venv` module 204:ref:`venv-api` installation of ``pip`` must be requested explicitly. 205 206For CPython :ref:`source builds on POSIX systems <building-python-on-unix>`, 207the ``make install`` and ``make altinstall`` commands bootstrap ``pip`` by 208default. This behaviour can be controlled through configure options, and 209overridden through Makefile options. 210 211On Windows and Mac OS X, the CPython installers now default to installing 212``pip`` along with CPython itself (users may opt out of installing it 213during the installation process). Window users will need to opt in to the 214automatic ``PATH`` modifications to have ``pip`` available from the command 215line by default, otherwise it can still be accessed through the Python 216launcher for Windows as ``py -m pip``. 217 218As `discussed in the PEP`__, platform packagers may choose not to install 219these commands by default, as long as, when invoked, they provide clear and 220simple directions on how to install them on that platform (usually using 221the system package manager). 222 223__ https://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors 224 225.. note:: 226 227 To avoid conflicts between parallel Python 2 and Python 3 installations, 228 only the versioned ``pip3`` and ``pip3.4`` commands are bootstrapped by 229 default when ``ensurepip`` is invoked directly - the ``--default-pip`` 230 option is needed to also request the unversioned ``pip`` command. 231 ``pyvenv`` and the Windows installer ensure that the unqualified ``pip`` 232 command is made available in those environments, and ``pip`` can always be 233 invoked via the ``-m`` switch rather than directly to avoid ambiguity on 234 systems with multiple Python installations. 235 236 237Documentation Changes 238~~~~~~~~~~~~~~~~~~~~~ 239 240As part of this change, the :ref:`installing-index` and 241:ref:`distributing-index` sections of the documentation have been 242completely redesigned as short getting started and FAQ documents. Most 243packaging documentation has now been moved out to the Python Packaging 244Authority maintained `Python Packaging User Guide 245<https://packaging.python.org>`__ and the documentation of the individual 246projects. 247 248However, as this migration is currently still incomplete, the legacy 249versions of those guides remaining available as :ref:`install-index` 250and :ref:`distutils-index`. 251 252.. seealso:: 253 254 :pep:`453` -- Explicit bootstrapping of pip in Python installations 255 PEP written by Donald Stufft and Nick Coghlan, implemented by 256 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily. 257 258 259.. _whatsnew-pep-446: 260 261PEP 446: Newly Created File Descriptors Are Non-Inheritable 262----------------------------------------------------------- 263 264:pep:`446` makes newly created file descriptors :ref:`non-inheritable 265<fd_inheritance>`. In general, this is the behavior an application will 266want: when launching a new process, having currently open files also 267open in the new process can lead to all sorts of hard to find bugs, 268and potentially to security issues. 269 270However, there are occasions when inheritance is desired. To support 271these cases, the following new functions and methods are available: 272 273* :func:`os.get_inheritable`, :func:`os.set_inheritable` 274* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable` 275* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable` 276 277.. seealso:: 278 279 :pep:`446` -- Make newly created file descriptors non-inheritable 280 PEP written and implemented by Victor Stinner. 281 282 283.. _codec-handling-improvements: 284 285Improvements to Codec Handling 286------------------------------ 287 288Since it was first introduced, the :mod:`codecs` module has always been 289intended to operate as a type-neutral dynamic encoding and decoding 290system. However, its close coupling with the Python text model, especially 291the type restricted convenience methods on the builtin :class:`str`, 292:class:`bytes` and :class:`bytearray` types, has historically obscured that 293fact. 294 295As a key step in clarifying the situation, the :meth:`codecs.encode` and 296:meth:`codecs.decode` convenience functions are now properly documented in 297Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs` 298module (and have been covered by the regression test suite) since Python 2.4, 299but were previously only discoverable through runtime introspection. 300 301Unlike the convenience methods on :class:`str`, :class:`bytes` and 302:class:`bytearray`, the :mod:`codecs` convenience functions support arbitrary 303codecs in both Python 2 and Python 3, rather than being limited to Unicode text 304encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions (in 305Python 2). 306 307In Python 3.4, the interpreter is able to identify the known non-text 308encodings provided in the standard library and direct users towards these 309general purpose convenience functions when appropriate:: 310 311 >>> b"abcdef".decode("hex") 312 Traceback (most recent call last): 313 File "<stdin>", line 1, in <module> 314 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs 315 316 >>> "hello".encode("rot13") 317 Traceback (most recent call last): 318 File "<stdin>", line 1, in <module> 319 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs 320 321 >>> open("foo.txt", encoding="hex") 322 Traceback (most recent call last): 323 File "<stdin>", line 1, in <module> 324 LookupError: 'hex' is not a text encoding; use codecs.open() to handle arbitrary codecs 325 326In a related change, whenever it is feasible without breaking backwards 327compatibility, exceptions raised during encoding and decoding operations 328are wrapped in a chained exception of the same type that mentions the 329name of the codec responsible for producing the error:: 330 331 >>> import codecs 332 333 >>> codecs.decode(b"abcdefgh", "hex") 334 Traceback (most recent call last): 335 File "/usr/lib/python3.4/encodings/hex_codec.py", line 20, in hex_decode 336 return (binascii.a2b_hex(input), len(input)) 337 binascii.Error: Non-hexadecimal digit found 338 339 The above exception was the direct cause of the following exception: 340 341 Traceback (most recent call last): 342 File "<stdin>", line 1, in <module> 343 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found) 344 345 >>> codecs.encode("hello", "bz2") 346 Traceback (most recent call last): 347 File "/usr/lib/python3.4/encodings/bz2_codec.py", line 17, in bz2_encode 348 return (bz2.compress(input), len(input)) 349 File "/usr/lib/python3.4/bz2.py", line 498, in compress 350 return comp.compress(data) + comp.flush() 351 TypeError: 'str' does not support the buffer interface 352 353 The above exception was the direct cause of the following exception: 354 355 Traceback (most recent call last): 356 File "<stdin>", line 1, in <module> 357 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface) 358 359Finally, as the examples above show, these improvements have permitted 360the restoration of the convenience aliases for the non-Unicode codecs that 361were themselves restored in Python 3.2. This means that encoding binary data 362to and from its hexadecimal representation (for example) can now be written 363as:: 364 365 >>> from codecs import encode, decode 366 >>> encode(b"hello", "hex") 367 b'68656c6c6f' 368 >>> decode(b"68656c6c6f", "hex") 369 b'hello' 370 371The binary and text transforms provided in the standard library are detailed 372in :ref:`binary-transforms` and :ref:`text-transforms`. 373 374(Contributed by Nick Coghlan in :issue:`7475`, :issue:`17827`, 375:issue:`17828` and :issue:`19619`.) 376 377 378.. _whatsnew-pep-451: 379 380PEP 451: A ModuleSpec Type for the Import System 381------------------------------------------------ 382 383:pep:`451` provides an encapsulation of the information about a module that the 384import machinery will use to load it (that is, a module specification). This 385helps simplify both the import implementation and several import-related APIs. 386The change is also a stepping stone for `several future import-related 387improvements`__. 388 389__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html 390 391The public-facing changes from the PEP are entirely backward-compatible. 392Furthermore, they should be transparent to everyone but importer authors. Key 393finder and loader methods have been deprecated, but they will continue working. 394New importers should use the new methods described in the PEP. Existing 395importers should be updated to implement the new methods. See the 396:ref:`deprecated-3.4` section for a list of methods that should be replaced and 397their replacements. 398 399 400Other Language Changes 401---------------------- 402 403Some smaller changes made to the core Python language are: 404 405* Unicode database updated to UCD version 6.3. 406 407* :func:`min` and :func:`max` now accept a *default* keyword-only argument that 408 can be used to specify the value they return if the iterable they are 409 evaluating has no elements. (Contributed by Julian Berman in 410 :issue:`18111`.) 411 412* Module objects are now :mod:`weakref`'able. 413 414* Module ``__file__`` attributes (and related values) should now always 415 contain absolute paths by default, with the sole exception of 416 ``__main__.__file__`` when a script has been executed directly using 417 a relative path. (Contributed by Brett Cannon in :issue:`18416`.) 418 419* All the UTF-\* codecs (except UTF-7) now reject surrogates during both 420 encoding and decoding unless the ``surrogatepass`` error handler is used, 421 with the exception of the UTF-16 decoder (which accepts valid surrogate pairs) 422 and the UTF-16 encoder (which produces them while encoding non-BMP characters). 423 (Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in 424 :issue:`12892`.) 425 426* New German EBCDIC :ref:`codec <standard-encodings>` ``cp273``. (Contributed 427 by Michael Bierenfeld and Andrew Kuchling in :issue:`1097797`.) 428 429* New Ukrainian :ref:`codec <standard-encodings>` ``cp1125``. (Contributed by 430 Serhiy Storchaka in :issue:`19668`.) 431 432* :class:`bytes`.join() and :class:`bytearray`.join() now accept arbitrary 433 buffer objects as arguments. (Contributed by Antoine Pitrou in 434 :issue:`15958`.) 435 436* The :class:`int` constructor now accepts any object that has an ``__index__`` 437 method for its *base* argument. (Contributed by Mark Dickinson in 438 :issue:`16772`.) 439 440* Frame objects now have a :func:`~frame.clear` method that clears all 441 references to local variables from the frame. (Contributed by Antoine Pitrou 442 in :issue:`17934`.) 443 444* :class:`memoryview` is now registered as a :class:`Sequence <collections.abc>`, 445 and supports the :func:`reversed` builtin. (Contributed by Nick Coghlan 446 and Claudiu Popa in :issue:`18690` and :issue:`19078`.) 447 448* Signatures reported by :func:`help` have been modified and improved in 449 several cases as a result of the introduction of Argument Clinic and other 450 changes to the :mod:`inspect` and :mod:`pydoc` modules. 451 452* :meth:`~object.__length_hint__` is now part of the formal language 453 specification (see :pep:`424`). (Contributed by Armin Ronacher in 454 :issue:`16148`.) 455 456 457New Modules 458=========== 459 460 461.. _whatsnew-asyncio: 462 463asyncio 464------- 465 466The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard 467pluggable event loop model for Python, providing solid asynchronous IO 468support in the standard library, and making it easier for other event loop 469implementations to interoperate with the standard library and each other. 470 471For Python 3.4, this module is considered a :term:`provisional API`. 472 473.. seealso:: 474 475 :pep:`3156` -- Asynchronous IO Support Rebooted: the "asyncio" Module 476 PEP written and implementation led by Guido van Rossum. 477 478 479.. _whatsnew-ensurepip: 480 481ensurepip 482--------- 483 484The new :mod:`ensurepip` module is the primary infrastructure for the 485:pep:`453` implementation. In the normal course of events end users will not 486need to interact with this module, but it can be used to manually bootstrap 487``pip`` if the automated bootstrapping into an installation or virtual 488environment was declined. 489 490:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first 491release candidate of the release of CPython with which it ships (this applies 492to both maintenance releases and feature releases). ``ensurepip`` does not 493access the internet. If the installation has Internet access, after 494``ensurepip`` is run the bundled ``pip`` can be used to upgrade ``pip`` to a 495more recent release than the bundled one. (Note that such an upgraded version 496of ``pip`` is considered to be a separately installed package and will not be 497removed if Python is uninstalled.) 498 499The module is named *ensure*\ pip because if called when ``pip`` is already 500installed, it does nothing. It also has an ``--upgrade`` option that will 501cause it to install the bundled copy of ``pip`` if the existing installed 502version of ``pip`` is older than the bundled copy. 503 504 505.. _whatsnew-enum: 506 507enum 508---- 509 510The new :mod:`enum` module (defined in :pep:`435`) provides a standard 511implementation of enumeration types, allowing other modules (such as 512:mod:`socket`) to provide more informative error messages and better 513debugging support by replacing opaque integer constants with backwards 514compatible enumeration values. 515 516.. seealso:: 517 518 :pep:`435` -- Adding an Enum type to the Python standard library 519 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman, 520 implemented by Ethan Furman. 521 522 523.. _whatsnew-pathlib: 524 525pathlib 526------- 527 528The new :mod:`pathlib` module offers classes representing filesystem paths 529with semantics appropriate for different operating systems. Path classes are 530divided between *pure paths*, which provide purely computational operations 531without I/O, and *concrete paths*, which inherit from pure paths but also 532provide I/O operations. 533 534For Python 3.4, this module is considered a :term:`provisional API`. 535 536.. seealso:: 537 538 :pep:`428` -- The pathlib module -- object-oriented filesystem paths 539 PEP written and implemented by Antoine Pitrou. 540 541 542.. _whatsnew-selectors: 543 544selectors 545--------- 546 547The new :mod:`selectors` module (created as part of implementing :pep:`3156`) 548allows high-level and efficient I/O multiplexing, built upon the 549:mod:`select` module primitives. 550 551 552.. _whatsnew-statistics: 553 554statistics 555---------- 556 557The new :mod:`statistics` module (defined in :pep:`450`) offers some core 558statistics functionality directly in the standard library. This module 559supports calculation of the mean, median, mode, variance and standard 560deviation of a data series. 561 562.. seealso:: 563 564 :pep:`450` -- Adding A Statistics Module To The Standard Library 565 PEP written and implemented by Steven D'Aprano 566 567.. _whatsnew-tracemalloc: 568 569 570tracemalloc 571----------- 572 573The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to 574trace memory blocks allocated by Python. It provides the following information: 575 576* Trace where an object was allocated 577* Statistics on allocated memory blocks per filename and per line number: 578 total size, number and average size of allocated memory blocks 579* Compute the differences between two snapshots to detect memory leaks 580 581.. seealso:: 582 583 :pep:`454` -- Add a new tracemalloc module to trace Python memory allocations 584 PEP written and implemented by Victor Stinner 585 586 587 588Improved Modules 589================ 590 591 592abc 593--- 594 595New function :func:`abc.get_cache_token` can be used to know when to invalidate 596caches that are affected by changes in the object graph. (Contributed 597by Łukasz Langa in :issue:`16832`.) 598 599New class :class:`~abc.ABC` has :class:`~abc.ABCMeta` as its meta class. 600Using ``ABC`` as a base class has essentially the same effect as specifying 601``metaclass=abc.ABCMeta``, but is simpler to type and easier to read. 602(Contributed by Bruno Dupuis in :issue:`16049`.) 603 604 605aifc 606---- 607 608The :meth:`~aifc.aifc.getparams` method now returns a namedtuple rather than a 609plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.) 610 611:func:`aifc.open` now supports the context management protocol: when used in a 612:keyword:`with` block, the :meth:`~aifc.aifc.close` method of the returned 613object will be called automatically at the end of the block. (Contributed by 614Serhiy Storchacha in :issue:`16486`.) 615 616The :meth:`~aifc.aifc.writeframesraw` and :meth:`~aifc.aifc.writeframes` 617methods now accept any :term:`bytes-like object`. (Contributed by Serhiy 618Storchaka in :issue:`8311`.) 619 620 621argparse 622-------- 623 624The :class:`~argparse.FileType` class now accepts *encoding* and 625*errors* arguments, which are passed through to :func:`open`. (Contributed 626by Lucas Maystre in :issue:`11175`.) 627 628 629audioop 630------- 631 632:mod:`audioop` now supports 24-bit samples. (Contributed by Serhiy Storchaka 633in :issue:`12866`.) 634 635New :func:`~audioop.byteswap` function converts big-endian samples to 636little-endian and vice versa. (Contributed by Serhiy Storchaka in 637:issue:`19641`.) 638 639All :mod:`audioop` functions now accept any :term:`bytes-like object`. Strings 640are not accepted: they didn't work before, now they raise an error right away. 641(Contributed by Serhiy Storchaka in :issue:`16685`.) 642 643 644base64 645------ 646 647The encoding and decoding functions in :mod:`base64` now accept any 648:term:`bytes-like object` in cases where it previously required a 649:class:`bytes` or :class:`bytearray` instance. (Contributed by Nick Coghlan in 650:issue:`17839`.) 651 652New functions :func:`~base64.a85encode`, :func:`~base64.a85decode`, 653:func:`~base64.b85encode`, and :func:`~base64.b85decode` provide the ability to 654encode and decode binary data from and to ``Ascii85`` and the git/mercurial 655``Base85`` formats, respectively. The ``a85`` functions have options that can 656be used to make them compatible with the variants of the ``Ascii85`` encoding, 657including the Adobe variant. (Contributed by Martin Morrison, the Mercurial 658project, Serhiy Storchaka, and Antoine Pitrou in :issue:`17618`.) 659 660 661collections 662----------- 663 664The :meth:`.ChainMap.new_child` method now accepts an *m* argument specifying 665the child map to add to the chain. This allows an existing mapping and/or a 666custom mapping type to be used for the child. (Contributed by Vinay Sajip in 667:issue:`16613`.) 668 669 670colorsys 671-------- 672 673The number of digits in the coefficients for the RGB --- YIQ conversions have 674been expanded so that they match the FCC NTSC versions. The change in 675results should be less than 1% and may better match results found elsewhere. 676(Contributed by Brian Landers and Serhiy Storchaka in :issue:`14323`.) 677 678 679contextlib 680---------- 681 682The new :class:`contextlib.suppress` context manager helps to clarify the 683intent of code that deliberately suppresses exceptions from a single 684statement. (Contributed by Raymond Hettinger in :issue:`15806` and 685Zero Piraeus in :issue:`19266`.) 686 687The new :func:`contextlib.redirect_stdout` context manager makes it easier 688for utility scripts to handle inflexible APIs that write their output to 689:data:`sys.stdout` and don't provide any options to redirect it. Using the 690context manager, the :data:`sys.stdout` output can be redirected to any 691other stream or, in conjunction with :class:`io.StringIO`, to a string. 692The latter can be especially useful, for example, to capture output 693from a function that was written to implement a command line interface. 694It is recommended only for utility scripts because it affects the 695global state of :data:`sys.stdout`. (Contributed by Raymond Hettinger 696in :issue:`15805`.) 697 698The :mod:`contextlib` documentation has also been updated to include a 699:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the 700differences between single use, reusable and reentrant context managers. 701 702 703dbm 704--- 705 706:func:`dbm.open` objects now support the context management protocol. When 707used in a :keyword:`with` statement, the ``close`` method of the database 708object will be called automatically at the end of the block. (Contributed by 709Claudiu Popa and Nick Coghlan in :issue:`19282`.) 710 711 712dis 713--- 714 715Functions :func:`~dis.show_code`, :func:`~dis.dis`, :func:`~dis.distb`, and 716:func:`~dis.disassemble` now accept a keyword-only *file* argument that 717controls where they write their output. 718 719The :mod:`dis` module is now built around an :class:`~dis.Instruction` class 720that provides object oriented access to the details of each individual bytecode 721operation. 722 723A new method, :func:`~dis.get_instructions`, provides an iterator that emits 724the Instruction stream for a given piece of Python code. Thus it is now 725possible to write a program that inspects and manipulates a bytecode 726object in ways different from those provided by the :mod:`~dis` module 727itself. For example:: 728 729 >>> import dis 730 >>> for instr in dis.get_instructions(lambda x: x + 1): 731 ... print(instr.opname) 732 LOAD_FAST 733 LOAD_CONST 734 BINARY_ADD 735 RETURN_VALUE 736 737The various display tools in the :mod:`dis` module have been rewritten to use 738these new components. 739 740In addition, a new application-friendly class :class:`~dis.Bytecode` provides 741an object-oriented API for inspecting bytecode in both in human-readable form 742and for iterating over instructions. The :class:`~dis.Bytecode` constructor 743takes the same arguments that :func:`~dis.get_instruction` does (plus an 744optional *current_offset*), and the resulting object can be iterated to produce 745:class:`~dis.Instruction` objects. But it also has a :mod:`~dis.Bytecode.dis` 746method, equivalent to calling :mod:`~dis.dis` on the constructor argument, but 747returned as a multi-line string:: 748 749 >>> bytecode = dis.Bytecode(lambda x: x + 1, current_offset=3) 750 >>> for instr in bytecode: 751 ... print('{} ({})'.format(instr.opname, instr.opcode)) 752 LOAD_FAST (124) 753 LOAD_CONST (100) 754 BINARY_ADD (23) 755 RETURN_VALUE (83) 756 >>> bytecode.dis().splitlines() # doctest: +NORMALIZE_WHITESPACE 757 [' 1 0 LOAD_FAST 0 (x)', 758 ' --> 3 LOAD_CONST 1 (1)', 759 ' 6 BINARY_ADD', 760 ' 7 RETURN_VALUE'] 761 762:class:`~dis.Bytecode` also has a class method, 763:meth:`~dis.Bytecode.from_traceback`, that provides the ability to manipulate a 764traceback (that is, ``print(Bytecode.from_traceback(tb).dis())`` is equivalent 765to ``distb(tb)``). 766 767(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816` 768and Claudiu Popa in :issue:`17916`.) 769 770New function :func:`~dis.stack_effect` computes the effect on the Python stack 771of a given opcode and argument, information that is not otherwise available. 772(Contributed by Larry Hastings in :issue:`19722`.) 773 774 775doctest 776------- 777 778A new :ref:`option flag <doctest-options>`, :data:`~doctest.FAIL_FAST`, halts 779test running as soon as the first failure is detected. (Contributed by R. 780David Murray and Daniel Urban in :issue:`16522`.) 781 782The :mod:`doctest` command line interface now uses :mod:`argparse`, and has two 783new options, ``-o`` and ``-f``. ``-o`` allows :ref:`doctest options 784<doctest-options>` to be specified on the command line, and ``-f`` is a 785shorthand for ``-o FAIL_FAST`` (to parallel the similar option supported by the 786:mod:`unittest` CLI). (Contributed by R. David Murray in :issue:`11390`.) 787 788:mod:`doctest` will now find doctests in extension module ``__doc__`` strings. 789(Contributed by Zachary Ware in :issue:`3158`.) 790 791 792email 793----- 794 795:meth:`~email.message.Message.as_string` now accepts a *policy* argument to 796override the default policy of the message when generating a string 797representation of it. This means that ``as_string`` can now be used in more 798circumstances, instead of having to create and use a :mod:`~email.generator` in 799order to pass formatting parameters to its ``flatten`` method. (Contributed by 800R. David Murray in :issue:`18600`.) 801 802New method :meth:`~email.message.Message.as_bytes` added to produce a bytes 803representation of the message in a fashion similar to how ``as_string`` 804produces a string representation. It does not accept the *maxheaderlen* 805argument, but does accept the *unixfrom* and *policy* arguments. The 806:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method 807calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive 808result: a bytes object containing the fully formatted message. (Contributed 809by R. David Murray in :issue:`18600`.) 810 811The :meth:`.Message.set_param` message now accepts a *replace* keyword argument. 812When specified, the associated header will be updated without changing 813its location in the list of headers. For backward compatibility, the default 814is ``False``. (Contributed by R. David Murray in :issue:`18891`.) 815 816 817.. _whatsnew_email_contentmanager: 818 819A pair of new subclasses of :class:`~email.message.Message` have been added 820(:class:`.EmailMessage` and :class:`.MIMEPart`), along with a new sub-module, 821:mod:`~email.contentmanager` and a new :mod:`~email.policy` attribute 822:attr:`~email.policy.EmailPolicy.content_manager`. All documentation is 823currently in the new module, which is being added as part of email's new 824:term:`provisional API`. These classes provide a number of new methods that 825make extracting content from and inserting content into email messages much 826easier. For details, see the :mod:`~email.contentmanager` documentation and 827the :ref:`email-examples`. These API additions complete the 828bulk of the work that was planned as part of the email6 project. The currently 829provisional API is scheduled to become final in Python 3.5 (possibly with a few 830minor additions in the area of error handling). (Contributed by R. David 831Murray in :issue:`18891`.) 832 833 834filecmp 835------- 836 837A new :func:`~filecmp.clear_cache` function provides the ability to clear the 838:mod:`filecmp` comparison cache, which uses :func:`os.stat` information to 839determine if the file has changed since the last compare. This can be used, 840for example, if the file might have been changed and re-checked in less time 841than the resolution of a particular filesystem's file modification time field. 842(Contributed by Mark Levitt in :issue:`18149`.) 843 844New module attribute :data:`~filecmp.DEFAULT_IGNORES` provides the list of 845directories that are used as the default value for the *ignore* parameter of 846the :func:`~filecmp.dircmp` function. (Contributed by Eli Bendersky in 847:issue:`15442`.) 848 849 850functools 851--------- 852 853The new :func:`~functools.partialmethod` descriptor brings partial argument 854application to descriptors, just as :func:`~functools.partial` provides 855for normal callables. The new descriptor also makes it easier to get 856arbitrary callables (including :func:`~functools.partial` instances) 857to behave like normal instance methods when included in a class definition. 858(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`.) 859 860.. _whatsnew-singledispatch: 861 862The new :func:`~functools.singledispatch` decorator brings support for 863single-dispatch generic functions to the Python standard library. Where 864object oriented programming focuses on grouping multiple operations on a 865common set of data into a class, a generic function focuses on grouping 866multiple implementations of an operation that allows it to work with 867*different* kinds of data. 868 869.. seealso:: 870 871 :pep:`443` -- Single-dispatch generic functions 872 PEP written and implemented by Łukasz Langa. 873 874:func:`~functools.total_ordering` now supports a return value of 875:const:`NotImplemented` from the underlying comparison function. (Contributed 876by Katie Miller in :issue:`10042`.) 877 878A pure-python version of the :func:`~functools.partial` function is now in the 879stdlib; in CPython it is overridden by the C accelerated version, but it is 880available for other implementations to use. (Contributed by Brian Thorne in 881:issue:`12428`.) 882 883 884gc 885-- 886 887New function :func:`~gc.get_stats` returns a list of three per-generation 888dictionaries containing the collections statistics since interpreter startup. 889(Contributed by Antoine Pitrou in :issue:`16351`.) 890 891 892glob 893---- 894 895A new function :func:`~glob.escape` provides a way to escape special characters 896in a filename so that they do not become part of the globbing expansion but are 897instead matched literally. (Contributed by Serhiy Storchaka in :issue:`8402`.) 898 899 900hashlib 901------- 902 903A new :func:`hashlib.pbkdf2_hmac` function provides 904the `PKCS#5 password-based key derivation function 2 905<https://en.wikipedia.org/wiki/PBKDF2>`_. (Contributed by Christian 906Heimes in :issue:`18582`.) 907 908The :attr:`~hashlib.hash.name` attribute of :mod:`hashlib` hash objects is now 909a formally supported interface. It has always existed in CPython's 910:mod:`hashlib` (although it did not return lower case names for all supported 911hashes), but it was not a public interface and so some other Python 912implementations have not previously supported it. (Contributed by Jason R. 913Coombs in :issue:`18532`.) 914 915 916hmac 917---- 918 919:mod:`hmac` now accepts ``bytearray`` as well as ``bytes`` for the *key* 920argument to the :func:`~hmac.new` function, and the *msg* parameter to both the 921:func:`~hmac.new` function and the :meth:`~hmac.HMAC.update` method now 922accepts any type supported by the :mod:`hashlib` module. (Contributed 923by Jonas Borgström in :issue:`18240`.) 924 925The *digestmod* argument to the :func:`hmac.new` function may now be any hash 926digest name recognized by :mod:`hashlib`. In addition, the current behavior in 927which the value of *digestmod* defaults to ``MD5`` is deprecated: in a 928future version of Python there will be no default value. (Contributed by 929Christian Heimes in :issue:`17276`.) 930 931With the addition of :attr:`~hmac.HMAC.block_size` and :attr:`~hmac.HMAC.name` 932attributes (and the formal documentation of the :attr:`~hmac.HMAC.digest_size` 933attribute), the :mod:`hmac` module now conforms fully to the :pep:`247` API. 934(Contributed by Christian Heimes in :issue:`18775`.) 935 936 937html 938---- 939 940New function :func:`~html.unescape` function converts HTML5 character references to 941the corresponding Unicode characters. (Contributed by Ezio Melotti in 942:issue:`2927`.) 943 944:class:`~html.parser.HTMLParser` accepts a new keyword argument 945*convert_charrefs* that, when ``True``, automatically converts all character 946references. For backward-compatibility, its value defaults to ``False``, but 947it will change to ``True`` in a future version of Python, so you are invited to 948set it explicitly and update your code to use this new feature. (Contributed 949by Ezio Melotti in :issue:`13633`.) 950 951The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated. 952(Contributed by Ezio Melotti in :issue:`15114`.) 953 954 955http 956---- 957 958:meth:`~http.server.BaseHTTPRequestHandler.send_error` now accepts an 959optional additional *explain* parameter which can be used to provide an 960extended error description, overriding the hardcoded default if there is one. 961This extended error description will be formatted using the 962:attr:`~http.server.HTTP.error_message_format` attribute and sent as the body 963of the error response. (Contributed by Karl Cow in :issue:`12921`.) 964 965The :mod:`http.server` :ref:`command line interface <http-server-cli>` now has 966a ``-b/--bind`` option that causes the server to listen on a specific address. 967(Contributed by Malte Swart in :issue:`17764`.) 968 969 970idlelib and IDLE 971---------------- 972 973Since idlelib implements the IDLE shell and editor and is not intended for 974import by other programs, it gets improvements with every release. See 975:file:`Lib/idlelib/NEWS.txt` for a cumulative list of changes since 3.3.0, 976as well as changes made in future 3.4.x releases. This file is also available 977from the IDLE :menuselection:`Help --> About IDLE` dialog. 978 979 980importlib 981--------- 982 983The :class:`~importlib.abc.InspectLoader` ABC defines a new method, 984:meth:`~importlib.abc.InspectLoader.source_to_code` that accepts source 985data and a path and returns a code object. The default implementation 986is equivalent to ``compile(data, path, 'exec', dont_inherit=True)``. 987(Contributed by Eric Snow and Brett Cannon in :issue:`15627`.) 988 989:class:`~importlib.abc.InspectLoader` also now has a default implementation 990for the :meth:`~importlib.abc.InspectLoader.get_code` method. However, 991it will normally be desirable to override the default implementation 992for performance reasons. (Contributed by Brett Cannon in :issue:`18072`.) 993 994The :func:`~importlib.reload` function has been moved from :mod:`imp` to 995:mod:`importlib` as part of the :mod:`imp` module deprecation. (Contributed by 996Berker Peksag in :issue:`18193`.) 997 998:mod:`importlib.util` now has a :data:`~importlib.util.MAGIC_NUMBER` attribute 999providing access to the bytecode version number. This replaces the 1000:func:`~imp.get_magic` function in the deprecated :mod:`imp` module. 1001(Contributed by Brett Cannon in :issue:`18192`.) 1002 1003New :mod:`importlib.util` functions :func:`~importlib.util.cache_from_source` 1004and :func:`~importlib.util.source_from_cache` replace the same-named functions 1005in the deprecated :mod:`imp` module. (Contributed by Brett Cannon in 1006:issue:`18194`.) 1007 1008The :mod:`importlib` bootstrap :class:`.NamespaceLoader` now conforms to 1009the :class:`.InspectLoader` ABC, which means that ``runpy`` and 1010``python -m`` can now be used with namespace packages. (Contributed 1011by Brett Cannon in :issue:`18058`.) 1012 1013:mod:`importlib.util` has a new function :func:`~importlib.util.decode_source` 1014that decodes source from bytes using universal newline processing. This is 1015useful for implementing :meth:`.InspectLoader.get_source` methods. 1016 1017:class:`importlib.machinery.ExtensionFileLoader` now has a 1018:meth:`~importlib.machinery.ExtensionFileLoader.get_filename` method. This was 1019inadvertently omitted in the original implementation. (Contributed by Eric 1020Snow in :issue:`19152`.) 1021 1022 1023inspect 1024------- 1025 1026The :mod:`inspect` module now offers a basic :ref:`command line interface 1027<inspect-module-cli>` to quickly display source code and other 1028information for modules, classes and functions. (Contributed by Claudiu Popa 1029and Nick Coghlan in :issue:`18626`.) 1030 1031:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains 1032created by :func:`functools.wraps` (and any other API that sets the 1033``__wrapped__`` attribute on a wrapper function). (Contributed by 1034Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`.) 1035 1036As part of the implementation of the new :mod:`enum` module, the 1037:mod:`inspect` module now has substantially better support for custom 1038``__dir__`` methods and dynamic class attributes provided through 1039metaclasses. (Contributed by Ethan Furman in :issue:`18929` and 1040:issue:`19030`.) 1041 1042:func:`~inspect.getfullargspec` and :func:`~inspect.getargspec` 1043now use the :func:`~inspect.signature` API. This allows them to 1044support a much broader range of callables, including those with 1045``__signature__`` attributes, those with metadata provided by argument 1046clinic, :func:`functools.partial` objects and more. Note that, unlike 1047:func:`~inspect.signature`, these functions still ignore ``__wrapped__`` 1048attributes, and report the already bound first argument for bound methods, 1049so it is still necessary to update your code to use 1050:func:`~inspect.signature` directly if those features are desired. 1051(Contributed by Yury Selivanov in :issue:`17481`.) 1052 1053:func:`~inspect.signature` now supports duck types of CPython functions, 1054which adds support for functions compiled with Cython. (Contributed 1055by Stefan Behnel and Yury Selivanov in :issue:`17159`.) 1056 1057 1058ipaddress 1059--------- 1060 1061:mod:`ipaddress` was added to the standard library in Python 3.3 as a 1062:term:`provisional API`. With the release of Python 3.4, this qualification 1063has been removed: :mod:`ipaddress` is now considered a stable API, covered 1064by the normal standard library requirements to maintain backwards 1065compatibility. 1066 1067A new :attr:`~ipaddress.IPv4Address.is_global` property is ``True`` if 1068an address is globally routeable. (Contributed by Peter Moody in 1069:issue:`17400`.) 1070 1071 1072logging 1073------- 1074 1075The :class:`~logging.handlers.TimedRotatingFileHandler` has a new *atTime* 1076parameter that can be used to specify the time of day when rollover should 1077happen. (Contributed by Ronald Oussoren in :issue:`9556`.) 1078 1079:class:`~logging.handlers.SocketHandler` and 1080:class:`~logging.handlers.DatagramHandler` now support Unix domain sockets (by 1081setting *port* to ``None``). (Contributed by Vinay Sajip in commit 1082ce46195b56a9.) 1083 1084:func:`~logging.config.fileConfig` now accepts a 1085:class:`configparser.RawConfigParser` subclass instance for the *fname* 1086parameter. This facilitates using a configuration file when logging 1087configuration is just a part of the overall application configuration, or where 1088the application modifies the configuration before passing it to 1089:func:`~logging.config.fileConfig`. (Contributed by Vinay Sajip in 1090:issue:`16110`.) 1091 1092Logging configuration data received from a socket via the 1093:func:`logging.config.listen` function can now be validated before being 1094processed by supplying a verification function as the argument to the new 1095*verify* keyword argument. (Contributed by Vinay Sajip in :issue:`15452`.) 1096 1097 1098.. _whatsnew-marshal-3: 1099 1100marshal 1101------- 1102 1103The default :mod:`marshal` version has been bumped to 3. The code implementing 1104the new version restores the Python2 behavior of recording only one copy of 1105interned strings and preserving the interning on deserialization, and extends 1106this "one copy" ability to any object type (including handling recursive 1107references). This reduces both the size of ``.pyc`` files and the amount of 1108memory a module occupies in memory when it is loaded from a ``.pyc`` (or 1109``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`, 1110with additional speedups by Antoine Pitrou in :issue:`19219`.) 1111 1112 1113mmap 1114---- 1115 1116mmap objects can now be :mod:`weakref`\ ed. (Contributed by Valerie Lambert in 1117:issue:`4885`.) 1118 1119 1120multiprocessing 1121--------------- 1122 1123.. _whatsnew-multiprocessing-no-fork: 1124 1125On Unix two new :ref:`start methods <multiprocessing-start-methods>`, 1126``spawn`` and ``forkserver``, have been added for starting processes using 1127:mod:`multiprocessing`. These make the mixing of processes with threads more 1128robust, and the ``spawn`` method matches the semantics that multiprocessing has 1129always used on Windows. New function 1130:func:`~multiprocessing.get_all_start_methods` reports all start methods 1131available on the platform, :func:`~multiprocessing.get_start_method` reports 1132the current start method, and :func:`~multiprocessing.set_start_method` sets 1133the start method. (Contributed by Richard Oudkerk in :issue:`8713`.) 1134 1135:mod:`multiprocessing` also now has the concept of a ``context``, which 1136determines how child processes are created. New function 1137:func:`~multiprocessing.get_context` returns a context that uses a specified 1138start method. It has the same API as the :mod:`multiprocessing` module itself, 1139so you can use it to create :class:`~multiprocessing.pool.Pool`\ s and other 1140objects that will operate within that context. This allows a framework and an 1141application or different parts of the same application to use multiprocessing 1142without interfering with each other. (Contributed by Richard Oudkerk in 1143:issue:`18999`.) 1144 1145Except when using the old *fork* start method, child processes no longer 1146inherit unneeded handles/file descriptors from their parents (part of 1147:issue:`8713`). 1148 1149:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the 1150``-m`` switch) to initialise ``__main__`` appropriately in child processes 1151when using the ``spawn`` or ``forkserver`` start methods. This resolves some 1152edge cases where combining multiprocessing, the ``-m`` command line switch, 1153and explicit relative imports could cause obscure failures in child 1154processes. (Contributed by Nick Coghlan in :issue:`19946`.) 1155 1156 1157operator 1158-------- 1159 1160New function :func:`~operator.length_hint` provides an implementation of the 1161specification for how the :meth:`~object.__length_hint__` special method should 1162be used, as part of the :pep:`424` formal specification of this language 1163feature. (Contributed by Armin Ronacher in :issue:`16148`.) 1164 1165There is now a pure-python version of the :mod:`operator` module available for 1166reference and for use by alternate implementations of Python. (Contributed by 1167Zachary Ware in :issue:`16694`.) 1168 1169 1170os 1171-- 1172 1173There are new functions to get and set the :ref:`inheritable flag 1174<fd_inheritance>` of a file descriptor (:func:`os.get_inheritable`, 1175:func:`os.set_inheritable`) or a Windows handle 1176(:func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`). 1177 1178New function :func:`~os.cpu_count` reports the number of CPUs available on the 1179platform on which Python is running (or ``None`` if the count can't be 1180determined). The :func:`multiprocessing.cpu_count` function is now implemented 1181in terms of this function). (Contributed by Trent Nelson, Yogesh Chaudhari, 1182Victor Stinner, and Charles-François Natali in :issue:`17914`.) 1183 1184:func:`os.path.samestat` is now available on the Windows platform (and the 1185:func:`os.path.samefile` implementation is now shared between Unix and 1186Windows). (Contributed by Brian Curtin in :issue:`11939`.) 1187 1188:func:`os.path.ismount` now recognizes volumes mounted below a drive 1189root on Windows. (Contributed by Tim Golden in :issue:`9035`.) 1190 1191:func:`os.open` supports two new flags on platforms that provide them, 1192:data:`~os.O_PATH` (un-opened file descriptor), and :data:`~os.O_TMPFILE` 1193(unnamed temporary file; as of 3.4.0 release available only on Linux systems 1194with a kernel version of 3.11 or newer that have uapi headers). (Contributed 1195by Christian Heimes in :issue:`18673` and Benjamin Peterson, respectively.) 1196 1197 1198pdb 1199--- 1200 1201:mod:`pdb` has been enhanced to handle generators, :keyword:`yield`, and 1202``yield from`` in a more useful fashion. This is especially helpful when 1203debugging :mod:`asyncio` based programs. (Contributed by Andrew Svetlov and 1204Xavier de Gaye in :issue:`16596`.) 1205 1206The ``print`` command has been removed from :mod:`pdb`, restoring access to the 1207Python :func:`print` function from the pdb command line. Python2's ``pdb`` did 1208not have a ``print`` command; instead, entering ``print`` executed the 1209``print`` statement. In Python3 ``print`` was mistakenly made an alias for the 1210pdb :pdbcmd:`p` command. ``p``, however, prints the ``repr`` of its argument, 1211not the ``str`` like the Python2 ``print`` command did. Worse, the Python3 1212``pdb print`` command shadowed the Python3 ``print`` function, making it 1213inaccessible at the ``pdb`` prompt. (Contributed by Connor Osborn in 1214:issue:`18764`.) 1215 1216 1217.. _whatsnew-protocol-4: 1218 1219pickle 1220------ 1221 1222:mod:`pickle` now supports (but does not use by default) a new pickle protocol, 1223protocol 4. This new protocol addresses a number of issues that were present 1224in previous protocols, such as the serialization of nested classes, very large 1225strings and containers, and classes whose :meth:`__new__` method takes 1226keyword-only arguments. It also provides some efficiency improvements. 1227 1228.. seealso:: 1229 1230 :pep:`3154` -- Pickle protocol 4 1231 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti. 1232 1233 1234plistlib 1235-------- 1236 1237:mod:`plistlib` now has an API that is similar to the standard pattern for 1238stdlib serialization protocols, with new :func:`~plistlib.load`, 1239:func:`~plistlib.dump`, :func:`~plistlib.loads`, and :func:`~plistlib.dumps` 1240functions. (The older API is now deprecated.) In addition to the already 1241supported XML plist format (:data:`~plistlib.FMT_XML`), it also now supports 1242the binary plist format (:data:`~plistlib.FMT_BINARY`). (Contributed by Ronald 1243Oussoren and others in :issue:`14455`.) 1244 1245 1246poplib 1247------ 1248 1249Two new methods have been added to :mod:`poplib`: :meth:`~poplib.POP3.capa`, 1250which returns the list of capabilities advertised by the POP server, and 1251:meth:`~poplib.POP3.stls`, which switches a clear-text POP3 session into an 1252encrypted POP3 session if the POP server supports it. (Contributed by Lorenzo 1253Catucci in :issue:`4473`.) 1254 1255 1256pprint 1257------ 1258 1259The :mod:`pprint` module's :class:`~pprint.PrettyPrinter` class and its 1260:func:`~pprint.pformat`, and :func:`~pprint.pprint` functions have a new 1261option, *compact*, that controls how the output is formatted. Currently 1262setting *compact* to ``True`` means that sequences will be printed with as many 1263sequence elements as will fit within *width* on each (indented) line. 1264(Contributed by Serhiy Storchaka in :issue:`19132`.) 1265 1266Long strings are now wrapped using Python's normal line continuation 1267syntax. (Contributed by Antoine Pitrou in :issue:`17150`.) 1268 1269 1270pty 1271--- 1272 1273:func:`pty.spawn` now returns the status value from :func:`os.waitpid` on 1274the child process, instead of ``None``. (Contributed by Gregory P. Smith.) 1275 1276 1277pydoc 1278----- 1279 1280The :mod:`pydoc` module is now based directly on the :func:`inspect.signature` 1281introspection API, allowing it to provide signature information for a wider 1282variety of callable objects. This change also means that ``__wrapped__`` 1283attributes are now taken into account when displaying help information. 1284(Contributed by Larry Hastings in :issue:`19674`.) 1285 1286The :mod:`pydoc` module no longer displays the ``self`` parameter for 1287already bound methods. Instead, it aims to always display the exact current 1288signature of the supplied callable. (Contributed by Larry Hastings in 1289:issue:`20710`.) 1290 1291In addition to the changes that have been made to :mod:`pydoc` directly, 1292its handling of custom ``__dir__`` methods and various descriptor 1293behaviours has also been improved substantially by the underlying changes in 1294the :mod:`inspect` module. 1295 1296As the :func:`help` builtin is based on :mod:`pydoc`, the above changes also 1297affect the behaviour of :func:`help`. 1298 1299 1300re 1301-- 1302 1303New :func:`~re.fullmatch` function and :meth:`.regex.fullmatch` method anchor 1304the pattern at both ends of the string to match. This provides a way to be 1305explicit about the goal of the match, which avoids a class of subtle bugs where 1306``$`` characters get lost during code changes or the addition of alternatives 1307to an existing regular expression. (Contributed by Matthew Barnett in 1308:issue:`16203`.) 1309 1310The repr of :ref:`regex objects <re-objects>` now includes the pattern 1311and the flags; the repr of :ref:`match objects <match-objects>` now 1312includes the start, end, and the part of the string that matched. (Contributed 1313by Hugo Lopes Tavares and Serhiy Storchaka in :issue:`13592` and 1314:issue:`17087`.) 1315 1316 1317resource 1318-------- 1319 1320New :func:`~resource.prlimit` function, available on Linux platforms with a 1321kernel version of 2.6.36 or later and glibc of 2.13 or later, provides the 1322ability to query or set the resource limits for processes other than the one 1323making the call. (Contributed by Christian Heimes in :issue:`16595`.) 1324 1325On Linux kernel version 2.6.36 or later, there are also some new 1326Linux specific constants: :attr:`~resource.RLIMIT_MSGQUEUE`, 1327:attr:`~resource.RLIMIT_NICE`, :attr:`~resource.RLIMIT_RTPRIO`, 1328:attr:`~resource.RLIMIT_RTTIME`, and :attr:`~resource.RLIMIT_SIGPENDING`. 1329(Contributed by Christian Heimes in :issue:`19324`.) 1330 1331On FreeBSD version 9 and later, there some new FreeBSD specific constants: 1332:attr:`~resource.RLIMIT_SBSIZE`, :attr:`~resource.RLIMIT_SWAP`, and 1333:attr:`~resource.RLIMIT_NPTS`. (Contributed by Claudiu Popa in 1334:issue:`19343`.) 1335 1336 1337select 1338------ 1339 1340:class:`~select.epoll` objects now support the context management protocol. 1341When used in a :keyword:`with` statement, the :meth:`~select.epoll.close` 1342method will be called automatically at the end of the block. (Contributed 1343by Serhiy Storchaka in :issue:`16488`.) 1344 1345:class:`~select.devpoll` objects now have :meth:`~select.devpoll.fileno` and 1346:meth:`~select.devpoll.close` methods, as well as a new attribute 1347:attr:`~select.devpoll.closed`. (Contributed by Victor Stinner in 1348:issue:`18794`.) 1349 1350 1351shelve 1352------ 1353 1354:class:`~shelve.Shelf` instances may now be used in :keyword:`with` statements, 1355and will be automatically closed at the end of the :keyword:`!with` block. 1356(Contributed by Filip Gruszczyński in :issue:`13896`.) 1357 1358 1359shutil 1360------ 1361 1362:func:`~shutil.copyfile` now raises a specific :exc:`~shutil.Error` subclass, 1363:exc:`~shutil.SameFileError`, when the source and destination are the same 1364file, which allows an application to take appropriate action on this specific 1365error. (Contributed by Atsuo Ishimoto and Hynek Schlawack in 1366:issue:`1492704`.) 1367 1368 1369smtpd 1370----- 1371 1372The :class:`~smtpd.SMTPServer` and :class:`~smtpd.SMTPChannel` classes now 1373accept a *map* keyword argument which, if specified, is passed in to 1374:class:`asynchat.async_chat` as its *map* argument. This allows an application 1375to avoid affecting the global socket map. (Contributed by Vinay Sajip in 1376:issue:`11959`.) 1377 1378 1379smtplib 1380------- 1381 1382:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows 1383both socket level errors and SMTP protocol level errors to be caught in one 1384try/except statement by code that only cares whether or not an error occurred. 1385(Contributed by Ned Jackson Lovely in :issue:`2118`.) 1386 1387 1388socket 1389------ 1390 1391The socket module now supports the :data:`~socket.CAN_BCM` protocol on 1392platforms that support it. (Contributed by Brian Thorne in :issue:`15359`.) 1393 1394Socket objects have new methods to get or set their :ref:`inheritable flag 1395<fd_inheritance>`, :meth:`~socket.socket.get_inheritable` and 1396:meth:`~socket.socket.set_inheritable`. 1397 1398The ``socket.AF_*`` and ``socket.SOCK_*`` constants are now enumeration values 1399using the new :mod:`enum` module. This allows meaningful names to be printed 1400during debugging, instead of integer "magic numbers". 1401 1402The :data:`~socket.AF_LINK` constant is now available on BSD and OSX. 1403 1404:func:`~socket.inet_pton` and :func:`~socket.inet_ntop` are now supported 1405on Windows. (Contributed by Atsuo Ishimoto in :issue:`7171`.) 1406 1407 1408sqlite3 1409------- 1410 1411A new boolean parameter to the :func:`~sqlite3.connect` function, *uri*, can be 1412used to indicate that the *database* parameter is a ``uri`` (see the `SQLite 1413URI documentation <https://www.sqlite.org/uri.html>`_). (Contributed by poq in 1414:issue:`13773`.) 1415 1416 1417ssl 1418--- 1419 1420.. _whatsnew-tls-11-12: 1421 1422:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and 1423TLSv1.2 support) have been added; support for these protocols is only available if 1424Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and 1425Antoine Pitrou in :issue:`16692`.) 1426 1427.. _whatsnew34-sslcontext: 1428 1429New function :func:`~ssl.create_default_context` provides a standard way to 1430obtain an :class:`~ssl.SSLContext` whose settings are intended to be a 1431reasonable balance between compatibility and security. These settings are 1432more stringent than the defaults provided by the :class:`~ssl.SSLContext` 1433constructor, and may be adjusted in the future, without prior deprecation, if 1434best-practice security requirements change. The new recommended best 1435practice for using stdlib libraries that support SSL is to use 1436:func:`~ssl.create_default_context` to obtain an :class:`~ssl.SSLContext` 1437object, modify it if needed, and then pass it as the *context* argument 1438of the appropriate stdlib API. (Contributed by Christian Heimes 1439in :issue:`19689`.) 1440 1441:class:`~ssl.SSLContext` method :meth:`~ssl.SSLContext.load_verify_locations` 1442accepts a new optional argument *cadata*, which can be used to provide PEM or 1443DER encoded certificates directly via strings or bytes, respectively. 1444(Contributed by Christian Heimes in :issue:`18138`.) 1445 1446New function :func:`~ssl.get_default_verify_paths` returns 1447a named tuple of the paths and environment variables that the 1448:meth:`~ssl.SSLContext.set_default_verify_paths` method uses to set 1449OpenSSL's default ``cafile`` and ``capath``. This can be an aid in 1450debugging default verification issues. (Contributed by Christian Heimes 1451in :issue:`18143`.) 1452 1453:class:`~ssl.SSLContext` has a new method, 1454:meth:`~ssl.SSLContext.cert_store_stats`, that reports the number of loaded 1455``X.509`` certs, ``X.509 CA`` certs, and certificate revocation lists 1456(``crl``\ s), as well as a :meth:`~ssl.SSLContext.get_ca_certs` method that 1457returns a list of the loaded ``CA`` certificates. (Contributed by Christian 1458Heimes in :issue:`18147`.) 1459 1460If OpenSSL 0.9.8 or later is available, :class:`~ssl.SSLContext` has a new 1461attribute :attr:`~ssl.SSLContext.verify_flags` that can be used to control the 1462certificate verification process by setting it to some combination of the new 1463constants :data:`~ssl.VERIFY_DEFAULT`, :data:`~ssl.VERIFY_CRL_CHECK_LEAF`, 1464:data:`~ssl.VERIFY_CRL_CHECK_CHAIN`, or :data:`~ssl.VERIFY_X509_STRICT`. 1465OpenSSL does not do any CRL verification by default. (Contributed by 1466Christien Heimes in :issue:`8813`.) 1467 1468New :class:`~ssl.SSLContext` method :meth:`~ssl.SSLContext.load_default_certs` 1469loads a set of default "certificate authority" (CA) certificates from default 1470locations, which vary according to the platform. It can be used to load both 1471TLS web server authentication certificates 1472(``purpose=``:data:`~ssl.Purpose.SERVER_AUTH`) for a client to use to verify a 1473server, and certificates for a server to use in verifying client certificates 1474(``purpose=``:data:`~ssl.Purpose.CLIENT_AUTH`). (Contributed by Christian 1475Heimes in :issue:`19292`.) 1476 1477.. _whatsnew34-win-cert-store: 1478 1479Two new windows-only functions, :func:`~ssl.enum_certificates` and 1480:func:`~ssl.enum_crls` provide the ability to retrieve certificates, 1481certificate information, and CRLs from the Windows cert store. (Contributed 1482by Christian Heimes in :issue:`17134`.) 1483 1484.. _whatsnew34-sni: 1485 1486Support for server-side SNI (Server Name Indication) using the new 1487:meth:`ssl.SSLContext.set_servername_callback` method. 1488(Contributed by Daniel Black in :issue:`8109`.) 1489 1490The dictionary returned by :meth:`.SSLSocket.getpeercert` contains additional 1491``X509v3`` extension items: ``crlDistributionPoints``, ``calIssuers``, and 1492``OCSP`` URIs. (Contributed by Christian Heimes in :issue:`18379`.) 1493 1494 1495stat 1496---- 1497 1498The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C 1499implementation is required as most of the values aren't standardized and 1500are platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.) 1501 1502The module supports new :mod:`~stat.ST_MODE` flags, :mod:`~stat.S_IFDOOR`, 1503:attr:`~stat.S_IFPORT`, and :attr:`~stat.S_IFWHT`. (Contributed by 1504Christian Hiemes in :issue:`11016`.) 1505 1506 1507struct 1508------ 1509 1510New function :mod:`~struct.iter_unpack` and a new 1511:meth:`struct.Struct.iter_unpack` method on compiled formats provide streamed 1512unpacking of a buffer containing repeated instances of a given format of data. 1513(Contributed by Antoine Pitrou in :issue:`17804`.) 1514 1515 1516subprocess 1517---------- 1518 1519:func:`~subprocess.check_output` now accepts an *input* argument that can 1520be used to provide the contents of ``stdin`` for the command that is run. 1521(Contributed by Zack Weinberg in :issue:`16624`.) 1522 1523:func:`~subprocess.getstatus` and :func:`~subprocess.getstatusoutput` now 1524work on Windows. This change was actually inadvertently made in 3.3.4. 1525(Contributed by Tim Golden in :issue:`10197`.) 1526 1527 1528sunau 1529----- 1530 1531The :meth:`~sunau.getparams` method now returns a namedtuple rather than a 1532plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.) 1533 1534:meth:`sunau.open` now supports the context management protocol: when used in a 1535:keyword:`with` block, the ``close`` method of the returned object will be 1536called automatically at the end of the block. (Contributed by Serhiy Storchaka 1537in :issue:`18878`.) 1538 1539:meth:`.AU_write.setsampwidth` now supports 24 bit samples, thus adding 1540support for writing 24 sample using the module. (Contributed by 1541Serhiy Storchaka in :issue:`19261`.) 1542 1543The :meth:`~sunau.AU_write.writeframesraw` and 1544:meth:`~sunau.AU_write.writeframes` methods now accept any :term:`bytes-like 1545object`. (Contributed by Serhiy Storchaka in :issue:`8311`.) 1546 1547 1548sys 1549--- 1550 1551New function :func:`sys.getallocatedblocks` returns the current number of 1552blocks allocated by the interpreter. (In CPython with the default 1553``--with-pymalloc`` setting, this is allocations made through the 1554:c:func:`PyObject_Malloc` API.) This can be useful for tracking memory leaks, 1555especially if automated via a test suite. (Contributed by Antoine Pitrou 1556in :issue:`13390`.) 1557 1558When the Python interpreter starts in :ref:`interactive mode 1559<tut-interactive>`, it checks for an :data:`~sys.__interactivehook__` attribute 1560on the :mod:`sys` module. If the attribute exists, its value is called with no 1561arguments just before interactive mode is started. The check is made after the 1562:envvar:`PYTHONSTARTUP` file is read, so it can be set there. The :mod:`site` 1563module :ref:`sets it <rlcompleter-config>` to a function that enables tab 1564completion and history saving (in :file:`~/.python-history`) if the platform 1565supports :mod:`readline`. If you do not want this (new) behavior, you can 1566override it in :envvar:`PYTHONSTARTUP`, :mod:`sitecustomize`, or 1567:mod:`usercustomize` by deleting this attribute from :mod:`sys` (or setting it 1568to some other callable). (Contributed by Éric Araujo and Antoine Pitrou in 1569:issue:`5845`.) 1570 1571 1572tarfile 1573------- 1574 1575The :mod:`tarfile` module now supports a simple :ref:`tarfile-commandline` when 1576called as a script directly or via ``-m``. This can be used to create and 1577extract tarfile archives. (Contributed by Berker Peksag in :issue:`13477`.) 1578 1579 1580textwrap 1581-------- 1582 1583The :class:`~textwrap.TextWrapper` class has two new attributes/constructor 1584arguments: :attr:`~textwrap.TextWrapper.max_lines`, which limits the number of 1585lines in the output, and :attr:`~textwrap.TextWrapper.placeholder`, which is a 1586string that will appear at the end of the output if it has been truncated 1587because of *max_lines*. Building on these capabilities, a new convenience 1588function :func:`~textwrap.shorten` collapses all of the whitespace in the input 1589to single spaces and produces a single line of a given *width* that ends with 1590the *placeholder* (by default, ``[...]``). (Contributed by Antoine Pitrou and 1591Serhiy Storchaka in :issue:`18585` and :issue:`18725`.) 1592 1593 1594threading 1595--------- 1596 1597The :class:`~threading.Thread` object representing the main thread can be 1598obtained from the new :func:`~threading.main_thread` function. In normal 1599conditions this will be the thread from which the Python interpreter was 1600started. (Contributed by Andrew Svetlov in :issue:`18882`.) 1601 1602 1603traceback 1604--------- 1605 1606A new :func:`traceback.clear_frames` function takes a traceback object 1607and clears the local variables in all of the frames it references, 1608reducing the amount of memory consumed. (Contributed by Andrew Kuchling in 1609:issue:`1565525`.) 1610 1611 1612types 1613----- 1614 1615A new :func:`~types.DynamicClassAttribute` descriptor provides a way to define 1616an attribute that acts normally when looked up through an instance object, but 1617which is routed to the *class* ``__getattr__`` when looked up through the 1618class. This allows one to have properties active on a class, and have virtual 1619attributes on the class with the same name (see :mod:`Enum` for an example). 1620(Contributed by Ethan Furman in :issue:`19030`.) 1621 1622 1623urllib 1624------ 1625 1626:mod:`urllib.request` now supports ``data:`` URLs via the 1627:class:`~urllib.request.DataHandler` class. (Contributed by Mathias Panzenböck 1628in :issue:`16423`.) 1629 1630The http method that will be used by a :class:`~urllib.request.Request` class 1631can now be specified by setting a :class:`~urllib.request.Request.method` 1632class attribute on the subclass. (Contributed by Jason R Coombs in 1633:issue:`18978`.) 1634 1635:class:`~urllib.request.Request` objects are now reusable: if the 1636:attr:`~urllib.request.Request.full_url` or :attr:`~urllib.request.Request.data` 1637attributes are modified, all relevant internal properties are updated. This 1638means, for example, that it is now possible to use the same 1639:class:`~urllib.request.Request` object in more than one 1640:meth:`.OpenerDirector.open` call with different *data* arguments, or to 1641modify a :class:`~urllib.request.Request`\ 's ``url`` rather than recomputing it 1642from scratch. There is also a new 1643:meth:`~urllib.request.Request.remove_header` method that can be used to remove 1644headers from a :class:`~urllib.request.Request`. (Contributed by Alexey 1645Kachayev in :issue:`16464`, Daniel Wozniak in :issue:`17485`, and Damien Brecht 1646and Senthil Kumaran in :issue:`17272`.) 1647 1648:class:`~urllib.error.HTTPError` objects now have a 1649:attr:`~urllib.error.HTTPError.headers` attribute that provides access to the 1650HTTP response headers associated with the error. (Contributed by 1651Berker Peksag in :issue:`15701`.) 1652 1653 1654unittest 1655-------- 1656 1657The :class:`~unittest.TestCase` class has a new method, 1658:meth:`~unittest.TestCase.subTest`, that produces a context manager whose 1659:keyword:`with` block becomes a "sub-test". This context manager allows a test 1660method to dynamically generate subtests by, say, calling the ``subTest`` 1661context manager inside a loop. A single test method can thereby produce an 1662indefinite number of separately-identified and separately-counted tests, all of 1663which will run even if one or more of them fail. For example:: 1664 1665 class NumbersTest(unittest.TestCase): 1666 def test_even(self): 1667 for i in range(6): 1668 with self.subTest(i=i): 1669 self.assertEqual(i % 2, 0) 1670 1671will result in six subtests, each identified in the unittest verbose output 1672with a label consisting of the variable name ``i`` and a particular value for 1673that variable (``i=0``, ``i=1``, etc). See :ref:`subtests` for the full 1674version of this example. (Contributed by Antoine Pitrou in :issue:`16997`.) 1675 1676:func:`unittest.main` now accepts an iterable of test names for 1677*defaultTest*, where previously it only accepted a single test name as a 1678string. (Contributed by Jyrki Pulliainen in :issue:`15132`.) 1679 1680If :class:`~unittest.SkipTest` is raised during test discovery (that is, at the 1681module level in the test file), it is now reported as a skip instead of an 1682error. (Contributed by Zach Ware in :issue:`16935`.) 1683 1684:meth:`~unittest.TestLoader.discover` now sorts the discovered files to provide 1685consistent test ordering. (Contributed by Martin Melin and Jeff Ramnani in 1686:issue:`16709`.) 1687 1688:class:`~unittest.TestSuite` now drops references to tests as soon as the test 1689has been run, if the test is successful. On Python interpreters that do 1690garbage collection, this allows the tests to be garbage collected if nothing 1691else is holding a reference to the test. It is possible to override this 1692behavior by creating a :class:`~unittest.TestSuite` subclass that defines a 1693custom ``_removeTestAtIndex`` method. (Contributed by Tom Wardill, Matt 1694McClure, and Andrew Svetlov in :issue:`11798`.) 1695 1696A new test assertion context-manager, :meth:`~unittest.TestCase.assertLogs`, 1697will ensure that a given block of code emits a log message using the 1698:mod:`logging` module. By default the message can come from any logger and 1699have a priority of ``INFO`` or higher, but both the logger name and an 1700alternative minimum logging level may be specified. The object returned by the 1701context manager can be queried for the :class:`~logging.LogRecord`\ s and/or 1702formatted messages that were logged. (Contributed by Antoine Pitrou in 1703:issue:`18937`.) 1704 1705Test discovery now works with namespace packages (Contributed by Claudiu Popa 1706in :issue:`17457`.) 1707 1708:mod:`unittest.mock` objects now inspect their specification signatures when 1709matching calls, which means an argument can now be matched by either position 1710or name, instead of only by position. (Contributed by Antoine Pitrou in 1711:issue:`17015`.) 1712 1713:func:`~mock.mock_open` objects now have ``readline`` and ``readlines`` 1714methods. (Contributed by Toshio Kuratomi in :issue:`17467`.) 1715 1716 1717venv 1718---- 1719 1720:mod:`venv` now includes activation scripts for the ``csh`` and ``fish`` 1721shells. (Contributed by Andrew Svetlov in :issue:`15417`.) 1722 1723:class:`~venv.EnvBuilder` and the :func:`~venv.create` convenience function 1724take a new keyword argument *with_pip*, which defaults to ``False``, that 1725controls whether or not :class:`~venv.EnvBuilder` ensures that ``pip`` is 1726installed in the virtual environment. (Contributed by Nick Coghlan in 1727:issue:`19552` as part of the :pep:`453` implementation.) 1728 1729 1730wave 1731---- 1732 1733The :meth:`~wave.getparams` method now returns a namedtuple rather than a 1734plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.) 1735 1736:meth:`wave.open` now supports the context management protocol. (Contributed 1737by Claudiu Popa in :issue:`17616`.) 1738 1739:mod:`wave` can now :ref:`write output to unseekable files 1740<wave-write-objects>`. (Contributed by David Jones, Guilherme Polo, and Serhiy 1741Storchaka in :issue:`5202`.) 1742 1743The :meth:`~wave.Wave_write.writeframesraw` and 1744:meth:`~wave.Wave_write.writeframes` methods now accept any :term:`bytes-like 1745object`. (Contributed by Serhiy Storchaka in :issue:`8311`.) 1746 1747 1748weakref 1749------- 1750 1751New :class:`~weakref.WeakMethod` class simulates weak references to bound 1752methods. (Contributed by Antoine Pitrou in :issue:`14631`.) 1753 1754New :class:`~weakref.finalize` class makes it possible to register a callback 1755to be invoked when an object is garbage collected, without needing to 1756carefully manage the lifecycle of the weak reference itself. (Contributed by 1757Richard Oudkerk in :issue:`15528`.) 1758 1759The callback, if any, associated with a :class:`~weakref.ref` is now 1760exposed via the :attr:`~weakref.ref.__callback__` attribute. (Contributed 1761by Mark Dickinson in :issue:`17643`.) 1762 1763 1764xml.etree 1765--------- 1766 1767A new parser, :class:`~xml.etree.ElementTree.XMLPullParser`, allows a 1768non-blocking applications to parse XML documents. An example can be 1769seen at :ref:`elementtree-pull-parsing`. (Contributed by Antoine 1770Pitrou in :issue:`17741`.) 1771 1772The :mod:`xml.etree.ElementTree` :func:`~xml.etree.ElementTree.tostring` and 1773:func:`~xml.etree.ElementTree.tostringlist` functions, and the 1774:class:`~xml.etree.ElementTree.ElementTree` 1775:meth:`~xml.etree.ElementTree.ElementTree.write` method, now have a 1776*short_empty_elements* :ref:`keyword-only parameter <keyword-only_parameter>` 1777providing control over whether elements with no content are written in 1778abbreviated (``<tag />``) or expanded (``<tag></tag>``) form. (Contributed by 1779Ariel Poliak and Serhiy Storchaka in :issue:`14377`.) 1780 1781 1782zipfile 1783------- 1784 1785The :meth:`~zipfile.PyZipFile.writepy` method of the 1786:class:`~zipfile.PyZipFile` class has a new *filterfunc* option that can be 1787used to control which directories and files are added to the archive. For 1788example, this could be used to exclude test files from the archive. 1789(Contributed by Christian Tismer in :issue:`19274`.) 1790 1791The *allowZip64* parameter to :class:`~zipfile.ZipFile` and 1792:class:`~zipfile.PyZipfile` is now ``True`` by default. (Contributed by 1793William Mallard in :issue:`17201`.) 1794 1795 1796 1797CPython Implementation Changes 1798============================== 1799 1800 1801.. _whatsnew-pep-445: 1802 1803PEP 445: Customization of CPython Memory Allocators 1804--------------------------------------------------- 1805 1806:pep:`445` adds new C level interfaces to customize memory allocation in 1807the CPython interpreter. 1808 1809.. seealso:: 1810 1811 :pep:`445` -- Add new APIs to customize Python memory allocators 1812 PEP written and implemented by Victor Stinner. 1813 1814 1815.. _whatsnew-pep-442: 1816 1817PEP 442: Safe Object Finalization 1818--------------------------------- 1819 1820:pep:`442` removes the current limitations and quirks of object finalization 1821in CPython. With it, objects with :meth:`__del__` methods, as well as 1822generators with :keyword:`finally` clauses, can be finalized when they are 1823part of a reference cycle. 1824 1825As part of this change, module globals are no longer forcibly set to 1826:const:`None` during interpreter shutdown in most cases, instead relying 1827on the normal operation of the cyclic garbage collector. This avoids a 1828whole class of interpreter-shutdown-time errors, usually involving 1829``__del__`` methods, that have plagued Python since the cyclic GC 1830was first introduced. 1831 1832.. seealso:: 1833 1834 :pep:`442` -- Safe object finalization 1835 PEP written and implemented by Antoine Pitrou. 1836 1837 1838.. _whatsnew-pep-456: 1839 1840PEP 456: Secure and Interchangeable Hash Algorithm 1841-------------------------------------------------- 1842 1843:pep:`456` follows up on earlier security fix work done on Python's hash 1844algorithm to address certain DOS attacks to which public facing APIs backed by 1845dictionary lookups may be subject. (See :issue:`14621` for the start of the 1846current round of improvements.) The PEP unifies CPython's hash code to make it 1847easier for a packager to substitute a different hash algorithm, and switches 1848Python's default implementation to a SipHash implementation on platforms that 1849have a 64 bit data type. Any performance differences in comparison with the 1850older FNV algorithm are trivial. 1851 1852The PEP adds additional fields to the :attr:`sys.hash_info` struct sequence to 1853describe the hash algorithm in use by the currently executing binary. Otherwise, 1854the PEP does not alter any existing CPython APIs. 1855 1856 1857.. _whatsnew-pep-436: 1858 1859PEP 436: Argument Clinic 1860------------------------ 1861 1862"Argument Clinic" (:pep:`436`) is now part of the CPython build process 1863and can be used to simplify the process of defining and maintaining 1864accurate signatures for builtins and standard library extension modules 1865implemented in C. 1866 1867Some standard library extension modules have been converted to use Argument 1868Clinic in Python 3.4, and :mod:`pydoc` and :mod:`inspect` have been updated 1869accordingly. 1870 1871It is expected that signature metadata for programmatic introspection will 1872be added to additional callables implemented in C as part of Python 3.4 1873maintenance releases. 1874 1875.. note:: 1876 The Argument Clinic PEP is not fully up to date with the state of the 1877 implementation. This has been deemed acceptable by the release manager 1878 and core development team in this case, as Argument Clinic will not 1879 be made available as a public API for third party use in Python 3.4. 1880 1881.. seealso:: 1882 1883 :pep:`436` -- The Argument Clinic DSL 1884 PEP written and implemented by Larry Hastings. 1885 1886 1887Other Build and C API Changes 1888----------------------------- 1889 1890* The new :c:func:`PyType_GetSlot` function has been added to the stable ABI, 1891 allowing retrieval of function pointers from named type slots when using 1892 the limited API. (Contributed by Martin von Löwis in :issue:`17162`.) 1893 1894* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API 1895 allows applications embedding the CPython interpreter to reliably force 1896 a particular encoding and error handler for the standard streams. 1897 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`.) 1898 1899* Most Python C APIs that don't mutate string arguments are now correctly 1900 marked as accepting ``const char *`` rather than ``char *``. (Contributed 1901 by Serhiy Storchaka in :issue:`1772673`.) 1902 1903* A new shell version of ``python-config`` can be used even when a python 1904 interpreter is not available (for example, in cross compilation scenarios). 1905 1906* :c:func:`PyUnicode_FromFormat` now supports width and precision 1907 specifications for ``%s``, ``%A``, ``%U``, ``%V``, ``%S``, and ``%R``. 1908 (Contributed by Ysj Ray and Victor Stinner in :issue:`7330`.) 1909 1910* New function :c:func:`PyStructSequence_InitType2` supplements the 1911 existing :c:func:`PyStructSequence_InitType` function. The difference 1912 is that it returns ``0`` on success and ``-1`` on failure. 1913 1914* The CPython source can now be compiled using the address sanity checking 1915 features of recent versions of GCC and clang: the false alarms in the small 1916 object allocator have been silenced. (Contributed by Dhiru Kholia in 1917 :issue:`18596`.) 1918 1919* The Windows build now uses `Address Space Layout Randomization 1920 <https://en.wikipedia.org/wiki/Address_space_layout_randomization>`_ and `Data Execution Prevention 1921 <https://en.wikipedia.org/wiki/Data_Execution_Prevention>`_. (Contributed by 1922 Christian Heimes in :issue:`16632`.) 1923 1924* New function :c:func:`PyObject_LengthHint` is the C API equivalent 1925 of :func:`operator.length_hint`. (Contributed by Armin Ronacher in 1926 :issue:`16148`.) 1927 1928 1929.. _other-improvements-3.4: 1930 1931Other Improvements 1932------------------ 1933 1934.. _whatsnew-isolated-mode: 1935 1936* The :ref:`python <using-on-cmdline>` command has a new :ref:`option 1937 <using-on-misc-options>`, ``-I``, which causes it to run in "isolated mode", 1938 which means that :data:`sys.path` contains neither the script's directory nor 1939 the user's ``site-packages`` directory, and all :envvar:`PYTHON*` environment 1940 variables are ignored (it implies both ``-s`` and ``-E``). Other 1941 restrictions may also be applied in the future, with the goal being to 1942 isolate the execution of a script from the user's environment. This is 1943 appropriate, for example, when Python is used to run a system script. On 1944 most POSIX systems it can and should be used in the ``#!`` line of system 1945 scripts. (Contributed by Christian Heimes in :issue:`16499`.) 1946 1947* Tab-completion is now enabled by default in the interactive interpreter 1948 on systems that support :mod:`readline`. History is also enabled by default, 1949 and is written to (and read from) the file :file:`~/.python-history`. 1950 (Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.) 1951 1952* Invoking the Python interpreter with ``--version`` now outputs the version to 1953 standard output instead of standard error (:issue:`18338`). Similar changes 1954 were made to :mod:`argparse` (:issue:`18920`) and other modules that have 1955 script-like invocation capabilities (:issue:`18922`). 1956 1957* The CPython Windows installer now adds ``.py`` to the :envvar:`PATHEXT` 1958 variable when extensions are registered, allowing users to run a python 1959 script at the windows command prompt by just typing its name without the 1960 ``.py`` extension. (Contributed by Paul Moore in :issue:`18569`.) 1961 1962* A new ``make`` target `coverage-report 1963 <https://devguide.python.org/coverage/#measuring-coverage-of-c-code-with-gcov-and-lcov>`_ 1964 will build python, run the test suite, and generate an HTML coverage report 1965 for the C codebase using ``gcov`` and `lcov 1966 <http://ltp.sourceforge.net/coverage/lcov.php>`_. 1967 1968* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now 1969 also checks for memory allocation leaks, using 1970 :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in 1971 :issue:`13390`.) 1972 1973* ``python -m`` now works with namespace packages. 1974 1975* The :mod:`stat` module is now implemented in C, which means it gets the 1976 values for its constants from the C header files, instead of having the 1977 values hard-coded in the python module as was previously the case. 1978 1979* Loading multiple python modules from a single OS module (``.so``, ``.dll``) 1980 now works correctly (previously it silently returned the first python 1981 module in the file). (Contributed by Václav Šmilauer in :issue:`16421`.) 1982 1983* A new opcode, :opcode:`LOAD_CLASSDEREF`, has been added to fix a bug in the 1984 loading of free variables in class bodies that could be triggered by certain 1985 uses of :ref:`__prepare__ <prepare>`. (Contributed by Benjamin Peterson in 1986 :issue:`17853`.) 1987 1988* A number of MemoryError-related crashes were identified and fixed by Victor 1989 Stinner using his :pep:`445`-based ``pyfailmalloc`` tool (:issue:`18408`, 1990 :issue:`18520`). 1991 1992* The ``pyvenv`` command now accepts a ``--copies`` option 1993 to use copies rather than symlinks even on systems where symlinks are the 1994 default. (Contributed by Vinay Sajip in :issue:`18807`.) 1995 1996* The ``pyvenv`` command also accepts a ``--without-pip`` 1997 option to suppress the otherwise-automatic bootstrapping of pip into 1998 the virtual environment. (Contributed by Nick Coghlan in :issue:`19552` 1999 as part of the :pep:`453` implementation.) 2000 2001* The encoding name is now optional in the value set for the 2002 :envvar:`PYTHONIOENCODING` environment variable. This makes it possible to 2003 set just the error handler, without changing the default encoding. 2004 (Contributed by Serhiy Storchaka in :issue:`18818`.) 2005 2006* The :mod:`bz2`, :mod:`lzma`, and :mod:`gzip` module ``open`` functions now 2007 support ``x`` (exclusive creation) mode. (Contributed by Tim Heaney and 2008 Vajrasky Kok in :issue:`19201`, :issue:`19222`, and :issue:`19223`.) 2009 2010 2011Significant Optimizations 2012------------------------- 2013 2014* The UTF-32 decoder is now 3x to 4x faster. (Contributed by Serhiy Storchaka 2015 in :issue:`14625`.) 2016 2017* The cost of hash collisions for sets is now reduced. Each hash table 2018 probe now checks a series of consecutive, adjacent key/hash pairs before 2019 continuing to make random probes through the hash table. This exploits 2020 cache locality to make collision resolution less expensive. 2021 The collision resolution scheme can be described as a hybrid of linear 2022 probing and open addressing. The number of additional linear probes 2023 defaults to nine. This can be changed at compile-time by defining 2024 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off 2025 linear probing entirely. (Contributed by Raymond Hettinger in 2026 :issue:`18771`.) 2027 2028* The interpreter starts about 30% faster. A couple of measures lead to the 2029 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`, 2030 :mod:`collections` and :mod:`locale` modules and their dependencies are no 2031 longer imported by default. The marshal module has been improved to load 2032 compiled Python code faster. (Contributed by Antoine Pitrou, Christian 2033 Heimes and Victor Stinner in :issue:`19219`, :issue:`19218`, :issue:`19209`, 2034 :issue:`19205` and :issue:`9548`.) 2035 2036* :class:`bz2.BZ2File` is now as fast or faster than the Python2 version for 2037 most cases. :class:`lzma.LZMAFile` has also been optimized. (Contributed by 2038 Serhiy Storchaka and Nadeem Vawda in :issue:`16034`.) 2039 2040* :func:`random.getrandbits` is 20%-40% faster for small integers (the most 2041 common use case). (Contributed by Serhiy Storchaka in :issue:`16674`.) 2042 2043* By taking advantage of the new storage format for strings, pickling of 2044 strings is now significantly faster. (Contributed by Victor Stinner and 2045 Antoine Pitrou in :issue:`15596`.) 2046 2047* A performance issue in :meth:`io.FileIO.readall` has been solved. This 2048 particularly affects Windows, and significantly speeds up the case of piping 2049 significant amounts of data through :mod:`subprocess`. (Contributed 2050 by Richard Oudkerk in :issue:`15758`.) 2051 2052* :func:`html.escape` is now 10x faster. (Contributed by Matt Bryant in 2053 :issue:`18020`.) 2054 2055* On Windows, the native ``VirtualAlloc`` is now used instead of the CRT 2056 ``malloc`` in ``obmalloc``. Artificial benchmarks show about a 3% memory 2057 savings. 2058 2059* :func:`os.urandom` now uses a lazily-opened persistent file descriptor 2060 so as to avoid using many file descriptors when run in parallel from 2061 multiple threads. (Contributed by Antoine Pitrou in :issue:`18756`.) 2062 2063 2064.. _deprecated-3.4: 2065 2066Deprecated 2067========== 2068 2069This section covers various APIs and other features that have been deprecated 2070in Python 3.4, and will be removed in Python 3.5 or later. In most (but not 2071all) cases, using the deprecated APIs will produce a :exc:`DeprecationWarning` 2072when the interpreter is run with deprecation warnings enabled (for example, by 2073using ``-Wd``). 2074 2075 2076Deprecations in the Python API 2077------------------------------ 2078 2079* As mentioned in :ref:`whatsnew-pep-451`, a number of :mod:`importlib` 2080 methods and functions are deprecated: :meth:`importlib.find_loader` is 2081 replaced by :func:`importlib.util.find_spec`; 2082 :meth:`importlib.machinery.PathFinder.find_module` is replaced by 2083 :meth:`importlib.machinery.PathFinder.find_spec`; 2084 :meth:`importlib.abc.MetaPathFinder.find_module` is replaced by 2085 :meth:`importlib.abc.MetaPathFinder.find_spec`; 2086 :meth:`importlib.abc.PathEntryFinder.find_loader` and 2087 :meth:`~importlib.abc.PathEntryFinder.find_module` are replaced by 2088 :meth:`importlib.abc.PathEntryFinder.find_spec`; all of the ``xxxLoader`` ABC 2089 ``load_module`` methods (:meth:`importlib.abc.Loader.load_module`, 2090 :meth:`importlib.abc.InspectLoader.load_module`, 2091 :meth:`importlib.abc.FileLoader.load_module`, 2092 :meth:`importlib.abc.SourceLoader.load_module`) should no longer be 2093 implemented, instead loaders should implement an 2094 ``exec_module`` method 2095 (:meth:`importlib.abc.Loader.exec_module`, 2096 :meth:`importlib.abc.InspectLoader.exec_module` 2097 :meth:`importlib.abc.SourceLoader.exec_module`) and let the import system 2098 take care of the rest; and 2099 :meth:`importlib.abc.Loader.module_repr`, 2100 :meth:`importlib.util.module_for_loader`, :meth:`importlib.util.set_loader`, 2101 and :meth:`importlib.util.set_package` are no longer needed because their 2102 functions are now handled automatically by the import system. 2103 2104* The :mod:`imp` module is pending deprecation. To keep compatibility with 2105 Python 2/3 code bases, the module's removal is currently not scheduled. 2106 2107* The :mod:`formatter` module is pending deprecation and is slated for removal 2108 in Python 3.6. 2109 2110* ``MD5`` as the default *digestmod* for the :func:`hmac.new` function is 2111 deprecated. Python 3.6 will require an explicit digest name or constructor as 2112 *digestmod* argument. 2113 2114* The internal ``Netrc`` class in the :mod:`ftplib` module has been documented 2115 as deprecated in its docstring for quite some time. It now emits a 2116 :exc:`DeprecationWarning` and will be removed completely in Python 3.5. 2117 2118* The undocumented *endtime* argument to :meth:`subprocess.Popen.wait` should 2119 not have been exposed and is hopefully not in use; it is deprecated and 2120 will mostly likely be removed in Python 3.5. 2121 2122* The *strict* argument of :class:`~html.parser.HTMLParser` is deprecated. 2123 2124* The :mod:`plistlib` :func:`~plistlib.readPlist`, 2125 :func:`~plistlib.writePlist`, :func:`~plistlib.readPlistFromBytes`, and 2126 :func:`~plistlib.writePlistToBytes` functions are deprecated in favor of the 2127 corresponding new functions :func:`~plistlib.load`, :func:`~plistlib.dump`, 2128 :func:`~plistlib.loads`, and :func:`~plistlib.dumps`. :func:`~plistlib.Data` 2129 is deprecated in favor of just using the :class:`bytes` constructor. 2130 2131* The :mod:`sysconfig` key ``SO`` is deprecated, it has been replaced by 2132 ``EXT_SUFFIX``. 2133 2134* The ``U`` mode accepted by various ``open`` functions is deprecated. 2135 In Python3 it does not do anything useful, and should be replaced by 2136 appropriate uses of :class:`io.TextIOWrapper` (if needed) and its *newline* 2137 argument. 2138 2139* The *parser* argument of :func:`xml.etree.ElementTree.iterparse` has 2140 been deprecated, as has the *html* argument of 2141 :func:`~xml.etree.ElementTree.XMLParser`. To prepare for the removal of the 2142 latter, all arguments to ``XMLParser`` should be passed by keyword. 2143 2144 2145Deprecated Features 2146------------------- 2147 2148* Running :ref:`idle` with the ``-n`` flag (no subprocess) is deprecated. 2149 However, the feature will not be removed until :issue:`18823` is resolved. 2150 2151* The site module adding a "site-python" directory to sys.path, if it 2152 exists, is deprecated (:issue:`19375`). 2153 2154 2155 2156Removed 2157======= 2158 2159 2160Operating Systems No Longer Supported 2161------------------------------------- 2162 2163Support for the following operating systems has been removed from the source 2164and build tools: 2165 2166* OS/2 (:issue:`16135`). 2167* Windows 2000 (changeset e52df05b496a). 2168* Windows systems where ``COMSPEC`` points to ``command.com`` (:issue:`14470`). 2169* VMS (:issue:`16136`). 2170 2171 2172API and Feature Removals 2173------------------------ 2174 2175The following obsolete and previously deprecated APIs and features have been 2176removed: 2177 2178* The unmaintained ``Misc/TextMate`` and ``Misc/vim`` directories have been 2179 removed (see the `devguide <https://devguide.python.org>`_ 2180 for suggestions on what to use instead). 2181 2182* The ``SO`` makefile macro is removed (it was replaced by the 2183 ``SHLIB_SUFFIX`` and ``EXT_SUFFIX`` macros) (:issue:`16754`). 2184 2185* The ``PyThreadState.tick_counter`` field has been removed; its value has 2186 been meaningless since Python 3.2, when the "new GIL" was introduced 2187 (:issue:`19199`). 2188 2189* ``PyLoader`` and ``PyPycLoader`` have been removed from :mod:`importlib`. 2190 (Contributed by Taras Lyapun in :issue:`15641`.) 2191 2192* The *strict* argument to :class:`~http.client.HTTPConnection` and 2193 :class:`~http.client.HTTPSConnection` has been removed. HTTP 0.9-style 2194 "Simple Responses" are no longer supported. 2195 2196* The deprecated :mod:`urllib.request.Request` getter and setter methods 2197 ``add_data``, ``has_data``, ``get_data``, ``get_type``, ``get_host``, 2198 ``get_selector``, ``set_proxy``, ``get_origin_req_host``, and 2199 ``is_unverifiable`` have been removed (use direct attribute access instead). 2200 2201* Support for loading the deprecated ``TYPE_INT64`` has been removed from 2202 :mod:`marshal`. (Contributed by Dan Riti in :issue:`15480`.) 2203 2204* :class:`inspect.Signature`: positional-only parameters are now required 2205 to have a valid name. 2206 2207* :meth:`object.__format__` no longer accepts non-empty format strings, it now 2208 raises a :exc:`TypeError` instead. Using a non-empty string has been 2209 deprecated since Python 3.2. This change has been made to prevent a 2210 situation where previously working (but incorrect) code would start failing 2211 if an object gained a __format__ method, which means that your code may now 2212 raise a :exc:`TypeError` if you are using an ``'s'`` format code with objects 2213 that do not have a __format__ method that handles it. See :issue:`7994` for 2214 background. 2215 2216* :meth:`difflib.SequenceMatcher.isbjunk` and 2217 :meth:`difflib.SequenceMatcher.isbpopular` were deprecated in 3.2, and have 2218 now been removed: use ``x in sm.bjunk`` and 2219 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object 2220 (:issue:`13248`). 2221 2222 2223Code Cleanups 2224------------- 2225 2226* The unused and undocumented internal ``Scanner`` class has been removed from 2227 the :mod:`pydoc` module. 2228 2229* The private and effectively unused ``_gestalt`` module has been removed, 2230 along with the private :mod:`platform` functions ``_mac_ver_lookup``, 2231 ``_mac_ver_gstalt``, and ``_bcd2str``, which would only have ever been called 2232 on badly broken OSX systems (see :issue:`18393`). 2233 2234* The hardcoded copies of certain :mod:`stat` constants that were included in 2235 the :mod:`tarfile` module namespace have been removed. 2236 2237 2238 2239Porting to Python 3.4 2240===================== 2241 2242This section lists previously described changes and other bugfixes 2243that may require changes to your code. 2244 2245 2246Changes in 'python' Command Behavior 2247------------------------------------ 2248 2249* In a posix shell, setting the :envvar:`PATH` environment variable to 2250 an empty value is equivalent to not setting it at all. However, setting 2251 :envvar:`PYTHONPATH` to an empty value was *not* equivalent to not setting it 2252 at all: setting :envvar:`PYTHONPATH` to an empty value was equivalent to 2253 setting it to ``.``, which leads to confusion when reasoning by analogy to 2254 how :envvar:`PATH` works. The behavior now conforms to the posix convention 2255 for :envvar:`PATH`. 2256 2257* The [X refs, Y blocks] output of a debug (``--with-pydebug``) build of the 2258 CPython interpreter is now off by default. It can be re-enabled using the 2259 ``-X showrefcount`` option. (Contributed by Ezio Melotti in :issue:`17323`.) 2260 2261* The python command and most stdlib scripts (as well as :mod:`argparse`) now 2262 output ``--version`` information to ``stdout`` instead of ``stderr`` (for 2263 issue list see :ref:`other-improvements-3.4` above). 2264 2265 2266Changes in the Python API 2267------------------------- 2268 2269* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate 2270 exception or return a default value instead of raising 2271 :exc:`NotImplementedError` blindly. This will only affect code calling 2272 :func:`super` and falling through all the way to the ABCs. For compatibility, 2273 catch both :exc:`NotImplementedError` or the appropriate exception as needed. 2274 2275* The module type now initializes the :attr:`__package__` and :attr:`__loader__` 2276 attributes to ``None`` by default. To determine if these attributes were set 2277 in a backwards-compatible fashion, use e.g. 2278 ``getattr(module, '__loader__', None) is not None``. (:issue:`17115`.) 2279 2280* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and 2281 ``__package__`` unconditionally to properly support reloading. If this is not 2282 desired then you will need to set these attributes manually. You can use 2283 :func:`importlib.util.module_to_load` for module management. 2284 2285* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``, 2286 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading. 2287 Note that this restores a pre-3.3 behavior in that it means a module is 2288 re-found when re-loaded (:issue:`19413`). 2289 2290* Frozen packages no longer set ``__path__`` to a list containing the package 2291 name, they now set it to an empty list. The previous behavior could cause 2292 the import system to do the wrong thing on submodule imports if there was 2293 also a directory with the same name as the frozen package. The correct way 2294 to determine if a module is a package or not is to use ``hasattr(module, 2295 '__path__')`` (:issue:`18065`). 2296 2297* Frozen modules no longer define a ``__file__`` attribute. It's semantically 2298 incorrect for frozen modules to set the attribute as they are not loaded from 2299 any explicit location. If you must know that a module comes from frozen code 2300 then you can see if the module's ``__spec__.location`` is set to ``'frozen'``, 2301 check if the loader is a subclass of 2302 :class:`importlib.machinery.FrozenImporter`, 2303 or if Python 2 compatibility is necessary you can use :func:`imp.is_frozen`. 2304 2305* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path 2306 it would write to is a symlink or a non-regular file. This is to act as a 2307 warning that import will overwrite those files with a regular file regardless 2308 of what type of file path they were originally. 2309 2310* :meth:`importlib.abc.SourceLoader.get_source` no longer raises 2311 :exc:`ImportError` when the source code being loaded triggers a 2312 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is 2313 meant to be raised only when source code cannot be found but it should, it was 2314 felt to be over-reaching/overloading of that meaning when the source code is 2315 found but improperly structured. If you were catching ImportError before and 2316 wish to continue to ignore syntax or decoding issues, catch all three 2317 exceptions now. 2318 2319* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly 2320 set the ``__wrapped__`` attribute to the function being wrapped, even if 2321 that function also had its ``__wrapped__`` attribute set. This means 2322 ``__wrapped__`` attributes now correctly link a stack of decorated 2323 functions rather than every ``__wrapped__`` attribute in the chain 2324 referring to the innermost function. Introspection libraries that 2325 assumed the previous behaviour was intentional can use 2326 :func:`inspect.unwrap` to access the first function in the chain that has 2327 no ``__wrapped__`` attribute. 2328 2329* :func:`inspect.getfullargspec` has been reimplemented on top of 2330 :func:`inspect.signature` and hence handles a much wider variety of callable 2331 objects than it did in the past. It is expected that additional builtin and 2332 extension module callables will gain signature metadata over the course of 2333 the Python 3.4 series. Code that assumes that 2334 :func:`inspect.getfullargspec` will fail on non-Python callables may need 2335 to be adjusted accordingly. 2336 2337* :class:`importlib.machinery.PathFinder` now passes on the current working 2338 directory to objects in :data:`sys.path_hooks` for the empty string. This 2339 results in :data:`sys.path_importer_cache` never containing ``''``, thus 2340 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path` 2341 will not find all keys. A module's ``__file__`` when imported in the current 2342 working directory will also now have an absolute path, including when using 2343 ``-m`` with the interpreter (except for ``__main__.__file__`` when a script 2344 has been executed directly using a relative path) (Contributed by Brett 2345 Cannon in :issue:`18416`). is specified on the command-line) 2346 (:issue:`18416`). 2347 2348* The removal of the *strict* argument to :class:`~http.client.HTTPConnection` 2349 and :class:`~http.client.HTTPSConnection` changes the meaning of the 2350 remaining arguments if you are specifying them positionally rather than by 2351 keyword. If you've been paying attention to deprecation warnings your code 2352 should already be specifying any additional arguments via keywords. 2353 2354* Strings between ``from __future__ import ...`` statements now *always* raise 2355 a :exc:`SyntaxError`. Previously if there was no leading docstring, an 2356 interstitial string would sometimes be ignored. This brings CPython into 2357 compliance with the language spec; Jython and PyPy already were. 2358 (:issue:`17434`). 2359 2360* :meth:`ssl.SSLSocket.getpeercert` and :meth:`ssl.SSLSocket.do_handshake` 2361 now raise an :exc:`OSError` with ``ENOTCONN`` when the ``SSLSocket`` is not 2362 connected, instead of the previous behavior of raising an 2363 :exc:`AttributeError`. In addition, :meth:`~ssl.SSLSocket.getpeercert` 2364 will raise a :exc:`ValueError` if the handshake has not yet been done. 2365 2366* :func:`base64.b32decode` now raises a :exc:`binascii.Error` when the 2367 input string contains non-b32-alphabet characters, instead of a 2368 :exc:`TypeError`. This particular :exc:`TypeError` was missed when the other 2369 :exc:`TypeError`\ s were converted. (Contributed by Serhiy Storchaka in 2370 :issue:`18011`.) Note: this change was also inadvertently applied in Python 2371 3.3.3. 2372 2373* The :attr:`~cgi.FieldStorage.file` attribute is now automatically closed when 2374 the creating :class:`cgi.FieldStorage` instance is garbage collected. If you 2375 were pulling the file object out separately from the :class:`cgi.FieldStorage` 2376 instance and not keeping the instance alive, then you should either store the 2377 entire :class:`cgi.FieldStorage` instance or read the contents of the file 2378 before the :class:`cgi.FieldStorage` instance is garbage collected. 2379 2380* Calling ``read`` or ``write`` on a closed SSL socket now raises an 2381 informative :exc:`ValueError` rather than the previous more mysterious 2382 :exc:`AttributeError` (:issue:`9177`). 2383 2384* :meth:`slice.indices` no longer produces an :exc:`OverflowError` for huge 2385 values. As a consequence of this fix, :meth:`slice.indices` now raises a 2386 :exc:`ValueError` if given a negative length; previously it returned nonsense 2387 values (:issue:`14794`). 2388 2389* The :class:`complex` constructor, unlike the :mod:`cmath` functions, was 2390 incorrectly accepting :class:`float` values if an object's ``__complex__`` 2391 special method returned one. This now raises a :exc:`TypeError`. 2392 (:issue:`16290`.) 2393 2394* The :class:`int` constructor in 3.2 and 3.3 erroneously accepts :class:`float` 2395 values for the *base* parameter. It is unlikely anyone was doing this, but 2396 if so, it will now raise a :exc:`TypeError` (:issue:`16772`). 2397 2398* Defaults for keyword-only arguments are now evaluated *after* defaults for 2399 regular keyword arguments, instead of before. Hopefully no one wrote any 2400 code that depends on the previous buggy behavior (:issue:`16967`). 2401 2402* Stale thread states are now cleared after :func:`~os.fork`. This may cause 2403 some system resources to be released that previously were incorrectly kept 2404 perpetually alive (for example, database connections kept in thread-local 2405 storage). (:issue:`17094`.) 2406 2407* Parameter names in ``__annotations__`` dicts are now mangled properly, 2408 similarly to ``__kwdefaults__``. (Contributed by Yury Selivanov in 2409 :issue:`20625`.) 2410 2411* :attr:`hashlib.hash.name` now always returns the identifier in lower case. 2412 Previously some builtin hashes had uppercase names, but now that it is a 2413 formal public interface the naming has been made consistent (:issue:`18532`). 2414 2415* Because :mod:`unittest.TestSuite` now drops references to tests after they 2416 are run, test harnesses that re-use a :class:`~unittest.TestSuite` to re-run 2417 a set of tests may fail. Test suites should not be re-used in this fashion 2418 since it means state is retained between test runs, breaking the test 2419 isolation that :mod:`unittest` is designed to provide. However, if the lack 2420 of isolation is considered acceptable, the old behavior can be restored by 2421 creating a :mod:`~unittest.TestSuite` subclass that defines a 2422 ``_removeTestAtIndex`` method that does nothing (see 2423 :meth:`.TestSuite.__iter__`) (:issue:`11798`). 2424 2425* :mod:`unittest` now uses :mod:`argparse` for command line parsing. There are 2426 certain invalid command forms that used to work that are no longer allowed; 2427 in theory this should not cause backward compatibility issues since the 2428 disallowed command forms didn't make any sense and are unlikely to be in use. 2429 2430* The :func:`re.split`, :func:`re.findall`, and :func:`re.sub` functions, and 2431 the :meth:`~re.match.group` and :meth:`~re.match.groups` methods of 2432 ``match`` objects now always return a *bytes* object when the string 2433 to be matched is a :term:`bytes-like object`. Previously the return type 2434 matched the input type, so if your code was depending on the return value 2435 being, say, a ``bytearray``, you will need to change your code. 2436 2437* :mod:`audioop` functions now raise an error immediately if passed string 2438 input, instead of failing randomly later on (:issue:`16685`). 2439 2440* The new *convert_charrefs* argument to :class:`~html.parser.HTMLParser` 2441 currently defaults to ``False`` for backward compatibility, but will 2442 eventually be changed to default to ``True``. It is recommended that you add 2443 this keyword, with the appropriate value, to any 2444 :class:`~html.parser.HTMLParser` calls in your code (:issue:`13633`). 2445 2446* Since the *digestmod* argument to the :func:`hmac.new` function will in the 2447 future have no default, all calls to :func:`hmac.new` should be changed to 2448 explicitly specify a *digestmod* (:issue:`17276`). 2449 2450* Calling :func:`sysconfig.get_config_var` with the ``SO`` key, or looking 2451 ``SO`` up in the results of a call to :func:`sysconfig.get_config_vars` 2452 is deprecated. This key should be replaced by ``EXT_SUFFIX`` or 2453 ``SHLIB_SUFFIX``, depending on the context (:issue:`19555`). 2454 2455* Any calls to ``open`` functions that specify ``U`` should be modified. 2456 ``U`` is ineffective in Python3 and will eventually raise an error if used. 2457 Depending on the function, the equivalent of its old Python2 behavior can be 2458 achieved using either a *newline* argument, or if necessary by wrapping the 2459 stream in :mod:`~io.TextIOWrapper` to use its *newline* argument 2460 (:issue:`15204`). 2461 2462* If you use ``pyvenv`` in a script and desire that pip 2463 *not* be installed, you must add ``--without-pip`` to your command 2464 invocation. 2465 2466* The default behavior of :func:`json.dump` and :func:`json.dumps` when 2467 an indent is specified has changed: it no longer produces trailing 2468 spaces after the item separating commas at the ends of lines. This 2469 will matter only if you have tests that are doing white-space-sensitive 2470 comparisons of such output (:issue:`16333`). 2471 2472* :mod:`doctest` now looks for doctests in extension module ``__doc__`` 2473 strings, so if your doctest test discovery includes extension modules that 2474 have things that look like doctests in them you may see test failures you've 2475 never seen before when running your tests (:issue:`3158`). 2476 2477* The :mod:`collections.abc` module has been slightly refactored as 2478 part of the Python startup improvements. As a consequence of this, it is no 2479 longer the case that importing :mod:`collections` automatically imports 2480 :mod:`collections.abc`. If your program depended on the (undocumented) 2481 implicit import, you will need to add an explicit ``import collections.abc`` 2482 (:issue:`20784`). 2483 2484 2485Changes in the C API 2486-------------------- 2487 2488* :c:func:`PyEval_EvalFrameEx`, :c:func:`PyObject_Repr`, and 2489 :c:func:`PyObject_Str`, along with some other internal C APIs, now include 2490 a debugging assertion that ensures they are not used in situations where 2491 they may silently discard a currently active exception. In cases where 2492 discarding the active exception is expected and desired (for example, 2493 because it has already been saved locally with :c:func:`PyErr_Fetch` or 2494 is being deliberately replaced with a different exception), an explicit 2495 :c:func:`PyErr_Clear` call will be needed to avoid triggering the 2496 assertion when invoking these operations (directly or indirectly) and 2497 running against a version of Python that is compiled with assertions 2498 enabled. 2499 2500* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg** 2501 argument is not set. Previously only ``NULL`` was returned with no exception 2502 set. 2503 2504* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must 2505 now be a string allocated by :c:func:`PyMem_RawMalloc` or 2506 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a 2507 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc` 2508 (:issue:`16742`) 2509 2510* :c:func:`PyThread_set_key_value` now always set the value. In Python 2511 3.3, the function did nothing if the key already exists (if the current 2512 value is a non-NULL pointer). 2513 2514* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject` 2515 structure has been removed to fix a bug: see :issue:`14432` for the 2516 rationale. 2517 2518Changed in 3.4.3 2519================ 2520 2521.. _pep-476: 2522 2523PEP 476: Enabling certificate verification by default for stdlib http clients 2524----------------------------------------------------------------------------- 2525 2526:mod:`http.client` and modules which use it, such as :mod:`urllib.request` and 2527:mod:`xmlrpc.client`, will now verify that the server presents a certificate 2528which is signed by a CA in the platform trust store and whose hostname matches 2529the hostname being requested by default, significantly improving security for 2530many applications. 2531 2532For applications which require the old previous behavior, they can pass an 2533alternate context:: 2534 2535 import urllib.request 2536 import ssl 2537 2538 # This disables all verification 2539 context = ssl._create_unverified_context() 2540 2541 # This allows using a specific certificate for the host, which doesn't need 2542 # to be in the trust store 2543 context = ssl.create_default_context(cafile="/path/to/file.crt") 2544 2545 urllib.request.urlopen("https://invalid-cert", context=context) 2546