1**************************** 2 What's New In Python 3.3 3**************************** 4 5.. Rules for maintenance: 6 7 * Anyone can add text to this document. Do not spend very much time 8 on the wording of your changes, because your text will probably 9 get rewritten to some degree. 10 11 * The maintainer will go through Misc/NEWS periodically and add 12 changes; it's therefore more important to add your changes to 13 Misc/NEWS than to this file. 14 15 * This is not a complete list of every single change; completeness 16 is the purpose of Misc/NEWS. Some changes I consider too small 17 or esoteric to include. If such a change is added to the text, 18 I'll just remove it. (This is another reason you shouldn't spend 19 too much time on writing your addition.) 20 21 * If you want to draw your new text to the attention of the 22 maintainer, add 'XXX' to the beginning of the paragraph or 23 section. 24 25 * It's OK to just add a fragmentary note about a change. For 26 example: "XXX Describe the transmogrify() function added to the 27 socket module." The maintainer will research the change and 28 write the necessary text. 29 30 * You can comment out your additions if you like, but it's not 31 necessary (especially when a final release is some months away). 32 33 * Credit the author of a patch or bugfix. Just the name is 34 sufficient; the e-mail address isn't necessary. 35 36 * It's helpful to add the bug/patch number as a comment: 37 38 XXX Describe the transmogrify() function added to the socket 39 module. 40 (Contributed by P.Y. Developer in :issue:`12345`.) 41 42 This saves the maintainer the effort of going through the Mercurial log 43 when researching a change. 44 45This article explains the new features in Python 3.3, compared to 3.2. 46Python 3.3 was released on September 29, 2012. For full details, 47see the `changelog <https://docs.python.org/3.3/whatsnew/changelog.html>`_. 48 49.. seealso:: 50 51 :pep:`398` - Python 3.3 Release Schedule 52 53 54Summary -- Release highlights 55============================= 56 57.. This section singles out the most important changes in Python 3.3. 58 Brevity is key. 59 60New syntax features: 61 62* New ``yield from`` expression for :ref:`generator delegation <pep-380>`. 63* The ``u'unicode'`` syntax is accepted again for :class:`str` objects. 64 65New library modules: 66 67* :mod:`faulthandler` (helps debugging low-level crashes) 68* :mod:`ipaddress` (high-level objects representing IP addresses and masks) 69* :mod:`lzma` (compress data using the XZ / LZMA algorithm) 70* :mod:`unittest.mock` (replace parts of your system under test with mock objects) 71* :mod:`venv` (Python :ref:`virtual environments <pep-405>`, as in the 72 popular ``virtualenv`` package) 73 74New built-in features: 75 76* Reworked :ref:`I/O exception hierarchy <pep-3151>`. 77 78Implementation improvements: 79 80* Rewritten :ref:`import machinery <importlib>` based on :mod:`importlib`. 81* More compact :ref:`unicode strings <pep-393>`. 82* More compact :ref:`attribute dictionaries <pep-412>`. 83 84Significantly Improved Library Modules: 85 86* C Accelerator for the :ref:`decimal <new-decimal>` module. 87* Better unicode handling in the :ref:`email <new-email>` module 88 (:term:`provisional <provisional package>`). 89 90Security improvements: 91 92* Hash randomization is switched on by default. 93 94Please read on for a comprehensive list of user-facing changes. 95 96 97.. _pep-405: 98 99PEP 405: Virtual Environments 100============================= 101 102Virtual environments help create separate Python setups while sharing a 103system-wide base install, for ease of maintenance. Virtual environments 104have their own set of private site packages (i.e. locally-installed 105libraries), and are optionally segregated from the system-wide site 106packages. Their concept and implementation are inspired by the popular 107``virtualenv`` third-party package, but benefit from tighter integration 108with the interpreter core. 109 110This PEP adds the :mod:`venv` module for programmatic access, and the 111``pyvenv`` script for command-line access and 112administration. The Python interpreter checks for a ``pyvenv.cfg``, 113file whose existence signals the base of a virtual environment's directory 114tree. 115 116.. seealso:: 117 118 :pep:`405` - Python Virtual Environments 119 PEP written by Carl Meyer; implementation by Carl Meyer and Vinay Sajip 120 121 122PEP 420: Implicit Namespace Packages 123==================================== 124 125Native support for package directories that don't require ``__init__.py`` 126marker files and can automatically span multiple path segments (inspired by 127various third party approaches to namespace packages, as described in 128:pep:`420`) 129 130.. seealso:: 131 132 :pep:`420` - Implicit Namespace Packages 133 PEP written by Eric V. Smith; implementation by Eric V. Smith 134 and Barry Warsaw 135 136 137.. _pep-3118-update: 138 139PEP 3118: New memoryview implementation and buffer protocol documentation 140========================================================================= 141 142The implementation of :pep:`3118` has been significantly improved. 143 144The new memoryview implementation comprehensively fixes all ownership and 145lifetime issues of dynamically allocated fields in the Py_buffer struct 146that led to multiple crash reports. Additionally, several functions that 147crashed or returned incorrect results for non-contiguous or multi-dimensional 148input have been fixed. 149 150The memoryview object now has a PEP-3118 compliant getbufferproc() 151that checks the consumer's request type. Many new features have been 152added, most of them work in full generality for non-contiguous arrays 153and arrays with suboffsets. 154 155The documentation has been updated, clearly spelling out responsibilities 156for both exporters and consumers. Buffer request flags are grouped into 157basic and compound flags. The memory layout of non-contiguous and 158multi-dimensional NumPy-style arrays is explained. 159 160Features 161-------- 162 163* All native single character format specifiers in struct module syntax 164 (optionally prefixed with '@') are now supported. 165 166* With some restrictions, the cast() method allows changing of format and 167 shape of C-contiguous arrays. 168 169* Multi-dimensional list representations are supported for any array type. 170 171* Multi-dimensional comparisons are supported for any array type. 172 173* One-dimensional memoryviews of hashable (read-only) types with formats B, 174 b or c are now hashable. (Contributed by Antoine Pitrou in :issue:`13411`.) 175 176* Arbitrary slicing of any 1-D arrays type is supported. For example, it 177 is now possible to reverse a memoryview in O(1) by using a negative step. 178 179API changes 180----------- 181 182* The maximum number of dimensions is officially limited to 64. 183 184* The representation of empty shape, strides and suboffsets is now 185 an empty tuple instead of ``None``. 186 187* Accessing a memoryview element with format 'B' (unsigned bytes) 188 now returns an integer (in accordance with the struct module syntax). 189 For returning a bytes object the view must be cast to 'c' first. 190 191* memoryview comparisons now use the logical structure of the operands 192 and compare all array elements by value. All format strings in struct 193 module syntax are supported. Views with unrecognised format strings 194 are still permitted, but will always compare as unequal, regardless 195 of view contents. 196 197* For further changes see `Build and C API Changes`_ and `Porting C code`_. 198 199(Contributed by Stefan Krah in :issue:`10181`.) 200 201.. seealso:: 202 203 :pep:`3118` - Revising the Buffer Protocol 204 205 206.. _pep-393: 207 208PEP 393: Flexible String Representation 209======================================= 210 211The Unicode string type is changed to support multiple internal 212representations, depending on the character with the largest Unicode ordinal 213(1, 2, or 4 bytes) in the represented string. This allows a space-efficient 214representation in common cases, but gives access to full UCS-4 on all 215systems. For compatibility with existing APIs, several representations may 216exist in parallel; over time, this compatibility should be phased out. 217 218On the Python side, there should be no downside to this change. 219 220On the C API side, PEP 393 is fully backward compatible. The legacy API 221should remain available at least five years. Applications using the legacy 222API will not fully benefit of the memory reduction, or - worse - may use 223a bit more memory, because Python may have to maintain two versions of each 224string (in the legacy format and in the new efficient storage). 225 226Functionality 227------------- 228 229Changes introduced by :pep:`393` are the following: 230 231* Python now always supports the full range of Unicode code points, including 232 non-BMP ones (i.e. from ``U+0000`` to ``U+10FFFF``). The distinction between 233 narrow and wide builds no longer exists and Python now behaves like a wide 234 build, even under Windows. 235 236* With the death of narrow builds, the problems specific to narrow builds have 237 also been fixed, for example: 238 239 * :func:`len` now always returns 1 for non-BMP characters, 240 so ``len('\U0010FFFF') == 1``; 241 242 * surrogate pairs are not recombined in string literals, 243 so ``'\uDBFF\uDFFF' != '\U0010FFFF'``; 244 245 * indexing or slicing non-BMP characters returns the expected value, 246 so ``'\U0010FFFF'[0]`` now returns ``'\U0010FFFF'`` and not ``'\uDBFF'``; 247 248 * all other functions in the standard library now correctly handle 249 non-BMP code points. 250 251* The value of :data:`sys.maxunicode` is now always ``1114111`` (``0x10FFFF`` 252 in hexadecimal). The :c:func:`PyUnicode_GetMax` function still returns 253 either ``0xFFFF`` or ``0x10FFFF`` for backward compatibility, and it should 254 not be used with the new Unicode API (see :issue:`13054`). 255 256* The :file:`./configure` flag ``--with-wide-unicode`` has been removed. 257 258Performance and resource usage 259------------------------------ 260 261The storage of Unicode strings now depends on the highest code point in the string: 262 263* pure ASCII and Latin1 strings (``U+0000-U+00FF``) use 1 byte per code point; 264 265* BMP strings (``U+0000-U+FFFF``) use 2 bytes per code point; 266 267* non-BMP strings (``U+10000-U+10FFFF``) use 4 bytes per code point. 268 269The net effect is that for most applications, memory usage of string 270storage should decrease significantly - especially compared to former 271wide unicode builds - as, in many cases, strings will be pure ASCII 272even in international contexts (because many strings store non-human 273language data, such as XML fragments, HTTP headers, JSON-encoded data, 274etc.). We also hope that it will, for the same reasons, increase CPU 275cache efficiency on non-trivial applications. The memory usage of 276Python 3.3 is two to three times smaller than Python 3.2, and a little 277bit better than Python 2.7, on a Django benchmark (see the PEP for 278details). 279 280.. seealso:: 281 282 :pep:`393` - Flexible String Representation 283 PEP written by Martin von Löwis; implementation by Torsten Becker 284 and Martin von Löwis. 285 286 287.. _pep-397: 288 289PEP 397: Python Launcher for Windows 290==================================== 291 292The Python 3.3 Windows installer now includes a ``py`` launcher application 293that can be used to launch Python applications in a version independent 294fashion. 295 296This launcher is invoked implicitly when double-clicking ``*.py`` files. 297If only a single Python version is installed on the system, that version 298will be used to run the file. If multiple versions are installed, the most 299recent version is used by default, but this can be overridden by including 300a Unix-style "shebang line" in the Python script. 301 302The launcher can also be used explicitly from the command line as the ``py`` 303application. Running ``py`` follows the same version selection rules as 304implicitly launching scripts, but a more specific version can be selected 305by passing appropriate arguments (such as ``-3`` to request Python 3 when 306Python 2 is also installed, or ``-2.6`` to specifically request an earlier 307Python version when a more recent version is installed). 308 309In addition to the launcher, the Windows installer now includes an 310option to add the newly installed Python to the system PATH. (Contributed 311by Brian Curtin in :issue:`3561`.) 312 313.. seealso:: 314 315 :pep:`397` - Python Launcher for Windows 316 PEP written by Mark Hammond and Martin v. Löwis; implementation by 317 Vinay Sajip. 318 319 Launcher documentation: :ref:`launcher` 320 321 Installer PATH modification: :ref:`windows-path-mod` 322 323 324.. _pep-3151: 325 326PEP 3151: Reworking the OS and IO exception hierarchy 327===================================================== 328 329The hierarchy of exceptions raised by operating system errors is now both 330simplified and finer-grained. 331 332You don't have to worry anymore about choosing the appropriate exception 333type between :exc:`OSError`, :exc:`IOError`, :exc:`EnvironmentError`, 334:exc:`WindowsError`, :exc:`mmap.error`, :exc:`socket.error` or 335:exc:`select.error`. All these exception types are now only one: 336:exc:`OSError`. The other names are kept as aliases for compatibility 337reasons. 338 339Also, it is now easier to catch a specific error condition. Instead of 340inspecting the ``errno`` attribute (or ``args[0]``) for a particular 341constant from the :mod:`errno` module, you can catch the adequate 342:exc:`OSError` subclass. The available subclasses are the following: 343 344* :exc:`BlockingIOError` 345* :exc:`ChildProcessError` 346* :exc:`ConnectionError` 347* :exc:`FileExistsError` 348* :exc:`FileNotFoundError` 349* :exc:`InterruptedError` 350* :exc:`IsADirectoryError` 351* :exc:`NotADirectoryError` 352* :exc:`PermissionError` 353* :exc:`ProcessLookupError` 354* :exc:`TimeoutError` 355 356And the :exc:`ConnectionError` itself has finer-grained subclasses: 357 358* :exc:`BrokenPipeError` 359* :exc:`ConnectionAbortedError` 360* :exc:`ConnectionRefusedError` 361* :exc:`ConnectionResetError` 362 363Thanks to the new exceptions, common usages of the :mod:`errno` can now be 364avoided. For example, the following code written for Python 3.2:: 365 366 from errno import ENOENT, EACCES, EPERM 367 368 try: 369 with open("document.txt") as f: 370 content = f.read() 371 except IOError as err: 372 if err.errno == ENOENT: 373 print("document.txt file is missing") 374 elif err.errno in (EACCES, EPERM): 375 print("You are not allowed to read document.txt") 376 else: 377 raise 378 379can now be written without the :mod:`errno` import and without manual 380inspection of exception attributes:: 381 382 try: 383 with open("document.txt") as f: 384 content = f.read() 385 except FileNotFoundError: 386 print("document.txt file is missing") 387 except PermissionError: 388 print("You are not allowed to read document.txt") 389 390.. seealso:: 391 392 :pep:`3151` - Reworking the OS and IO Exception Hierarchy 393 PEP written and implemented by Antoine Pitrou 394 395 396.. index:: 397 single: yield; yield from (in What's New) 398 399.. _pep-380: 400 401PEP 380: Syntax for Delegating to a Subgenerator 402================================================ 403 404PEP 380 adds the ``yield from`` expression, allowing a :term:`generator` to 405delegate 406part of its operations to another generator. This allows a section of code 407containing :keyword:`yield` to be factored out and placed in another generator. 408Additionally, the subgenerator is allowed to return with a value, and the 409value is made available to the delegating generator. 410 411While designed primarily for use in delegating to a subgenerator, the ``yield 412from`` expression actually allows delegation to arbitrary subiterators. 413 414For simple iterators, ``yield from iterable`` is essentially just a shortened 415form of ``for item in iterable: yield item``:: 416 417 >>> def g(x): 418 ... yield from range(x, 0, -1) 419 ... yield from range(x) 420 ... 421 >>> list(g(5)) 422 [5, 4, 3, 2, 1, 0, 1, 2, 3, 4] 423 424However, unlike an ordinary loop, ``yield from`` allows subgenerators to 425receive sent and thrown values directly from the calling scope, and 426return a final value to the outer generator:: 427 428 >>> def accumulate(): 429 ... tally = 0 430 ... while 1: 431 ... next = yield 432 ... if next is None: 433 ... return tally 434 ... tally += next 435 ... 436 >>> def gather_tallies(tallies): 437 ... while 1: 438 ... tally = yield from accumulate() 439 ... tallies.append(tally) 440 ... 441 >>> tallies = [] 442 >>> acc = gather_tallies(tallies) 443 >>> next(acc) # Ensure the accumulator is ready to accept values 444 >>> for i in range(4): 445 ... acc.send(i) 446 ... 447 >>> acc.send(None) # Finish the first tally 448 >>> for i in range(5): 449 ... acc.send(i) 450 ... 451 >>> acc.send(None) # Finish the second tally 452 >>> tallies 453 [6, 10] 454 455The main principle driving this change is to allow even generators that are 456designed to be used with the ``send`` and ``throw`` methods to be split into 457multiple subgenerators as easily as a single large function can be split into 458multiple subfunctions. 459 460.. seealso:: 461 462 :pep:`380` - Syntax for Delegating to a Subgenerator 463 PEP written by Greg Ewing; implementation by Greg Ewing, integrated into 464 3.3 by Renaud Blanch, Ryan Kelly and Nick Coghlan; documentation by 465 Zbigniew Jędrzejewski-Szmek and Nick Coghlan 466 467 468PEP 409: Suppressing exception context 469====================================== 470 471PEP 409 introduces new syntax that allows the display of the chained 472exception context to be disabled. This allows cleaner error messages in 473applications that convert between exception types:: 474 475 >>> class D: 476 ... def __init__(self, extra): 477 ... self._extra_attributes = extra 478 ... def __getattr__(self, attr): 479 ... try: 480 ... return self._extra_attributes[attr] 481 ... except KeyError: 482 ... raise AttributeError(attr) from None 483 ... 484 >>> D({}).x 485 Traceback (most recent call last): 486 File "<stdin>", line 1, in <module> 487 File "<stdin>", line 8, in __getattr__ 488 AttributeError: x 489 490Without the ``from None`` suffix to suppress the cause, the original 491exception would be displayed by default:: 492 493 >>> class C: 494 ... def __init__(self, extra): 495 ... self._extra_attributes = extra 496 ... def __getattr__(self, attr): 497 ... try: 498 ... return self._extra_attributes[attr] 499 ... except KeyError: 500 ... raise AttributeError(attr) 501 ... 502 >>> C({}).x 503 Traceback (most recent call last): 504 File "<stdin>", line 6, in __getattr__ 505 KeyError: 'x' 506 507 During handling of the above exception, another exception occurred: 508 509 Traceback (most recent call last): 510 File "<stdin>", line 1, in <module> 511 File "<stdin>", line 8, in __getattr__ 512 AttributeError: x 513 514No debugging capability is lost, as the original exception context remains 515available if needed (for example, if an intervening library has incorrectly 516suppressed valuable underlying details):: 517 518 >>> try: 519 ... D({}).x 520 ... except AttributeError as exc: 521 ... print(repr(exc.__context__)) 522 ... 523 KeyError('x',) 524 525.. seealso:: 526 527 :pep:`409` - Suppressing exception context 528 PEP written by Ethan Furman; implemented by Ethan Furman and Nick 529 Coghlan. 530 531 532PEP 414: Explicit Unicode literals 533====================================== 534 535To ease the transition from Python 2 for Unicode aware Python applications 536that make heavy use of Unicode literals, Python 3.3 once again supports the 537"``u``" prefix for string literals. This prefix has no semantic significance 538in Python 3, it is provided solely to reduce the number of purely mechanical 539changes in migrating to Python 3, making it easier for developers to focus on 540the more significant semantic changes (such as the stricter default 541separation of binary and text data). 542 543.. seealso:: 544 545 :pep:`414` - Explicit Unicode literals 546 PEP written by Armin Ronacher. 547 548 549PEP 3155: Qualified name for classes and functions 550================================================== 551 552Functions and class objects have a new ``__qualname__`` attribute representing 553the "path" from the module top-level to their definition. For global functions 554and classes, this is the same as ``__name__``. For other functions and classes, 555it provides better information about where they were actually defined, and 556how they might be accessible from the global scope. 557 558Example with (non-bound) methods:: 559 560 >>> class C: 561 ... def meth(self): 562 ... pass 563 >>> C.meth.__name__ 564 'meth' 565 >>> C.meth.__qualname__ 566 'C.meth' 567 568Example with nested classes:: 569 570 >>> class C: 571 ... class D: 572 ... def meth(self): 573 ... pass 574 ... 575 >>> C.D.__name__ 576 'D' 577 >>> C.D.__qualname__ 578 'C.D' 579 >>> C.D.meth.__name__ 580 'meth' 581 >>> C.D.meth.__qualname__ 582 'C.D.meth' 583 584Example with nested functions:: 585 586 >>> def outer(): 587 ... def inner(): 588 ... pass 589 ... return inner 590 ... 591 >>> outer().__name__ 592 'inner' 593 >>> outer().__qualname__ 594 'outer.<locals>.inner' 595 596The string representation of those objects is also changed to include the 597new, more precise information:: 598 599 >>> str(C.D) 600 "<class '__main__.C.D'>" 601 >>> str(C.D.meth) 602 '<function C.D.meth at 0x7f46b9fe31e0>' 603 604.. seealso:: 605 606 :pep:`3155` - Qualified name for classes and functions 607 PEP written and implemented by Antoine Pitrou. 608 609 610.. _pep-412: 611 612PEP 412: Key-Sharing Dictionary 613=============================== 614 615Dictionaries used for the storage of objects' attributes are now able to 616share part of their internal storage between each other (namely, the part 617which stores the keys and their respective hashes). This reduces the memory 618consumption of programs creating many instances of non-builtin types. 619 620.. seealso:: 621 622 :pep:`412` - Key-Sharing Dictionary 623 PEP written and implemented by Mark Shannon. 624 625 626PEP 362: Function Signature Object 627================================== 628 629A new function :func:`inspect.signature` makes introspection of python 630callables easy and straightforward. A broad range of callables is supported: 631python functions, decorated or not, classes, and :func:`functools.partial` 632objects. New classes :class:`inspect.Signature`, :class:`inspect.Parameter` 633and :class:`inspect.BoundArguments` hold information about the call signatures, 634such as, annotations, default values, parameters kinds, and bound arguments, 635which considerably simplifies writing decorators and any code that validates 636or amends calling signatures or arguments. 637 638.. seealso:: 639 640 :pep:`362`: - Function Signature Object 641 PEP written by Brett Cannon, Yury Selivanov, Larry Hastings, Jiwon Seo; 642 implemented by Yury Selivanov. 643 644 645PEP 421: Adding sys.implementation 646================================== 647 648A new attribute on the :mod:`sys` module exposes details specific to the 649implementation of the currently running interpreter. The initial set of 650attributes on :attr:`sys.implementation` are ``name``, ``version``, 651``hexversion``, and ``cache_tag``. 652 653The intention of ``sys.implementation`` is to consolidate into one namespace 654the implementation-specific data used by the standard library. This allows 655different Python implementations to share a single standard library code base 656much more easily. In its initial state, ``sys.implementation`` holds only a 657small portion of the implementation-specific data. Over time that ratio will 658shift in order to make the standard library more portable. 659 660One example of improved standard library portability is ``cache_tag``. As of 661Python 3.3, ``sys.implementation.cache_tag`` is used by :mod:`importlib` to 662support :pep:`3147` compliance. Any Python implementation that uses 663``importlib`` for its built-in import system may use ``cache_tag`` to control 664the caching behavior for modules. 665 666SimpleNamespace 667--------------- 668 669The implementation of ``sys.implementation`` also introduces a new type to 670Python: :class:`types.SimpleNamespace`. In contrast to a mapping-based 671namespace, like :class:`dict`, ``SimpleNamespace`` is attribute-based, like 672:class:`object`. However, unlike ``object``, ``SimpleNamespace`` instances 673are writable. This means that you can add, remove, and modify the namespace 674through normal attribute access. 675 676.. seealso:: 677 678 :pep:`421` - Adding sys.implementation 679 PEP written and implemented by Eric Snow. 680 681 682.. _importlib: 683 684Using importlib as the Implementation of Import 685=============================================== 686:issue:`2377` - Replace __import__ w/ importlib.__import__ 687:issue:`13959` - Re-implement parts of :mod:`imp` in pure Python 688:issue:`14605` - Make import machinery explicit 689:issue:`14646` - Require loaders set __loader__ and __package__ 690 691The :func:`__import__` function is now powered by :func:`importlib.__import__`. 692This work leads to the completion of "phase 2" of :pep:`302`. There are 693multiple benefits to this change. First, it has allowed for more of the 694machinery powering import to be exposed instead of being implicit and hidden 695within the C code. It also provides a single implementation for all Python VMs 696supporting Python 3.3 to use, helping to end any VM-specific deviations in 697import semantics. And finally it eases the maintenance of import, allowing for 698future growth to occur. 699 700For the common user, there should be no visible change in semantics. For 701those whose code currently manipulates import or calls import 702programmatically, the code changes that might possibly be required are covered 703in the `Porting Python code`_ section of this document. 704 705New APIs 706-------- 707One of the large benefits of this work is the exposure of what goes into 708making the import statement work. That means the various importers that were 709once implicit are now fully exposed as part of the :mod:`importlib` package. 710 711The abstract base classes defined in :mod:`importlib.abc` have been expanded 712to properly delineate between :term:`meta path finders <meta path finder>` 713and :term:`path entry finders <path entry finder>` by introducing 714:class:`importlib.abc.MetaPathFinder` and 715:class:`importlib.abc.PathEntryFinder`, respectively. The old ABC of 716:class:`importlib.abc.Finder` is now only provided for backwards-compatibility 717and does not enforce any method requirements. 718 719In terms of finders, :class:`importlib.machinery.FileFinder` exposes the 720mechanism used to search for source and bytecode files of a module. Previously 721this class was an implicit member of :attr:`sys.path_hooks`. 722 723For loaders, the new abstract base class :class:`importlib.abc.FileLoader` helps 724write a loader that uses the file system as the storage mechanism for a module's 725code. The loader for source files 726(:class:`importlib.machinery.SourceFileLoader`), sourceless bytecode files 727(:class:`importlib.machinery.SourcelessFileLoader`), and extension modules 728(:class:`importlib.machinery.ExtensionFileLoader`) are now available for 729direct use. 730 731:exc:`ImportError` now has ``name`` and ``path`` attributes which are set when 732there is relevant data to provide. The message for failed imports will also 733provide the full name of the module now instead of just the tail end of the 734module's name. 735 736The :func:`importlib.invalidate_caches` function will now call the method with 737the same name on all finders cached in :attr:`sys.path_importer_cache` to help 738clean up any stored state as necessary. 739 740Visible Changes 741--------------- 742 743For potential required changes to code, see the `Porting Python code`_ 744section. 745 746Beyond the expanse of what :mod:`importlib` now exposes, there are other 747visible changes to import. The biggest is that :attr:`sys.meta_path` and 748:attr:`sys.path_hooks` now store all of the meta path finders and path entry 749hooks used by import. Previously the finders were implicit and hidden within 750the C code of import instead of being directly exposed. This means that one can 751now easily remove or change the order of the various finders to fit one's needs. 752 753Another change is that all modules have a ``__loader__`` attribute, storing the 754loader used to create the module. :pep:`302` has been updated to make this 755attribute mandatory for loaders to implement, so in the future once 3rd-party 756loaders have been updated people will be able to rely on the existence of the 757attribute. Until such time, though, import is setting the module post-load. 758 759Loaders are also now expected to set the ``__package__`` attribute from 760:pep:`366`. Once again, import itself is already setting this on all loaders 761from :mod:`importlib` and import itself is setting the attribute post-load. 762 763``None`` is now inserted into :attr:`sys.path_importer_cache` when no finder 764can be found on :attr:`sys.path_hooks`. Since :class:`imp.NullImporter` is not 765directly exposed on :attr:`sys.path_hooks` it could no longer be relied upon to 766always be available to use as a value representing no finder found. 767 768All other changes relate to semantic changes which should be taken into 769consideration when updating code for Python 3.3, and thus should be read about 770in the `Porting Python code`_ section of this document. 771 772(Implementation by Brett Cannon) 773 774 775Other Language Changes 776====================== 777 778Some smaller changes made to the core Python language are: 779 780* Added support for Unicode name aliases and named sequences. 781 Both :func:`unicodedata.lookup()` and ``'\N{...}'`` now resolve name aliases, 782 and :func:`unicodedata.lookup()` resolves named sequences too. 783 784 (Contributed by Ezio Melotti in :issue:`12753`.) 785 786* Unicode database updated to UCD version 6.1.0 787 788* Equality comparisons on :func:`range` objects now return a result reflecting 789 the equality of the underlying sequences generated by those range objects. 790 (:issue:`13201`) 791 792* The ``count()``, ``find()``, ``rfind()``, ``index()`` and ``rindex()`` 793 methods of :class:`bytes` and :class:`bytearray` objects now accept an 794 integer between 0 and 255 as their first argument. 795 796 (Contributed by Petri Lehtinen in :issue:`12170`.) 797 798* The ``rjust()``, ``ljust()``, and ``center()`` methods of :class:`bytes` 799 and :class:`bytearray` now accept a :class:`bytearray` for the ``fill`` 800 argument. (Contributed by Petri Lehtinen in :issue:`12380`.) 801 802* New methods have been added to :class:`list` and :class:`bytearray`: 803 ``copy()`` and ``clear()`` (:issue:`10516`). Consequently, 804 :class:`~collections.abc.MutableSequence` now also defines a 805 :meth:`~collections.abc.MutableSequence.clear` method (:issue:`11388`). 806 807* Raw bytes literals can now be written ``rb"..."`` as well as ``br"..."``. 808 809 (Contributed by Antoine Pitrou in :issue:`13748`.) 810 811* :meth:`dict.setdefault` now does only one lookup for the given key, making 812 it atomic when used with built-in types. 813 814 (Contributed by Filip Gruszczyński in :issue:`13521`.) 815 816* The error messages produced when a function call does not match the function 817 signature have been significantly improved. 818 819 (Contributed by Benjamin Peterson.) 820 821 822A Finer-Grained Import Lock 823=========================== 824 825Previous versions of CPython have always relied on a global import lock. 826This led to unexpected annoyances, such as deadlocks when importing a module 827would trigger code execution in a different thread as a side-effect. 828Clumsy workarounds were sometimes employed, such as the 829:c:func:`PyImport_ImportModuleNoBlock` C API function. 830 831In Python 3.3, importing a module takes a per-module lock. This correctly 832serializes importation of a given module from multiple threads (preventing 833the exposure of incompletely initialized modules), while eliminating the 834aforementioned annoyances. 835 836(Contributed by Antoine Pitrou in :issue:`9260`.) 837 838 839Builtin functions and types 840=========================== 841 842* :func:`open` gets a new *opener* parameter: the underlying file descriptor 843 for the file object is then obtained by calling *opener* with (*file*, 844 *flags*). It can be used to use custom flags like :data:`os.O_CLOEXEC` for 845 example. The ``'x'`` mode was added: open for exclusive creation, failing if 846 the file already exists. 847* :func:`print`: added the *flush* keyword argument. If the *flush* keyword 848 argument is true, the stream is forcibly flushed. 849* :func:`hash`: hash randomization is enabled by default, see 850 :meth:`object.__hash__` and :envvar:`PYTHONHASHSEED`. 851* The :class:`str` type gets a new :meth:`~str.casefold` method: return a 852 casefolded copy of the string, casefolded strings may be used for caseless 853 matching. For example, ``'ß'.casefold()`` returns ``'ss'``. 854* The sequence documentation has been substantially rewritten to better 855 explain the binary/text sequence distinction and to provide specific 856 documentation sections for the individual builtin sequence types 857 (:issue:`4966`). 858 859 860New Modules 861=========== 862 863faulthandler 864------------ 865 866This new debug module :mod:`faulthandler` contains functions to dump Python tracebacks explicitly, 867on a fault (a crash like a segmentation fault), after a timeout, or on a user 868signal. Call :func:`faulthandler.enable` to install fault handlers for the 869:const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`, :const:`SIGBUS`, and 870:const:`SIGILL` signals. You can also enable them at startup by setting the 871:envvar:`PYTHONFAULTHANDLER` environment variable or by using :option:`-X` 872``faulthandler`` command line option. 873 874Example of a segmentation fault on Linux: 875 876.. code-block:: shell-session 877 878 $ python -q -X faulthandler 879 >>> import ctypes 880 >>> ctypes.string_at(0) 881 Fatal Python error: Segmentation fault 882 883 Current thread 0x00007fb899f39700: 884 File "/home/python/cpython/Lib/ctypes/__init__.py", line 486 in string_at 885 File "<stdin>", line 1 in <module> 886 Segmentation fault 887 888 889ipaddress 890--------- 891 892The new :mod:`ipaddress` module provides tools for creating and manipulating 893objects representing IPv4 and IPv6 addresses, networks and interfaces (i.e. 894an IP address associated with a specific IP subnet). 895 896(Contributed by Google and Peter Moody in :pep:`3144`.) 897 898lzma 899---- 900 901The newly-added :mod:`lzma` module provides data compression and decompression 902using the LZMA algorithm, including support for the ``.xz`` and ``.lzma`` 903file formats. 904 905(Contributed by Nadeem Vawda and Per Øyvind Karlsen in :issue:`6715`.) 906 907 908Improved Modules 909================ 910 911abc 912--- 913 914Improved support for abstract base classes containing descriptors composed with 915abstract methods. The recommended approach to declaring abstract descriptors is 916now to provide :attr:`__isabstractmethod__` as a dynamically updated 917property. The built-in descriptors have been updated accordingly. 918 919 * :class:`abc.abstractproperty` has been deprecated, use :class:`property` 920 with :func:`abc.abstractmethod` instead. 921 * :class:`abc.abstractclassmethod` has been deprecated, use 922 :class:`classmethod` with :func:`abc.abstractmethod` instead. 923 * :class:`abc.abstractstaticmethod` has been deprecated, use 924 :class:`staticmethod` with :func:`abc.abstractmethod` instead. 925 926(Contributed by Darren Dale in :issue:`11610`.) 927 928:meth:`abc.ABCMeta.register` now returns the registered subclass, which means 929it can now be used as a class decorator (:issue:`10868`). 930 931 932array 933----- 934 935The :mod:`array` module supports the :c:type:`long long` type using ``q`` and 936``Q`` type codes. 937 938(Contributed by Oren Tirosh and Hirokazu Yamamoto in :issue:`1172711`.) 939 940 941base64 942------ 943 944ASCII-only Unicode strings are now accepted by the decoding functions of the 945:mod:`base64` modern interface. For example, ``base64.b64decode('YWJj')`` 946returns ``b'abc'``. (Contributed by Catalin Iacob in :issue:`13641`.) 947 948 949binascii 950-------- 951 952In addition to the binary objects they normally accept, the ``a2b_`` functions 953now all also accept ASCII-only strings as input. (Contributed by Antoine 954Pitrou in :issue:`13637`.) 955 956 957bz2 958--- 959 960The :mod:`bz2` module has been rewritten from scratch. In the process, several 961new features have been added: 962 963* New :func:`bz2.open` function: open a bzip2-compressed file in binary or 964 text mode. 965 966* :class:`bz2.BZ2File` can now read from and write to arbitrary file-like 967 objects, by means of its constructor's *fileobj* argument. 968 969 (Contributed by Nadeem Vawda in :issue:`5863`.) 970 971* :class:`bz2.BZ2File` and :func:`bz2.decompress` can now decompress 972 multi-stream inputs (such as those produced by the :program:`pbzip2` tool). 973 :class:`bz2.BZ2File` can now also be used to create this type of file, using 974 the ``'a'`` (append) mode. 975 976 (Contributed by Nir Aides in :issue:`1625`.) 977 978* :class:`bz2.BZ2File` now implements all of the :class:`io.BufferedIOBase` API, 979 except for the :meth:`detach` and :meth:`truncate` methods. 980 981 982codecs 983------ 984 985The :mod:`~encodings.mbcs` codec has been rewritten to handle correctly 986``replace`` and ``ignore`` error handlers on all Windows versions. The 987:mod:`~encodings.mbcs` codec now supports all error handlers, instead of only 988``replace`` to encode and ``ignore`` to decode. 989 990A new Windows-only codec has been added: ``cp65001`` (:issue:`13216`). It is the 991Windows code page 65001 (Windows UTF-8, ``CP_UTF8``). For example, it is used 992by ``sys.stdout`` if the console output code page is set to cp65001 (e.g., using 993``chcp 65001`` command). 994 995Multibyte CJK decoders now resynchronize faster. They only ignore the first 996byte of an invalid byte sequence. For example, ``b'\xff\n'.decode('gb2312', 997'replace')`` now returns a ``\n`` after the replacement character. 998 999(:issue:`12016`) 1000 1001Incremental CJK codec encoders are no longer reset at each call to their 1002encode() methods. For example:: 1003 1004 >>> import codecs 1005 >>> encoder = codecs.getincrementalencoder('hz')('strict') 1006 >>> b''.join(encoder.encode(x) for x in '\u52ff\u65bd\u65bc\u4eba\u3002 Bye.') 1007 b'~{NpJ)l6HK!#~} Bye.' 1008 1009This example gives ``b'~{Np~}~{J)~}~{l6~}~{HK~}~{!#~} Bye.'`` with older Python 1010versions. 1011 1012(:issue:`12100`) 1013 1014The ``unicode_internal`` codec has been deprecated. 1015 1016 1017collections 1018----------- 1019 1020Addition of a new :class:`~collections.ChainMap` class to allow treating a 1021number of mappings as a single unit. (Written by Raymond Hettinger for 1022:issue:`11089`, made public in :issue:`11297`.) 1023 1024The abstract base classes have been moved in a new :mod:`collections.abc` 1025module, to better differentiate between the abstract and the concrete 1026collections classes. Aliases for ABCs are still present in the 1027:mod:`collections` module to preserve existing imports. (:issue:`11085`) 1028 1029.. XXX addition of __slots__ to ABCs not recorded here: internal detail 1030 1031The :class:`~collections.Counter` class now supports the unary ``+`` and ``-`` 1032operators, as well as the in-place operators ``+=``, ``-=``, ``|=``, and 1033``&=``. (Contributed by Raymond Hettinger in :issue:`13121`.) 1034 1035 1036contextlib 1037---------- 1038 1039:class:`~contextlib.ExitStack` now provides a solid foundation for 1040programmatic manipulation of context managers and similar cleanup 1041functionality. Unlike the previous ``contextlib.nested`` API (which was 1042deprecated and removed), the new API is designed to work correctly 1043regardless of whether context managers acquire their resources in 1044their ``__init__`` method (for example, file objects) or in their 1045``__enter__`` method (for example, synchronisation objects from the 1046:mod:`threading` module). 1047 1048(:issue:`13585`) 1049 1050 1051crypt 1052----- 1053 1054Addition of salt and modular crypt format (hashing method) and the :func:`~crypt.mksalt` 1055function to the :mod:`crypt` module. 1056 1057(:issue:`10924`) 1058 1059curses 1060------ 1061 1062 * If the :mod:`curses` module is linked to the ncursesw library, use Unicode 1063 functions when Unicode strings or characters are passed (e.g. 1064 :c:func:`waddwstr`), and bytes functions otherwise (e.g. :c:func:`waddstr`). 1065 * Use the locale encoding instead of ``utf-8`` to encode Unicode strings. 1066 * :class:`curses.window` has a new :attr:`curses.window.encoding` attribute. 1067 * The :class:`curses.window` class has a new :meth:`~curses.window.get_wch` 1068 method to get a wide character 1069 * The :mod:`curses` module has a new :meth:`~curses.unget_wch` function to 1070 push a wide character so the next :meth:`~curses.window.get_wch` will return 1071 it 1072 1073(Contributed by Iñigo Serna in :issue:`6755`.) 1074 1075datetime 1076-------- 1077 1078 * Equality comparisons between naive and aware :class:`~datetime.datetime` 1079 instances now return :const:`False` instead of raising :exc:`TypeError` 1080 (:issue:`15006`). 1081 * New :meth:`datetime.datetime.timestamp` method: Return POSIX timestamp 1082 corresponding to the :class:`~datetime.datetime` instance. 1083 * The :meth:`datetime.datetime.strftime` method supports formatting years 1084 older than 1000. 1085 * The :meth:`datetime.datetime.astimezone` method can now be 1086 called without arguments to convert datetime instance to the system 1087 timezone. 1088 1089 1090.. _new-decimal: 1091 1092decimal 1093------- 1094 1095:issue:`7652` - integrate fast native decimal arithmetic. 1096 C-module and libmpdec written by Stefan Krah. 1097 1098The new C version of the decimal module integrates the high speed libmpdec 1099library for arbitrary precision correctly-rounded decimal floating point 1100arithmetic. libmpdec conforms to IBM's General Decimal Arithmetic Specification. 1101 1102Performance gains range from 10x for database applications to 100x for 1103numerically intensive applications. These numbers are expected gains 1104for standard precisions used in decimal floating point arithmetic. Since 1105the precision is user configurable, the exact figures may vary. For example, 1106in integer bignum arithmetic the differences can be significantly higher. 1107 1108The following table is meant as an illustration. Benchmarks are available 1109at http://www.bytereef.org/mpdecimal/quickstart.html. 1110 1111 +---------+-------------+--------------+-------------+ 1112 | | decimal.py | _decimal | speedup | 1113 +=========+=============+==============+=============+ 1114 | pi | 42.02s | 0.345s | 120x | 1115 +---------+-------------+--------------+-------------+ 1116 | telco | 172.19s | 5.68s | 30x | 1117 +---------+-------------+--------------+-------------+ 1118 | psycopg | 3.57s | 0.29s | 12x | 1119 +---------+-------------+--------------+-------------+ 1120 1121Features 1122~~~~~~~~ 1123 1124* The :exc:`~decimal.FloatOperation` signal optionally enables stricter 1125 semantics for mixing floats and Decimals. 1126 1127* If Python is compiled without threads, the C version automatically 1128 disables the expensive thread local context machinery. In this case, 1129 the variable :data:`~decimal.HAVE_THREADS` is set to ``False``. 1130 1131API changes 1132~~~~~~~~~~~ 1133 1134* The C module has the following context limits, depending on the machine 1135 architecture: 1136 1137 +-------------------+---------------------+------------------------------+ 1138 | | 32-bit | 64-bit | 1139 +===================+=====================+==============================+ 1140 | :const:`MAX_PREC` | :const:`425000000` | :const:`999999999999999999` | 1141 +-------------------+---------------------+------------------------------+ 1142 | :const:`MAX_EMAX` | :const:`425000000` | :const:`999999999999999999` | 1143 +-------------------+---------------------+------------------------------+ 1144 | :const:`MIN_EMIN` | :const:`-425000000` | :const:`-999999999999999999` | 1145 +-------------------+---------------------+------------------------------+ 1146 1147* In the context templates (:class:`~decimal.DefaultContext`, 1148 :class:`~decimal.BasicContext` and :class:`~decimal.ExtendedContext`) 1149 the magnitude of :attr:`~decimal.Context.Emax` and 1150 :attr:`~decimal.Context.Emin` has changed to :const:`999999`. 1151 1152* The :class:`~decimal.Decimal` constructor in decimal.py does not observe 1153 the context limits and converts values with arbitrary exponents or precision 1154 exactly. Since the C version has internal limits, the following scheme is 1155 used: If possible, values are converted exactly, otherwise 1156 :exc:`~decimal.InvalidOperation` is raised and the result is NaN. In the 1157 latter case it is always possible to use :meth:`~decimal.Context.create_decimal` 1158 in order to obtain a rounded or inexact value. 1159 1160 1161* The power function in decimal.py is always correctly-rounded. In the 1162 C version, it is defined in terms of the correctly-rounded 1163 :meth:`~decimal.Decimal.exp` and :meth:`~decimal.Decimal.ln` functions, 1164 but the final result is only "almost always correctly rounded". 1165 1166 1167* In the C version, the context dictionary containing the signals is a 1168 :class:`~collections.abc.MutableMapping`. For speed reasons, 1169 :attr:`~decimal.Context.flags` and :attr:`~decimal.Context.traps` always 1170 refer to the same :class:`~collections.abc.MutableMapping` that the context 1171 was initialized with. If a new signal dictionary is assigned, 1172 :attr:`~decimal.Context.flags` and :attr:`~decimal.Context.traps` 1173 are updated with the new values, but they do not reference the RHS 1174 dictionary. 1175 1176 1177* Pickling a :class:`~decimal.Context` produces a different output in order 1178 to have a common interchange format for the Python and C versions. 1179 1180 1181* The order of arguments in the :class:`~decimal.Context` constructor has been 1182 changed to match the order displayed by :func:`repr`. 1183 1184 1185* The ``watchexp`` parameter in the :meth:`~decimal.Decimal.quantize` method 1186 is deprecated. 1187 1188 1189.. _new-email: 1190 1191email 1192----- 1193 1194Policy Framework 1195~~~~~~~~~~~~~~~~ 1196 1197The email package now has a :mod:`~email.policy` framework. A 1198:class:`~email.policy.Policy` is an object with several methods and properties 1199that control how the email package behaves. The primary policy for Python 3.3 1200is the :class:`~email.policy.Compat32` policy, which provides backward 1201compatibility with the email package in Python 3.2. A ``policy`` can be 1202specified when an email message is parsed by a :mod:`~email.parser`, or when a 1203:class:`~email.message.Message` object is created, or when an email is 1204serialized using a :mod:`~email.generator`. Unless overridden, a policy passed 1205to a ``parser`` is inherited by all the ``Message`` object and sub-objects 1206created by the ``parser``. By default a ``generator`` will use the policy of 1207the ``Message`` object it is serializing. The default policy is 1208:data:`~email.policy.compat32`. 1209 1210The minimum set of controls implemented by all ``policy`` objects are: 1211 1212 .. tabularcolumns:: |l|L| 1213 1214 =============== ======================================================= 1215 max_line_length The maximum length, excluding the linesep character(s), 1216 individual lines may have when a ``Message`` is 1217 serialized. Defaults to 78. 1218 1219 linesep The character used to separate individual lines when a 1220 ``Message`` is serialized. Defaults to ``\n``. 1221 1222 cte_type ``7bit`` or ``8bit``. ``8bit`` applies only to a 1223 ``Bytes`` ``generator``, and means that non-ASCII may 1224 be used where allowed by the protocol (or where it 1225 exists in the original input). 1226 1227 raise_on_defect Causes a ``parser`` to raise error when defects are 1228 encountered instead of adding them to the ``Message`` 1229 object's ``defects`` list. 1230 =============== ======================================================= 1231 1232A new policy instance, with new settings, is created using the 1233:meth:`~email.policy.Policy.clone` method of policy objects. ``clone`` takes 1234any of the above controls as keyword arguments. Any control not specified in 1235the call retains its default value. Thus you can create a policy that uses 1236``\r\n`` linesep characters like this:: 1237 1238 mypolicy = compat32.clone(linesep='\r\n') 1239 1240Policies can be used to make the generation of messages in the format needed by 1241your application simpler. Instead of having to remember to specify 1242``linesep='\r\n'`` in all the places you call a ``generator``, you can specify 1243it once, when you set the policy used by the ``parser`` or the ``Message``, 1244whichever your program uses to create ``Message`` objects. On the other hand, 1245if you need to generate messages in multiple forms, you can still specify the 1246parameters in the appropriate ``generator`` call. Or you can have custom 1247policy instances for your different cases, and pass those in when you create 1248the ``generator``. 1249 1250 1251Provisional Policy with New Header API 1252~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1253 1254While the policy framework is worthwhile all by itself, the main motivation for 1255introducing it is to allow the creation of new policies that implement new 1256features for the email package in a way that maintains backward compatibility 1257for those who do not use the new policies. Because the new policies introduce a 1258new API, we are releasing them in Python 3.3 as a :term:`provisional policy 1259<provisional package>`. Backwards incompatible changes (up to and including 1260removal of the code) may occur if deemed necessary by the core developers. 1261 1262The new policies are instances of :class:`~email.policy.EmailPolicy`, 1263and add the following additional controls: 1264 1265 .. tabularcolumns:: |l|L| 1266 1267 =============== ======================================================= 1268 refold_source Controls whether or not headers parsed by a 1269 :mod:`~email.parser` are refolded by the 1270 :mod:`~email.generator`. It can be ``none``, ``long``, 1271 or ``all``. The default is ``long``, which means that 1272 source headers with a line longer than 1273 ``max_line_length`` get refolded. ``none`` means no 1274 line get refolded, and ``all`` means that all lines 1275 get refolded. 1276 1277 header_factory A callable that take a ``name`` and ``value`` and 1278 produces a custom header object. 1279 =============== ======================================================= 1280 1281The ``header_factory`` is the key to the new features provided by the new 1282policies. When one of the new policies is used, any header retrieved from 1283a ``Message`` object is an object produced by the ``header_factory``, and any 1284time you set a header on a ``Message`` it becomes an object produced by 1285``header_factory``. All such header objects have a ``name`` attribute equal 1286to the header name. Address and Date headers have additional attributes 1287that give you access to the parsed data of the header. This means you can now 1288do things like this:: 1289 1290 >>> m = Message(policy=SMTP) 1291 >>> m['To'] = 'Éric <foo@example.com>' 1292 >>> m['to'] 1293 'Éric <foo@example.com>' 1294 >>> m['to'].addresses 1295 (Address(display_name='Éric', username='foo', domain='example.com'),) 1296 >>> m['to'].addresses[0].username 1297 'foo' 1298 >>> m['to'].addresses[0].display_name 1299 'Éric' 1300 >>> m['Date'] = email.utils.localtime() 1301 >>> m['Date'].datetime 1302 datetime.datetime(2012, 5, 25, 21, 39, 24, 465484, tzinfo=datetime.timezone(datetime.timedelta(-1, 72000), 'EDT')) 1303 >>> m['Date'] 1304 'Fri, 25 May 2012 21:44:27 -0400' 1305 >>> print(m) 1306 To: =?utf-8?q?=C3=89ric?= <foo@example.com> 1307 Date: Fri, 25 May 2012 21:44:27 -0400 1308 1309You will note that the unicode display name is automatically encoded as 1310``utf-8`` when the message is serialized, but that when the header is accessed 1311directly, you get the unicode version. This eliminates any need to deal with 1312the :mod:`email.header` :meth:`~email.header.decode_header` or 1313:meth:`~email.header.make_header` functions. 1314 1315You can also create addresses from parts:: 1316 1317 >>> m['cc'] = [Group('pals', [Address('Bob', 'bob', 'example.com'), 1318 ... Address('Sally', 'sally', 'example.com')]), 1319 ... Address('Bonzo', addr_spec='bonz@laugh.com')] 1320 >>> print(m) 1321 To: =?utf-8?q?=C3=89ric?= <foo@example.com> 1322 Date: Fri, 25 May 2012 21:44:27 -0400 1323 cc: pals: Bob <bob@example.com>, Sally <sally@example.com>;, Bonzo <bonz@laugh.com> 1324 1325Decoding to unicode is done automatically:: 1326 1327 >>> m2 = message_from_string(str(m)) 1328 >>> m2['to'] 1329 'Éric <foo@example.com>' 1330 1331When you parse a message, you can use the ``addresses`` and ``groups`` 1332attributes of the header objects to access the groups and individual 1333addresses:: 1334 1335 >>> m2['cc'].addresses 1336 (Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com'), Address(display_name='Bonzo', username='bonz', domain='laugh.com')) 1337 >>> m2['cc'].groups 1338 (Group(display_name='pals', addresses=(Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com')), Group(display_name=None, addresses=(Address(display_name='Bonzo', username='bonz', domain='laugh.com'),)) 1339 1340In summary, if you use one of the new policies, header manipulation works the 1341way it ought to: your application works with unicode strings, and the email 1342package transparently encodes and decodes the unicode to and from the RFC 1343standard Content Transfer Encodings. 1344 1345Other API Changes 1346~~~~~~~~~~~~~~~~~ 1347 1348New :class:`~email.parser.BytesHeaderParser`, added to the :mod:`~email.parser` 1349module to complement :class:`~email.parser.HeaderParser` and complete the Bytes 1350API. 1351 1352New utility functions: 1353 1354 * :func:`~email.utils.format_datetime`: given a :class:`~datetime.datetime`, 1355 produce a string formatted for use in an email header. 1356 1357 * :func:`~email.utils.parsedate_to_datetime`: given a date string from 1358 an email header, convert it into an aware :class:`~datetime.datetime`, 1359 or a naive :class:`~datetime.datetime` if the offset is ``-0000``. 1360 1361 * :func:`~email.utils.localtime`: With no argument, returns the 1362 current local time as an aware :class:`~datetime.datetime` using the local 1363 :class:`~datetime.timezone`. Given an aware :class:`~datetime.datetime`, 1364 converts it into an aware :class:`~datetime.datetime` using the 1365 local :class:`~datetime.timezone`. 1366 1367 1368ftplib 1369------ 1370 1371* :class:`ftplib.FTP` now accepts a ``source_address`` keyword argument to 1372 specify the ``(host, port)`` to use as the source address in the bind call 1373 when creating the outgoing socket. (Contributed by Giampaolo Rodolà 1374 in :issue:`8594`.) 1375 1376* The :class:`~ftplib.FTP_TLS` class now provides a new 1377 :func:`~ftplib.FTP_TLS.ccc` function to revert control channel back to 1378 plaintext. This can be useful to take advantage of firewalls that know how 1379 to handle NAT with non-secure FTP without opening fixed ports. (Contributed 1380 by Giampaolo Rodolà in :issue:`12139`.) 1381 1382* Added :meth:`ftplib.FTP.mlsd` method which provides a parsable directory 1383 listing format and deprecates :meth:`ftplib.FTP.nlst` and 1384 :meth:`ftplib.FTP.dir`. (Contributed by Giampaolo Rodolà in :issue:`11072`.) 1385 1386 1387functools 1388--------- 1389 1390The :func:`functools.lru_cache` decorator now accepts a ``typed`` keyword 1391argument (that defaults to ``False`` to ensure that it caches values of 1392different types that compare equal in separate cache slots. (Contributed 1393by Raymond Hettinger in :issue:`13227`.) 1394 1395 1396gc 1397-- 1398 1399It is now possible to register callbacks invoked by the garbage collector 1400before and after collection using the new :data:`~gc.callbacks` list. 1401 1402 1403hmac 1404---- 1405 1406A new :func:`~hmac.compare_digest` function has been added to prevent side 1407channel attacks on digests through timing analysis. (Contributed by Nick 1408Coghlan and Christian Heimes in :issue:`15061`.) 1409 1410 1411http 1412---- 1413 1414:class:`http.server.BaseHTTPRequestHandler` now buffers the headers and writes 1415them all at once when :meth:`~http.server.BaseHTTPRequestHandler.end_headers` is 1416called. A new method :meth:`~http.server.BaseHTTPRequestHandler.flush_headers` 1417can be used to directly manage when the accumulated headers are sent. 1418(Contributed by Andrew Schaaf in :issue:`3709`.) 1419 1420:class:`http.server` now produces valid ``HTML 4.01 strict`` output. 1421(Contributed by Ezio Melotti in :issue:`13295`.) 1422 1423:class:`http.client.HTTPResponse` now has a 1424:meth:`~http.client.HTTPResponse.readinto` method, which means it can be used 1425as an :class:`io.RawIOBase` class. (Contributed by John Kuhn in 1426:issue:`13464`.) 1427 1428 1429html 1430---- 1431 1432:class:`html.parser.HTMLParser` is now able to parse broken markup without 1433raising errors, therefore the *strict* argument of the constructor and the 1434:exc:`~html.parser.HTMLParseError` exception are now deprecated. 1435The ability to parse broken markup is the result of a number of bug fixes that 1436are also available on the latest bug fix releases of Python 2.7/3.2. 1437(Contributed by Ezio Melotti in :issue:`15114`, and :issue:`14538`, 1438:issue:`13993`, :issue:`13960`, :issue:`13358`, :issue:`1745761`, 1439:issue:`755670`, :issue:`13357`, :issue:`12629`, :issue:`1200313`, 1440:issue:`670664`, :issue:`13273`, :issue:`12888`, :issue:`7311`.) 1441 1442A new :data:`~html.entities.html5` dictionary that maps HTML5 named character 1443references to the equivalent Unicode character(s) (e.g. ``html5['gt;'] == 1444'>'``) has been added to the :mod:`html.entities` module. The dictionary is 1445now also used by :class:`~html.parser.HTMLParser`. (Contributed by Ezio 1446Melotti in :issue:`11113` and :issue:`15156`.) 1447 1448 1449imaplib 1450------- 1451 1452The :class:`~imaplib.IMAP4_SSL` constructor now accepts an SSLContext 1453parameter to control parameters of the secure channel. 1454 1455(Contributed by Sijin Joseph in :issue:`8808`.) 1456 1457 1458inspect 1459------- 1460 1461A new :func:`~inspect.getclosurevars` function has been added. This function 1462reports the current binding of all names referenced from the function body and 1463where those names were resolved, making it easier to verify correct internal 1464state when testing code that relies on stateful closures. 1465 1466(Contributed by Meador Inge and Nick Coghlan in :issue:`13062`.) 1467 1468A new :func:`~inspect.getgeneratorlocals` function has been added. This 1469function reports the current binding of local variables in the generator's 1470stack frame, making it easier to verify correct internal state when testing 1471generators. 1472 1473(Contributed by Meador Inge in :issue:`15153`.) 1474 1475io 1476-- 1477 1478The :func:`~io.open` function has a new ``'x'`` mode that can be used to 1479exclusively create a new file, and raise a :exc:`FileExistsError` if the file 1480already exists. It is based on the C11 'x' mode to fopen(). 1481 1482(Contributed by David Townshend in :issue:`12760`.) 1483 1484The constructor of the :class:`~io.TextIOWrapper` class has a new 1485*write_through* optional argument. If *write_through* is ``True``, calls to 1486:meth:`~io.TextIOWrapper.write` are guaranteed not to be buffered: any data 1487written on the :class:`~io.TextIOWrapper` object is immediately handled to its 1488underlying binary buffer. 1489 1490 1491itertools 1492--------- 1493 1494:func:`~itertools.accumulate` now takes an optional ``func`` argument for 1495providing a user-supplied binary function. 1496 1497 1498logging 1499------- 1500 1501The :func:`~logging.basicConfig` function now supports an optional ``handlers`` 1502argument taking an iterable of handlers to be added to the root logger. 1503 1504A class level attribute :attr:`~logging.handlers.SysLogHandler.append_nul` has 1505been added to :class:`~logging.handlers.SysLogHandler` to allow control of the 1506appending of the ``NUL`` (``\000``) byte to syslog records, since for some 1507daemons it is required while for others it is passed through to the log. 1508 1509 1510 1511math 1512---- 1513 1514The :mod:`math` module has a new function, :func:`~math.log2`, which returns 1515the base-2 logarithm of *x*. 1516 1517(Written by Mark Dickinson in :issue:`11888`.) 1518 1519 1520mmap 1521---- 1522 1523The :meth:`~mmap.mmap.read` method is now more compatible with other file-like 1524objects: if the argument is omitted or specified as ``None``, it returns the 1525bytes from the current file position to the end of the mapping. (Contributed 1526by Petri Lehtinen in :issue:`12021`.) 1527 1528 1529multiprocessing 1530--------------- 1531 1532The new :func:`multiprocessing.connection.wait` function allows polling 1533multiple objects (such as connections, sockets and pipes) with a timeout. 1534(Contributed by Richard Oudkerk in :issue:`12328`.) 1535 1536:class:`multiprocessing.Connection` objects can now be transferred over 1537multiprocessing connections. 1538(Contributed by Richard Oudkerk in :issue:`4892`.) 1539 1540:class:`multiprocessing.Process` now accepts a ``daemon`` keyword argument 1541to override the default behavior of inheriting the ``daemon`` flag from 1542the parent process (:issue:`6064`). 1543 1544New attribute :data:`multiprocessing.Process.sentinel` allows a 1545program to wait on multiple :class:`~multiprocessing.Process` objects at one 1546time using the appropriate OS primitives (for example, :mod:`select` on 1547posix systems). 1548 1549New methods :meth:`multiprocessing.pool.Pool.starmap` and 1550:meth:`~multiprocessing.pool.Pool.starmap_async` provide 1551:func:`itertools.starmap` equivalents to the existing 1552:meth:`multiprocessing.pool.Pool.map` and 1553:meth:`~multiprocessing.pool.Pool.map_async` functions. (Contributed by Hynek 1554Schlawack in :issue:`12708`.) 1555 1556 1557nntplib 1558------- 1559 1560The :class:`nntplib.NNTP` class now supports the context management protocol to 1561unconditionally consume :exc:`socket.error` exceptions and to close the NNTP 1562connection when done:: 1563 1564 >>> from nntplib import NNTP 1565 >>> with NNTP('news.gmane.org') as n: 1566 ... n.group('gmane.comp.python.committers') 1567 ... 1568 ('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers') 1569 >>> 1570 1571(Contributed by Giampaolo Rodolà in :issue:`9795`.) 1572 1573 1574os 1575-- 1576 1577* The :mod:`os` module has a new :func:`~os.pipe2` function that makes it 1578 possible to create a pipe with :data:`~os.O_CLOEXEC` or 1579 :data:`~os.O_NONBLOCK` flags set atomically. This is especially useful to 1580 avoid race conditions in multi-threaded programs. 1581 1582* The :mod:`os` module has a new :func:`~os.sendfile` function which provides 1583 an efficient "zero-copy" way for copying data from one file (or socket) 1584 descriptor to another. The phrase "zero-copy" refers to the fact that all of 1585 the copying of data between the two descriptors is done entirely by the 1586 kernel, with no copying of data into userspace buffers. :func:`~os.sendfile` 1587 can be used to efficiently copy data from a file on disk to a network socket, 1588 e.g. for downloading a file. 1589 1590 (Patch submitted by Ross Lagerwall and Giampaolo Rodolà in :issue:`10882`.) 1591 1592* To avoid race conditions like symlink attacks and issues with temporary 1593 files and directories, it is more reliable (and also faster) to manipulate 1594 file descriptors instead of file names. Python 3.3 enhances existing functions 1595 and introduces new functions to work on file descriptors (:issue:`4761`, 1596 :issue:`10755` and :issue:`14626`). 1597 1598 - The :mod:`os` module has a new :func:`~os.fwalk` function similar to 1599 :func:`~os.walk` except that it also yields file descriptors referring to the 1600 directories visited. This is especially useful to avoid symlink races. 1601 1602 - The following functions get new optional *dir_fd* (:ref:`paths relative to 1603 directory descriptors <dir_fd>`) and/or *follow_symlinks* (:ref:`not 1604 following symlinks <follow_symlinks>`): 1605 :func:`~os.access`, :func:`~os.chflags`, :func:`~os.chmod`, :func:`~os.chown`, 1606 :func:`~os.link`, :func:`~os.lstat`, :func:`~os.mkdir`, :func:`~os.mkfifo`, 1607 :func:`~os.mknod`, :func:`~os.open`, :func:`~os.readlink`, :func:`~os.remove`, 1608 :func:`~os.rename`, :func:`~os.replace`, :func:`~os.rmdir`, :func:`~os.stat`, 1609 :func:`~os.symlink`, :func:`~os.unlink`, :func:`~os.utime`. Platform 1610 support for using these parameters can be checked via the sets 1611 :data:`os.supports_dir_fd` and :data:`os.supports_follows_symlinks`. 1612 1613 - The following functions now support a file descriptor for their path argument: 1614 :func:`~os.chdir`, :func:`~os.chmod`, :func:`~os.chown`, 1615 :func:`~os.execve`, :func:`~os.listdir`, :func:`~os.pathconf`, :func:`~os.path.exists`, 1616 :func:`~os.stat`, :func:`~os.statvfs`, :func:`~os.utime`. Platform support 1617 for this can be checked via the :data:`os.supports_fd` set. 1618 1619* :func:`~os.access` accepts an ``effective_ids`` keyword argument to turn on 1620 using the effective uid/gid rather than the real uid/gid in the access check. 1621 Platform support for this can be checked via the 1622 :data:`~os.supports_effective_ids` set. 1623 1624* The :mod:`os` module has two new functions: :func:`~os.getpriority` and 1625 :func:`~os.setpriority`. They can be used to get or set process 1626 niceness/priority in a fashion similar to :func:`os.nice` but extended to all 1627 processes instead of just the current one. 1628 1629 (Patch submitted by Giampaolo Rodolà in :issue:`10784`.) 1630 1631* The new :func:`os.replace` function allows cross-platform renaming of a 1632 file with overwriting the destination. With :func:`os.rename`, an existing 1633 destination file is overwritten under POSIX, but raises an error under 1634 Windows. 1635 (Contributed by Antoine Pitrou in :issue:`8828`.) 1636 1637* The stat family of functions (:func:`~os.stat`, :func:`~os.fstat`, 1638 and :func:`~os.lstat`) now support reading a file's timestamps 1639 with nanosecond precision. Symmetrically, :func:`~os.utime` 1640 can now write file timestamps with nanosecond precision. (Contributed by 1641 Larry Hastings in :issue:`14127`.) 1642 1643* The new :func:`os.get_terminal_size` function queries the size of the 1644 terminal attached to a file descriptor. See also 1645 :func:`shutil.get_terminal_size`. 1646 (Contributed by Zbigniew Jędrzejewski-Szmek in :issue:`13609`.) 1647 1648.. XXX sort out this mess after beta1 1649 1650* New functions to support Linux extended attributes (:issue:`12720`): 1651 :func:`~os.getxattr`, :func:`~os.listxattr`, :func:`~os.removexattr`, 1652 :func:`~os.setxattr`. 1653 1654* New interface to the scheduler. These functions 1655 control how a process is allocated CPU time by the operating system. New 1656 functions: 1657 :func:`~os.sched_get_priority_max`, :func:`~os.sched_get_priority_min`, 1658 :func:`~os.sched_getaffinity`, :func:`~os.sched_getparam`, 1659 :func:`~os.sched_getscheduler`, :func:`~os.sched_rr_get_interval`, 1660 :func:`~os.sched_setaffinity`, :func:`~os.sched_setparam`, 1661 :func:`~os.sched_setscheduler`, :func:`~os.sched_yield`, 1662 1663* New functions to control the file system: 1664 1665 * :func:`~os.posix_fadvise`: Announces an intention to access data in a 1666 specific pattern thus allowing the kernel to make optimizations. 1667 * :func:`~os.posix_fallocate`: Ensures that enough disk space is allocated 1668 for a file. 1669 * :func:`~os.sync`: Force write of everything to disk. 1670 1671* Additional new posix functions: 1672 1673 * :func:`~os.lockf`: Apply, test or remove a POSIX lock on an open file descriptor. 1674 * :func:`~os.pread`: Read from a file descriptor at an offset, the file 1675 offset remains unchanged. 1676 * :func:`~os.pwrite`: Write to a file descriptor from an offset, leaving 1677 the file offset unchanged. 1678 * :func:`~os.readv`: Read from a file descriptor into a number of writable buffers. 1679 * :func:`~os.truncate`: Truncate the file corresponding to *path*, so that 1680 it is at most *length* bytes in size. 1681 * :func:`~os.waitid`: Wait for the completion of one or more child processes. 1682 * :func:`~os.writev`: Write the contents of *buffers* to a file descriptor, 1683 where *buffers* is an arbitrary sequence of buffers. 1684 * :func:`~os.getgrouplist` (:issue:`9344`): Return list of group ids that 1685 specified user belongs to. 1686 1687* :func:`~os.times` and :func:`~os.uname`: Return type changed from a tuple to 1688 a tuple-like object with named attributes. 1689 1690* Some platforms now support additional constants for the :func:`~os.lseek` 1691 function, such as ``os.SEEK_HOLE`` and ``os.SEEK_DATA``. 1692 1693* New constants :data:`~os.RTLD_LAZY`, :data:`~os.RTLD_NOW`, 1694 :data:`~os.RTLD_GLOBAL`, :data:`~os.RTLD_LOCAL`, :data:`~os.RTLD_NODELETE`, 1695 :data:`~os.RTLD_NOLOAD`, and :data:`~os.RTLD_DEEPBIND` are available on 1696 platforms that support them. These are for use with the 1697 :func:`sys.setdlopenflags` function, and supersede the similar constants 1698 defined in :mod:`ctypes` and :mod:`DLFCN`. (Contributed by Victor Stinner 1699 in :issue:`13226`.) 1700 1701* :func:`os.symlink` now accepts (and ignores) the ``target_is_directory`` 1702 keyword argument on non-Windows platforms, to ease cross-platform support. 1703 1704 1705pdb 1706--- 1707 1708Tab-completion is now available not only for command names, but also their 1709arguments. For example, for the ``break`` command, function and file names 1710are completed. 1711 1712(Contributed by Georg Brandl in :issue:`14210`) 1713 1714 1715pickle 1716------ 1717 1718:class:`pickle.Pickler` objects now have an optional 1719:attr:`~pickle.Pickler.dispatch_table` attribute allowing per-pickler 1720reduction functions to be set. 1721 1722(Contributed by Richard Oudkerk in :issue:`14166`.) 1723 1724 1725pydoc 1726----- 1727 1728The Tk GUI and the :func:`~pydoc.serve` function have been removed from the 1729:mod:`pydoc` module: ``pydoc -g`` and :func:`~pydoc.serve` have been deprecated 1730in Python 3.2. 1731 1732 1733re 1734-- 1735 1736:class:`str` regular expressions now support ``\u`` and ``\U`` escapes. 1737 1738(Contributed by Serhiy Storchaka in :issue:`3665`.) 1739 1740 1741sched 1742----- 1743 1744* :meth:`~sched.scheduler.run` now accepts a *blocking* parameter which when 1745 set to false makes the method execute the scheduled events due to expire 1746 soonest (if any) and then return immediately. 1747 This is useful in case you want to use the :class:`~sched.scheduler` in 1748 non-blocking applications. (Contributed by Giampaolo Rodolà in :issue:`13449`.) 1749 1750* :class:`~sched.scheduler` class can now be safely used in multi-threaded 1751 environments. (Contributed by Josiah Carlson and Giampaolo Rodolà in 1752 :issue:`8684`.) 1753 1754* *timefunc* and *delayfunct* parameters of :class:`~sched.scheduler` class 1755 constructor are now optional and defaults to :func:`time.time` and 1756 :func:`time.sleep` respectively. (Contributed by Chris Clark in 1757 :issue:`13245`.) 1758 1759* :meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs` 1760 *argument* parameter is now optional. (Contributed by Chris Clark in 1761 :issue:`13245`.) 1762 1763* :meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs` 1764 now accept a *kwargs* parameter. (Contributed by Chris Clark in 1765 :issue:`13245`.) 1766 1767 1768select 1769------ 1770 1771Solaris and derivative platforms have a new class :class:`select.devpoll` 1772for high performance asynchronous sockets via :file:`/dev/poll`. 1773(Contributed by Jesús Cea Avión in :issue:`6397`.) 1774 1775 1776shlex 1777----- 1778 1779The previously undocumented helper function ``quote`` from the 1780:mod:`pipes` modules has been moved to the :mod:`shlex` module and 1781documented. :func:`~shlex.quote` properly escapes all characters in a string 1782that might be otherwise given special meaning by the shell. 1783 1784 1785shutil 1786------ 1787 1788* New functions: 1789 1790 * :func:`~shutil.disk_usage`: provides total, used and free disk space 1791 statistics. (Contributed by Giampaolo Rodolà in :issue:`12442`.) 1792 * :func:`~shutil.chown`: allows one to change user and/or group of the given 1793 path also specifying the user/group names and not only their numeric 1794 ids. (Contributed by Sandro Tosi in :issue:`12191`.) 1795 * :func:`shutil.get_terminal_size`: returns the size of the terminal window 1796 to which the interpreter is attached. (Contributed by Zbigniew 1797 Jędrzejewski-Szmek in :issue:`13609`.) 1798 1799* :func:`~shutil.copy2` and :func:`~shutil.copystat` now preserve file 1800 timestamps with nanosecond precision on platforms that support it. 1801 They also preserve file "extended attributes" on Linux. (Contributed 1802 by Larry Hastings in :issue:`14127` and :issue:`15238`.) 1803 1804* Several functions now take an optional ``symlinks`` argument: when that 1805 parameter is true, symlinks aren't dereferenced and the operation instead 1806 acts on the symlink itself (or creates one, if relevant). 1807 (Contributed by Hynek Schlawack in :issue:`12715`.) 1808 1809* When copying files to a different file system, :func:`~shutil.move` now 1810 handles symlinks the way the posix ``mv`` command does, recreating the 1811 symlink rather than copying the target file contents. (Contributed by 1812 Jonathan Niehof in :issue:`9993`.) :func:`~shutil.move` now also returns 1813 the ``dst`` argument as its result. 1814 1815* :func:`~shutil.rmtree` is now resistant to symlink attacks on platforms 1816 which support the new ``dir_fd`` parameter in :func:`os.open` and 1817 :func:`os.unlink`. (Contributed by Martin von Löwis and Hynek Schlawack 1818 in :issue:`4489`.) 1819 1820 1821signal 1822------ 1823 1824* The :mod:`signal` module has new functions: 1825 1826 * :func:`~signal.pthread_sigmask`: fetch and/or change the signal mask of the 1827 calling thread (Contributed by Jean-Paul Calderone in :issue:`8407`); 1828 * :func:`~signal.pthread_kill`: send a signal to a thread; 1829 * :func:`~signal.sigpending`: examine pending functions; 1830 * :func:`~signal.sigwait`: wait a signal; 1831 * :func:`~signal.sigwaitinfo`: wait for a signal, returning detailed 1832 information about it; 1833 * :func:`~signal.sigtimedwait`: like :func:`~signal.sigwaitinfo` but with a 1834 timeout. 1835 1836* The signal handler writes the signal number as a single byte instead of 1837 a nul byte into the wakeup file descriptor. So it is possible to wait more 1838 than one signal and know which signals were raised. 1839 1840* :func:`signal.signal` and :func:`signal.siginterrupt` raise an OSError, 1841 instead of a RuntimeError: OSError has an errno attribute. 1842 1843 1844smtpd 1845----- 1846 1847The :mod:`smtpd` module now supports :rfc:`5321` (extended SMTP) and :rfc:`1870` 1848(size extension). Per the standard, these extensions are enabled if and only 1849if the client initiates the session with an ``EHLO`` command. 1850 1851(Initial ``ELHO`` support by Alberto Trevino. Size extension by Juhana 1852Jauhiainen. Substantial additional work on the patch contributed by Michele 1853Orrù and Dan Boswell. :issue:`8739`) 1854 1855 1856smtplib 1857------- 1858 1859The :class:`~smtplib.SMTP`, :class:`~smtplib.SMTP_SSL`, and 1860:class:`~smtplib.LMTP` classes now accept a ``source_address`` keyword argument 1861to specify the ``(host, port)`` to use as the source address in the bind call 1862when creating the outgoing socket. (Contributed by Paulo Scardine in 1863:issue:`11281`.) 1864 1865:class:`~smtplib.SMTP` now supports the context management protocol, allowing an 1866``SMTP`` instance to be used in a ``with`` statement. (Contributed 1867by Giampaolo Rodolà in :issue:`11289`.) 1868 1869The :class:`~smtplib.SMTP_SSL` constructor and the :meth:`~smtplib.SMTP.starttls` 1870method now accept an SSLContext parameter to control parameters of the secure 1871channel. (Contributed by Kasun Herath in :issue:`8809`.) 1872 1873 1874socket 1875------ 1876 1877* The :class:`~socket.socket` class now exposes additional methods to process 1878 ancillary data when supported by the underlying platform: 1879 1880 * :func:`~socket.socket.sendmsg` 1881 * :func:`~socket.socket.recvmsg` 1882 * :func:`~socket.socket.recvmsg_into` 1883 1884 (Contributed by David Watson in :issue:`6560`, based on an earlier patch by 1885 Heiko Wundram) 1886 1887* The :class:`~socket.socket` class now supports the PF_CAN protocol family 1888 (https://en.wikipedia.org/wiki/Socketcan), on Linux 1889 (https://lwn.net/Articles/253425). 1890 1891 (Contributed by Matthias Fuchs, updated by Tiago Gonçalves in :issue:`10141`.) 1892 1893* The :class:`~socket.socket` class now supports the PF_RDS protocol family 1894 (https://en.wikipedia.org/wiki/Reliable_Datagram_Sockets and 1895 https://oss.oracle.com/projects/rds/). 1896 1897* The :class:`~socket.socket` class now supports the ``PF_SYSTEM`` protocol 1898 family on OS X. (Contributed by Michael Goderbauer in :issue:`13777`.) 1899 1900* New function :func:`~socket.sethostname` allows the hostname to be set 1901 on unix systems if the calling process has sufficient privileges. 1902 (Contributed by Ross Lagerwall in :issue:`10866`.) 1903 1904 1905socketserver 1906------------ 1907 1908:class:`~socketserver.BaseServer` now has an overridable method 1909:meth:`~socketserver.BaseServer.service_actions` that is called by the 1910:meth:`~socketserver.BaseServer.serve_forever` method in the service loop. 1911:class:`~socketserver.ForkingMixIn` now uses this to clean up zombie 1912child processes. (Contributed by Justin Warkentin in :issue:`11109`.) 1913 1914 1915sqlite3 1916------- 1917 1918New :class:`sqlite3.Connection` method 1919:meth:`~sqlite3.Connection.set_trace_callback` can be used to capture a trace of 1920all sql commands processed by sqlite. (Contributed by Torsten Landschoff 1921in :issue:`11688`.) 1922 1923 1924ssl 1925--- 1926 1927* The :mod:`ssl` module has two new random generation functions: 1928 1929 * :func:`~ssl.RAND_bytes`: generate cryptographically strong 1930 pseudo-random bytes. 1931 * :func:`~ssl.RAND_pseudo_bytes`: generate pseudo-random bytes. 1932 1933 (Contributed by Victor Stinner in :issue:`12049`.) 1934 1935* The :mod:`ssl` module now exposes a finer-grained exception hierarchy 1936 in order to make it easier to inspect the various kinds of errors. 1937 (Contributed by Antoine Pitrou in :issue:`11183`.) 1938 1939* :meth:`~ssl.SSLContext.load_cert_chain` now accepts a *password* argument 1940 to be used if the private key is encrypted. 1941 (Contributed by Adam Simpkins in :issue:`12803`.) 1942 1943* Diffie-Hellman key exchange, both regular and Elliptic Curve-based, is 1944 now supported through the :meth:`~ssl.SSLContext.load_dh_params` and 1945 :meth:`~ssl.SSLContext.set_ecdh_curve` methods. 1946 (Contributed by Antoine Pitrou in :issue:`13626` and :issue:`13627`.) 1947 1948* SSL sockets have a new :meth:`~ssl.SSLSocket.get_channel_binding` method 1949 allowing the implementation of certain authentication mechanisms such as 1950 SCRAM-SHA-1-PLUS. (Contributed by Jacek Konieczny in :issue:`12551`.) 1951 1952* You can query the SSL compression algorithm used by an SSL socket, thanks 1953 to its new :meth:`~ssl.SSLSocket.compression` method. The new attribute 1954 :attr:`~ssl.OP_NO_COMPRESSION` can be used to disable compression. 1955 (Contributed by Antoine Pitrou in :issue:`13634`.) 1956 1957* Support has been added for the Next Protocol Negotiation extension using 1958 the :meth:`ssl.SSLContext.set_npn_protocols` method. 1959 (Contributed by Colin Marc in :issue:`14204`.) 1960 1961* SSL errors can now be introspected more easily thanks to 1962 :attr:`~ssl.SSLError.library` and :attr:`~ssl.SSLError.reason` attributes. 1963 (Contributed by Antoine Pitrou in :issue:`14837`.) 1964 1965* The :func:`~ssl.get_server_certificate` function now supports IPv6. 1966 (Contributed by Charles-François Natali in :issue:`11811`.) 1967 1968* New attribute :attr:`~ssl.OP_CIPHER_SERVER_PREFERENCE` allows setting 1969 SSLv3 server sockets to use the server's cipher ordering preference rather 1970 than the client's (:issue:`13635`). 1971 1972 1973stat 1974---- 1975 1976The undocumented tarfile.filemode function has been moved to 1977:func:`stat.filemode`. It can be used to convert a file's mode to a string of 1978the form '-rwxrwxrwx'. 1979 1980(Contributed by Giampaolo Rodolà in :issue:`14807`.) 1981 1982 1983struct 1984------ 1985 1986The :mod:`struct` module now supports ``ssize_t`` and ``size_t`` via the 1987new codes ``n`` and ``N``, respectively. (Contributed by Antoine Pitrou 1988in :issue:`3163`.) 1989 1990 1991subprocess 1992---------- 1993 1994Command strings can now be bytes objects on posix platforms. (Contributed by 1995Victor Stinner in :issue:`8513`.) 1996 1997A new constant :data:`~subprocess.DEVNULL` allows suppressing output in a 1998platform-independent fashion. (Contributed by Ross Lagerwall in 1999:issue:`5870`.) 2000 2001 2002sys 2003--- 2004 2005The :mod:`sys` module has a new :data:`~sys.thread_info` :term:`struct 2006sequence` holding information about the thread implementation 2007(:issue:`11223`). 2008 2009 2010tarfile 2011------- 2012 2013:mod:`tarfile` now supports ``lzma`` encoding via the :mod:`lzma` module. 2014(Contributed by Lars Gustäbel in :issue:`5689`.) 2015 2016 2017tempfile 2018-------- 2019 2020:class:`tempfile.SpooledTemporaryFile`\'s 2021:meth:`~tempfile.SpooledTemporaryFile.truncate` method now accepts 2022a ``size`` parameter. (Contributed by Ryan Kelly in :issue:`9957`.) 2023 2024 2025textwrap 2026-------- 2027 2028The :mod:`textwrap` module has a new :func:`~textwrap.indent` that makes 2029it straightforward to add a common prefix to selected lines in a block 2030of text (:issue:`13857`). 2031 2032 2033threading 2034--------- 2035 2036:class:`threading.Condition`, :class:`threading.Semaphore`, 2037:class:`threading.BoundedSemaphore`, :class:`threading.Event`, and 2038:class:`threading.Timer`, all of which used to be factory functions returning a 2039class instance, are now classes and may be subclassed. (Contributed by Éric 2040Araujo in :issue:`10968`.) 2041 2042The :class:`threading.Thread` constructor now accepts a ``daemon`` keyword 2043argument to override the default behavior of inheriting the ``daemon`` flag 2044value from the parent thread (:issue:`6064`). 2045 2046The formerly private function ``_thread.get_ident`` is now available as the 2047public function :func:`threading.get_ident`. This eliminates several cases of 2048direct access to the ``_thread`` module in the stdlib. Third party code that 2049used ``_thread.get_ident`` should likewise be changed to use the new public 2050interface. 2051 2052 2053time 2054---- 2055 2056The :pep:`418` added new functions to the :mod:`time` module: 2057 2058* :func:`~time.get_clock_info`: Get information on a clock. 2059* :func:`~time.monotonic`: Monotonic clock (cannot go backward), not affected 2060 by system clock updates. 2061* :func:`~time.perf_counter`: Performance counter with the highest available 2062 resolution to measure a short duration. 2063* :func:`~time.process_time`: Sum of the system and user CPU time of the 2064 current process. 2065 2066Other new functions: 2067 2068* :func:`~time.clock_getres`, :func:`~time.clock_gettime` and 2069 :func:`~time.clock_settime` functions with ``CLOCK_xxx`` constants. 2070 (Contributed by Victor Stinner in :issue:`10278`.) 2071 2072To improve cross platform consistency, :func:`~time.sleep` now raises a 2073:exc:`ValueError` when passed a negative sleep value. Previously this was an 2074error on posix, but produced an infinite sleep on Windows. 2075 2076 2077types 2078----- 2079 2080Add a new :class:`types.MappingProxyType` class: Read-only proxy of a mapping. 2081(:issue:`14386`) 2082 2083 2084The new functions :func:`types.new_class` and :func:`types.prepare_class` provide support 2085for PEP 3115 compliant dynamic type creation. (:issue:`14588`) 2086 2087 2088unittest 2089-------- 2090 2091:meth:`.assertRaises`, :meth:`.assertRaisesRegex`, :meth:`.assertWarns`, and 2092:meth:`.assertWarnsRegex` now accept a keyword argument *msg* when used as 2093context managers. (Contributed by Ezio Melotti and Winston Ewert in 2094:issue:`10775`.) 2095 2096:meth:`unittest.TestCase.run` now returns the :class:`~unittest.TestResult` 2097object. 2098 2099 2100urllib 2101------ 2102 2103The :class:`~urllib.request.Request` class, now accepts a *method* argument 2104used by :meth:`~urllib.request.Request.get_method` to determine what HTTP method 2105should be used. For example, this will send a ``'HEAD'`` request:: 2106 2107 >>> urlopen(Request('https://www.python.org', method='HEAD')) 2108 2109(:issue:`1673007`) 2110 2111 2112webbrowser 2113---------- 2114 2115The :mod:`webbrowser` module supports more "browsers": Google Chrome (named 2116:program:`chrome`, :program:`chromium`, :program:`chrome-browser` or 2117:program:`chromium-browser` depending on the version and operating system), 2118and the generic launchers :program:`xdg-open`, from the FreeDesktop.org 2119project, and :program:`gvfs-open`, which is the default URI handler for GNOME 21203. (The former contributed by Arnaud Calmettes in :issue:`13620`, the latter 2121by Matthias Klose in :issue:`14493`.) 2122 2123 2124xml.etree.ElementTree 2125--------------------- 2126 2127The :mod:`xml.etree.ElementTree` module now imports its C accelerator by 2128default; there is no longer a need to explicitly import 2129:mod:`xml.etree.cElementTree` (this module stays for backwards compatibility, 2130but is now deprecated). In addition, the ``iter`` family of methods of 2131:class:`~xml.etree.ElementTree.Element` has been optimized (rewritten in C). 2132The module's documentation has also been greatly improved with added examples 2133and a more detailed reference. 2134 2135 2136zlib 2137---- 2138 2139New attribute :attr:`zlib.Decompress.eof` makes it possible to distinguish 2140between a properly-formed compressed stream and an incomplete or truncated one. 2141(Contributed by Nadeem Vawda in :issue:`12646`.) 2142 2143New attribute :attr:`zlib.ZLIB_RUNTIME_VERSION` reports the version string of 2144the underlying ``zlib`` library that is loaded at runtime. (Contributed by 2145Torsten Landschoff in :issue:`12306`.) 2146 2147 2148Optimizations 2149============= 2150 2151Major performance enhancements have been added: 2152 2153* Thanks to :pep:`393`, some operations on Unicode strings have been optimized: 2154 2155 * the memory footprint is divided by 2 to 4 depending on the text 2156 * encode an ASCII string to UTF-8 doesn't need to encode characters anymore, 2157 the UTF-8 representation is shared with the ASCII representation 2158 * the UTF-8 encoder has been optimized 2159 * repeating a single ASCII letter and getting a substring of an ASCII string 2160 is 4 times faster 2161 2162* UTF-8 is now 2x to 4x faster. UTF-16 encoding is now up to 10x faster. 2163 2164 (Contributed by Serhiy Storchaka, :issue:`14624`, :issue:`14738` and 2165 :issue:`15026`.) 2166 2167 2168Build and C API Changes 2169======================= 2170 2171Changes to Python's build process and to the C API include: 2172 2173* New :pep:`3118` related function: 2174 2175 * :c:func:`PyMemoryView_FromMemory` 2176 2177* :pep:`393` added new Unicode types, macros and functions: 2178 2179 * High-level API: 2180 2181 * :c:func:`PyUnicode_CopyCharacters` 2182 * :c:func:`PyUnicode_FindChar` 2183 * :c:func:`PyUnicode_GetLength`, :c:macro:`PyUnicode_GET_LENGTH` 2184 * :c:func:`PyUnicode_New` 2185 * :c:func:`PyUnicode_Substring` 2186 * :c:func:`PyUnicode_ReadChar`, :c:func:`PyUnicode_WriteChar` 2187 2188 * Low-level API: 2189 2190 * :c:type:`Py_UCS1`, :c:type:`Py_UCS2`, :c:type:`Py_UCS4` types 2191 * :c:type:`PyASCIIObject` and :c:type:`PyCompactUnicodeObject` structures 2192 * :c:macro:`PyUnicode_READY` 2193 * :c:func:`PyUnicode_FromKindAndData` 2194 * :c:func:`PyUnicode_AsUCS4`, :c:func:`PyUnicode_AsUCS4Copy` 2195 * :c:macro:`PyUnicode_DATA`, :c:macro:`PyUnicode_1BYTE_DATA`, 2196 :c:macro:`PyUnicode_2BYTE_DATA`, :c:macro:`PyUnicode_4BYTE_DATA` 2197 * :c:macro:`PyUnicode_KIND` with :c:type:`PyUnicode_Kind` enum: 2198 :c:data:`PyUnicode_WCHAR_KIND`, :c:data:`PyUnicode_1BYTE_KIND`, 2199 :c:data:`PyUnicode_2BYTE_KIND`, :c:data:`PyUnicode_4BYTE_KIND` 2200 * :c:macro:`PyUnicode_READ`, :c:macro:`PyUnicode_READ_CHAR`, :c:macro:`PyUnicode_WRITE` 2201 * :c:macro:`PyUnicode_MAX_CHAR_VALUE` 2202 2203* :c:macro:`PyArg_ParseTuple` now accepts a :class:`bytearray` for the ``c`` 2204 format (:issue:`12380`). 2205 2206 2207 2208Deprecated 2209========== 2210 2211Unsupported Operating Systems 2212----------------------------- 2213 2214OS/2 and VMS are no longer supported due to the lack of a maintainer. 2215 2216Windows 2000 and Windows platforms which set ``COMSPEC`` to ``command.com`` 2217are no longer supported due to maintenance burden. 2218 2219OSF support, which was deprecated in 3.2, has been completely removed. 2220 2221 2222Deprecated Python modules, functions and methods 2223------------------------------------------------ 2224 2225* Passing a non-empty string to ``object.__format__()`` is deprecated, and 2226 will produce a :exc:`TypeError` in Python 3.4 (:issue:`9856`). 2227* The ``unicode_internal`` codec has been deprecated because of the 2228 :pep:`393`, use UTF-8, UTF-16 (``utf-16-le`` or ``utf-16-be``), or UTF-32 2229 (``utf-32-le`` or ``utf-32-be``) 2230* :meth:`ftplib.FTP.nlst` and :meth:`ftplib.FTP.dir`: use 2231 :meth:`ftplib.FTP.mlsd` 2232* :func:`platform.popen`: use the :mod:`subprocess` module. Check especially 2233 the :ref:`subprocess-replacements` section (:issue:`11377`). 2234* :issue:`13374`: The Windows bytes API has been deprecated in the :mod:`os` 2235 module. Use Unicode filenames, instead of bytes filenames, to not depend on 2236 the ANSI code page anymore and to support any filename. 2237* :issue:`13988`: The :mod:`xml.etree.cElementTree` module is deprecated. The 2238 accelerator is used automatically whenever available. 2239* The behaviour of :func:`time.clock` depends on the platform: use the new 2240 :func:`time.perf_counter` or :func:`time.process_time` function instead, 2241 depending on your requirements, to have a well defined behaviour. 2242* The :func:`os.stat_float_times` function is deprecated. 2243* :mod:`abc` module: 2244 2245 * :class:`abc.abstractproperty` has been deprecated, use :class:`property` 2246 with :func:`abc.abstractmethod` instead. 2247 * :class:`abc.abstractclassmethod` has been deprecated, use 2248 :class:`classmethod` with :func:`abc.abstractmethod` instead. 2249 * :class:`abc.abstractstaticmethod` has been deprecated, use 2250 :class:`staticmethod` with :func:`abc.abstractmethod` instead. 2251 2252* :mod:`importlib` package: 2253 2254 * :meth:`importlib.abc.SourceLoader.path_mtime` is now deprecated in favour of 2255 :meth:`importlib.abc.SourceLoader.path_stats` as bytecode files now store 2256 both the modification time and size of the source file the bytecode file was 2257 compiled from. 2258 2259 2260 2261 2262 2263Deprecated functions and types of the C API 2264------------------------------------------- 2265 2266The :c:type:`Py_UNICODE` has been deprecated by :pep:`393` and will be 2267removed in Python 4. All functions using this type are deprecated: 2268 2269Unicode functions and methods using :c:type:`Py_UNICODE` and 2270:c:type:`Py_UNICODE*` types: 2271 2272* :c:macro:`PyUnicode_FromUnicode`: use :c:func:`PyUnicode_FromWideChar` or 2273 :c:func:`PyUnicode_FromKindAndData` 2274* :c:macro:`PyUnicode_AS_UNICODE`, :c:func:`PyUnicode_AsUnicode`, 2275 :c:func:`PyUnicode_AsUnicodeAndSize`: use :c:func:`PyUnicode_AsWideCharString` 2276* :c:macro:`PyUnicode_AS_DATA`: use :c:macro:`PyUnicode_DATA` with 2277 :c:macro:`PyUnicode_READ` and :c:macro:`PyUnicode_WRITE` 2278* :c:macro:`PyUnicode_GET_SIZE`, :c:func:`PyUnicode_GetSize`: use 2279 :c:macro:`PyUnicode_GET_LENGTH` or :c:func:`PyUnicode_GetLength` 2280* :c:macro:`PyUnicode_GET_DATA_SIZE`: use 2281 ``PyUnicode_GET_LENGTH(str) * PyUnicode_KIND(str)`` (only work on ready 2282 strings) 2283* :c:func:`PyUnicode_AsUnicodeCopy`: use :c:func:`PyUnicode_AsUCS4Copy` or 2284 :c:func:`PyUnicode_AsWideCharString` 2285* :c:func:`PyUnicode_GetMax` 2286 2287 2288Functions and macros manipulating Py_UNICODE* strings: 2289 2290* :c:macro:`Py_UNICODE_strlen`: use :c:func:`PyUnicode_GetLength` or 2291 :c:macro:`PyUnicode_GET_LENGTH` 2292* :c:macro:`Py_UNICODE_strcat`: use :c:func:`PyUnicode_CopyCharacters` or 2293 :c:func:`PyUnicode_FromFormat` 2294* :c:macro:`Py_UNICODE_strcpy`, :c:macro:`Py_UNICODE_strncpy`, 2295 :c:macro:`Py_UNICODE_COPY`: use :c:func:`PyUnicode_CopyCharacters` or 2296 :c:func:`PyUnicode_Substring` 2297* :c:macro:`Py_UNICODE_strcmp`: use :c:func:`PyUnicode_Compare` 2298* :c:macro:`Py_UNICODE_strncmp`: use :c:func:`PyUnicode_Tailmatch` 2299* :c:macro:`Py_UNICODE_strchr`, :c:macro:`Py_UNICODE_strrchr`: use 2300 :c:func:`PyUnicode_FindChar` 2301* :c:macro:`Py_UNICODE_FILL`: use :c:func:`PyUnicode_Fill` 2302* :c:macro:`Py_UNICODE_MATCH` 2303 2304Encoders: 2305 2306* :c:func:`PyUnicode_Encode`: use :c:func:`PyUnicode_AsEncodedObject` 2307* :c:func:`PyUnicode_EncodeUTF7` 2308* :c:func:`PyUnicode_EncodeUTF8`: use :c:func:`PyUnicode_AsUTF8` or 2309 :c:func:`PyUnicode_AsUTF8String` 2310* :c:func:`PyUnicode_EncodeUTF32` 2311* :c:func:`PyUnicode_EncodeUTF16` 2312* :c:func:`PyUnicode_EncodeUnicodeEscape:` use 2313 :c:func:`PyUnicode_AsUnicodeEscapeString` 2314* :c:func:`PyUnicode_EncodeRawUnicodeEscape:` use 2315 :c:func:`PyUnicode_AsRawUnicodeEscapeString` 2316* :c:func:`PyUnicode_EncodeLatin1`: use :c:func:`PyUnicode_AsLatin1String` 2317* :c:func:`PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString` 2318* :c:func:`PyUnicode_EncodeCharmap` 2319* :c:func:`PyUnicode_TranslateCharmap` 2320* :c:func:`PyUnicode_EncodeMBCS`: use :c:func:`PyUnicode_AsMBCSString` or 2321 :c:func:`PyUnicode_EncodeCodePage` (with ``CP_ACP`` code_page) 2322* :c:func:`PyUnicode_EncodeDecimal`, 2323 :c:func:`PyUnicode_TransformDecimalToASCII` 2324 2325 2326Deprecated features 2327------------------- 2328 2329The :mod:`array` module's ``'u'`` format code is now deprecated and will be 2330removed in Python 4 together with the rest of the (:c:type:`Py_UNICODE`) API. 2331 2332 2333Porting to Python 3.3 2334===================== 2335 2336This section lists previously described changes and other bugfixes 2337that may require changes to your code. 2338 2339.. _portingpythoncode: 2340 2341Porting Python code 2342------------------- 2343 2344* Hash randomization is enabled by default. Set the :envvar:`PYTHONHASHSEED` 2345 environment variable to ``0`` to disable hash randomization. See also the 2346 :meth:`object.__hash__` method. 2347 2348* :issue:`12326`: On Linux, sys.platform doesn't contain the major version 2349 anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending 2350 on the Linux version used to build Python. Replace sys.platform == 'linux2' 2351 with sys.platform.startswith('linux'), or directly sys.platform == 'linux' if 2352 you don't need to support older Python versions. 2353 2354* :issue:`13847`, :issue:`14180`: :mod:`time` and :mod:`datetime`: 2355 :exc:`OverflowError` is now raised instead of :exc:`ValueError` if a 2356 timestamp is out of range. :exc:`OSError` is now raised if C functions 2357 :c:func:`gmtime` or :c:func:`localtime` failed. 2358 2359* The default finders used by import now utilize a cache of what is contained 2360 within a specific directory. If you create a Python source file or sourceless 2361 bytecode file, make sure to call :func:`importlib.invalidate_caches` to clear 2362 out the cache for the finders to notice the new file. 2363 2364* :exc:`ImportError` now uses the full name of the module that was attempted to 2365 be imported. Doctests that check ImportErrors' message will need to be 2366 updated to use the full name of the module instead of just the tail of the 2367 name. 2368 2369* The *index* argument to :func:`__import__` now defaults to 0 instead of -1 2370 and no longer support negative values. It was an oversight when :pep:`328` was 2371 implemented that the default value remained -1. If you need to continue to 2372 perform a relative import followed by an absolute import, then perform the 2373 relative import using an index of 1, followed by another import using an 2374 index of 0. It is preferred, though, that you use 2375 :func:`importlib.import_module` rather than call :func:`__import__` directly. 2376 2377* :func:`__import__` no longer allows one to use an index value other than 0 2378 for top-level modules. E.g. ``__import__('sys', level=1)`` is now an error. 2379 2380* Because :attr:`sys.meta_path` and :attr:`sys.path_hooks` now have finders on 2381 them by default, you will most likely want to use :meth:`list.insert` instead 2382 of :meth:`list.append` to add to those lists. 2383 2384* Because ``None`` is now inserted into :attr:`sys.path_importer_cache`, if you 2385 are clearing out entries in the dictionary of paths that do not have a 2386 finder, you will need to remove keys paired with values of ``None`` **and** 2387 :class:`imp.NullImporter` to be backwards-compatible. This will lead to extra 2388 overhead on older versions of Python that re-insert ``None`` into 2389 :attr:`sys.path_importer_cache` where it represents the use of implicit 2390 finders, but semantically it should not change anything. 2391 2392* :class:`importlib.abc.Finder` no longer specifies a `find_module()` abstract 2393 method that must be implemented. If you were relying on subclasses to 2394 implement that method, make sure to check for the method's existence first. 2395 You will probably want to check for `find_loader()` first, though, in the 2396 case of working with :term:`path entry finders <path entry finder>`. 2397 2398* :mod:`pkgutil` has been converted to use :mod:`importlib` internally. This 2399 eliminates many edge cases where the old behaviour of the PEP 302 import 2400 emulation failed to match the behaviour of the real import system. The 2401 import emulation itself is still present, but is now deprecated. The 2402 :func:`pkgutil.iter_importers` and :func:`pkgutil.walk_packages` functions 2403 special case the standard import hooks so they are still supported even 2404 though they do not provide the non-standard ``iter_modules()`` method. 2405 2406* A longstanding RFC-compliance bug (:issue:`1079`) in the parsing done by 2407 :func:`email.header.decode_header` has been fixed. Code that uses the 2408 standard idiom to convert encoded headers into unicode 2409 (``str(make_header(decode_header(h))``) will see no change, but code that 2410 looks at the individual tuples returned by decode_header will see that 2411 whitespace that precedes or follows ``ASCII`` sections is now included in the 2412 ``ASCII`` section. Code that builds headers using ``make_header`` should 2413 also continue to work without change, since ``make_header`` continues to add 2414 whitespace between ``ASCII`` and non-``ASCII`` sections if it is not already 2415 present in the input strings. 2416 2417* :func:`email.utils.formataddr` now does the correct content transfer 2418 encoding when passed non-``ASCII`` display names. Any code that depended on 2419 the previous buggy behavior that preserved the non-``ASCII`` unicode in the 2420 formatted output string will need to be changed (:issue:`1690608`). 2421 2422* :meth:`poplib.POP3.quit` may now raise protocol errors like all other 2423 ``poplib`` methods. Code that assumes ``quit`` does not raise 2424 :exc:`poplib.error_proto` errors may need to be changed if errors on ``quit`` 2425 are encountered by a particular application (:issue:`11291`). 2426 2427* The ``strict`` argument to :class:`email.parser.Parser`, deprecated since 2428 Python 2.4, has finally been removed. 2429 2430* The deprecated method ``unittest.TestCase.assertSameElements`` has been 2431 removed. 2432 2433* The deprecated variable ``time.accept2dyear`` has been removed. 2434 2435* The deprecated ``Context._clamp`` attribute has been removed from the 2436 :mod:`decimal` module. It was previously replaced by the public attribute 2437 :attr:`~decimal.Context.clamp`. (See :issue:`8540`.) 2438 2439* The undocumented internal helper class ``SSLFakeFile`` has been removed 2440 from :mod:`smtplib`, since its functionality has long been provided directly 2441 by :meth:`socket.socket.makefile`. 2442 2443* Passing a negative value to :func:`time.sleep` on Windows now raises an 2444 error instead of sleeping forever. It has always raised an error on posix. 2445 2446* The ``ast.__version__`` constant has been removed. If you need to 2447 make decisions affected by the AST version, use :attr:`sys.version_info` 2448 to make the decision. 2449 2450* Code that used to work around the fact that the :mod:`threading` module used 2451 factory functions by subclassing the private classes will need to change to 2452 subclass the now-public classes. 2453 2454* The undocumented debugging machinery in the threading module has been 2455 removed, simplifying the code. This should have no effect on production 2456 code, but is mentioned here in case any application debug frameworks were 2457 interacting with it (:issue:`13550`). 2458 2459 2460Porting C code 2461-------------- 2462 2463* In the course of changes to the buffer API the undocumented 2464 :c:member:`~Py_buffer.smalltable` member of the 2465 :c:type:`Py_buffer` structure has been removed and the 2466 layout of the :c:type:`PyMemoryViewObject` has changed. 2467 2468 All extensions relying on the relevant parts in ``memoryobject.h`` 2469 or ``object.h`` must be rebuilt. 2470 2471* Due to :ref:`PEP 393 <pep-393>`, the :c:type:`Py_UNICODE` type and all 2472 functions using this type are deprecated (but will stay available for 2473 at least five years). If you were using low-level Unicode APIs to 2474 construct and access unicode objects and you want to benefit of the 2475 memory footprint reduction provided by PEP 393, you have to convert 2476 your code to the new :doc:`Unicode API <../c-api/unicode>`. 2477 2478 However, if you only have been using high-level functions such as 2479 :c:func:`PyUnicode_Concat()`, :c:func:`PyUnicode_Join` or 2480 :c:func:`PyUnicode_FromFormat()`, your code will automatically take 2481 advantage of the new unicode representations. 2482 2483* :c:func:`PyImport_GetMagicNumber` now returns ``-1`` upon failure. 2484 2485* As a negative value for the *level* argument to :func:`__import__` is no 2486 longer valid, the same now holds for :c:func:`PyImport_ImportModuleLevel`. 2487 This also means that the value of *level* used by 2488 :c:func:`PyImport_ImportModuleEx` is now ``0`` instead of ``-1``. 2489 2490 2491Building C extensions 2492--------------------- 2493 2494* The range of possible file names for C extensions has been narrowed. 2495 Very rarely used spellings have been suppressed: under POSIX, files 2496 named ``xxxmodule.so``, ``xxxmodule.abi3.so`` and 2497 ``xxxmodule.cpython-*.so`` are no longer recognized as implementing 2498 the ``xxx`` module. If you had been generating such files, you have 2499 to switch to the other spellings (i.e., remove the ``module`` string 2500 from the file names). 2501 2502 (implemented in :issue:`14040`.) 2503 2504 2505Command Line Switch Changes 2506--------------------------- 2507 2508* The -Q command-line flag and related artifacts have been removed. Code 2509 checking sys.flags.division_warning will need updating. 2510 2511 (:issue:`10998`, contributed by Éric Araujo.) 2512 2513* When :program:`python` is started with :option:`-S`, ``import site`` 2514 will no longer add site-specific paths to the module search paths. In 2515 previous versions, it did. 2516 2517 (:issue:`11591`, contributed by Carl Meyer with editions by Éric Araujo.) 2518