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