blob: ccfdbdce03e99fb94a86c6ff188c62362a378b41 [file] [log] [blame]
Guido van Rossum715287f2008-12-02 22:34:15 +00001.. _whats-new-in-2.6:
2
Georg Brandl116aa622007-08-15 14:28:22 +00003****************************
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00004 What's New in Python 2.6
Georg Brandl116aa622007-08-15 14:28:22 +00005****************************
6
Christian Heimes02781dc2008-03-21 01:11:52 +00007.. XXX add trademark info for Apple, Microsoft, SourceForge.
Thomas Wouters1b7f8912007-09-19 03:06:30 +00008
Benjamin Petersondcc1e112008-09-03 22:22:18 +00009:Author: A.M. Kuchling (amk at amk.ca)
Georg Brandl116aa622007-08-15 14:28:22 +000010
Benjamin Petersonf10a79a2008-10-11 00:49:57 +000011.. $Id$
Christian Heimes5b5e81c2007-12-31 16:14:33 +000012 Rules for maintenance:
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000013
Christian Heimes5b5e81c2007-12-31 16:14:33 +000014 * Anyone can add text to this document. Do not spend very much time
15 on the wording of your changes, because your text will probably
16 get rewritten to some degree.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000017
Christian Heimes5b5e81c2007-12-31 16:14:33 +000018 * The maintainer will go through Misc/NEWS periodically and add
19 changes; it's therefore more important to add your changes to
20 Misc/NEWS than to this file.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000021
Christian Heimes5b5e81c2007-12-31 16:14:33 +000022 * This is not a complete list of every single change; completeness
23 is the purpose of Misc/NEWS. Some changes I consider too small
24 or esoteric to include. If such a change is added to the text,
25 I'll just remove it. (This is another reason you shouldn't spend
26 too much time on writing your addition.)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000027
Christian Heimes5b5e81c2007-12-31 16:14:33 +000028 * If you want to draw your new text to the attention of the
29 maintainer, add 'XXX' to the beginning of the paragraph or
30 section.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000031
Christian Heimes5b5e81c2007-12-31 16:14:33 +000032 * It's OK to just add a fragmentary note about a change. For
33 example: "XXX Describe the transmogrify() function added to the
34 socket module." The maintainer will research the change and
35 write the necessary text.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000036
Christian Heimes5b5e81c2007-12-31 16:14:33 +000037 * You can comment out your additions if you like, but it's not
38 necessary (especially when a final release is some months away).
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000039
Christian Heimes5b5e81c2007-12-31 16:14:33 +000040 * Credit the author of a patch or bugfix. Just the name is
41 sufficient; the e-mail address isn't necessary.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000042
Alexandre Vassalotti6461e102008-05-15 22:09:29 +000043 * It's helpful to add the bug/patch number in a parenthetical comment.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000044
Christian Heimes5b5e81c2007-12-31 16:14:33 +000045 XXX Describe the transmogrify() function added to the socket
46 module.
Christian Heimes33fe8092008-04-13 13:53:33 +000047 (Contributed by P.Y. Developer; :issue:`12345`.)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000048
Alexandre Vassalotti6461e102008-05-15 22:09:29 +000049 This saves the maintainer some effort going through the SVN logs
Christian Heimes5b5e81c2007-12-31 16:14:33 +000050 when researching a change.
Georg Brandl116aa622007-08-15 14:28:22 +000051
Benjamin Petersonf10a79a2008-10-11 00:49:57 +000052This article explains the new features in Python 2.6, released on October 1
532008. The release schedule is described in :pep:`361`.
Georg Brandl116aa622007-08-15 14:28:22 +000054
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000055The major theme of Python 2.6 is preparing the migration path to
56Python 3.0, a major redesign of the language. Whenever possible,
57Python 2.6 incorporates new features and syntax from 3.0 while
58remaining compatible with existing code by not removing older features
59or syntax. When it's not possible to do that, Python 2.6 tries to do
60what it can, adding compatibility functions in a
Martin Panterb8c5f542016-10-30 04:20:23 +000061:mod:`future_builtins` module and a :option:`!-3` switch to warn about
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000062usages that will become unsupported in 3.0.
63
64Some significant new packages have been added to the standard library,
Benjamin Petersonae5360b2008-09-08 23:05:23 +000065such as the :mod:`multiprocessing` and :mod:`json` modules, but
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000066there aren't many new features that aren't related to Python 3.0 in
67some way.
68
69Python 2.6 also sees a number of improvements and bugfixes throughout
70the source. A search through the change logs finds there were 259
71patches applied and 612 bugs fixed between Python 2.5 and 2.6. Both
72figures are likely to be underestimates.
73
Christian Heimes33fe8092008-04-13 13:53:33 +000074This article doesn't attempt to provide a complete specification of
75the new features, but instead provides a convenient overview. For
76full details, you should refer to the documentation for Python 2.6. If
Alexandre Vassalotti6461e102008-05-15 22:09:29 +000077you want to understand the rationale for the design and
78implementation, refer to the PEP for a particular new feature.
79Whenever possible, "What's New in Python" links to the bug/patch item
80for each change.
Georg Brandl116aa622007-08-15 14:28:22 +000081
Christian Heimes5b5e81c2007-12-31 16:14:33 +000082.. Compare with previous release in 2 - 3 sentences here.
83 add hyperlink when the documentation becomes available online.
Georg Brandl116aa622007-08-15 14:28:22 +000084
Christian Heimes5b5e81c2007-12-31 16:14:33 +000085.. ========================================================================
86.. Large, PEP-level features and changes should be described here.
Christian Heimes5b5e81c2007-12-31 16:14:33 +000087.. ========================================================================
Georg Brandl116aa622007-08-15 14:28:22 +000088
Thomas Wouters1b7f8912007-09-19 03:06:30 +000089Python 3.0
90================
91
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000092The development cycle for Python versions 2.6 and 3.0 was
93synchronized, with the alpha and beta releases for both versions being
94made on the same days. The development of 3.0 has influenced many
95features in 2.6.
Georg Brandl9afde1c2007-11-01 20:32:30 +000096
97Python 3.0 is a far-ranging redesign of Python that breaks
98compatibility with the 2.x series. This means that existing Python
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000099code will need some conversion in order to run on
Georg Brandl9afde1c2007-11-01 20:32:30 +0000100Python 3.0. However, not all the changes in 3.0 necessarily break
101compatibility. In cases where new features won't cause existing code
102to break, they've been backported to 2.6 and are described in this
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000103document in the appropriate place. Some of the 3.0-derived features
Georg Brandl9afde1c2007-11-01 20:32:30 +0000104are:
105
106* A :meth:`__complex__` method for converting objects to a complex number.
107* Alternate syntax for catching exceptions: ``except TypeError as exc``.
108* The addition of :func:`functools.reduce` as a synonym for the built-in
109 :func:`reduce` function.
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000110
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000111Python 3.0 adds several new built-in functions and changes the
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000112semantics of some existing builtins. Functions that are new in 3.0
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000113such as :func:`bin` have simply been added to Python 2.6, but existing
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000114builtins haven't been changed; instead, the :mod:`future_builtins`
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000115module has versions with the new 3.0 semantics. Code written to be
116compatible with 3.0 can do ``from future_builtins import hex, map`` as
117necessary.
118
Martin Panterb8c5f542016-10-30 04:20:23 +0000119A new command-line switch, :option:`!-3`, enables warnings
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000120about features that will be removed in Python 3.0. You can run code
121with this switch to see how much work will be necessary to port
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000122code to 3.0. The value of this switch is available
123to Python code as the boolean variable :data:`sys.py3kwarning`,
Georg Brandl60203b42010-10-06 10:11:56 +0000124and to C extension code as :c:data:`Py_Py3kWarningFlag`.
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000125
126.. seealso::
127
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000128 The 3xxx series of PEPs, which contains proposals for Python 3.0.
129 :pep:`3000` describes the development process for Python 3.0.
130 Start with :pep:`3100` that describes the general goals for Python
131 3.0, and then explore the higher-numbered PEPS that propose
132 specific features.
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000133
Christian Heimes90aa7642007-12-19 02:45:37 +0000134
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000135Changes to the Development Process
Christian Heimes90aa7642007-12-19 02:45:37 +0000136==================================================
137
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000138While 2.6 was being developed, the Python development process
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000139underwent two significant changes: we switched from SourceForge's
140issue tracker to a customized Roundup installation, and the
141documentation was converted from LaTeX to reStructuredText.
Christian Heimes90aa7642007-12-19 02:45:37 +0000142
143
144New Issue Tracker: Roundup
145--------------------------------------------------
146
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000147For a long time, the Python developers had been growing increasingly
Christian Heimes02781dc2008-03-21 01:11:52 +0000148annoyed by SourceForge's bug tracker. SourceForge's hosted solution
149doesn't permit much customization; for example, it wasn't possible to
150customize the life cycle of issues.
Christian Heimes90aa7642007-12-19 02:45:37 +0000151
Christian Heimes02781dc2008-03-21 01:11:52 +0000152The infrastructure committee of the Python Software Foundation
153therefore posted a call for issue trackers, asking volunteers to set
154up different products and import some of the bugs and patches from
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000155SourceForge. Four different trackers were examined: `Jira
Georg Brandl5d941342016-02-26 19:37:12 +0100156<https://www.atlassian.com/software/jira/>`__,
Serhiy Storchaka6dff0202016-05-07 10:49:07 +0300157`Launchpad <https://launchpad.net/>`__,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000158`Roundup <http://roundup.sourceforge.net/>`__, and
Serhiy Storchaka6dff0202016-05-07 10:49:07 +0300159`Trac <https://trac.edgewall.org/>`__.
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +0000160The committee eventually settled on Jira
Christian Heimes02781dc2008-03-21 01:11:52 +0000161and Roundup as the two candidates. Jira is a commercial product that
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000162offers no-cost hosted instances to free-software projects; Roundup
Christian Heimes02781dc2008-03-21 01:11:52 +0000163is an open-source project that requires volunteers
164to administer it and a server to host it.
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000165
Christian Heimes02781dc2008-03-21 01:11:52 +0000166After posting a call for volunteers, a new Roundup installation was
Georg Brandle73778c2014-10-29 08:36:35 +0100167set up at https://bugs.python.org. One installation of Roundup can
Christian Heimes02781dc2008-03-21 01:11:52 +0000168host multiple trackers, and this server now also hosts issue trackers
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000169for Jython and for the Python web site. It will surely find
Christian Heimes33fe8092008-04-13 13:53:33 +0000170other uses in the future. Where possible,
171this edition of "What's New in Python" links to the bug/patch
172item for each change.
Christian Heimes02781dc2008-03-21 01:11:52 +0000173
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000174Hosting of the Python bug tracker is kindly provided by
Sanyam Khurana338cd832018-01-20 05:55:37 +0530175`Upfront Systems <http://www.upfrontsoftware.co.za>`__
Antoine Pitroufbd4f802012-08-11 16:51:50 +0200176of Stellenbosch, South Africa. Martin von Löwis put a
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +0000177lot of effort into importing existing bugs and patches from
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000178SourceForge; his scripts for this import operation are at
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000179http://svn.python.org/view/tracker/importer/ and may be useful to
Benjamin Peterson206e3072008-10-19 14:07:49 +0000180other projects wishing to move from SourceForge to Roundup.
Christian Heimes02781dc2008-03-21 01:11:52 +0000181
182.. seealso::
183
Georg Brandle73778c2014-10-29 08:36:35 +0100184 https://bugs.python.org
Martin v. Löwis2a241ca2008-04-05 18:58:09 +0000185 The Python bug tracker.
Christian Heimes02781dc2008-03-21 01:11:52 +0000186
Martin v. Löwis2a241ca2008-04-05 18:58:09 +0000187 http://bugs.jython.org:
188 The Jython bug tracker.
Christian Heimes02781dc2008-03-21 01:11:52 +0000189
Martin v. Löwis2a241ca2008-04-05 18:58:09 +0000190 http://roundup.sourceforge.net/
191 Roundup downloads and documentation.
Christian Heimes02781dc2008-03-21 01:11:52 +0000192
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000193 http://svn.python.org/view/tracker/importer/
Antoine Pitroufbd4f802012-08-11 16:51:50 +0200194 Martin von Löwis's conversion scripts.
Christian Heimes90aa7642007-12-19 02:45:37 +0000195
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000196New Documentation Format: reStructuredText Using Sphinx
Martin v. Löwis2a241ca2008-04-05 18:58:09 +0000197-----------------------------------------------------------
Christian Heimes90aa7642007-12-19 02:45:37 +0000198
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000199The Python documentation was written using LaTeX since the project
200started around 1989. In the 1980s and early 1990s, most documentation
201was printed out for later study, not viewed online. LaTeX was widely
202used because it provided attractive printed output while remaining
Benjamin Petersondcc1e112008-09-03 22:22:18 +0000203straightforward to write once the basic rules of the markup were
Christian Heimes02781dc2008-03-21 01:11:52 +0000204learned.
Christian Heimes90aa7642007-12-19 02:45:37 +0000205
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000206Today LaTeX is still used for writing publications destined for
207printing, but the landscape for programming tools has shifted. We no
208longer print out reams of documentation; instead, we browse through it
209online and HTML has become the most important format to support.
210Unfortunately, converting LaTeX to HTML is fairly complicated and Fred
211L. Drake Jr., the long-time Python documentation editor, spent a lot
212of time maintaining the conversion process. Occasionally people would
213suggest converting the documentation into SGML and later XML, but
214performing a good conversion is a major task and no one ever committed
215the time required to finish the job.
Christian Heimes90aa7642007-12-19 02:45:37 +0000216
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000217During the 2.6 development cycle, Georg Brandl put a lot of effort
218into building a new toolchain for processing the documentation. The
219resulting package is called Sphinx, and is available from
Georg Brandl5d941342016-02-26 19:37:12 +0100220http://sphinx-doc.org/.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000221
222Sphinx concentrates on HTML output, producing attractively styled and
223modern HTML; printed output is still supported through conversion to
224LaTeX. The input format is reStructuredText, a markup syntax
225supporting custom extensions and directives that is commonly used in
226the Python community.
227
228Sphinx is a standalone package that can be used for writing, and
229almost two dozen other projects
Georg Brandle73778c2014-10-29 08:36:35 +0100230(`listed on the Sphinx web site <http://sphinx-doc.org/examples.html>`__)
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000231have adopted Sphinx as their documentation tool.
Christian Heimes90aa7642007-12-19 02:45:37 +0000232
233.. seealso::
234
Lisa Hewus Fresh384899d2017-08-30 09:37:43 -0700235 `Documenting Python <https://devguide.python.org/documenting/>`__
Martin v. Löwis2a241ca2008-04-05 18:58:09 +0000236 Describes how to write for Python's documentation.
Christian Heimes90aa7642007-12-19 02:45:37 +0000237
Georg Brandle73778c2014-10-29 08:36:35 +0100238 `Sphinx <http://sphinx-doc.org/>`__
Martin v. Löwis2a241ca2008-04-05 18:58:09 +0000239 Documentation and code for the Sphinx toolchain.
240
Georg Brandlb7354a62014-10-29 10:57:37 +0100241 `Docutils <http://docutils.sourceforge.net>`__
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000242 The underlying reStructuredText parser and toolset.
Christian Heimes90aa7642007-12-19 02:45:37 +0000243
244
Guido van Rossum715287f2008-12-02 22:34:15 +0000245.. _pep-0343:
246
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000247PEP 343: The 'with' statement
248=============================
249
250The previous version, Python 2.5, added the ':keyword:`with`'
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000251statement as an optional feature, to be enabled by a ``from __future__
Guido van Rossumb00324f2007-12-04 01:13:14 +0000252import with_statement`` directive. In 2.6 the statement no longer needs to
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000253be specially enabled; this means that :keyword:`with` is now always a
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000254keyword. The rest of this section is a copy of the corresponding
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000255section from the "What's New in Python 2.5" document; if you're
256familiar with the ':keyword:`with`' statement
257from Python 2.5, you can skip this section.
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000258
259The ':keyword:`with`' statement clarifies code that previously would use
260``try...finally`` blocks to ensure that clean-up code is executed. In this
261section, I'll discuss the statement as it will commonly be used. In the next
262section, I'll examine the implementation details and show how to write objects
263for use with this statement.
264
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000265The ':keyword:`with`' statement is a control-flow structure whose basic
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000266structure is::
267
268 with expression [as variable]:
269 with-block
270
271The expression is evaluated, and it should result in an object that supports the
272context management protocol (that is, has :meth:`__enter__` and :meth:`__exit__`
Benjamin Petersone0124bd2009-03-09 21:04:33 +0000273methods).
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000274
275The object's :meth:`__enter__` is called before *with-block* is executed and
276therefore can run set-up code. It also may return a value that is bound to the
277name *variable*, if given. (Note carefully that *variable* is *not* assigned
278the result of *expression*.)
279
280After execution of the *with-block* is finished, the object's :meth:`__exit__`
281method is called, even if the block raised an exception, and can therefore run
282clean-up code.
283
284Some standard Python objects now support the context management protocol and can
285be used with the ':keyword:`with`' statement. File objects are one example::
286
287 with open('/etc/passwd', 'r') as f:
288 for line in f:
289 print line
290 ... more processing code ...
291
292After this statement has executed, the file object in *f* will have been
Martin Panter8f137832017-01-14 08:24:20 +0000293automatically closed, even if the :keyword:`for` loop raised an exception
294part-way through the block.
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000295
296.. note::
297
298 In this case, *f* is the same object created by :func:`open`, because
299 :meth:`file.__enter__` returns *self*.
300
301The :mod:`threading` module's locks and condition variables also support the
302':keyword:`with`' statement::
303
304 lock = threading.Lock()
305 with lock:
306 # Critical section of code
307 ...
308
309The lock is acquired before the block is executed and always released once the
310block is complete.
311
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000312The :func:`localcontext` function in the :mod:`decimal` module makes it easy
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000313to save and restore the current decimal context, which encapsulates the desired
314precision and rounding characteristics for computations::
315
316 from decimal import Decimal, Context, localcontext
317
318 # Displays with default precision of 28 digits
319 v = Decimal('578')
320 print v.sqrt()
321
322 with localcontext(Context(prec=16)):
323 # All code in this block uses a precision of 16 digits.
324 # The original context is restored on exiting the block.
325 print v.sqrt()
326
327
328.. _new-26-context-managers:
329
330Writing Context Managers
331------------------------
332
333Under the hood, the ':keyword:`with`' statement is fairly complicated. Most
334people will only use ':keyword:`with`' in company with existing objects and
335don't need to know these details, so you can skip the rest of this section if
336you like. Authors of new objects will need to understand the details of the
337underlying implementation and should keep reading.
338
339A high-level explanation of the context management protocol is:
340
341* The expression is evaluated and should result in an object called a "context
342 manager". The context manager must have :meth:`__enter__` and :meth:`__exit__`
343 methods.
344
345* The context manager's :meth:`__enter__` method is called. The value returned
Christian Heimes2c181612007-12-17 20:04:13 +0000346 is assigned to *VAR*. If no ``as VAR`` clause is present, the value is simply
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000347 discarded.
348
349* The code in *BLOCK* is executed.
350
Georg Brandlc0e22b72010-03-14 10:51:01 +0000351* If *BLOCK* raises an exception, the context manager's :meth:`__exit__` method
352 is called with three arguments, the exception details (``type, value, traceback``,
353 the same values returned by :func:`sys.exc_info`, which can also be ``None``
354 if no exception occurred). The method's return value controls whether an exception
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000355 is re-raised: any false value re-raises the exception, and ``True`` will result
356 in suppressing it. You'll only rarely want to suppress the exception, because
357 if you do the author of the code containing the ':keyword:`with`' statement will
358 never realize anything went wrong.
359
360* If *BLOCK* didn't raise an exception, the :meth:`__exit__` method is still
361 called, but *type*, *value*, and *traceback* are all ``None``.
362
363Let's think through an example. I won't present detailed code but will only
364sketch the methods necessary for a database that supports transactions.
365
366(For people unfamiliar with database terminology: a set of changes to the
367database are grouped into a transaction. Transactions can be either committed,
368meaning that all the changes are written into the database, or rolled back,
369meaning that the changes are all discarded and the database is unchanged. See
370any database textbook for more information.)
371
372Let's assume there's an object representing a database connection. Our goal will
373be to let the user write code like this::
374
375 db_connection = DatabaseConnection()
376 with db_connection as cursor:
377 cursor.execute('insert into ...')
378 cursor.execute('delete from ...')
379 # ... more operations ...
380
381The transaction should be committed if the code in the block runs flawlessly or
382rolled back if there's an exception. Here's the basic interface for
383:class:`DatabaseConnection` that I'll assume::
384
385 class DatabaseConnection:
386 # Database interface
Christian Heimes2c181612007-12-17 20:04:13 +0000387 def cursor(self):
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000388 "Returns a cursor object and starts a new transaction"
Christian Heimes2c181612007-12-17 20:04:13 +0000389 def commit(self):
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000390 "Commits current transaction"
Christian Heimes2c181612007-12-17 20:04:13 +0000391 def rollback(self):
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000392 "Rolls back current transaction"
393
394The :meth:`__enter__` method is pretty easy, having only to start a new
395transaction. For this application the resulting cursor object would be a useful
396result, so the method will return it. The user can then add ``as cursor`` to
397their ':keyword:`with`' statement to bind the cursor to a variable name. ::
398
399 class DatabaseConnection:
400 ...
Christian Heimes2c181612007-12-17 20:04:13 +0000401 def __enter__(self):
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000402 # Code to start a new transaction
403 cursor = self.cursor()
404 return cursor
405
406The :meth:`__exit__` method is the most complicated because it's where most of
407the work has to be done. The method has to check if an exception occurred. If
408there was no exception, the transaction is committed. The transaction is rolled
409back if there was an exception.
410
411In the code below, execution will just fall off the end of the function,
412returning the default value of ``None``. ``None`` is false, so the exception
413will be re-raised automatically. If you wished, you could be more explicit and
414add a :keyword:`return` statement at the marked location. ::
415
416 class DatabaseConnection:
417 ...
Christian Heimes2c181612007-12-17 20:04:13 +0000418 def __exit__(self, type, value, tb):
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000419 if tb is None:
420 # No exception, so commit
421 self.commit()
422 else:
423 # Exception occurred, so rollback.
424 self.rollback()
425 # return False
426
427
Guido van Rossum715287f2008-12-02 22:34:15 +0000428.. _new-module-contextlib:
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000429
430The contextlib module
431---------------------
432
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000433The :mod:`contextlib` module provides some functions and a decorator that
434are useful when writing objects for use with the ':keyword:`with`' statement.
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000435
436The decorator is called :func:`contextmanager`, and lets you write a single
437generator function instead of defining a new class. The generator should yield
438exactly one value. The code up to the :keyword:`yield` will be executed as the
439:meth:`__enter__` method, and the value yielded will be the method's return
440value that will get bound to the variable in the ':keyword:`with`' statement's
441:keyword:`as` clause, if any. The code after the :keyword:`yield` will be
442executed in the :meth:`__exit__` method. Any exception raised in the block will
443be raised by the :keyword:`yield` statement.
444
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000445Using this decorator, our database example from the previous section
446could be written as::
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000447
448 from contextlib import contextmanager
449
450 @contextmanager
Christian Heimes2c181612007-12-17 20:04:13 +0000451 def db_transaction(connection):
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000452 cursor = connection.cursor()
453 try:
454 yield cursor
455 except:
456 connection.rollback()
457 raise
458 else:
459 connection.commit()
460
461 db = DatabaseConnection()
462 with db_transaction(db) as cursor:
463 ...
464
Georg Brandlc0e22b72010-03-14 10:51:01 +0000465The :mod:`contextlib` module also has a ``nested(mgr1, mgr2, ...)`` function
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000466that combines a number of context managers so you don't need to write nested
467':keyword:`with`' statements. In this example, the single ':keyword:`with`'
468statement both starts a database transaction and acquires a thread lock::
469
470 lock = threading.Lock()
471 with nested (db_transaction(db), lock) as (cursor, locked):
472 ...
473
Georg Brandlc0e22b72010-03-14 10:51:01 +0000474Finally, the :func:`closing` function returns its argument so that it can be
475bound to a variable, and calls the argument's ``.close()`` method at the end
476of the block. ::
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000477
478 import urllib, sys
479 from contextlib import closing
480
481 with closing(urllib.urlopen('http://www.yahoo.com')) as f:
482 for line in f:
483 sys.stdout.write(line)
484
485
486.. seealso::
487
488 :pep:`343` - The "with" statement
489 PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland,
490 Guido van Rossum, and Neal Norwitz. The PEP shows the code generated for a
491 ':keyword:`with`' statement, which can be helpful in learning how the statement
492 works.
493
494 The documentation for the :mod:`contextlib` module.
495
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000496.. ======================================================================
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000497
Christian Heimes90aa7642007-12-19 02:45:37 +0000498.. _pep-0366:
499
500PEP 366: Explicit Relative Imports From a Main Module
501============================================================
502
503Python's :option:`-m` switch allows running a module as a script.
504When you ran a module that was located inside a package, relative
505imports didn't work correctly.
506
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000507The fix for Python 2.6 adds a :attr:`__package__` attribute to
508modules. When this attribute is present, relative imports will be
509relative to the value of this attribute instead of the
510:attr:`__name__` attribute.
511
512PEP 302-style importers can then set :attr:`__package__` as necessary.
513The :mod:`runpy` module that implements the :option:`-m` switch now
514does this, so relative imports will now work correctly in scripts
515running from inside a package.
Christian Heimes90aa7642007-12-19 02:45:37 +0000516
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000517.. ======================================================================
Christian Heimes90aa7642007-12-19 02:45:37 +0000518
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000519.. _pep-0370:
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000520
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000521PEP 370: Per-user ``site-packages`` Directory
522=====================================================
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000523
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000524When you run Python, the module search path ``sys.path`` usually
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000525includes a directory whose path ends in ``"site-packages"``. This
526directory is intended to hold locally-installed packages available to
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000527all users using a machine or a particular site installation.
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000528
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000529Python 2.6 introduces a convention for user-specific site directories.
530The directory varies depending on the platform:
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000531
Georg Brandlc575c902008-09-13 17:46:05 +0000532* Unix and Mac OS X: :file:`~/.local/`
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000533* Windows: :file:`%APPDATA%/Python`
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000534
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000535Within this directory, there will be version-specific subdirectories,
Georg Brandlc575c902008-09-13 17:46:05 +0000536such as :file:`lib/python2.6/site-packages` on Unix/Mac OS and
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000537:file:`Python26/site-packages` on Windows.
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000538
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000539If you don't like the default directory, it can be overridden by an
540environment variable. :envvar:`PYTHONUSERBASE` sets the root
541directory used for all Python versions supporting this feature. On
542Windows, the directory for application-specific data can be changed by
543setting the :envvar:`APPDATA` environment variable. You can also
544modify the :file:`site.py` file for your Python installation.
545
546The feature can be disabled entirely by running Python with the
547:option:`-s` option or setting the :envvar:`PYTHONNOUSERSITE`
548environment variable.
549
550.. seealso::
551
552 :pep:`370` - Per-user ``site-packages`` Directory
553 PEP written and implemented by Christian Heimes.
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000554
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000555
Guido van Rossum7736b5b2008-01-15 21:44:53 +0000556.. ======================================================================
557
Amaury Forgeot d'Arc35c86582008-06-17 21:11:29 +0000558.. _pep-0371:
559
560PEP 371: The ``multiprocessing`` Package
561=====================================================
562
Georg Brandl2ee470f2008-07-16 12:55:28 +0000563The new :mod:`multiprocessing` package lets Python programs create new
564processes that will perform a computation and return a result to the
565parent. The parent and child processes can communicate using queues
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000566and pipes, synchronize their operations using locks and semaphores,
567and can share simple arrays of data.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000568
Georg Brandl2ee470f2008-07-16 12:55:28 +0000569The :mod:`multiprocessing` module started out as an exact emulation of
570the :mod:`threading` module using processes instead of threads. That
571goal was discarded along the path to Python 2.6, but the general
572approach of the module is still similar. The fundamental class
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000573is the :class:`Process`, which is passed a callable object and
574a collection of arguments. The :meth:`start` method
Georg Brandl2ee470f2008-07-16 12:55:28 +0000575sets the callable running in a subprocess, after which you can call
576the :meth:`is_alive` method to check whether the subprocess is still running
577and the :meth:`join` method to wait for the process to exit.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000578
Georg Brandl2ee470f2008-07-16 12:55:28 +0000579Here's a simple example where the subprocess will calculate a
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000580factorial. The function doing the calculation is written strangely so
581that it takes significantly longer when the input argument is a
Georg Brandl2ee470f2008-07-16 12:55:28 +0000582multiple of 4.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000583
Georg Brandl2ee470f2008-07-16 12:55:28 +0000584::
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000585
Georg Brandl2ee470f2008-07-16 12:55:28 +0000586 import time
587 from multiprocessing import Process, Queue
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000588
Georg Brandl2ee470f2008-07-16 12:55:28 +0000589
590 def factorial(queue, N):
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000591 "Compute a factorial."
592 # If N is a multiple of 4, this function will take much longer.
593 if (N % 4) == 0:
594 time.sleep(.05 * N/4)
Georg Brandl2ee470f2008-07-16 12:55:28 +0000595
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000596 # Calculate the result
597 fact = 1L
598 for i in range(1, N+1):
599 fact = fact * i
Georg Brandl2ee470f2008-07-16 12:55:28 +0000600
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000601 # Put the result on the queue
602 queue.put(fact)
Georg Brandl2ee470f2008-07-16 12:55:28 +0000603
604 if __name__ == '__main__':
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000605 queue = Queue()
Georg Brandl2ee470f2008-07-16 12:55:28 +0000606
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000607 N = 5
Georg Brandl2ee470f2008-07-16 12:55:28 +0000608
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000609 p = Process(target=factorial, args=(queue, N))
610 p.start()
611 p.join()
Georg Brandl2ee470f2008-07-16 12:55:28 +0000612
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000613 result = queue.get()
614 print 'Factorial', N, '=', result
Georg Brandl2ee470f2008-07-16 12:55:28 +0000615
Serhiy Storchakaee1b01a2016-12-02 23:13:53 +0200616A :class:`~queue.Queue` is used to communicate the result of the factorial.
617The :class:`~queue.Queue` object is stored in a global variable.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000618The child process will use the value of the variable when the child
Serhiy Storchakaee1b01a2016-12-02 23:13:53 +0200619was created; because it's a :class:`~queue.Queue`, parent and child can use
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000620the object to communicate. (If the parent were to change the value of
621the global variable, the child's value would be unaffected, and vice
622versa.)
Georg Brandl2ee470f2008-07-16 12:55:28 +0000623
624Two other classes, :class:`Pool` and :class:`Manager`, provide
625higher-level interfaces. :class:`Pool` will create a fixed number of
626worker processes, and requests can then be distributed to the workers
Benjamin Petersonae5360b2008-09-08 23:05:23 +0000627by calling :meth:`apply` or :meth:`apply_async` to add a single request,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000628and :meth:`map` or :meth:`map_async` to add a number of
Georg Brandl2ee470f2008-07-16 12:55:28 +0000629requests. The following code uses a :class:`Pool` to spread requests
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000630across 5 worker processes and retrieve a list of results::
Georg Brandl2ee470f2008-07-16 12:55:28 +0000631
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000632 from multiprocessing import Pool
Georg Brandl2ee470f2008-07-16 12:55:28 +0000633
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000634 def factorial(N, dictionary):
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000635 "Compute a factorial."
636 ...
Georg Brandl2ee470f2008-07-16 12:55:28 +0000637 p = Pool(5)
638 result = p.map(factorial, range(1, 1000, 10))
639 for v in result:
Georg Brandla1c6a1c2009-01-03 21:26:05 +0000640 print v
Georg Brandl2ee470f2008-07-16 12:55:28 +0000641
642This produces the following output::
643
644 1
645 39916800
646 51090942171709440000
647 8222838654177922817725562880000000
648 33452526613163807108170062053440751665152000000000
649 ...
650
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000651The other high-level interface, the :class:`Manager` class, creates a
652separate server process that can hold master copies of Python data
653structures. Other processes can then access and modify these data
654structures using proxy objects. The following example creates a
655shared dictionary by calling the :meth:`dict` method; the worker
656processes then insert values into the dictionary. (Locking is not
657done for you automatically, which doesn't matter in this example.
658:class:`Manager`'s methods also include :meth:`Lock`, :meth:`RLock`,
659and :meth:`Semaphore` to create shared locks.)
Georg Brandl2ee470f2008-07-16 12:55:28 +0000660
661::
662
663 import time
664 from multiprocessing import Pool, Manager
665
666 def factorial(N, dictionary):
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000667 "Compute a factorial."
668 # Calculate the result
669 fact = 1L
670 for i in range(1, N+1):
671 fact = fact * i
Georg Brandl2ee470f2008-07-16 12:55:28 +0000672
673 # Store result in dictionary
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000674 dictionary[N] = fact
Georg Brandl2ee470f2008-07-16 12:55:28 +0000675
676 if __name__ == '__main__':
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000677 p = Pool(5)
678 mgr = Manager()
679 d = mgr.dict() # Create shared dictionary
Georg Brandl2ee470f2008-07-16 12:55:28 +0000680
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000681 # Run tasks using the pool
682 for N in range(1, 1000, 10):
683 p.apply_async(factorial, (N, d))
Georg Brandl2ee470f2008-07-16 12:55:28 +0000684
Georg Brandl3cfdd9c2009-06-04 10:21:10 +0000685 # Mark pool as closed -- no more tasks can be added.
686 p.close()
Georg Brandl2ee470f2008-07-16 12:55:28 +0000687
Georg Brandl3cfdd9c2009-06-04 10:21:10 +0000688 # Wait for tasks to exit
689 p.join()
Georg Brandl2ee470f2008-07-16 12:55:28 +0000690
Georg Brandl3cfdd9c2009-06-04 10:21:10 +0000691 # Output results
692 for k, v in sorted(d.items()):
693 print k, v
Georg Brandl2ee470f2008-07-16 12:55:28 +0000694
695This will produce the output::
696
697 1 1
698 11 39916800
699 21 51090942171709440000
700 31 8222838654177922817725562880000000
701 41 33452526613163807108170062053440751665152000000000
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000702 51 15511187532873822802242430164693032110632597200169861120000...
Amaury Forgeot d'Arc35c86582008-06-17 21:11:29 +0000703
704.. seealso::
705
Georg Brandl2ee470f2008-07-16 12:55:28 +0000706 The documentation for the :mod:`multiprocessing` module.
707
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000708 :pep:`371` - Addition of the multiprocessing package
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000709 PEP written by Jesse Noller and Richard Oudkerk;
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000710 implemented by Richard Oudkerk and Jesse Noller.
Amaury Forgeot d'Arc35c86582008-06-17 21:11:29 +0000711
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000712
Amaury Forgeot d'Arc35c86582008-06-17 21:11:29 +0000713.. ======================================================================
714
Christian Heimes78644762008-03-04 23:39:23 +0000715.. _pep-3101:
716
717PEP 3101: Advanced String Formatting
718=====================================================
719
Benjamin Peterson1e2f0502008-05-26 12:52:02 +0000720In Python 3.0, the `%` operator is supplemented by a more powerful string
721formatting method, :meth:`format`. Support for the :meth:`str.format` method
722has been backported to Python 2.6.
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000723
Christian Heimes02781dc2008-03-21 01:11:52 +0000724In 2.6, both 8-bit and Unicode strings have a `.format()` method that
725treats the string as a template and takes the arguments to be formatted.
726The formatting template uses curly brackets (`{`, `}`) as special characters::
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000727
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000728 >>> # Substitute positional argument 0 into the string.
729 >>> "User ID: {0}".format("root")
730 'User ID: root'
731 >>> # Use the named keyword arguments
732 >>> "User ID: {uid} Last seen: {last_login}".format(
733 ... uid="root",
734 ... last_login = "5 Mar 2008 07:20")
735 'User ID: root Last seen: 5 Mar 2008 07:20'
Christian Heimes02781dc2008-03-21 01:11:52 +0000736
737Curly brackets can be escaped by doubling them::
738
Benjamin Peterson6ebe78f2008-12-21 00:06:59 +0000739 >>> "Empty dict: {{}}".format()
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000740 "Empty dict: {}"
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000741
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000742Field names can be integers indicating positional arguments, such as
743``{0}``, ``{1}``, etc. or names of keyword arguments. You can also
Christian Heimes02781dc2008-03-21 01:11:52 +0000744supply compound field names that read attributes or access dictionary keys::
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000745
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000746 >>> import sys
747 >>> print 'Platform: {0.platform}\nPython version: {0.version}'.format(sys)
748 Platform: darwin
Georg Brandl48310cd2009-01-03 21:18:54 +0000749 Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41)
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000750 [GCC 4.0.1 (Apple Computer, Inc. build 5367)]'
Christian Heimes02781dc2008-03-21 01:11:52 +0000751
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000752 >>> import mimetypes
753 >>> 'Content-type: {0[.mp4]}'.format(mimetypes.types_map)
754 'Content-type: video/mp4'
Christian Heimes02781dc2008-03-21 01:11:52 +0000755
756Note that when using dictionary-style notation such as ``[.mp4]``, you
757don't need to put any quotation marks around the string; it will look
758up the value using ``.mp4`` as the key. Strings beginning with a
759number will be converted to an integer. You can't write more
760complicated expressions inside a format string.
761
762So far we've shown how to specify which field to substitute into the
763resulting string. The precise formatting used is also controllable by
Christian Heimes4fbc72b2008-03-22 00:47:35 +0000764adding a colon followed by a format specifier. For example::
Christian Heimes02781dc2008-03-21 01:11:52 +0000765
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000766 >>> # Field 0: left justify, pad to 15 characters
767 >>> # Field 1: right justify, pad to 6 characters
768 >>> fmt = '{0:15} ${1:>6}'
769 >>> fmt.format('Registration', 35)
770 'Registration $ 35'
771 >>> fmt.format('Tutorial', 50)
772 'Tutorial $ 50'
773 >>> fmt.format('Banquet', 125)
774 'Banquet $ 125'
Christian Heimes02781dc2008-03-21 01:11:52 +0000775
Christian Heimes4fbc72b2008-03-22 00:47:35 +0000776Format specifiers can reference other fields through nesting::
Christian Heimes02781dc2008-03-21 01:11:52 +0000777
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000778 >>> fmt = '{0:{1}}'
779 >>> width = 15
780 >>> fmt.format('Invoice #1234', width)
781 'Invoice #1234 '
782 >>> width = 35
783 >>> fmt.format('Invoice #1234', width)
784 'Invoice #1234 '
Christian Heimes02781dc2008-03-21 01:11:52 +0000785
786The alignment of a field within the desired width can be specified:
787
788================ ============================================
789Character Effect
790================ ============================================
791< (default) Left-align
792> Right-align
793^ Center
794= (For numeric types only) Pad after the sign.
795================ ============================================
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000796
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000797Format specifiers can also include a presentation type, which
Christian Heimesf6cd9672008-03-26 13:45:42 +0000798controls how the value is formatted. For example, floating-point numbers
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000799can be formatted as a general number or in exponential notation::
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000800
Christian Heimesf6cd9672008-03-26 13:45:42 +0000801 >>> '{0:g}'.format(3.75)
802 '3.75'
803 >>> '{0:e}'.format(3.75)
804 '3.750000e+00'
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000805
Christian Heimesf6cd9672008-03-26 13:45:42 +0000806A variety of presentation types are available. Consult the 2.6
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000807documentation for a :ref:`complete list <formatstrings>`; here's a sample:
Christian Heimesf6cd9672008-03-26 13:45:42 +0000808
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000809===== ========================================================================
810``b`` Binary. Outputs the number in base 2.
811``c`` Character. Converts the integer to the corresponding Unicode character
812 before printing.
813``d`` Decimal Integer. Outputs the number in base 10.
814``o`` Octal format. Outputs the number in base 8.
815``x`` Hex format. Outputs the number in base 16, using lower-case letters for
816 the digits above 9.
817``e`` Exponent notation. Prints the number in scientific notation using the
818 letter 'e' to indicate the exponent.
819``g`` General format. This prints the number as a fixed-point number, unless
820 the number is too large, in which case it switches to 'e' exponent
821 notation.
822``n`` Number. This is the same as 'g' (for floats) or 'd' (for integers),
823 except that it uses the current locale setting to insert the appropriate
824 number separator characters.
825``%`` Percentage. Multiplies the number by 100 and displays in fixed ('f')
826 format, followed by a percent sign.
827===== ========================================================================
Christian Heimesf6cd9672008-03-26 13:45:42 +0000828
Georg Brandl734e2682008-08-12 08:18:18 +0000829Classes and types can define a :meth:`__format__` method to control how they're
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000830formatted. It receives a single argument, the format specifier::
831
832 def __format__(self, format_spec):
833 if isinstance(format_spec, unicode):
834 return unicode(str(self))
835 else:
836 return str(self)
837
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000838There's also a :func:`format` builtin that will format a single
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000839value. It calls the type's :meth:`__format__` method with the
840provided specifier::
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000841
842 >>> format(75.6564, '.2f')
843 '75.66'
844
Georg Brandl0c77a822008-06-10 16:37:50 +0000845
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000846.. seealso::
847
Benjamin Peterson1e2f0502008-05-26 12:52:02 +0000848 :ref:`formatstrings`
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000849 The reference documentation for format fields.
Benjamin Peterson1e2f0502008-05-26 12:52:02 +0000850
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000851 :pep:`3101` - Advanced String Formatting
Benjamin Peterson1e2f0502008-05-26 12:52:02 +0000852 PEP written by Talin. Implemented by Eric Smith.
Christian Heimes78644762008-03-04 23:39:23 +0000853
854.. ======================================================================
855
Christian Heimes02781dc2008-03-21 01:11:52 +0000856.. _pep-3105:
857
858PEP 3105: ``print`` As a Function
859=====================================================
860
861The ``print`` statement becomes the :func:`print` function in Python 3.0.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000862Making :func:`print` a function makes it possible to replace the function
863by doing ``def print(...)`` or importing a new function from somewhere else.
Christian Heimes02781dc2008-03-21 01:11:52 +0000864
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000865Python 2.6 has a ``__future__`` import that removes ``print`` as language
Christian Heimes02781dc2008-03-21 01:11:52 +0000866syntax, letting you use the functional form instead. For example::
867
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000868 >>> from __future__ import print_function
869 >>> print('# of entries', len(dictionary), file=sys.stderr)
Christian Heimes02781dc2008-03-21 01:11:52 +0000870
871The signature of the new function is::
872
873 def print(*args, sep=' ', end='\n', file=None)
874
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000875
Christian Heimes02781dc2008-03-21 01:11:52 +0000876The parameters are:
877
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000878 * *args*: positional arguments whose values will be printed out.
879 * *sep*: the separator, which will be printed between arguments.
880 * *end*: the ending text, which will be printed after all of the
Christian Heimes02781dc2008-03-21 01:11:52 +0000881 arguments have been output.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000882 * *file*: the file object to which the output will be sent.
Christian Heimes02781dc2008-03-21 01:11:52 +0000883
884.. seealso::
885
886 :pep:`3105` - Make print a function
887 PEP written by Georg Brandl.
888
889.. ======================================================================
890
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000891.. _pep-3110:
892
893PEP 3110: Exception-Handling Changes
894=====================================================
895
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000896One error that Python programmers occasionally make
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000897is writing the following code::
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000898
899 try:
900 ...
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000901 except TypeError, ValueError: # Wrong!
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000902 ...
903
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000904The author is probably trying to catch both :exc:`TypeError` and
905:exc:`ValueError` exceptions, but this code actually does something
906different: it will catch :exc:`TypeError` and bind the resulting
907exception object to the local name ``"ValueError"``. The
908:exc:`ValueError` exception will not be caught at all. The correct
909code specifies a tuple of exceptions::
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000910
911 try:
912 ...
913 except (TypeError, ValueError):
914 ...
915
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000916This error happens because the use of the comma here is ambiguous:
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000917does it indicate two different nodes in the parse tree, or a single
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000918node that's a tuple?
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000919
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000920Python 3.0 makes this unambiguous by replacing the comma with the word
921"as". To catch an exception and store the exception object in the
922variable ``exc``, you must write::
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000923
924 try:
925 ...
926 except TypeError as exc:
927 ...
928
929Python 3.0 will only support the use of "as", and therefore interprets
930the first example as catching two different exceptions. Python 2.6
931supports both the comma and "as", so existing code will continue to
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000932work. We therefore suggest using "as" when writing new Python code
933that will only be executed with 2.6.
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000934
935.. seealso::
936
937 :pep:`3110` - Catching Exceptions in Python 3000
938 PEP written and implemented by Collin Winter.
939
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000940.. ======================================================================
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000941
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000942.. _pep-3112:
943
944PEP 3112: Byte Literals
945=====================================================
946
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000947Python 3.0 adopts Unicode as the language's fundamental string type and
948denotes 8-bit literals differently, either as ``b'string'``
949or using a :class:`bytes` constructor. For future compatibility,
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000950Python 2.6 adds :class:`bytes` as a synonym for the :class:`str` type,
951and it also supports the ``b''`` notation.
952
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000953
954The 2.6 :class:`str` differs from 3.0's :class:`bytes` type in various
955ways; most notably, the constructor is completely different. In 3.0,
956``bytes([65, 66, 67])`` is 3 elements long, containing the bytes
957representing ``ABC``; in 2.6, ``bytes([65, 66, 67])`` returns the
95812-byte string representing the :func:`str` of the list.
959
960The primary use of :class:`bytes` in 2.6 will be to write tests of
961object type such as ``isinstance(x, bytes)``. This will help the 2to3
962converter, which can't tell whether 2.x code intends strings to
Georg Brandl48310cd2009-01-03 21:18:54 +0000963contain either characters or 8-bit bytes; you can now
964use either :class:`bytes` or :class:`str` to represent your intention
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000965exactly, and the resulting code will also be correct in Python 3.0.
966
Christian Heimes5e696852008-04-09 08:37:03 +0000967There's also a ``__future__`` import that causes all string literals
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000968to become Unicode strings. This means that ``\u`` escape sequences
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000969can be used to include Unicode characters::
970
Christian Heimes5e696852008-04-09 08:37:03 +0000971
Neal Norwitz32dde222008-04-15 06:43:13 +0000972 from __future__ import unicode_literals
973
974 s = ('\u751f\u3080\u304e\u3000\u751f\u3054'
975 '\u3081\u3000\u751f\u305f\u307e\u3054')
976
977 print len(s) # 12 Unicode characters
978
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000979At the C level, Python 3.0 will rename the existing 8-bit
Georg Brandl60203b42010-10-06 10:11:56 +0000980string type, called :c:type:`PyStringObject` in Python 2.x,
981to :c:type:`PyBytesObject`. Python 2.6 uses ``#define``
982to support using the names :c:func:`PyBytesObject`,
983:c:func:`PyBytes_Check`, :c:func:`PyBytes_FromStringAndSize`,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000984and all the other functions and macros used with strings.
Christian Heimes5e696852008-04-09 08:37:03 +0000985
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000986Instances of the :class:`bytes` type are immutable just
987as strings are. A new :class:`bytearray` type stores a mutable
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000988sequence of bytes::
989
990 >>> bytearray([65, 66, 67])
991 bytearray(b'ABC')
992 >>> b = bytearray(u'\u21ef\u3244', 'utf-8')
993 >>> b
Benjamin Petersonae5360b2008-09-08 23:05:23 +0000994 bytearray(b'\xe2\x87\xaf\xe3\x89\x84')
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000995 >>> b[0] = '\xe3'
996 >>> b
Benjamin Petersonae5360b2008-09-08 23:05:23 +0000997 bytearray(b'\xe3\x87\xaf\xe3\x89\x84')
Benjamin Petersonf9c98b42008-07-02 16:19:28 +0000998 >>> unicode(str(b), 'utf-8')
999 u'\u31ef \u3244'
1000
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001001Byte arrays support most of the methods of string types, such as
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001002:meth:`startswith`/:meth:`endswith`, :meth:`find`/:meth:`rfind`,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001003and some of the methods of lists, such as :meth:`append`,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001004:meth:`pop`, and :meth:`reverse`.
1005
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001006::
1007
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001008 >>> b = bytearray('ABC')
1009 >>> b.append('d')
1010 >>> b.append(ord('e'))
1011 >>> b
1012 bytearray(b'ABCde')
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001013
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001014There's also a corresponding C API, with
Georg Brandl60203b42010-10-06 10:11:56 +00001015:c:func:`PyByteArray_FromObject`,
1016:c:func:`PyByteArray_FromStringAndSize`,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001017and various other functions.
1018
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001019.. seealso::
1020
1021 :pep:`3112` - Bytes literals in Python 3000
1022 PEP written by Jason Orendorff; backported to 2.6 by Christian Heimes.
1023
1024.. ======================================================================
1025
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00001026.. _pep-3116:
1027
1028PEP 3116: New I/O Library
1029=====================================================
1030
Christian Heimes5e696852008-04-09 08:37:03 +00001031Python's built-in file objects support a number of methods, but
1032file-like objects don't necessarily support all of them. Objects that
1033imitate files usually support :meth:`read` and :meth:`write`, but they
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001034may not support :meth:`readline`, for example. Python 3.0 introduces
1035a layered I/O library in the :mod:`io` module that separates buffering
1036and text-handling features from the fundamental read and write
1037operations.
Christian Heimes5e696852008-04-09 08:37:03 +00001038
1039There are three levels of abstract base classes provided by
1040the :mod:`io` module:
1041
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001042* :class:`RawIOBase` defines raw I/O operations: :meth:`read`,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001043 :meth:`readinto`,
Christian Heimes5e696852008-04-09 08:37:03 +00001044 :meth:`write`, :meth:`seek`, :meth:`tell`, :meth:`truncate`,
1045 and :meth:`close`.
1046 Most of the methods of this class will often map to a single system call.
1047 There are also :meth:`readable`, :meth:`writable`, and :meth:`seekable`
1048 methods for determining what operations a given object will allow.
1049
1050 Python 3.0 has concrete implementations of this class for files and
1051 sockets, but Python 2.6 hasn't restructured its file and socket objects
1052 in this way.
1053
1054 .. XXX should 2.6 register them in io.py?
1055
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001056* :class:`BufferedIOBase` is an abstract base class that
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001057 buffers data in memory to reduce the number of
Christian Heimes5e696852008-04-09 08:37:03 +00001058 system calls used, making I/O processing more efficient.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001059 It supports all of the methods of :class:`RawIOBase`,
Christian Heimes5e696852008-04-09 08:37:03 +00001060 and adds a :attr:`raw` attribute holding the underlying raw object.
1061
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001062 There are five concrete classes implementing this ABC.
1063 :class:`BufferedWriter` and :class:`BufferedReader` are for objects
1064 that support write-only or read-only usage that have a :meth:`seek`
1065 method for random access. :class:`BufferedRandom` objects support
1066 read and write access upon the same underlying stream, and
1067 :class:`BufferedRWPair` is for objects such as TTYs that have both
1068 read and write operations acting upon unconnected streams of data.
1069 The :class:`BytesIO` class supports reading, writing, and seeking
1070 over an in-memory buffer.
Christian Heimes5e696852008-04-09 08:37:03 +00001071
R David Murray1b00f252012-08-15 10:43:58 -04001072 .. index::
1073 single: universal newlines; What's new
1074
Christian Heimes5e696852008-04-09 08:37:03 +00001075* :class:`TextIOBase`: Provides functions for reading and writing
1076 strings (remember, strings will be Unicode in Python 3.0),
R David Murray1b00f252012-08-15 10:43:58 -04001077 and supporting :term:`universal newlines`. :class:`TextIOBase` defines
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001078 the :meth:`readline` method and supports iteration upon
1079 objects.
Christian Heimes5e696852008-04-09 08:37:03 +00001080
1081 There are two concrete implementations. :class:`TextIOWrapper`
1082 wraps a buffered I/O object, supporting all of the methods for
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001083 text I/O and adding a :attr:`buffer` attribute for access
Christian Heimes5e696852008-04-09 08:37:03 +00001084 to the underlying object. :class:`StringIO` simply buffers
1085 everything in memory without ever writing anything to disk.
1086
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001087 (In Python 2.6, :class:`io.StringIO` is implemented in
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001088 pure Python, so it's pretty slow. You should therefore stick with the
1089 existing :mod:`StringIO` module or :mod:`cStringIO` for now. At some
Christian Heimes5e696852008-04-09 08:37:03 +00001090 point Python 3.0's :mod:`io` module will be rewritten into C for speed,
1091 and perhaps the C implementation will be backported to the 2.x releases.)
1092
Christian Heimes5e696852008-04-09 08:37:03 +00001093In Python 2.6, the underlying implementations haven't been
1094restructured to build on top of the :mod:`io` module's classes. The
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001095module is being provided to make it easier to write code that's
Christian Heimes5e696852008-04-09 08:37:03 +00001096forward-compatible with 3.0, and to save developers the effort of writing
1097their own implementations of buffering and text I/O.
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00001098
1099.. seealso::
1100
1101 :pep:`3116` - New I/O
1102 PEP written by Daniel Stutzbach, Mike Verdone, and Guido van Rossum.
Neal Norwitz32dde222008-04-15 06:43:13 +00001103 Code by Guido van Rossum, Georg Brandl, Walter Doerwald,
Antoine Pitroufbd4f802012-08-11 16:51:50 +02001104 Jeremy Hylton, Martin von Löwis, Tony Lownds, and others.
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00001105
1106.. ======================================================================
1107
Christian Heimesf6cd9672008-03-26 13:45:42 +00001108.. _pep-3118:
1109
1110PEP 3118: Revised Buffer Protocol
1111=====================================================
1112
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001113The buffer protocol is a C-level API that lets Python types
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001114exchange pointers into their internal representations. A
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001115memory-mapped file can be viewed as a buffer of characters, for
1116example, and this lets another module such as :mod:`re`
1117treat memory-mapped files as a string of characters to be searched.
1118
1119The primary users of the buffer protocol are numeric-processing
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001120packages such as NumPy, which expose the internal representation
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001121of arrays so that callers can write data directly into an array instead
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001122of going through a slower API. This PEP updates the buffer protocol in light of experience
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001123from NumPy development, adding a number of new features
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001124such as indicating the shape of an array or locking a memory region.
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001125
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001126The most important new C API function is
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001127``PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags)``, which
1128takes an object and a set of flags, and fills in the
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001129``Py_buffer`` structure with information
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001130about the object's memory representation. Objects
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001131can use this operation to lock memory in place
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001132while an external caller could be modifying the contents,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001133so there's a corresponding ``PyBuffer_Release(Py_buffer *view)`` to
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001134indicate that the external caller is done.
1135
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001136.. XXX PyObject_GetBuffer not documented in c-api
1137
Georg Brandl60203b42010-10-06 10:11:56 +00001138The *flags* argument to :c:func:`PyObject_GetBuffer` specifies
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001139constraints upon the memory returned. Some examples are:
1140
1141 * :const:`PyBUF_WRITABLE` indicates that the memory must be writable.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001142
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001143 * :const:`PyBUF_LOCK` requests a read-only or exclusive lock on the memory.
1144
1145 * :const:`PyBUF_C_CONTIGUOUS` and :const:`PyBUF_F_CONTIGUOUS`
1146 requests a C-contiguous (last dimension varies the fastest) or
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001147 Fortran-contiguous (first dimension varies the fastest) array layout.
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001148
Georg Brandl60203b42010-10-06 10:11:56 +00001149Two new argument codes for :c:func:`PyArg_ParseTuple`,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001150``s*`` and ``z*``, return locked buffer objects for a parameter.
Christian Heimesf6cd9672008-03-26 13:45:42 +00001151
1152.. seealso::
1153
1154 :pep:`3118` - Revising the buffer protocol
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001155 PEP written by Travis Oliphant and Carl Banks; implemented by
1156 Travis Oliphant.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001157
Christian Heimesf6cd9672008-03-26 13:45:42 +00001158
1159.. ======================================================================
1160
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001161.. _pep-3119:
1162
1163PEP 3119: Abstract Base Classes
1164=====================================================
1165
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001166Some object-oriented languages such as Java support interfaces,
1167declaring that a class has a given set of methods or supports a given
1168access protocol. Abstract Base Classes (or ABCs) are an equivalent
1169feature for Python. The ABC support consists of an :mod:`abc` module
1170containing a metaclass called :class:`ABCMeta`, special handling of
1171this metaclass by the :func:`isinstance` and :func:`issubclass`
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001172builtins, and a collection of basic ABCs that the Python developers
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001173think will be widely useful. Future versions of Python will probably
1174add more ABCs.
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001175
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001176Let's say you have a particular class and wish to know whether it supports
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001177dictionary-style access. The phrase "dictionary-style" is vague, however.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001178It probably means that accessing items with ``obj[1]`` works.
1179Does it imply that setting items with ``obj[2] = value`` works?
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001180Or that the object will have :meth:`keys`, :meth:`values`, and :meth:`items`
1181methods? What about the iterative variants such as :meth:`iterkeys`? :meth:`copy`
1182and :meth:`update`? Iterating over the object with :func:`iter`?
Christian Heimes3f419af2008-01-04 03:08:33 +00001183
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001184The Python 2.6 :mod:`collections` module includes a number of
1185different ABCs that represent these distinctions. :class:`Iterable`
1186indicates that a class defines :meth:`__iter__`, and
1187:class:`Container` means the class defines a :meth:`__contains__`
1188method and therefore supports ``x in y`` expressions. The basic
1189dictionary interface of getting items, setting items, and
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001190:meth:`keys`, :meth:`values`, and :meth:`items`, is defined by the
1191:class:`MutableMapping` ABC.
Christian Heimes3f419af2008-01-04 03:08:33 +00001192
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001193You can derive your own classes from a particular ABC
1194to indicate they support that ABC's interface::
Christian Heimes3f419af2008-01-04 03:08:33 +00001195
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001196 import collections
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001197
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001198 class Storage(collections.MutableMapping):
1199 ...
Christian Heimes3f419af2008-01-04 03:08:33 +00001200
Christian Heimes3f419af2008-01-04 03:08:33 +00001201
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001202Alternatively, you could write the class without deriving from
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001203the desired ABC and instead register the class by
1204calling the ABC's :meth:`register` method::
Christian Heimes3f419af2008-01-04 03:08:33 +00001205
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001206 import collections
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001207
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001208 class Storage:
1209 ...
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001210
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001211 collections.MutableMapping.register(Storage)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001212
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001213For classes that you write, deriving from the ABC is probably clearer.
1214The :meth:`register` method is useful when you've written a new
1215ABC that can describe an existing type or class, or if you want
1216to declare that some third-party class implements an ABC.
1217For example, if you defined a :class:`PrintableType` ABC,
Benjamin Petersond6313712008-07-31 16:23:04 +00001218it's legal to do::
Christian Heimesfaf2f632008-01-06 16:59:19 +00001219
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001220 # Register Python's types
1221 PrintableType.register(int)
1222 PrintableType.register(float)
1223 PrintableType.register(str)
1224
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001225Classes should obey the semantics specified by an ABC, but
1226Python can't check this; it's up to the class author to
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001227understand the ABC's requirements and to implement the code accordingly.
1228
1229To check whether an object supports a particular interface, you can
1230now write::
1231
1232 def func(d):
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001233 if not isinstance(d, collections.MutableMapping):
1234 raise ValueError("Mapping object expected, not %r" % d)
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001235
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001236Don't feel that you must now begin writing lots of checks as in the
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001237above example. Python has a strong tradition of duck-typing, where
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001238explicit type-checking is never done and code simply calls methods on
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001239an object, trusting that those methods will be there and raising an
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001240exception if they aren't. Be judicious in checking for ABCs and only
1241do it where it's absolutely necessary.
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001242
1243You can write your own ABCs by using ``abc.ABCMeta`` as the
1244metaclass in a class definition::
1245
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001246 from abc import ABCMeta, abstractmethod
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001247
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001248 class Drawable():
1249 __metaclass__ = ABCMeta
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001250
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001251 @abstractmethod
1252 def draw(self, x, y, scale=1.0):
1253 pass
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001254
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001255 def draw_doubled(self, x, y):
1256 self.draw(x, y, scale=2.0)
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001257
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001258
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001259 class Square(Drawable):
1260 def draw(self, x, y, scale):
1261 ...
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001262
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001263
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001264In the :class:`Drawable` ABC above, the :meth:`draw_doubled` method
1265renders the object at twice its size and can be implemented in terms
1266of other methods described in :class:`Drawable`. Classes implementing
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001267this ABC therefore don't need to provide their own implementation
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001268of :meth:`draw_doubled`, though they can do so. An implementation
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001269of :meth:`draw` is necessary, though; the ABC can't provide
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001270a useful generic implementation.
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001271
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001272You can apply the ``@abstractmethod`` decorator to methods such as
1273:meth:`draw` that must be implemented; Python will then raise an
1274exception for classes that don't define the method.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001275Note that the exception is only raised when you actually
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001276try to create an instance of a subclass lacking the method::
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001277
Benjamin Petersondcc1e112008-09-03 22:22:18 +00001278 >>> class Circle(Drawable):
1279 ... pass
1280 ...
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001281 >>> c = Circle()
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001282 Traceback (most recent call last):
1283 File "<stdin>", line 1, in <module>
Benjamin Petersondcc1e112008-09-03 22:22:18 +00001284 TypeError: Can't instantiate abstract class Circle with abstract methods draw
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001285 >>>
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001286
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001287Abstract data attributes can be declared using the
1288``@abstractproperty`` decorator::
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001289
Benjamin Petersondcc1e112008-09-03 22:22:18 +00001290 from abc import abstractproperty
1291 ...
1292
Christian Heimesfaf2f632008-01-06 16:59:19 +00001293 @abstractproperty
1294 def readonly(self):
1295 return self._x
Christian Heimes3f419af2008-01-04 03:08:33 +00001296
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001297Subclasses must then define a :meth:`readonly` property.
Christian Heimes3f419af2008-01-04 03:08:33 +00001298
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001299.. seealso::
1300
1301 :pep:`3119` - Introducing Abstract Base Classes
1302 PEP written by Guido van Rossum and Talin.
Martin v. Löwis2a241ca2008-04-05 18:58:09 +00001303 Implemented by Guido van Rossum.
Christian Heimes90aa7642007-12-19 02:45:37 +00001304 Backported to 2.6 by Benjamin Aranguren, with Alex Martelli.
Georg Brandl116aa622007-08-15 14:28:22 +00001305
Christian Heimes679db4a2008-01-18 09:56:22 +00001306.. ======================================================================
1307
Christian Heimes78644762008-03-04 23:39:23 +00001308.. _pep-3127:
1309
1310PEP 3127: Integer Literal Support and Syntax
1311=====================================================
1312
Christian Heimes5e696852008-04-09 08:37:03 +00001313Python 3.0 changes the syntax for octal (base-8) integer literals,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001314prefixing them with "0o" or "0O" instead of a leading zero, and adds
1315support for binary (base-2) integer literals, signalled by a "0b" or
1316"0B" prefix.
Christian Heimes78644762008-03-04 23:39:23 +00001317
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001318Python 2.6 doesn't drop support for a leading 0 signalling
Christian Heimes5e696852008-04-09 08:37:03 +00001319an octal number, but it does add support for "0o" and "0b"::
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001320
Christian Heimes5e696852008-04-09 08:37:03 +00001321 >>> 0o21, 2*8 + 1
1322 (17, 17)
1323 >>> 0b101111
1324 47
Christian Heimes78644762008-03-04 23:39:23 +00001325
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001326The :func:`oct` builtin still returns numbers
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001327prefixed with a leading zero, and a new :func:`bin`
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001328builtin returns the binary representation for a number::
Christian Heimes78644762008-03-04 23:39:23 +00001329
Christian Heimes5e696852008-04-09 08:37:03 +00001330 >>> oct(42)
1331 '052'
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001332 >>> future_builtins.oct(42)
1333 '0o52'
Christian Heimes5e696852008-04-09 08:37:03 +00001334 >>> bin(173)
1335 '0b10101101'
1336
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001337The :func:`int` and :func:`long` builtins will now accept the "0o"
Christian Heimes5e696852008-04-09 08:37:03 +00001338and "0b" prefixes when base-8 or base-2 are requested, or when the
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001339*base* argument is zero (signalling that the base used should be
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001340determined from the string)::
Christian Heimes5e696852008-04-09 08:37:03 +00001341
1342 >>> int ('0o52', 0)
1343 42
1344 >>> int('1101', 2)
1345 13
1346 >>> int('0b1101', 2)
1347 13
1348 >>> int('0b1101', 0)
1349 13
1350
Christian Heimes78644762008-03-04 23:39:23 +00001351
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001352.. seealso::
1353
1354 :pep:`3127` - Integer Literal Support and Syntax
Christian Heimes5e696852008-04-09 08:37:03 +00001355 PEP written by Patrick Maupin; backported to 2.6 by
1356 Eric Smith.
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001357
Christian Heimes78644762008-03-04 23:39:23 +00001358.. ======================================================================
1359
1360.. _pep-3129:
1361
1362PEP 3129: Class Decorators
1363=====================================================
1364
Christian Heimes02781dc2008-03-21 01:11:52 +00001365Decorators have been extended from functions to classes. It's now legal to
1366write::
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001367
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001368 @foo
1369 @bar
1370 class A:
1371 pass
1372
Christian Heimes02781dc2008-03-21 01:11:52 +00001373This is equivalent to::
1374
1375 class A:
1376 pass
1377
1378 A = foo(bar(A))
1379
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001380.. seealso::
1381
1382 :pep:`3129` - Class Decorators
1383 PEP written by Collin Winter.
Christian Heimes78644762008-03-04 23:39:23 +00001384
1385.. ======================================================================
1386
Christian Heimes679db4a2008-01-18 09:56:22 +00001387.. _pep-3141:
1388
1389PEP 3141: A Type Hierarchy for Numbers
1390=====================================================
1391
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001392Python 3.0 adds several abstract base classes for numeric types
1393inspired by Scheme's numeric tower. These classes were backported to
13942.6 as the :mod:`numbers` module.
Christian Heimes679db4a2008-01-18 09:56:22 +00001395
1396The most general ABC is :class:`Number`. It defines no operations at
1397all, and only exists to allow checking if an object is a number by
1398doing ``isinstance(obj, Number)``.
1399
Christian Heimes679db4a2008-01-18 09:56:22 +00001400:class:`Complex` is a subclass of :class:`Number`. Complex numbers
1401can undergo the basic operations of addition, subtraction,
1402multiplication, division, and exponentiation, and you can retrieve the
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001403real and imaginary parts and obtain a number's conjugate. Python's built-in
Christian Heimes679db4a2008-01-18 09:56:22 +00001404complex type is an implementation of :class:`Complex`.
1405
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001406:class:`Real` further derives from :class:`Complex`, and adds
1407operations that only work on real numbers: :func:`floor`, :func:`trunc`,
1408rounding, taking the remainder mod N, floor division,
1409and comparisons.
Christian Heimes679db4a2008-01-18 09:56:22 +00001410
1411:class:`Rational` numbers derive from :class:`Real`, have
1412:attr:`numerator` and :attr:`denominator` properties, and can be
Christian Heimes3feef612008-02-11 06:19:17 +00001413converted to floats. Python 2.6 adds a simple rational-number class,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001414:class:`Fraction`, in the :mod:`fractions` module. (It's called
1415:class:`Fraction` instead of :class:`Rational` to avoid
Christian Heimes78644762008-03-04 23:39:23 +00001416a name clash with :class:`numbers.Rational`.)
Christian Heimes679db4a2008-01-18 09:56:22 +00001417
1418:class:`Integral` numbers derive from :class:`Rational`, and
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001419can be shifted left and right with ``<<`` and ``>>``,
1420combined using bitwise operations such as ``&`` and ``|``,
Christian Heimes679db4a2008-01-18 09:56:22 +00001421and can be used as array indexes and slice boundaries.
1422
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001423In Python 3.0, the PEP slightly redefines the existing builtins
Christian Heimes78644762008-03-04 23:39:23 +00001424:func:`round`, :func:`math.floor`, :func:`math.ceil`, and adds a new
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001425one, :func:`math.trunc`, that's been backported to Python 2.6.
1426:func:`math.trunc` rounds toward zero, returning the closest
Christian Heimes679db4a2008-01-18 09:56:22 +00001427:class:`Integral` that's between the function's argument and zero.
1428
1429.. seealso::
1430
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001431 :pep:`3141` - A Type Hierarchy for Numbers
1432 PEP written by Jeffrey Yasskin.
1433
Serhiy Storchaka6dff0202016-05-07 10:49:07 +03001434 `Scheme's numerical tower <https://www.gnu.org/software/guile/manual/html_node/Numerical-Tower.html#Numerical-Tower>`__, from the Guile manual.
Christian Heimes679db4a2008-01-18 09:56:22 +00001435
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00001436 `Scheme's number datatypes <http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2>`__ from the R5RS Scheme specification.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001437
Christian Heimes679db4a2008-01-18 09:56:22 +00001438
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001439The :mod:`fractions` Module
Christian Heimes679db4a2008-01-18 09:56:22 +00001440--------------------------------------------------
1441
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001442To fill out the hierarchy of numeric types, the :mod:`fractions`
1443module provides a rational-number class. Rational numbers store their
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001444values as a numerator and denominator forming a fraction, and can
1445exactly represent numbers such as ``2/3`` that floating-point numbers
1446can only approximate.
Christian Heimes679db4a2008-01-18 09:56:22 +00001447
Christian Heimes3feef612008-02-11 06:19:17 +00001448The :class:`Fraction` constructor takes two :class:`Integral` values
Christian Heimes679db4a2008-01-18 09:56:22 +00001449that will be the numerator and denominator of the resulting fraction. ::
1450
Christian Heimes3feef612008-02-11 06:19:17 +00001451 >>> from fractions import Fraction
1452 >>> a = Fraction(2, 3)
1453 >>> b = Fraction(2, 5)
Christian Heimes679db4a2008-01-18 09:56:22 +00001454 >>> float(a), float(b)
1455 (0.66666666666666663, 0.40000000000000002)
1456 >>> a+b
Christian Heimes3feef612008-02-11 06:19:17 +00001457 Fraction(16, 15)
Christian Heimes679db4a2008-01-18 09:56:22 +00001458 >>> a/b
Christian Heimes3feef612008-02-11 06:19:17 +00001459 Fraction(5, 3)
Christian Heimes679db4a2008-01-18 09:56:22 +00001460
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001461For converting floating-point numbers to rationals,
1462the float type now has an :meth:`as_integer_ratio()` method that returns
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001463the numerator and denominator for a fraction that evaluates to the same
1464floating-point value::
1465
1466 >>> (2.5) .as_integer_ratio()
1467 (5, 2)
1468 >>> (3.1415) .as_integer_ratio()
1469 (7074029114692207L, 2251799813685248L)
1470 >>> (1./3) .as_integer_ratio()
1471 (6004799503160661L, 18014398509481984L)
1472
1473Note that values that can only be approximated by floating-point
1474numbers, such as 1./3, are not simplified to the number being
1475approximated; the fraction attempts to match the floating-point value
1476**exactly**.
1477
Christian Heimes3feef612008-02-11 06:19:17 +00001478The :mod:`fractions` module is based upon an implementation by Sjoerd
Christian Heimes679db4a2008-01-18 09:56:22 +00001479Mullender that was in Python's :file:`Demo/classes/` directory for a
1480long time. This implementation was significantly updated by Jeffrey
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001481Yasskin.
Christian Heimes679db4a2008-01-18 09:56:22 +00001482
Christian Heimes90540002008-05-08 14:29:10 +00001483
Georg Brandl116aa622007-08-15 14:28:22 +00001484Other Language Changes
1485======================
1486
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001487Some smaller changes made to the core Python language are:
Georg Brandl116aa622007-08-15 14:28:22 +00001488
Andrew M. Kuchling9d2d3272010-02-22 14:57:30 +00001489* Directories and zip archives containing a :file:`__main__.py` file
1490 can now be executed directly by passing their name to the
1491 interpreter. The directory or zip archive is automatically inserted
1492 as the first entry in sys.path. (Suggestion and initial patch by
1493 Andy Chu, subsequently revised by Phillip J. Eby and Nick Coghlan;
1494 :issue:`1739468`.)
1495
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001496* The :func:`hasattr` function was catching and ignoring all errors,
1497 under the assumption that they meant a :meth:`__getattr__` method
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001498 was failing somehow and the return value of :func:`hasattr` would
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001499 therefore be ``False``. This logic shouldn't be applied to
1500 :exc:`KeyboardInterrupt` and :exc:`SystemExit`, however; Python 2.6
1501 will no longer discard such exceptions when :func:`hasattr`
1502 encounters them. (Fixed by Benjamin Peterson; :issue:`2196`.)
1503
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001504* When calling a function using the ``**`` syntax to provide keyword
1505 arguments, you are no longer required to use a Python dictionary;
1506 any mapping will now work::
1507
1508 >>> def f(**kw):
1509 ... print sorted(kw)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001510 ...
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001511 >>> ud=UserDict.UserDict()
1512 >>> ud['a'] = 1
1513 >>> ud['b'] = 'string'
1514 >>> f(**ud)
1515 ['a', 'b']
1516
Martin v. Löwis5680d0c2008-04-10 03:06:53 +00001517 (Contributed by Alexander Belopolsky; :issue:`1686487`.)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001518
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001519 It's also become legal to provide keyword arguments after a ``*args`` argument
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001520 to a function call. ::
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001521
1522 >>> def f(*args, **kw):
1523 ... print args, kw
1524 ...
1525 >>> f(1,2,3, *(4,5,6), keyword=13)
1526 (1, 2, 3, 4, 5, 6) {'keyword': 13}
1527
1528 Previously this would have been a syntax error.
1529 (Contributed by Amaury Forgeot d'Arc; :issue:`3473`.)
1530
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001531* A new builtin, ``next(iterator, [default])`` returns the next item
Georg Brandl0c77a822008-06-10 16:37:50 +00001532 from the specified iterator. If the *default* argument is supplied,
1533 it will be returned if *iterator* has been exhausted; otherwise,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001534 the :exc:`StopIteration` exception will be raised. (Backported
1535 in :issue:`2719`.)
Georg Brandl0c77a822008-06-10 16:37:50 +00001536
Georg Brandl3dbca812008-07-23 16:10:53 +00001537* Tuples now have :meth:`index` and :meth:`count` methods matching the
1538 list type's :meth:`index` and :meth:`count` methods::
Christian Heimes5e696852008-04-09 08:37:03 +00001539
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001540 >>> t = (0,1,2,3,4,0,1,2)
Christian Heimes5e696852008-04-09 08:37:03 +00001541 >>> t.index(3)
1542 3
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001543 >>> t.count(0)
1544 2
Christian Heimes5e696852008-04-09 08:37:03 +00001545
Georg Brandl3dbca812008-07-23 16:10:53 +00001546 (Contributed by Raymond Hettinger)
1547
Georg Brandl9afde1c2007-11-01 20:32:30 +00001548* The built-in types now have improved support for extended slicing syntax,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001549 accepting various combinations of ``(start, stop, step)``.
Georg Brandl9afde1c2007-11-01 20:32:30 +00001550 Previously, the support was partial and certain corner cases wouldn't work.
1551 (Implemented by Thomas Wouters.)
1552
Christian Heimes5b5e81c2007-12-31 16:14:33 +00001553 .. Revision 57619
Georg Brandl9afde1c2007-11-01 20:32:30 +00001554
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001555* Properties now have three attributes, :attr:`getter`, :attr:`setter`
1556 and :attr:`deleter`, that are decorators providing useful shortcuts
1557 for adding a getter, setter or deleter function to an existing
1558 property. You would use them like this::
Christian Heimes90aa7642007-12-19 02:45:37 +00001559
1560 class C(object):
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001561 @property
1562 def x(self):
1563 return self._x
Christian Heimes90aa7642007-12-19 02:45:37 +00001564
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001565 @x.setter
1566 def x(self, value):
1567 self._x = value
Christian Heimes90aa7642007-12-19 02:45:37 +00001568
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001569 @x.deleter
1570 def x(self):
1571 del self._x
Christian Heimes90aa7642007-12-19 02:45:37 +00001572
Christian Heimes679db4a2008-01-18 09:56:22 +00001573 class D(C):
1574 @C.x.getter
1575 def x(self):
1576 return self._x * 2
1577
1578 @x.setter
1579 def x(self, value):
1580 self._x = value / 2
1581
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001582* Several methods of the built-in set types now accept multiple iterables:
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001583 :meth:`intersection`,
1584 :meth:`intersection_update`,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001585 :meth:`union`, :meth:`update`,
1586 :meth:`difference` and :meth:`difference_update`.
Christian Heimes90aa7642007-12-19 02:45:37 +00001587
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001588 ::
Georg Brandl9afde1c2007-11-01 20:32:30 +00001589
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001590 >>> s=set('1234567890')
1591 >>> s.intersection('abc123', 'cdf246') # Intersection between all inputs
1592 set(['2'])
1593 >>> s.difference('246', '789')
1594 set(['1', '0', '3', '5'])
1595
1596 (Contributed by Raymond Hettinger.)
1597
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001598* Many floating-point features were added. The :func:`float` function
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001599 will now turn the string ``nan`` into an
1600 IEEE 754 Not A Number value, and ``+inf`` and ``-inf`` into
1601 positive or negative infinity. This works on any platform with
Christian Heimes33fe8092008-04-13 13:53:33 +00001602 IEEE 754 semantics. (Contributed by Christian Heimes; :issue:`1635`.)
Christian Heimesa34706f2008-01-04 03:06:10 +00001603
Christian Heimes3f419af2008-01-04 03:08:33 +00001604 Other functions in the :mod:`math` module, :func:`isinf` and
1605 :func:`isnan`, return true if their floating-point argument is
Christian Heimes33fe8092008-04-13 13:53:33 +00001606 infinite or Not A Number. (:issue:`1640`)
Christian Heimesc3f30c42008-02-22 16:37:40 +00001607
Georg Brandl734e2682008-08-12 08:18:18 +00001608 Conversion functions were added to convert floating-point numbers
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001609 into hexadecimal strings (:issue:`3008`). These functions
Georg Brandl734e2682008-08-12 08:18:18 +00001610 convert floats to and from a string representation without
1611 introducing rounding errors from the conversion between decimal and
1612 binary. Floats have a :meth:`hex` method that returns a string
1613 representation, and the ``float.fromhex()`` method converts a string
1614 back into a number::
1615
1616 >>> a = 3.75
1617 >>> a.hex()
1618 '0x1.e000000000000p+1'
1619 >>> float.fromhex('0x1.e000000000000p+1')
1620 3.75
1621 >>> b=1./3
1622 >>> b.hex()
1623 '0x1.5555555555555p-2'
Mark Dickinson65fe25e2008-07-16 11:30:51 +00001624
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001625* A numerical nicety: when creating a complex number from two floats
1626 on systems that support signed zeros (-0 and +0), the
1627 :func:`complex` constructor will now preserve the sign
1628 of the zero. (Fixed by Mark T. Dickinson; :issue:`1507`.)
Christian Heimes3f419af2008-01-04 03:08:33 +00001629
Benjamin Petersondcc1e112008-09-03 22:22:18 +00001630* Classes that inherit a :meth:`__hash__` method from a parent class
1631 can set ``__hash__ = None`` to indicate that the class isn't
1632 hashable. This will make ``hash(obj)`` raise a :exc:`TypeError`
1633 and the class will not be indicated as implementing the
1634 :class:`Hashable` ABC.
1635
1636 You should do this when you've defined a :meth:`__cmp__` or
1637 :meth:`__eq__` method that compares objects by their value rather
1638 than by identity. All objects have a default hash method that uses
1639 ``id(obj)`` as the hash value. There's no tidy way to remove the
1640 :meth:`__hash__` method inherited from a parent class, so
1641 assigning ``None`` was implemented as an override. At the
1642 C level, extensions can set ``tp_hash`` to
Georg Brandl60203b42010-10-06 10:11:56 +00001643 :c:func:`PyObject_HashNotImplemented`.
Benjamin Petersondcc1e112008-09-03 22:22:18 +00001644 (Fixed by Nick Coghlan and Amaury Forgeot d'Arc; :issue:`2235`.)
1645
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001646* The :exc:`GeneratorExit` exception now subclasses
1647 :exc:`BaseException` instead of :exc:`Exception`. This means
Christian Heimes90aa7642007-12-19 02:45:37 +00001648 that an exception handler that does ``except Exception:``
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001649 will not inadvertently catch :exc:`GeneratorExit`.
Christian Heimes33fe8092008-04-13 13:53:33 +00001650 (Contributed by Chad Austin; :issue:`1537`.)
Christian Heimes90aa7642007-12-19 02:45:37 +00001651
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001652* Generator objects now have a :attr:`gi_code` attribute that refers to
1653 the original code object backing the generator.
Christian Heimes33fe8092008-04-13 13:53:33 +00001654 (Contributed by Collin Winter; :issue:`1473257`.)
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001655
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001656* The :func:`compile` built-in function now accepts keyword arguments
Christian Heimes33fe8092008-04-13 13:53:33 +00001657 as well as positional parameters. (Contributed by Thomas Wouters;
1658 :issue:`1444529`.)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001659
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001660* The :func:`complex` constructor now accepts strings containing
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001661 parenthesized complex numbers, meaning that ``complex(repr(cplx))``
Thomas Wouters89d996e2007-09-08 17:39:28 +00001662 will now round-trip values. For example, ``complex('(3+4j)')``
Christian Heimes33fe8092008-04-13 13:53:33 +00001663 now returns the value (3+4j). (:issue:`1491866`)
Thomas Wouters89d996e2007-09-08 17:39:28 +00001664
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001665* The string :meth:`translate` method now accepts ``None`` as the
1666 translation table parameter, which is treated as the identity
Thomas Wouters89d996e2007-09-08 17:39:28 +00001667 transformation. This makes it easier to carry out operations
Georg Brandl3dbca812008-07-23 16:10:53 +00001668 that only delete characters. (Contributed by Bengt Richter and
1669 implemented by Raymond Hettinger; :issue:`1193128`.)
Thomas Wouters89d996e2007-09-08 17:39:28 +00001670
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001671* The built-in :func:`dir` function now checks for a :meth:`__dir__`
1672 method on the objects it receives. This method must return a list
1673 of strings containing the names of valid attributes for the object,
1674 and lets the object control the value that :func:`dir` produces.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001675 Objects that have :meth:`__getattr__` or :meth:`__getattribute__`
Christian Heimescbf3b5c2007-12-03 21:02:03 +00001676 methods can use this to advertise pseudo-attributes they will honor.
Christian Heimes33fe8092008-04-13 13:53:33 +00001677 (:issue:`1591665`)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001678
Christian Heimes02781dc2008-03-21 01:11:52 +00001679* Instance method objects have new attributes for the object and function
1680 comprising the method; the new synonym for :attr:`im_self` is
1681 :attr:`__self__`, and :attr:`im_func` is also available as :attr:`__func__`.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001682 The old names are still supported in Python 2.6, but are gone in 3.0.
Christian Heimes02781dc2008-03-21 01:11:52 +00001683
Benjamin Petersond23f8222009-04-05 19:13:16 +00001684* An obscure change: when you use the :func:`locals` function inside a
Georg Brandl116aa622007-08-15 14:28:22 +00001685 :keyword:`class` statement, the resulting dictionary no longer returns free
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001686 variables. (Free variables, in this case, are variables referenced in the
Georg Brandl116aa622007-08-15 14:28:22 +00001687 :keyword:`class` statement that aren't attributes of the class.)
1688
Christian Heimes5b5e81c2007-12-31 16:14:33 +00001689.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00001690
1691
1692Optimizations
1693-------------
1694
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001695* The :mod:`warnings` module has been rewritten in C. This makes
1696 it possible to invoke warnings from the parser, and may also
1697 make the interpreter's startup faster.
1698 (Contributed by Neal Norwitz and Brett Cannon; :issue:`1631171`.)
1699
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001700* Type objects now have a cache of methods that can reduce
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001701 the work required to find the correct method implementation
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001702 for a particular class; once cached, the interpreter doesn't need to
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001703 traverse base classes to figure out the right method to call.
1704 The cache is cleared if a base class or the class itself is modified,
1705 so the cache should remain correct even in the face of Python's dynamic
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001706 nature.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001707 (Original optimization implemented by Armin Rigo, updated for
1708 Python 2.6 by Kevin Jacobs; :issue:`1700288`.)
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001709
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001710 By default, this change is only applied to types that are included with
1711 the Python core. Extension modules may not necessarily be compatible with
1712 this cache,
Georg Brandl60203b42010-10-06 10:11:56 +00001713 so they must explicitly add :c:macro:`Py_TPFLAGS_HAVE_VERSION_TAG`
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001714 to the module's ``tp_flags`` field to enable the method cache.
1715 (To be compatible with the method cache, the extension module's code
1716 must not directly access and modify the ``tp_dict`` member of
1717 any of the types it implements. Most modules don't do this,
1718 but it's impossible for the Python interpreter to determine that.
1719 See :issue:`1878` for some discussion.)
1720
1721* Function calls that use keyword arguments are significantly faster
1722 by doing a quick pointer comparison, usually saving the time of a
1723 full string comparison. (Contributed by Raymond Hettinger, after an
1724 initial implementation by Antoine Pitrou; :issue:`1819`.)
Georg Brandl734e2682008-08-12 08:18:18 +00001725
Christian Heimes3f419af2008-01-04 03:08:33 +00001726* All of the functions in the :mod:`struct` module have been rewritten in
1727 C, thanks to work at the Need For Speed sprint.
1728 (Contributed by Raymond Hettinger.)
1729
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001730* Some of the standard built-in types now set a bit in their type
1731 objects. This speeds up checking whether an object is a subclass of
1732 one of these types. (Contributed by Neal Norwitz.)
Georg Brandl116aa622007-08-15 14:28:22 +00001733
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001734* Unicode strings now use faster code for detecting
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001735 whitespace and line breaks; this speeds up the :meth:`split` method
Christian Heimes78644762008-03-04 23:39:23 +00001736 by about 25% and :meth:`splitlines` by 35%.
Christian Heimes02781dc2008-03-21 01:11:52 +00001737 (Contributed by Antoine Pitrou.) Memory usage is reduced
1738 by using pymalloc for the Unicode string's data.
1739
1740* The ``with`` statement now stores the :meth:`__exit__` method on the stack,
Christian Heimesf6cd9672008-03-26 13:45:42 +00001741 producing a small speedup. (Implemented by Jeffrey Yasskin.)
Christian Heimes78644762008-03-04 23:39:23 +00001742
1743* To reduce memory usage, the garbage collector will now clear internal
1744 free lists when garbage-collecting the highest generation of objects.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001745 This may return memory to the operating system sooner.
Christian Heimes78644762008-03-04 23:39:23 +00001746
Christian Heimes5b5e81c2007-12-31 16:14:33 +00001747.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00001748
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001749.. _new-26-interpreter:
Christian Heimes33fe8092008-04-13 13:53:33 +00001750
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001751Interpreter Changes
Christian Heimes33fe8092008-04-13 13:53:33 +00001752-------------------------------
1753
1754Two command-line options have been reserved for use by other Python
1755implementations. The :option:`-J` switch has been reserved for use by
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001756Jython for Jython-specific options, such as switches that are passed to
Christian Heimes33fe8092008-04-13 13:53:33 +00001757the underlying JVM. :option:`-X` has been reserved for options
1758specific to a particular implementation of Python such as CPython,
1759Jython, or IronPython. If either option is used with Python 2.6, the
1760interpreter will report that the option isn't currently used.
1761
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001762Python can now be prevented from writing :file:`.pyc` or :file:`.pyo`
1763files by supplying the :option:`-B` switch to the Python interpreter,
1764or by setting the :envvar:`PYTHONDONTWRITEBYTECODE` environment
1765variable before running the interpreter. This setting is available to
1766Python programs as the ``sys.dont_write_bytecode`` variable, and
1767Python code can change the value to modify the interpreter's
1768behaviour. (Contributed by Neal Norwitz and Georg Brandl.)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001769
1770The encoding used for standard input, output, and standard error can
1771be specified by setting the :envvar:`PYTHONIOENCODING` environment
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001772variable before running the interpreter. The value should be a string
1773in the form ``<encoding>`` or ``<encoding>:<errorhandler>``.
1774The *encoding* part specifies the encoding's name, e.g. ``utf-8`` or
1775``latin-1``; the optional *errorhandler* part specifies
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001776what to do with characters that can't be handled by the encoding,
1777and should be one of "error", "ignore", or "replace". (Contributed
Antoine Pitroufbd4f802012-08-11 16:51:50 +02001778by Martin von Löwis.)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001779
Christian Heimes33fe8092008-04-13 13:53:33 +00001780.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00001781
Georg Brandl8bd05462009-11-18 18:53:54 +00001782New and Improved Modules
1783========================
Georg Brandl116aa622007-08-15 14:28:22 +00001784
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001785As in every release, Python's standard library received a number of
1786enhancements and bug fixes. Here's a partial list of the most notable
1787changes, sorted alphabetically by module name. Consult the
1788:file:`Misc/NEWS` file in the source tree for a more complete list of
1789changes, or look through the Subversion logs for all the details.
Georg Brandl116aa622007-08-15 14:28:22 +00001790
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001791* The :mod:`asyncore` and :mod:`asynchat` modules are
1792 being actively maintained again, and a number of patches and bugfixes
1793 were applied. (Maintained by Josiah Carlson; see :issue:`1736190` for
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001794 one patch.)
1795
Antoine Pitroufbd4f802012-08-11 16:51:50 +02001796* The :mod:`bsddb` module also has a new maintainer, Jesús Cea Avión, and the package
Benjamin Peterson5478b472008-09-17 22:25:09 +00001797 is now available as a standalone package. The web page for the package is
1798 `www.jcea.es/programacion/pybsddb.htm
Georg Brandl5d941342016-02-26 19:37:12 +01001799 <https://www.jcea.es/programacion/pybsddb.htm>`__.
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00001800 The plan is to remove the package from the standard library
1801 in Python 3.0, because its pace of releases is much more frequent than
1802 Python's.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001803
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00001804 The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol
Georg Brandl9afde1c2007-11-01 20:32:30 +00001805 available, instead of restricting itself to protocol 1.
Georg Brandl495f7b52009-10-27 15:28:25 +00001806 (Contributed by W. Barnes.)
Georg Brandl9afde1c2007-11-01 20:32:30 +00001807
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001808* The :mod:`cgi` module will now read variables from the query string
1809 of an HTTP POST request. This makes it possible to use form actions
1810 with URLs that include query strings such as
1811 "/cgi-bin/add.py?category=1". (Contributed by Alexandre Fiori and
1812 Nubis; :issue:`1817`.)
Georg Brandl86b2fb92008-07-16 03:43:04 +00001813
Georg Brandl48310cd2009-01-03 21:18:54 +00001814 The :func:`parse_qs` and :func:`parse_qsl` functions have been
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00001815 relocated from the :mod:`cgi` module to the :mod:`urlparse` module.
Georg Brandl48310cd2009-01-03 21:18:54 +00001816 The versions still available in the :mod:`cgi` module will
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00001817 trigger :exc:`PendingDeprecationWarning` messages in 2.6
1818 (:issue:`600362`).
1819
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001820* The :mod:`cmath` module underwent extensive revision,
1821 contributed by Mark Dickinson and Christian Heimes.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001822 Five new functions were added:
Christian Heimesa342c012008-04-20 21:01:16 +00001823
1824 * :func:`polar` converts a complex number to polar form, returning
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001825 the modulus and argument of the complex number.
Christian Heimesa342c012008-04-20 21:01:16 +00001826
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001827 * :func:`rect` does the opposite, turning a modulus, argument pair
Christian Heimesa342c012008-04-20 21:01:16 +00001828 back into the corresponding complex number.
1829
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001830 * :func:`phase` returns the argument (also called the angle) of a complex
1831 number.
Christian Heimesa342c012008-04-20 21:01:16 +00001832
1833 * :func:`isnan` returns True if either
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001834 the real or imaginary part of its argument is a NaN.
Christian Heimesa342c012008-04-20 21:01:16 +00001835
1836 * :func:`isinf` returns True if either the real or imaginary part of
1837 its argument is infinite.
1838
1839 The revisions also improved the numerical soundness of the
1840 :mod:`cmath` module. For all functions, the real and imaginary
1841 parts of the results are accurate to within a few units of least
1842 precision (ulps) whenever possible. See :issue:`1381` for the
1843 details. The branch cuts for :func:`asinh`, :func:`atanh`: and
1844 :func:`atan` have also been corrected.
1845
1846 The tests for the module have been greatly expanded; nearly 2000 new
1847 test cases exercise the algebraic functions.
1848
1849 On IEEE 754 platforms, the :mod:`cmath` module now handles IEEE 754
1850 special values and floating-point exceptions in a manner consistent
1851 with Annex 'G' of the C99 standard.
1852
Georg Brandl9afde1c2007-11-01 20:32:30 +00001853* A new data type in the :mod:`collections` module: :class:`namedtuple(typename,
Georg Brandl116aa622007-08-15 14:28:22 +00001854 fieldnames)` is a factory function that creates subclasses of the standard tuple
1855 whose fields are accessible by name as well as index. For example::
1856
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001857 >>> var_type = collections.namedtuple('variable',
Georg Brandl9afde1c2007-11-01 20:32:30 +00001858 ... 'id name type size')
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001859 >>> # Names are separated by spaces or commas.
1860 >>> # 'id, name, type, size' would also work.
Christian Heimes0449f632007-12-15 01:27:15 +00001861 >>> var_type._fields
Georg Brandl9afde1c2007-11-01 20:32:30 +00001862 ('id', 'name', 'type', 'size')
Georg Brandl116aa622007-08-15 14:28:22 +00001863
Georg Brandl9afde1c2007-11-01 20:32:30 +00001864 >>> var = var_type(1, 'frequency', 'int', 4)
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001865 >>> print var[0], var.id # Equivalent
Georg Brandl9afde1c2007-11-01 20:32:30 +00001866 1 1
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001867 >>> print var[2], var.type # Equivalent
Georg Brandl9afde1c2007-11-01 20:32:30 +00001868 int int
Christian Heimes0449f632007-12-15 01:27:15 +00001869 >>> var._asdict()
Georg Brandl9afde1c2007-11-01 20:32:30 +00001870 {'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
Christian Heimesa156e092008-02-16 07:38:31 +00001871 >>> v2 = var._replace(name='amplitude')
Georg Brandl9afde1c2007-11-01 20:32:30 +00001872 >>> v2
1873 variable(id=1, name='amplitude', type='int', size=4)
Georg Brandl116aa622007-08-15 14:28:22 +00001874
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001875 Several places in the standard library that returned tuples have
1876 been modified to return :class:`namedtuple` instances. For example,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001877 the :meth:`Decimal.as_tuple` method now returns a named tuple with
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001878 :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
1879
Georg Brandl116aa622007-08-15 14:28:22 +00001880 (Contributed by Raymond Hettinger.)
1881
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001882* Another change to the :mod:`collections` module is that the
Christian Heimes895627f2007-12-08 17:28:33 +00001883 :class:`deque` type now supports an optional *maxlen* parameter;
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001884 if supplied, the deque's size will be restricted to no more
Christian Heimes895627f2007-12-08 17:28:33 +00001885 than *maxlen* items. Adding more items to a full deque causes
Georg Brandl9afde1c2007-11-01 20:32:30 +00001886 old items to be discarded.
1887
1888 ::
1889
1890 >>> from collections import deque
1891 >>> dq=deque(maxlen=3)
1892 >>> dq
1893 deque([], maxlen=3)
Serhiy Storchakaf47036c2013-12-24 11:04:36 +02001894 >>> dq.append(1); dq.append(2); dq.append(3)
Georg Brandl9afde1c2007-11-01 20:32:30 +00001895 >>> dq
1896 deque([1, 2, 3], maxlen=3)
1897 >>> dq.append(4)
1898 >>> dq
1899 deque([2, 3, 4], maxlen=3)
1900
1901 (Contributed by Raymond Hettinger.)
1902
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00001903* The :mod:`Cookie` module's :class:`Morsel` objects now support an
1904 :attr:`httponly` attribute. In some browsers. cookies with this attribute
1905 set cannot be accessed or manipulated by JavaScript code.
1906 (Contributed by Arvin Schnell; :issue:`1638033`.)
1907
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001908* A new window method in the :mod:`curses` module,
1909 :meth:`chgat`, changes the display attributes for a certain number of
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001910 characters on a single line. (Contributed by Fabian Kreutz.)
Georg Brandl48310cd2009-01-03 21:18:54 +00001911
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001912 ::
Georg Brandl116aa622007-08-15 14:28:22 +00001913
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001914 # Boldface text starting at y=0,x=21
Georg Brandl116aa622007-08-15 14:28:22 +00001915 # and affecting the rest of the line.
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001916 stdscr.chgat(0, 21, curses.A_BOLD)
Georg Brandl116aa622007-08-15 14:28:22 +00001917
Christian Heimesfdab48e2008-01-20 09:06:41 +00001918 The :class:`Textbox` class in the :mod:`curses.textpad` module
1919 now supports editing in insert mode as well as overwrite mode.
1920 Insert mode is enabled by supplying a true value for the *insert_mode*
1921 parameter when creating the :class:`Textbox` instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001922
Christian Heimes02781dc2008-03-21 01:11:52 +00001923* The :mod:`datetime` module's :meth:`strftime` methods now support a
1924 ``%f`` format code that expands to the number of microseconds in the
1925 object, zero-padded on
Christian Heimes33fe8092008-04-13 13:53:33 +00001926 the left to six places. (Contributed by Skip Montanaro; :issue:`1158`.)
Christian Heimes02781dc2008-03-21 01:11:52 +00001927
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001928* The :mod:`decimal` module was updated to version 1.66 of
Georg Brandl5d941342016-02-26 19:37:12 +01001929 `the General Decimal Specification <http://speleotrove.com/decimal/decarith.html>`__. New features
Georg Brandl9afde1c2007-11-01 20:32:30 +00001930 include some methods for some basic mathematical functions such as
1931 :meth:`exp` and :meth:`log10`::
1932
1933 >>> Decimal(1).exp()
1934 Decimal("2.718281828459045235360287471")
1935 >>> Decimal("2.7182818").ln()
1936 Decimal("0.9999999895305022877376682436")
1937 >>> Decimal(1000).log10()
1938 Decimal("3")
1939
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001940 The :meth:`as_tuple` method of :class:`Decimal` objects now returns a
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001941 named tuple with :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001942
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001943 (Implemented by Facundo Batista and Mark Dickinson. Named tuple
1944 support added by Raymond Hettinger.)
1945
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001946* The :mod:`difflib` module's :class:`SequenceMatcher` class
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001947 now returns named tuples representing matches,
1948 with :attr:`a`, :attr:`b`, and :attr:`size` attributes.
Guido van Rossum7736b5b2008-01-15 21:44:53 +00001949 (Contributed by Raymond Hettinger.)
Georg Brandl9afde1c2007-11-01 20:32:30 +00001950
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001951* An optional ``timeout`` parameter, specifying a timeout measured in
1952 seconds, was added to the :class:`ftplib.FTP` class constructor as
1953 well as the :meth:`connect` method. (Added by Facundo Batista.)
1954 Also, the :class:`FTP` class's :meth:`storbinary` and
1955 :meth:`storlines` now take an optional *callback* parameter that
1956 will be called with each block of data after the data has been sent.
Christian Heimes33fe8092008-04-13 13:53:33 +00001957 (Contributed by Phil Schwartz; :issue:`1221598`.)
Thomas Wouters89d996e2007-09-08 17:39:28 +00001958
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001959* The :func:`reduce` built-in function is also available in the
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001960 :mod:`functools` module. In Python 3.0, the builtin has been
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001961 dropped and :func:`reduce` is only available from :mod:`functools`;
Georg Brandl93dc9eb2010-03-14 10:56:14 +00001962 currently there are no plans to drop the builtin in the 2.x series.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001963 (Patched by Christian Heimes; :issue:`1739906`.)
Georg Brandl9afde1c2007-11-01 20:32:30 +00001964
Georg Brandl0c77a822008-06-10 16:37:50 +00001965* When possible, the :mod:`getpass` module will now use
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001966 :file:`/dev/tty` to print a prompt message and read the password,
1967 falling back to standard error and standard input. If the
1968 password may be echoed to the terminal, a warning is printed before
1969 the prompt is displayed. (Contributed by Gregory P. Smith.)
Georg Brandl0c77a822008-06-10 16:37:50 +00001970
1971* The :func:`glob.glob` function can now return Unicode filenames if
Christian Heimes33fe8092008-04-13 13:53:33 +00001972 a Unicode path was used and Unicode filenames are matched within the
1973 directory. (:issue:`1001604`)
Georg Brandl116aa622007-08-15 14:28:22 +00001974
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001975* A new function in the :mod:`heapq` module, ``merge(iter1, iter2, ...)``,
1976 takes any number of iterables returning data in sorted
Benjamin Petersonae5360b2008-09-08 23:05:23 +00001977 order, and returns a new generator that returns the contents of all
Christian Heimes02781dc2008-03-21 01:11:52 +00001978 the iterators, also in sorted order. For example::
Georg Brandl116aa622007-08-15 14:28:22 +00001979
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00001980 >>> list(heapq.merge([1, 3, 5, 9], [2, 8, 16]))
1981 [1, 2, 3, 5, 8, 9, 16]
Georg Brandl116aa622007-08-15 14:28:22 +00001982
Christian Heimes02781dc2008-03-21 01:11:52 +00001983 Another new function, ``heappushpop(heap, item)``,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001984 pushes *item* onto *heap*, then pops off and returns the smallest item.
Christian Heimes02781dc2008-03-21 01:11:52 +00001985 This is more efficient than making a call to :func:`heappush` and then
1986 :func:`heappop`.
1987
Georg Brandl0c77a822008-06-10 16:37:50 +00001988 :mod:`heapq` is now implemented to only use less-than comparison,
1989 instead of the less-than-or-equal comparison it previously used.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001990 This makes :mod:`heapq`'s usage of a type match the
Georg Brandl0c77a822008-06-10 16:37:50 +00001991 :meth:`list.sort` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001992 (Contributed by Raymond Hettinger.)
1993
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001994* An optional ``timeout`` parameter, specifying a timeout measured in
1995 seconds, was added to the :class:`httplib.HTTPConnection` and
1996 :class:`HTTPSConnection` class constructors. (Added by Facundo
1997 Batista.)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00001998
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00001999* Most of the :mod:`inspect` module's functions, such as
2000 :func:`getmoduleinfo` and :func:`getargs`, now return named tuples.
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002001 In addition to behaving like tuples, the elements of the return value
2002 can also be accessed as attributes.
2003 (Contributed by Raymond Hettinger.)
2004
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002005 Some new functions in the module include
2006 :func:`isgenerator`, :func:`isgeneratorfunction`,
Christian Heimes78644762008-03-04 23:39:23 +00002007 and :func:`isabstract`.
2008
2009* The :mod:`itertools` module gained several new functions.
2010
2011 ``izip_longest(iter1, iter2, ...[, fillvalue])`` makes tuples from
2012 each of the elements; if some of the iterables are shorter than
2013 others, the missing values are set to *fillvalue*. For example::
Georg Brandl116aa622007-08-15 14:28:22 +00002014
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002015 >>> tuple(itertools.izip_longest([1,2,3], [1,2,3,4,5]))
2016 ((1, 1), (2, 2), (3, 3), (None, 4), (None, 5))
Georg Brandl116aa622007-08-15 14:28:22 +00002017
Christian Heimes78644762008-03-04 23:39:23 +00002018 ``product(iter1, iter2, ..., [repeat=N])`` returns the Cartesian product
2019 of the supplied iterables, a set of tuples containing
2020 every possible combination of the elements returned from each iterable. ::
2021
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002022 >>> list(itertools.product([1,2,3], [4,5,6]))
2023 [(1, 4), (1, 5), (1, 6),
Georg Brandla1c6a1c2009-01-03 21:26:05 +00002024 (2, 4), (2, 5), (2, 6),
2025 (3, 4), (3, 5), (3, 6)]
Christian Heimes78644762008-03-04 23:39:23 +00002026
2027 The optional *repeat* keyword argument is used for taking the
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002028 product of an iterable or a set of iterables with themselves,
Christian Heimes78644762008-03-04 23:39:23 +00002029 repeated *N* times. With a single iterable argument, *N*-tuples
2030 are returned::
2031
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002032 >>> list(itertools.product([1,2], repeat=3))
2033 [(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
2034 (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
Christian Heimes78644762008-03-04 23:39:23 +00002035
2036 With two iterables, *2N*-tuples are returned. ::
2037
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002038 >>> list(itertools.product([1,2], [3,4], repeat=2))
2039 [(1, 3, 1, 3), (1, 3, 1, 4), (1, 3, 2, 3), (1, 3, 2, 4),
2040 (1, 4, 1, 3), (1, 4, 1, 4), (1, 4, 2, 3), (1, 4, 2, 4),
2041 (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),
2042 (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]
Christian Heimes78644762008-03-04 23:39:23 +00002043
Christian Heimes02781dc2008-03-21 01:11:52 +00002044 ``combinations(iterable, r)`` returns sub-sequences of length *r* from
Christian Heimes78644762008-03-04 23:39:23 +00002045 the elements of *iterable*. ::
2046
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002047 >>> list(itertools.combinations('123', 2))
2048 [('1', '2'), ('1', '3'), ('2', '3')]
2049 >>> list(itertools.combinations('123', 3))
2050 [('1', '2', '3')]
2051 >>> list(itertools.combinations('1234', 3))
2052 [('1', '2', '3'), ('1', '2', '4'),
2053 ('1', '3', '4'), ('2', '3', '4')]
Christian Heimes78644762008-03-04 23:39:23 +00002054
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002055 ``permutations(iter[, r])`` returns all the permutations of length *r* of
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002056 the iterable's elements. If *r* is not specified, it will default to the
Christian Heimes5d8da202008-05-06 13:58:24 +00002057 number of elements produced by the iterable. ::
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002058
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002059 >>> list(itertools.permutations([1,2,3,4], 2))
2060 [(1, 2), (1, 3), (1, 4),
2061 (2, 1), (2, 3), (2, 4),
2062 (3, 1), (3, 2), (3, 4),
2063 (4, 1), (4, 2), (4, 3)]
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002064
Christian Heimes5e696852008-04-09 08:37:03 +00002065 ``itertools.chain(*iterables)`` is an existing function in
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002066 :mod:`itertools` that gained a new constructor in Python 2.6.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002067 ``itertools.chain.from_iterable(iterable)`` takes a single
Christian Heimes78644762008-03-04 23:39:23 +00002068 iterable that should return other iterables. :func:`chain` will
2069 then return all the elements of the first iterable, then
2070 all the elements of the second, and so on. ::
2071
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002072 >>> list(itertools.chain.from_iterable([[1,2,3], [4,5,6]]))
2073 [1, 2, 3, 4, 5, 6]
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002074
Christian Heimes78644762008-03-04 23:39:23 +00002075 (All contributed by Raymond Hettinger.)
Georg Brandl116aa622007-08-15 14:28:22 +00002076
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002077* The :mod:`logging` module's :class:`FileHandler` class
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002078 and its subclasses :class:`WatchedFileHandler`, :class:`RotatingFileHandler`,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002079 and :class:`TimedRotatingFileHandler` now
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002080 have an optional *delay* parameter to their constructors. If *delay*
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002081 is true, opening of the log file is deferred until the first
2082 :meth:`emit` call is made. (Contributed by Vinay Sajip.)
2083
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002084 :class:`TimedRotatingFileHandler` also has a *utc* constructor
2085 parameter. If the argument is true, UTC time will be used
Georg Brandl0c77a822008-06-10 16:37:50 +00002086 in determining when midnight occurs and in generating filenames;
2087 otherwise local time will be used.
2088
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002089* Several new functions were added to the :mod:`math` module:
Georg Brandl116aa622007-08-15 14:28:22 +00002090
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002091 * :func:`~math.isinf` and :func:`~math.isnan` determine whether a given float
2092 is a (positive or negative) infinity or a NaN (Not a Number), respectively.
2093
2094 * :func:`~math.copysign` copies the sign bit of an IEEE 754 number,
2095 returning the absolute value of *x* combined with the sign bit of
2096 *y*. For example, ``math.copysign(1, -0.0)`` returns -1.0.
2097 (Contributed by Christian Heimes.)
2098
2099 * :func:`~math.factorial` computes the factorial of a number.
2100 (Contributed by Raymond Hettinger; :issue:`2138`.)
2101
2102 * :func:`~math.fsum` adds up the stream of numbers from an iterable,
2103 and is careful to avoid loss of precision through using partial sums.
2104 (Contributed by Jean Brouwers, Raymond Hettinger, and Mark Dickinson;
2105 :issue:`2819`.)
2106
2107 * :func:`~math.acosh`, :func:`~math.asinh`
2108 and :func:`~math.atanh` compute the inverse hyperbolic functions.
2109
2110 * :func:`~math.log1p` returns the natural logarithm of *1+x*
2111 (base *e*).
2112
2113 * :func:`trunc` rounds a number toward zero, returning the closest
2114 :class:`Integral` that's between the function's argument and zero.
2115 Added as part of the backport of
2116 `PEP 3141's type hierarchy for numbers <#pep-3141>`__.
2117
2118* The :mod:`math` module has been improved to give more consistent
2119 behaviour across platforms, especially with respect to handling of
2120 floating-point exceptions and IEEE 754 special values.
2121
2122 Whenever possible, the module follows the recommendations of the C99
2123 standard about 754's special values. For example, ``sqrt(-1.)``
2124 should now give a :exc:`ValueError` across almost all platforms,
2125 while ``sqrt(float('NaN'))`` should return a NaN on all IEEE 754
2126 platforms. Where Annex 'F' of the C99 standard recommends signaling
2127 'divide-by-zero' or 'invalid', Python will raise :exc:`ValueError`.
2128 Where Annex 'F' of the C99 standard recommends signaling 'overflow',
2129 Python will raise :exc:`OverflowError`. (See :issue:`711019` and
2130 :issue:`1640`.)
2131
2132 (Contributed by Christian Heimes and Mark Dickinson.)
2133
Serhiy Storchakaee1b01a2016-12-02 23:13:53 +02002134* :class:`~mmap.mmap` objects now have a :meth:`rfind` method that searches for a
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002135 substring beginning at the end of the string and searching
2136 backwards. The :meth:`find` method also gained an *end* parameter
2137 giving an index at which to stop searching.
Georg Brandlfceab5a2008-01-19 20:08:23 +00002138 (Contributed by John Lenton.)
2139
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002140* The :mod:`operator` module gained a
2141 :func:`methodcaller` function that takes a name and an optional
2142 set of arguments, returning a callable that will call
Christian Heimes78644762008-03-04 23:39:23 +00002143 the named function on any arguments passed to it. For example::
2144
2145 >>> # Equivalent to lambda s: s.replace('old', 'new')
2146 >>> replacer = operator.methodcaller('replace', 'old', 'new')
2147 >>> replacer('old wine in old bottles')
2148 'new wine in new bottles'
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002149
Christian Heimes78644762008-03-04 23:39:23 +00002150 (Contributed by Georg Brandl, after a suggestion by Gregory Petrosyan.)
2151
2152 The :func:`attrgetter` function now accepts dotted names and performs
2153 the corresponding attribute lookups::
2154
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002155 >>> inst_name = operator.attrgetter(
2156 ... '__class__.__name__')
Christian Heimes78644762008-03-04 23:39:23 +00002157 >>> inst_name('')
2158 'str'
2159 >>> inst_name(help)
2160 '_Helper'
2161
2162 (Contributed by Georg Brandl, after a suggestion by Barry Warsaw.)
2163
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002164* The :mod:`os` module now wraps several new system calls.
2165 ``fchmod(fd, mode)`` and ``fchown(fd, uid, gid)`` change the mode
2166 and ownership of an opened file, and ``lchmod(path, mode)`` changes
2167 the mode of a symlink. (Contributed by Georg Brandl and Christian
2168 Heimes.)
Christian Heimes90aa7642007-12-19 02:45:37 +00002169
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002170 :func:`chflags` and :func:`lchflags` are wrappers for the
2171 corresponding system calls (where they're available), changing the
2172 flags set on a file. Constants for the flag values are defined in
2173 the :mod:`stat` module; some possible values include
2174 :const:`UF_IMMUTABLE` to signal the file may not be changed and
2175 :const:`UF_APPEND` to indicate that data can only be appended to the
2176 file. (Contributed by M. Levinson.)
2177
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002178 ``os.closerange(low, high)`` efficiently closes all file descriptors
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002179 from *low* to *high*, ignoring any errors and not including *high* itself.
2180 This function is now used by the :mod:`subprocess` module to make starting
2181 processes faster. (Contributed by Georg Brandl; :issue:`1663329`.)
2182
2183* The ``os.environ`` object's :meth:`clear` method will now unset the
2184 environment variables using :func:`os.unsetenv` in addition to clearing
2185 the object's keys. (Contributed by Martin Horcicka; :issue:`1181`.)
Christian Heimes90aa7642007-12-19 02:45:37 +00002186
Georg Brandl9afde1c2007-11-01 20:32:30 +00002187* The :func:`os.walk` function now has a ``followlinks`` parameter. If
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002188 set to True, it will follow symlinks pointing to directories and
2189 visit the directory's contents. For backward compatibility, the
2190 parameter's default value is false. Note that the function can fall
2191 into an infinite recursion if there's a symlink that points to a
Christian Heimes33fe8092008-04-13 13:53:33 +00002192 parent directory. (:issue:`1273829`)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002193
Thomas Wouters89d996e2007-09-08 17:39:28 +00002194* In the :mod:`os.path` module, the :func:`splitext` function
2195 has been changed to not split on leading period characters.
2196 This produces better results when operating on Unix's dot-files.
2197 For example, ``os.path.splitext('.ipython')``
2198 now returns ``('.ipython', '')`` instead of ``('', '.ipython')``.
Ezio Melotti19192dd2010-04-05 13:25:51 +00002199 (:issue:`1115886`)
Thomas Wouters89d996e2007-09-08 17:39:28 +00002200
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002201 A new function, ``os.path.relpath(path, start='.')``, returns a relative path
Thomas Wouters89d996e2007-09-08 17:39:28 +00002202 from the ``start`` path, if it's supplied, or from the current
2203 working directory to the destination ``path``. (Contributed by
Christian Heimes33fe8092008-04-13 13:53:33 +00002204 Richard Barran; :issue:`1339796`.)
Thomas Wouters89d996e2007-09-08 17:39:28 +00002205
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002206 On Windows, :func:`os.path.expandvars` will now expand environment variables
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002207 given in the form "%var%", and "~user" will be expanded into the
Christian Heimes33fe8092008-04-13 13:53:33 +00002208 user's home directory path. (Contributed by Josiah Carlson;
2209 :issue:`957650`.)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002210
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002211* The Python debugger provided by the :mod:`pdb` module
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002212 gained a new command: "run" restarts the Python program being debugged
Georg Brandl9afde1c2007-11-01 20:32:30 +00002213 and can optionally take new command-line arguments for the program.
Christian Heimes33fe8092008-04-13 13:53:33 +00002214 (Contributed by Rocky Bernstein; :issue:`1393667`.)
Georg Brandl9afde1c2007-11-01 20:32:30 +00002215
Georg Brandl8bd05462009-11-18 18:53:54 +00002216* The :func:`pdb.post_mortem` function, used to begin debugging a
Christian Heimes5e696852008-04-09 08:37:03 +00002217 traceback, will now use the traceback returned by :func:`sys.exc_info`
Christian Heimes33fe8092008-04-13 13:53:33 +00002218 if no traceback is supplied. (Contributed by Facundo Batista;
2219 :issue:`1106316`.)
Christian Heimes5e696852008-04-09 08:37:03 +00002220
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002221* The :mod:`pickletools` module now has an :func:`optimize` function
2222 that takes a string containing a pickle and removes some unused
Christian Heimes78644762008-03-04 23:39:23 +00002223 opcodes, returning a shorter pickle that contains the same data structure.
2224 (Contributed by Raymond Hettinger.)
2225
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002226* A :func:`get_data` function was added to the :mod:`pkgutil`
2227 module that returns the contents of resource files included
2228 with an installed Python package. For example::
2229
2230 >>> import pkgutil
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002231 >>> print pkgutil.get_data('test', 'exception_hierarchy.txt')
2232 BaseException
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002233 +-- SystemExit
2234 +-- KeyboardInterrupt
2235 +-- GeneratorExit
2236 +-- Exception
2237 +-- StopIteration
2238 +-- StandardError
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002239 ...
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002240
2241 (Contributed by Paul Moore; :issue:`2439`.)
2242
Christian Heimes2380ac72008-01-09 00:17:24 +00002243* The :mod:`pyexpat` module's :class:`Parser` objects now allow setting
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002244 their :attr:`buffer_size` attribute to change the size of the buffer
Christian Heimes2380ac72008-01-09 00:17:24 +00002245 used to hold character data.
Christian Heimes33fe8092008-04-13 13:53:33 +00002246 (Contributed by Achim Gaedke; :issue:`1137`.)
Christian Heimes2380ac72008-01-09 00:17:24 +00002247
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002248* The :mod:`Queue` module now provides queue variants that retrieve entries
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002249 in different orders. The :class:`PriorityQueue` class stores
2250 queued items in a heap and retrieves them in priority order,
Christian Heimesaf98da12008-01-27 15:18:18 +00002251 and :class:`LifoQueue` retrieves the most recently added entries first,
2252 meaning that it behaves like a stack.
2253 (Contributed by Raymond Hettinger.)
2254
Christian Heimes90aa7642007-12-19 02:45:37 +00002255* The :mod:`random` module's :class:`Random` objects can
2256 now be pickled on a 32-bit system and unpickled on a 64-bit
2257 system, and vice versa. Unfortunately, this change also means
2258 that Python 2.6's :class:`Random` objects can't be unpickled correctly
2259 on earlier versions of Python.
Christian Heimes33fe8092008-04-13 13:53:33 +00002260 (Contributed by Shawn Ligocki; :issue:`1727780`.)
Christian Heimes90aa7642007-12-19 02:45:37 +00002261
Christian Heimesf6cd9672008-03-26 13:45:42 +00002262 The new ``triangular(low, high, mode)`` function returns random
2263 numbers following a triangular distribution. The returned values
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002264 are between *low* and *high*, not including *high* itself, and
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002265 with *mode* as the most frequently occurring value
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00002266 in the distribution. (Contributed by Wladmir van der Laan and
Christian Heimes33fe8092008-04-13 13:53:33 +00002267 Raymond Hettinger; :issue:`1681432`.)
Christian Heimesf6cd9672008-03-26 13:45:42 +00002268
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002269* Long regular expression searches carried out by the :mod:`re`
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002270 module will check for signals being delivered, so
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002271 time-consuming searches can now be interrupted.
Christian Heimes33fe8092008-04-13 13:53:33 +00002272 (Contributed by Josh Hoyt and Ralf Schmitt; :issue:`846388`.)
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002273
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002274 The regular expression module is implemented by compiling bytecodes
2275 for a tiny regex-specific virtual machine. Untrusted code
2276 could create malicious strings of bytecode directly and cause crashes,
2277 so Python 2.6 includes a verifier for the regex bytecode.
2278 (Contributed by Guido van Rossum from work for Google App Engine;
2279 :issue:`3487`.)
2280
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002281* The :mod:`rlcompleter` module's :meth:`Completer.complete()` method
2282 will now ignore exceptions triggered while evaluating a name.
2283 (Fixed by Lorenz Quack; :issue:`2250`.)
2284
2285* The :mod:`sched` module's :class:`scheduler` instances now
2286 have a read-only :attr:`queue` attribute that returns the
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002287 contents of the scheduler's queue, represented as a list of
2288 named tuples with the fields ``(time, priority, action, argument)``.
Christian Heimes33fe8092008-04-13 13:53:33 +00002289 (Contributed by Raymond Hettinger; :issue:`1861`.)
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002290
Christian Heimesf6cd9672008-03-26 13:45:42 +00002291* The :mod:`select` module now has wrapper functions
Georg Brandl60203b42010-10-06 10:11:56 +00002292 for the Linux :c:func:`epoll` and BSD :c:func:`kqueue` system calls.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002293 :meth:`modify` method was added to the existing :class:`poll`
Christian Heimesf6cd9672008-03-26 13:45:42 +00002294 objects; ``pollobj.modify(fd, eventmask)`` takes a file descriptor
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002295 or file object and an event mask, modifying the recorded event mask
2296 for that file.
Christian Heimes33fe8092008-04-13 13:53:33 +00002297 (Contributed by Christian Heimes; :issue:`1657`.)
Christian Heimes5e696852008-04-09 08:37:03 +00002298
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002299* The :func:`shutil.copytree` function now has an optional *ignore* argument
Georg Brandl86b2fb92008-07-16 03:43:04 +00002300 that takes a callable object. This callable will receive each directory path
2301 and a list of the directory's contents, and returns a list of names that
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002302 will be ignored, not copied.
Georg Brandl86b2fb92008-07-16 03:43:04 +00002303
2304 The :mod:`shutil` module also provides an :func:`ignore_patterns`
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002305 function for use with this new parameter. :func:`ignore_patterns`
2306 takes an arbitrary number of glob-style patterns and returns a
2307 callable that will ignore any files and directories that match any
2308 of these patterns. The following example copies a directory tree,
2309 but skips both :file:`.svn` directories and Emacs backup files,
2310 which have names ending with '~'::
Georg Brandl86b2fb92008-07-16 03:43:04 +00002311
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002312 shutil.copytree('Doc/library', '/tmp/library',
Georg Brandl86b2fb92008-07-16 03:43:04 +00002313 ignore=shutil.ignore_patterns('*~', '.svn'))
2314
2315 (Contributed by Tarek Ziadé; :issue:`2663`.)
2316
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002317* Integrating signal handling with GUI handling event loops
Christian Heimes5fb7c2a2007-12-24 08:52:31 +00002318 like those used by Tkinter or GTk+ has long been a problem; most
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002319 software ends up polling, waking up every fraction of a second to check
2320 if any GUI events have occurred.
Christian Heimes5fb7c2a2007-12-24 08:52:31 +00002321 The :mod:`signal` module can now make this more efficient.
2322 Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002323 to be used; when a signal is received, a byte is written to that
Christian Heimes5fb7c2a2007-12-24 08:52:31 +00002324 file descriptor. There's also a C-level function,
Georg Brandl60203b42010-10-06 10:11:56 +00002325 :c:func:`PySignal_SetWakeupFd`, for setting the descriptor.
Christian Heimes5fb7c2a2007-12-24 08:52:31 +00002326
2327 Event loops will use this by opening a pipe to create two descriptors,
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00002328 one for reading and one for writing. The writable descriptor
Christian Heimes5fb7c2a2007-12-24 08:52:31 +00002329 will be passed to :func:`set_wakeup_fd`, and the readable descriptor
2330 will be added to the list of descriptors monitored by the event loop via
Georg Brandl60203b42010-10-06 10:11:56 +00002331 :c:func:`select` or :c:func:`poll`.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002332 On receiving a signal, a byte will be written and the main event loop
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002333 will be woken up, avoiding the need to poll.
Christian Heimes5fb7c2a2007-12-24 08:52:31 +00002334
Christian Heimes33fe8092008-04-13 13:53:33 +00002335 (Contributed by Adam Olsen; :issue:`1583`.)
Christian Heimes5fb7c2a2007-12-24 08:52:31 +00002336
Christian Heimes78644762008-03-04 23:39:23 +00002337 The :func:`siginterrupt` function is now available from Python code,
2338 and allows changing whether signals can interrupt system calls or not.
2339 (Contributed by Ralf Schmitt.)
2340
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00002341 The :func:`setitimer` and :func:`getitimer` functions have also been
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002342 added (where they're available). :func:`setitimer`
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00002343 allows setting interval timers that will cause a signal to be
2344 delivered to the process after a specified time, measured in
2345 wall-clock time, consumed process time, or combined process+system
Christian Heimes33fe8092008-04-13 13:53:33 +00002346 time. (Contributed by Guilherme Polo; :issue:`2240`.)
Neal Norwitzf5c7c2e2008-04-05 04:47:45 +00002347
Thomas Wouters89d996e2007-09-08 17:39:28 +00002348* The :mod:`smtplib` module now supports SMTP over SSL thanks to the
2349 addition of the :class:`SMTP_SSL` class. This class supports an
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002350 interface identical to the existing :class:`SMTP` class.
2351 (Contributed by Monty Taylor.) Both class constructors also have an
2352 optional ``timeout`` parameter that specifies a timeout for the
2353 initial connection attempt, measured in seconds. (Contributed by
2354 Facundo Batista.)
Thomas Wouters89d996e2007-09-08 17:39:28 +00002355
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002356 An implementation of the LMTP protocol (:rfc:`2033`) was also added
2357 to the module. LMTP is used in place of SMTP when transferring
2358 e-mail between agents that don't manage a mail queue. (LMTP
2359 implemented by Leif Hedstrom; :issue:`957003`.)
Thomas Wouters89d996e2007-09-08 17:39:28 +00002360
Georg Brandl8bd05462009-11-18 18:53:54 +00002361 :meth:`SMTP.starttls` now complies with :rfc:`3207` and forgets any
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002362 knowledge obtained from the server not obtained from the TLS
2363 negotiation itself. (Patch contributed by Bill Fenner;
Christian Heimes33fe8092008-04-13 13:53:33 +00002364 :issue:`829951`.)
Christian Heimes679db4a2008-01-18 09:56:22 +00002365
Georg Brandlb7354a62014-10-29 10:57:37 +01002366* The :mod:`socket` module now supports TIPC (http://tipc.sourceforge.net/),
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002367 a high-performance non-IP-based protocol designed for use in clustered
2368 environments. TIPC addresses are 4- or 5-tuples.
Christian Heimes33fe8092008-04-13 13:53:33 +00002369 (Contributed by Alberto Bertogli; :issue:`1646`.)
Georg Brandlfceab5a2008-01-19 20:08:23 +00002370
Benjamin Petersona0dfa822009-11-13 02:25:08 +00002371 A new function, :func:`create_connection`, takes an address and
2372 connects to it using an optional timeout value, returning the
2373 connected socket object. This function also looks up the address's
2374 type and connects to it using IPv4 or IPv6 as appropriate. Changing
2375 your code to use :func:`create_connection` instead of
2376 ``socket(socket.AF_INET, ...)`` may be all that's required to make
2377 your code work with IPv6.
Neal Norwitz32dde222008-04-15 06:43:13 +00002378
Georg Brandlfceab5a2008-01-19 20:08:23 +00002379* The base classes in the :mod:`SocketServer` module now support
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002380 calling a :meth:`handle_timeout` method after a span of inactivity
2381 specified by the server's :attr:`timeout` attribute. (Contributed
2382 by Michael Pomraning.) The :meth:`serve_forever` method
Christian Heimes5e696852008-04-09 08:37:03 +00002383 now takes an optional poll interval measured in seconds,
2384 controlling how often the server will check for a shutdown request.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002385 (Contributed by Pedro Werneck and Jeffrey Yasskin;
Christian Heimes33fe8092008-04-13 13:53:33 +00002386 :issue:`742598`, :issue:`1193577`.)
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002387
Antoine Pitroufbd4f802012-08-11 16:51:50 +02002388* The :mod:`sqlite3` module, maintained by Gerhard Häring,
Georg Brandl48310cd2009-01-03 21:18:54 +00002389 has been updated from version 2.3.2 in Python 2.5 to
Benjamin Peterson5478b472008-09-17 22:25:09 +00002390 version 2.4.1.
Georg Brandl48310cd2009-01-03 21:18:54 +00002391
Georg Brandl60203b42010-10-06 10:11:56 +00002392* The :mod:`struct` module now supports the C99 :c:type:`_Bool` type,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002393 using the format character ``'?'``.
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002394 (Contributed by David Remahl.)
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002395
2396* The :class:`Popen` objects provided by the :mod:`subprocess` module
2397 now have :meth:`terminate`, :meth:`kill`, and :meth:`send_signal` methods.
2398 On Windows, :meth:`send_signal` only supports the :const:`SIGTERM`
2399 signal, and all these methods are aliases for the Win32 API function
Georg Brandl60203b42010-10-06 10:11:56 +00002400 :c:func:`TerminateProcess`.
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002401 (Contributed by Christian Heimes.)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002402
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002403* A new variable in the :mod:`sys` module, :attr:`float_info`, is an
2404 object containing information derived from the :file:`float.h` file
2405 about the platform's floating-point support. Attributes of this
2406 object include :attr:`mant_dig` (number of digits in the mantissa),
2407 :attr:`epsilon` (smallest difference between 1.0 and the next
2408 largest value representable), and several others. (Contributed by
2409 Christian Heimes; :issue:`1534`.)
Christian Heimes90aa7642007-12-19 02:45:37 +00002410
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002411 Another new variable, :attr:`dont_write_bytecode`, controls whether Python
2412 writes any :file:`.pyc` or :file:`.pyo` files on importing a module.
2413 If this variable is true, the compiled files are not written. The
2414 variable is initially set on start-up by supplying the :option:`-B`
2415 switch to the Python interpreter, or by setting the
2416 :envvar:`PYTHONDONTWRITEBYTECODE` environment variable before
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002417 running the interpreter. Python code can subsequently
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002418 change the value of this variable to control whether bytecode files
2419 are written or not.
2420 (Contributed by Neal Norwitz and Georg Brandl.)
2421
Georg Brandl0c77a822008-06-10 16:37:50 +00002422 Information about the command-line arguments supplied to the Python
2423 interpreter is available by reading attributes of a named
2424 tuple available as ``sys.flags``. For example, the :attr:`verbose`
2425 attribute is true if Python
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002426 was executed in verbose mode, :attr:`debug` is true in debugging mode, etc.
2427 These attributes are all read-only.
2428 (Contributed by Christian Heimes.)
2429
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002430 A new function, :func:`getsizeof`, takes a Python object and returns
Georg Brandl0c77a822008-06-10 16:37:50 +00002431 the amount of memory used by the object, measured in bytes. Built-in
2432 objects return correct results; third-party extensions may not,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002433 but can define a :meth:`__sizeof__` method to return the
Georg Brandl0c77a822008-06-10 16:37:50 +00002434 object's size.
2435 (Contributed by Robert Schuppenies; :issue:`2898`.)
2436
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002437 It's now possible to determine the current profiler and tracer functions
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002438 by calling :func:`sys.getprofile` and :func:`sys.gettrace`.
Christian Heimes33fe8092008-04-13 13:53:33 +00002439 (Contributed by Georg Brandl; :issue:`1648`.)
Christian Heimesdd15f6c2008-03-16 00:07:10 +00002440
Benjamin Peterson9bc93512008-09-22 22:10:59 +00002441* The :mod:`tarfile` module now supports POSIX.1-2001 (pax) tarfiles in
2442 addition to the POSIX.1-1988 (ustar) and GNU tar formats that were
2443 already supported. The default format is GNU tar; specify the
2444 ``format`` parameter to open a file using a different format::
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002445
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002446 tar = tarfile.open("output.tar", "w",
2447 format=tarfile.PAX_FORMAT)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002448
Benjamin Peterson9bc93512008-09-22 22:10:59 +00002449 The new ``encoding`` and ``errors`` parameters specify an encoding and
2450 an error handling scheme for character conversions. ``'strict'``,
2451 ``'ignore'``, and ``'replace'`` are the three standard ways Python can
2452 handle errors,;
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002453 ``'utf-8'`` is a special value that replaces bad characters with
2454 their UTF-8 representation. (Character conversions occur because the
2455 PAX format supports Unicode filenames, defaulting to UTF-8 encoding.)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002456
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002457 The :meth:`TarFile.add` method now accepts an ``exclude`` argument that's
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002458 a function that can be used to exclude certain filenames from
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002459 an archive.
2460 The function must take a filename and return true if the file
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002461 should be excluded or false if it should be archived.
2462 The function is applied to both the name initially passed to :meth:`add`
2463 and to the names of files in recursively-added directories.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002464
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002465 (All changes contributed by Lars Gustäbel).
2466
Thomas Wouters89d996e2007-09-08 17:39:28 +00002467* An optional ``timeout`` parameter was added to the
2468 :class:`telnetlib.Telnet` class constructor, specifying a timeout
2469 measured in seconds. (Added by Facundo Batista.)
Georg Brandl116aa622007-08-15 14:28:22 +00002470
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002471* The :class:`tempfile.NamedTemporaryFile` class usually deletes
2472 the temporary file it created when the file is closed. This
2473 behaviour can now be changed by passing ``delete=False`` to the
Christian Heimes33fe8092008-04-13 13:53:33 +00002474 constructor. (Contributed by Damien Miller; :issue:`1537850`.)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002475
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002476 A new class, :class:`SpooledTemporaryFile`, behaves like
2477 a temporary file but stores its data in memory until a maximum size is
2478 exceeded. On reaching that limit, the contents will be written to
Christian Heimes78644762008-03-04 23:39:23 +00002479 an on-disk temporary file. (Contributed by Dustin J. Mitchell.)
2480
2481 The :class:`NamedTemporaryFile` and :class:`SpooledTemporaryFile` classes
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002482 both work as context managers, so you can write
Christian Heimes78644762008-03-04 23:39:23 +00002483 ``with tempfile.NamedTemporaryFile() as tmp: ...``.
Christian Heimes33fe8092008-04-13 13:53:33 +00002484 (Contributed by Alexander Belopolsky; :issue:`2021`.)
Christian Heimes78644762008-03-04 23:39:23 +00002485
Georg Brandl48310cd2009-01-03 21:18:54 +00002486* The :mod:`test.test_support` module gained a number
2487 of context managers useful for writing tests.
2488 :func:`EnvironmentVarGuard` is a
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002489 context manager that temporarily changes environment variables and
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002490 automatically restores them to their old values.
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002491
2492 Another context manager, :class:`TransientResource`, can surround calls
2493 to resources that may or may not be available; it will catch and
2494 ignore a specified list of exceptions. For example,
2495 a network test may ignore certain failures when connecting to an
2496 external web site::
2497
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002498 with test_support.TransientResource(IOError,
2499 errno=errno.ETIMEDOUT):
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002500 f = urllib.urlopen('https://sf.net')
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002501 ...
2502
Georg Brandl48310cd2009-01-03 21:18:54 +00002503 Finally, :func:`check_warnings` resets the :mod:`warning` module's
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002504 warning filters and returns an object that will record all warning
2505 messages triggered (:issue:`3781`)::
2506
2507 with test_support.check_warnings() as wrec:
2508 warnings.simplefilter("always")
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002509 # ... code that triggers a warning ...
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002510 assert str(wrec.message) == "function is outdated"
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002511 assert len(wrec.warnings) == 1, "Multiple warnings raised"
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002512
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002513 (Contributed by Brett Cannon.)
2514
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002515* The :mod:`textwrap` module can now preserve existing whitespace
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002516 at the beginnings and ends of the newly-created lines
2517 by specifying ``drop_whitespace=False``
2518 as an argument::
2519
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002520 >>> S = """This sentence has a bunch of
2521 ... extra whitespace."""
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002522 >>> print textwrap.fill(S, width=15)
2523 This sentence
2524 has a bunch
2525 of extra
2526 whitespace.
2527 >>> print textwrap.fill(S, drop_whitespace=False, width=15)
2528 This sentence
2529 has a bunch
2530 of extra
2531 whitespace.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002532 >>>
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002533
Christian Heimes33fe8092008-04-13 13:53:33 +00002534 (Contributed by Dwayne Bailey; :issue:`1581073`.)
Georg Brandl116aa622007-08-15 14:28:22 +00002535
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002536* The :mod:`threading` module API is being changed to use properties
2537 such as :attr:`daemon` instead of :meth:`setDaemon` and
2538 :meth:`isDaemon` methods, and some methods have been renamed to use
2539 underscores instead of camel-case; for example, the
2540 :meth:`activeCount` method is renamed to :meth:`active_count`. Both
2541 the 2.6 and 3.0 versions of the module support the same properties
2542 and renamed methods, but don't remove the old methods. No date has been set
Georg Brandl48310cd2009-01-03 21:18:54 +00002543 for the deprecation of the old APIs in Python 3.x; the old APIs won't
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002544 be removed in any 2.x version.
Benjamin Petersondcc1e112008-09-03 22:22:18 +00002545 (Carried out by several people, most notably Benjamin Peterson.)
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002546
2547 The :mod:`threading` module's :class:`Thread` objects
2548 gained an :attr:`ident` property that returns the thread's
2549 identifier, a nonzero integer. (Contributed by Gregory P. Smith;
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002550 :issue:`2871`.)
Georg Brandl0c77a822008-06-10 16:37:50 +00002551
2552* The :mod:`timeit` module now accepts callables as well as strings
Thomas Wouters89d996e2007-09-08 17:39:28 +00002553 for the statement being timed and for the setup code.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002554 Two convenience functions were added for creating
2555 :class:`Timer` instances:
2556 ``repeat(stmt, setup, time, repeat, number)`` and
Thomas Wouters89d996e2007-09-08 17:39:28 +00002557 ``timeit(stmt, setup, time, number)`` create an instance and call
Christian Heimes33fe8092008-04-13 13:53:33 +00002558 the corresponding method. (Contributed by Erik Demaine;
2559 :issue:`1533909`.)
Thomas Wouters89d996e2007-09-08 17:39:28 +00002560
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002561* The :mod:`Tkinter` module now accepts lists and tuples for options,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002562 separating the elements by spaces before passing the resulting value to
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002563 Tcl/Tk.
2564 (Contributed by Guilherme Polo; :issue:`2906`.)
2565
Georg Brandl0c77a822008-06-10 16:37:50 +00002566* The :mod:`turtle` module for turtle graphics was greatly enhanced by
2567 Gregor Lingl. New features in the module include:
2568
2569 * Better animation of turtle movement and rotation.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002570 * Control over turtle movement using the new :meth:`delay`,
2571 :meth:`tracer`, and :meth:`speed` methods.
2572 * The ability to set new shapes for the turtle, and to
Georg Brandl0c77a822008-06-10 16:37:50 +00002573 define a new coordinate system.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002574 * Turtles now have an :meth:`undo()` method that can roll back actions.
Georg Brandl0c77a822008-06-10 16:37:50 +00002575 * Simple support for reacting to input events such as mouse and keyboard
2576 activity, making it possible to write simple games.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002577 * A :file:`turtle.cfg` file can be used to customize the starting appearance
Georg Brandl0c77a822008-06-10 16:37:50 +00002578 of the turtle's screen.
2579 * The module's docstrings can be replaced by new docstrings that have been
2580 translated into another language.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002581
Georg Brandl0c77a822008-06-10 16:37:50 +00002582 (:issue:`1513695`)
2583
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002584* An optional ``timeout`` parameter was added to the
2585 :func:`urllib.urlopen` function and the
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002586 :class:`urllib.ftpwrapper` class constructor, as well as the
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002587 :func:`urllib2.urlopen` function. The parameter specifies a timeout
2588 measured in seconds. For example::
2589
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002590 >>> u = urllib2.urlopen("http://slow.example.com",
2591 timeout=3)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002592 Traceback (most recent call last):
2593 ...
2594 urllib2.URLError: <urlopen error timed out>
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002595 >>>
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002596
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002597 (Added by Facundo Batista.)
Thomas Wouters1b7f8912007-09-19 03:06:30 +00002598
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002599* The Unicode database provided by the :mod:`unicodedata` module
Georg Brandl48310cd2009-01-03 21:18:54 +00002600 has been updated to version 5.1.0. (Updated by
Antoine Pitroufbd4f802012-08-11 16:51:50 +02002601 Martin von Löwis; :issue:`3811`.)
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002602
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002603* The :mod:`warnings` module's :func:`formatwarning` and :func:`showwarning`
Alexandre Vassalotti6461e102008-05-15 22:09:29 +00002604 gained an optional *line* argument that can be used to supply the
2605 line of source code. (Added as part of :issue:`1631171`, which re-implemented
2606 part of the :mod:`warnings` module in C code.)
2607
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +00002608 A new function, :func:`catch_warnings`, is a context manager
2609 intended for testing purposes that lets you temporarily modify the
2610 warning filters and then restore their original values (:issue:`3781`).
Georg Brandl48310cd2009-01-03 21:18:54 +00002611
Alexandre Vassalotti6461e102008-05-15 22:09:29 +00002612* The XML-RPC :class:`SimpleXMLRPCServer` and :class:`DocXMLRPCServer`
Georg Brandl9afde1c2007-11-01 20:32:30 +00002613 classes can now be prevented from immediately opening and binding to
cocoatomoe6223572018-03-26 20:03:40 +09002614 their socket by passing ``False`` as the *bind_and_activate*
Georg Brandl9afde1c2007-11-01 20:32:30 +00002615 constructor parameter. This can be used to modify the instance's
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002616 :attr:`allow_reuse_address` attribute before calling the
2617 :meth:`server_bind` and :meth:`server_activate` methods to
Georg Brandl9afde1c2007-11-01 20:32:30 +00002618 open the socket and begin listening for connections.
Christian Heimes33fe8092008-04-13 13:53:33 +00002619 (Contributed by Peter Parente; :issue:`1599845`.)
Georg Brandl9afde1c2007-11-01 20:32:30 +00002620
2621 :class:`SimpleXMLRPCServer` also has a :attr:`_send_traceback_header`
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002622 attribute; if true, the exception and formatted traceback are returned
2623 as HTTP headers "X-Exception" and "X-Traceback". This feature is
Georg Brandl9afde1c2007-11-01 20:32:30 +00002624 for debugging purposes only and should not be used on production servers
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002625 because the tracebacks might reveal passwords or other sensitive
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002626 information. (Contributed by Alan McIntyre as part of his
Georg Brandl9afde1c2007-11-01 20:32:30 +00002627 project for Google's Summer of Code 2007.)
2628
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002629* The :mod:`xmlrpclib` module no longer automatically converts
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002630 :class:`datetime.date` and :class:`datetime.time` to the
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002631 :class:`xmlrpclib.DateTime` type; the conversion semantics were
2632 not necessarily correct for all applications. Code using
Serhiy Storchakaee1b01a2016-12-02 23:13:53 +02002633 :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time`
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002634 instances. (:issue:`1330538`) The code can also handle
Georg Brandl0c77a822008-06-10 16:37:50 +00002635 dates before 1900 (contributed by Ralf Schmitt; :issue:`2014`)
2636 and 64-bit integers represented by using ``<i8>`` in XML-RPC responses
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002637 (contributed by Riku Lindblad; :issue:`2985`).
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002638
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002639* The :mod:`zipfile` module's :class:`ZipFile` class now has
2640 :meth:`extract` and :meth:`extractall` methods that will unpack
2641 a single file or all the files in the archive to the current directory, or
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002642 to a specified directory::
2643
2644 z = zipfile.ZipFile('python-251.zip')
2645
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002646 # Unpack a single file, writing it relative
2647 # to the /tmp directory.
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002648 z.extract('Python/sysmodule.c', '/tmp')
2649
2650 # Unpack all the files in the archive.
2651 z.extractall()
2652
Christian Heimes33fe8092008-04-13 13:53:33 +00002653 (Contributed by Alan McIntyre; :issue:`467924`.)
Guido van Rossum7736b5b2008-01-15 21:44:53 +00002654
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002655 The :meth:`open`, :meth:`read` and :meth:`extract` methods can now
Georg Brandl0c77a822008-06-10 16:37:50 +00002656 take either a filename or a :class:`ZipInfo` object. This is useful when an
2657 archive accidentally contains a duplicated filename.
2658 (Contributed by Graham Horler; :issue:`1775025`.)
Alexandre Vassalotti6461e102008-05-15 22:09:29 +00002659
Georg Brandl0c77a822008-06-10 16:37:50 +00002660 Finally, :mod:`zipfile` now supports using Unicode filenames
2661 for archived files. (Contributed by Alexey Borzenkov; :issue:`1734346`.)
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002662
Christian Heimes5b5e81c2007-12-31 16:14:33 +00002663.. ======================================================================
2664.. whole new modules get described in subsections here
Georg Brandl9afde1c2007-11-01 20:32:30 +00002665
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002666The :mod:`ast` module
2667----------------------
2668
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002669The :mod:`ast` module provides an Abstract Syntax Tree
2670representation of Python code, and Armin Ronacher
2671contributed a set of helper functions that perform a variety of
2672common tasks. These will be useful for HTML templating
2673packages, code analyzers, and similar tools that process
2674Python code.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002675
2676The :func:`parse` function takes an expression and returns an AST.
2677The :func:`dump` function outputs a representation of a tree, suitable
2678for debugging::
2679
2680 import ast
2681
2682 t = ast.parse("""
2683 d = {}
2684 for i in 'abcdefghijklm':
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002685 d[i + i] = ord(i) - ord('a') + 1
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002686 print d
2687 """)
2688 print ast.dump(t)
2689
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002690This outputs a deeply nested tree::
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002691
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002692 Module(body=[
2693 Assign(targets=[
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002694 Name(id='d', ctx=Store())
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002695 ], value=Dict(keys=[], values=[]))
2696 For(target=Name(id='i', ctx=Store()),
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002697 iter=Str(s='abcdefghijklm'), body=[
2698 Assign(targets=[
2699 Subscript(value=
2700 Name(id='d', ctx=Load()),
2701 slice=
2702 Index(value=
2703 BinOp(left=Name(id='i', ctx=Load()), op=Add(),
2704 right=Name(id='i', ctx=Load()))), ctx=Store())
2705 ], value=
2706 BinOp(left=
2707 BinOp(left=
2708 Call(func=
2709 Name(id='ord', ctx=Load()), args=[
2710 Name(id='i', ctx=Load())
2711 ], keywords=[], starargs=None, kwargs=None),
2712 op=Sub(), right=Call(func=
2713 Name(id='ord', ctx=Load()), args=[
2714 Str(s='a')
2715 ], keywords=[], starargs=None, kwargs=None)),
2716 op=Add(), right=Num(n=1)))
2717 ], orelse=[])
2718 Print(dest=None, values=[
2719 Name(id='d', ctx=Load())
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002720 ], nl=True)
2721 ])
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002722
2723The :func:`literal_eval` method takes a string or an AST
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002724representing a literal expression, parses and evaluates it, and
2725returns the resulting value. A literal expression is a Python
2726expression containing only strings, numbers, dictionaries,
2727etc. but no statements or function calls. If you need to
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002728evaluate an expression but cannot accept the security risk of using an
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002729:func:`eval` call, :func:`literal_eval` will handle it safely::
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002730
2731 >>> literal = '("a", "b", {2:4, 3:8, 1:2})'
2732 >>> print ast.literal_eval(literal)
2733 ('a', 'b', {1: 2, 2: 4, 3: 8})
2734 >>> print ast.literal_eval('"a" + "b"')
2735 Traceback (most recent call last):
2736 ...
2737 ValueError: malformed string
2738
Georg Brandl86b2fb92008-07-16 03:43:04 +00002739The module also includes :class:`NodeVisitor` and
2740:class:`NodeTransformer` classes for traversing and modifying an AST,
2741and functions for common transformations such as changing line
2742numbers.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002743
2744.. ======================================================================
2745
2746The :mod:`future_builtins` module
2747--------------------------------------
2748
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002749Python 3.0 makes many changes to the repertoire of built-in
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002750functions, and most of the changes can't be introduced in the Python
27512.x series because they would break compatibility.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002752The :mod:`future_builtins` module provides versions
2753of these built-in functions that can be imported when writing
Benjamin Petersonf9c98b42008-07-02 16:19:28 +000027543.0-compatible code.
2755
2756The functions in this module currently include:
2757
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002758* ``ascii(obj)``: equivalent to :func:`repr`. In Python 3.0,
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002759 :func:`repr` will return a Unicode string, while :func:`ascii` will
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002760 return a pure ASCII bytestring.
2761
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002762* ``filter(predicate, iterable)``,
2763 ``map(func, iterable1, ...)``: the 3.0 versions
Georg Brandl93dc9eb2010-03-14 10:56:14 +00002764 return iterators, unlike the 2.x builtins which return lists.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002765
Benjamin Petersonae5360b2008-09-08 23:05:23 +00002766* ``hex(value)``, ``oct(value)``: instead of calling the
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002767 :meth:`__hex__` or :meth:`__oct__` methods, these versions will
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002768 call the :meth:`__index__` method and convert the result to hexadecimal
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002769 or octal. :func:`oct` will use the new ``0o`` notation for its
2770 result.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002771
2772.. ======================================================================
2773
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002774The :mod:`json` module: JavaScript Object Notation
2775--------------------------------------------------------------------
Christian Heimes90540002008-05-08 14:29:10 +00002776
2777The new :mod:`json` module supports the encoding and decoding of Python types in
2778JSON (Javascript Object Notation). JSON is a lightweight interchange format
2779often used in web applications. For more information about JSON, see
2780http://www.json.org.
2781
Georg Brandl22b34312009-07-26 14:54:51 +00002782:mod:`json` comes with support for decoding and encoding most built-in Python
Christian Heimes90540002008-05-08 14:29:10 +00002783types. The following example encodes and decodes a dictionary::
2784
2785 >>> import json
Serhiy Storchakaf47036c2013-12-24 11:04:36 +02002786 >>> data = {"spam": "foo", "parrot": 42}
Christian Heimes90540002008-05-08 14:29:10 +00002787 >>> in_json = json.dumps(data) # Encode the data
2788 >>> in_json
2789 '{"parrot": 42, "spam": "foo"}'
2790 >>> json.loads(in_json) # Decode into a Python object
Serhiy Storchakaf47036c2013-12-24 11:04:36 +02002791 {"spam": "foo", "parrot": 42}
Christian Heimes90540002008-05-08 14:29:10 +00002792
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002793It's also possible to write your own decoders and encoders to support
2794more types. Pretty-printing of the JSON strings is also supported.
Christian Heimes90540002008-05-08 14:29:10 +00002795
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002796:mod:`json` (originally called simplejson) was written by Bob
2797Ippolito.
Christian Heimes90540002008-05-08 14:29:10 +00002798
2799
Christian Heimesaf98da12008-01-27 15:18:18 +00002800.. ======================================================================
2801
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002802The :mod:`plistlib` module: A Property-List Parser
Christian Heimesaf98da12008-01-27 15:18:18 +00002803--------------------------------------------------
2804
Georg Brandlc575c902008-09-13 17:46:05 +00002805The ``.plist`` format is commonly used on Mac OS X to
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002806store basic data types (numbers, strings, lists,
2807and dictionaries) by serializing them into an XML-based format.
2808It resembles the XML-RPC serialization of data types.
Christian Heimesaf98da12008-01-27 15:18:18 +00002809
Georg Brandlc575c902008-09-13 17:46:05 +00002810Despite being primarily used on Mac OS X, the format
Christian Heimesaf98da12008-01-27 15:18:18 +00002811has nothing Mac-specific about it and the Python implementation works
2812on any platform that Python supports, so the :mod:`plistlib` module
2813has been promoted to the standard library.
2814
2815Using the module is simple::
2816
2817 import sys
2818 import plistlib
2819 import datetime
2820
2821 # Create data structure
2822 data_struct = dict(lastAccessed=datetime.datetime.now(),
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00002823 version=1,
2824 categories=('Personal','Shared','Private'))
Christian Heimesaf98da12008-01-27 15:18:18 +00002825
2826 # Create string containing XML.
2827 plist_str = plistlib.writePlistToString(data_struct)
2828 new_struct = plistlib.readPlistFromString(plist_str)
2829 print data_struct
2830 print new_struct
2831
2832 # Write data structure to a file and read it back.
2833 plistlib.writePlist(data_struct, '/tmp/customizations.plist')
2834 new_struct = plistlib.readPlist('/tmp/customizations.plist')
2835
2836 # read/writePlist accepts file-like objects as well as paths.
2837 plistlib.writePlist(data_struct, sys.stdout)
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002838
2839.. ======================================================================
2840
Georg Brandl2ee470f2008-07-16 12:55:28 +00002841ctypes Enhancements
2842--------------------------------------------------
2843
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002844Thomas Heller continued to maintain and enhance the
2845:mod:`ctypes` module.
Georg Brandl2ee470f2008-07-16 12:55:28 +00002846
2847:mod:`ctypes` now supports a :class:`c_bool` datatype
2848that represents the C99 ``bool`` type. (Contributed by David Remahl;
2849:issue:`1649190`.)
2850
2851The :mod:`ctypes` string, buffer and array types have improved
2852support for extended slicing syntax,
2853where various combinations of ``(start, stop, step)`` are supplied.
2854(Implemented by Thomas Wouters.)
2855
2856.. Revision 57769
2857
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002858All :mod:`ctypes` data types now support
2859:meth:`from_buffer` and :meth:`from_buffer_copy`
2860methods that create a ctypes instance based on a
2861provided buffer object. :meth:`from_buffer_copy` copies
2862the contents of the object,
2863while :meth:`from_buffer` will share the same memory area.
2864
Georg Brandl2ee470f2008-07-16 12:55:28 +00002865A new calling convention tells :mod:`ctypes` to clear the ``errno`` or
2866Win32 LastError variables at the outset of each wrapped call.
2867(Implemented by Thomas Heller; :issue:`1798`.)
2868
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002869You can now retrieve the Unix ``errno`` variable after a function
2870call. When creating a wrapped function, you can supply
2871``use_errno=True`` as a keyword parameter to the :func:`DLL` function
2872and then call the module-level methods :meth:`set_errno` and
2873:meth:`get_errno` to set and retrieve the error value.
Georg Brandl2ee470f2008-07-16 12:55:28 +00002874
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002875The Win32 LastError variable is similarly supported by
Georg Brandl2ee470f2008-07-16 12:55:28 +00002876the :func:`DLL`, :func:`OleDLL`, and :func:`WinDLL` functions.
2877You supply ``use_last_error=True`` as a keyword parameter
2878and then call the module-level methods :meth:`set_last_error`
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002879and :meth:`get_last_error`.
Georg Brandl2ee470f2008-07-16 12:55:28 +00002880
2881The :func:`byref` function, used to retrieve a pointer to a ctypes
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002882instance, now has an optional *offset* parameter that is a byte
Georg Brandl2ee470f2008-07-16 12:55:28 +00002883count that will be added to the returned pointer.
2884
2885.. ======================================================================
2886
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002887Improved SSL Support
2888--------------------------------------------------
2889
2890Bill Janssen made extensive improvements to Python 2.6's support for
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002891the Secure Sockets Layer by adding a new module, :mod:`ssl`, that's
Serhiy Storchaka6dff0202016-05-07 10:49:07 +03002892built atop the `OpenSSL <https://www.openssl.org/>`__ library.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002893This new module provides more control over the protocol negotiated,
2894the X.509 certificates used, and has better support for writing SSL
2895servers (as opposed to clients) in Python. The existing SSL support
2896in the :mod:`socket` module hasn't been removed and continues to work,
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002897though it will be removed in Python 3.0.
2898
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002899To use the new module, you must first create a TCP connection in the
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002900usual way and then pass it to the :func:`ssl.wrap_socket` function.
2901It's possible to specify whether a certificate is required, and to
2902obtain certificate info by calling the :meth:`getpeercert` method.
2903
2904.. seealso::
2905
2906 The documentation for the :mod:`ssl` module.
Christian Heimesaf98da12008-01-27 15:18:18 +00002907
Christian Heimes5b5e81c2007-12-31 16:14:33 +00002908.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00002909
Georg Brandl8bd05462009-11-18 18:53:54 +00002910Deprecations and Removals
2911=========================
2912
2913* String exceptions have been removed. Attempting to use them raises a
2914 :exc:`TypeError`.
2915
2916* Changes to the :class:`Exception` interface
2917 as dictated by :pep:`352` continue to be made. For 2.6,
2918 the :attr:`message` attribute is being deprecated in favor of the
2919 :attr:`args` attribute.
2920
2921* (3.0-warning mode) Python 3.0 will feature a reorganized standard
2922 library that will drop many outdated modules and rename others.
2923 Python 2.6 running in 3.0-warning mode will warn about these modules
2924 when they are imported.
2925
2926 The list of deprecated modules is:
2927 :mod:`audiodev`,
2928 :mod:`bgenlocations`,
2929 :mod:`buildtools`,
2930 :mod:`bundlebuilder`,
2931 :mod:`Canvas`,
2932 :mod:`compiler`,
2933 :mod:`dircache`,
2934 :mod:`dl`,
2935 :mod:`fpformat`,
2936 :mod:`gensuitemodule`,
2937 :mod:`ihooks`,
2938 :mod:`imageop`,
2939 :mod:`imgfile`,
2940 :mod:`linuxaudiodev`,
2941 :mod:`mhlib`,
2942 :mod:`mimetools`,
2943 :mod:`multifile`,
2944 :mod:`new`,
2945 :mod:`pure`,
2946 :mod:`statvfs`,
2947 :mod:`sunaudiodev`,
2948 :mod:`test.testall`, and
2949 :mod:`toaiff`.
2950
2951* The :mod:`gopherlib` module has been removed.
2952
2953* The :mod:`MimeWriter` module and :mod:`mimify` module
2954 have been deprecated; use the :mod:`email`
2955 package instead.
2956
2957* The :mod:`md5` module has been deprecated; use the :mod:`hashlib` module
2958 instead.
2959
2960* The :mod:`posixfile` module has been deprecated; :func:`fcntl.lockf`
2961 provides better locking.
2962
2963* The :mod:`popen2` module has been deprecated; use the :mod:`subprocess`
2964 module.
2965
2966* The :mod:`rgbimg` module has been removed.
2967
2968* The :mod:`sets` module has been deprecated; it's better to
2969 use the built-in :class:`set` and :class:`frozenset` types.
2970
2971* The :mod:`sha` module has been deprecated; use the :mod:`hashlib` module
2972 instead.
2973
2974
2975.. ======================================================================
2976
Georg Brandl116aa622007-08-15 14:28:22 +00002977
2978Build and C API Changes
2979=======================
2980
2981Changes to Python's build process and to the C API include:
2982
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002983* Python now must be compiled with C89 compilers (after 19
2984 years!). This means that the Python source tree has dropped its
Georg Brandl60203b42010-10-06 10:11:56 +00002985 own implementations of :c:func:`memmove` and :c:func:`strerror`, which
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002986 are in the C89 standard library.
2987
2988* Python 2.6 can be built with Microsoft Visual Studio 2008 (version
2989 9.0), and this is the new default compiler. See the
2990 :file:`PCbuild` directory for the build files. (Implemented by
2991 Christian Heimes.)
Guido van Rossum0d3fb8a2007-11-26 23:23:18 +00002992
Georg Brandlc575c902008-09-13 17:46:05 +00002993* On Mac OS X, Python 2.6 can be compiled as a 4-way universal build.
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002994 The :program:`configure` script
Martin Panter5c679332016-10-30 04:20:17 +00002995 can take a :option:`!--with-universal-archs=[32-bit|64-bit|all]`
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00002996 switch, controlling whether the binaries are built for 32-bit
2997 architectures (x86, PowerPC), 64-bit (x86-64 and PPC-64), or both.
2998 (Contributed by Ronald Oussoren.)
2999
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003000* The BerkeleyDB module now has a C API object, available as
Georg Brandl9afde1c2007-11-01 20:32:30 +00003001 ``bsddb.db.api``. This object can be used by other C extensions
3002 that wish to use the :mod:`bsddb` module for their own purposes.
Georg Brandl495f7b52009-10-27 15:28:25 +00003003 (Contributed by Duncan Grisby.)
Georg Brandl9afde1c2007-11-01 20:32:30 +00003004
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003005* The new buffer interface, previously described in
Christian Heimes33fe8092008-04-13 13:53:33 +00003006 `the PEP 3118 section <#pep-3118-revised-buffer-protocol>`__,
Georg Brandl60203b42010-10-06 10:11:56 +00003007 adds :c:func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release`,
Christian Heimes33fe8092008-04-13 13:53:33 +00003008 as well as a few other functions.
Georg Brandl9afde1c2007-11-01 20:32:30 +00003009
Christian Heimes5e696852008-04-09 08:37:03 +00003010* Python's use of the C stdio library is now thread-safe, or at least
3011 as thread-safe as the underlying library is. A long-standing potential
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003012 bug occurred if one thread closed a file object while another thread
3013 was reading from or writing to the object. In 2.6 file objects
3014 have a reference count, manipulated by the
Georg Brandl60203b42010-10-06 10:11:56 +00003015 :c:func:`PyFile_IncUseCount` and :c:func:`PyFile_DecUseCount`
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003016 functions. File objects can't be closed unless the reference count
Georg Brandl60203b42010-10-06 10:11:56 +00003017 is zero. :c:func:`PyFile_IncUseCount` should be called while the GIL
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003018 is still held, before carrying out an I/O operation using the
Georg Brandl60203b42010-10-06 10:11:56 +00003019 ``FILE *`` pointer, and :c:func:`PyFile_DecUseCount` should be called
Christian Heimes5e696852008-04-09 08:37:03 +00003020 immediately after the GIL is re-acquired.
3021 (Contributed by Antoine Pitrou and Gregory P. Smith.)
3022
Christian Heimes33fe8092008-04-13 13:53:33 +00003023* Importing modules simultaneously in two different threads no longer
3024 deadlocks; it will now raise an :exc:`ImportError`. A new API
Georg Brandl60203b42010-10-06 10:11:56 +00003025 function, :c:func:`PyImport_ImportModuleNoBlock`, will look for a
Christian Heimes33fe8092008-04-13 13:53:33 +00003026 module in ``sys.modules`` first, then try to import it after
3027 acquiring an import lock. If the import lock is held by another
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003028 thread, an :exc:`ImportError` is raised.
Christian Heimes33fe8092008-04-13 13:53:33 +00003029 (Contributed by Christian Heimes.)
3030
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003031* Several functions return information about the platform's
Georg Brandl60203b42010-10-06 10:11:56 +00003032 floating-point support. :c:func:`PyFloat_GetMax` returns
Christian Heimes90aa7642007-12-19 02:45:37 +00003033 the maximum representable floating point value,
Georg Brandl60203b42010-10-06 10:11:56 +00003034 and :c:func:`PyFloat_GetMin` returns the minimum
3035 positive value. :c:func:`PyFloat_GetInfo` returns an object
Christian Heimes90aa7642007-12-19 02:45:37 +00003036 containing more information from the :file:`float.h` file, such as
3037 ``"mant_dig"`` (number of digits in the mantissa), ``"epsilon"``
3038 (smallest difference between 1.0 and the next largest value
3039 representable), and several others.
Christian Heimes33fe8092008-04-13 13:53:33 +00003040 (Contributed by Christian Heimes; :issue:`1534`.)
Georg Brandl116aa622007-08-15 14:28:22 +00003041
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003042* C functions and methods that use
Georg Brandl60203b42010-10-06 10:11:56 +00003043 :c:func:`PyComplex_AsCComplex` will now accept arguments that
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003044 have a :meth:`__complex__` method. In particular, the functions in the
3045 :mod:`cmath` module will now accept objects with this method.
3046 This is a backport of a Python 3.0 change.
3047 (Contributed by Mark Dickinson; :issue:`1675423`.)
3048
Christian Heimesa34706f2008-01-04 03:06:10 +00003049* Python's C API now includes two functions for case-insensitive string
Christian Heimesc3f30c42008-02-22 16:37:40 +00003050 comparisons, ``PyOS_stricmp(char*, char*)``
Christian Heimesa34706f2008-01-04 03:06:10 +00003051 and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``.
Christian Heimes33fe8092008-04-13 13:53:33 +00003052 (Contributed by Christian Heimes; :issue:`1635`.)
Christian Heimesa34706f2008-01-04 03:06:10 +00003053
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003054* Many C extensions define their own little macro for adding
3055 integers and strings to the module's dictionary in the
3056 ``init*`` function. Python 2.6 finally defines standard macros
Georg Brandl60203b42010-10-06 10:11:56 +00003057 for adding values to a module, :c:macro:`PyModule_AddStringMacro`
3058 and :c:macro:`PyModule_AddIntMacro()`. (Contributed by
Christian Heimes5e696852008-04-09 08:37:03 +00003059 Christian Heimes.)
3060
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003061* Some macros were renamed in both 3.0 and 2.6 to make it clearer that
3062 they are macros,
Georg Brandl60203b42010-10-06 10:11:56 +00003063 not functions. :c:macro:`Py_Size()` became :c:macro:`Py_SIZE()`,
3064 :c:macro:`Py_Type()` became :c:macro:`Py_TYPE()`, and
3065 :c:macro:`Py_Refcnt()` became :c:macro:`Py_REFCNT()`.
Christian Heimesdd15f6c2008-03-16 00:07:10 +00003066 The mixed-case macros are still available
3067 in Python 2.6 for backward compatibility.
Christian Heimes33fe8092008-04-13 13:53:33 +00003068 (:issue:`1629`)
Christian Heimesa34706f2008-01-04 03:06:10 +00003069
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003070* Distutils now places C extensions it builds in a
Christian Heimesaf98da12008-01-27 15:18:18 +00003071 different directory when running on a debug version of Python.
Christian Heimes33fe8092008-04-13 13:53:33 +00003072 (Contributed by Collin Winter; :issue:`1530959`.)
Christian Heimesaf98da12008-01-27 15:18:18 +00003073
Christian Heimes78644762008-03-04 23:39:23 +00003074* Several basic data types, such as integers and strings, maintain
3075 internal free lists of objects that can be re-used. The data
3076 structures for these free lists now follow a naming convention: the
3077 variable is always named ``free_list``, the counter is always named
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003078 ``numfree``, and a macro ``Py<typename>_MAXFREELIST`` is
Christian Heimes78644762008-03-04 23:39:23 +00003079 always defined.
Christian Heimesaf98da12008-01-27 15:18:18 +00003080
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00003081* A new Makefile target, "make patchcheck", prepares the Python source tree
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003082 for making a patch: it fixes trailing whitespace in all modified
Christian Heimes5e696852008-04-09 08:37:03 +00003083 ``.py`` files, checks whether the documentation has been changed,
3084 and reports whether the :file:`Misc/ACKS` and :file:`Misc/NEWS` files
3085 have been updated.
3086 (Contributed by Brett Cannon.)
3087
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003088 Another new target, "make profile-opt", compiles a Python binary
3089 using GCC's profile-guided optimization. It compiles Python with
3090 profiling enabled, runs the test suite to obtain a set of profiling
3091 results, and then compiles using these results for optimization.
3092 (Contributed by Gregory P. Smith.)
3093
Christian Heimes5b5e81c2007-12-31 16:14:33 +00003094.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003095
Christian Heimesa34706f2008-01-04 03:06:10 +00003096Port-Specific Changes: Windows
3097-----------------------------------
3098
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003099* The support for Windows 95, 98, ME and NT4 has been dropped.
3100 Python 2.6 requires at least Windows 2000 SP4.
3101
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003102* The new default compiler on Windows is Visual Studio 2008 (version
3103 9.0). The build directories for Visual Studio 2003 (version 7.1) and
3104 2005 (version 8.0) were moved into the PC/ directory. The new
3105 :file:`PCbuild` directory supports cross compilation for X64, debug
3106 builds and Profile Guided Optimization (PGO). PGO builds are roughly
3107 10% faster than normal builds. (Contributed by Christian Heimes
Antoine Pitroufbd4f802012-08-11 16:51:50 +02003108 with help from Amaury Forgeot d'Arc and Martin von Löwis.)
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003109
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003110* The :mod:`msvcrt` module now supports
Christian Heimesa34706f2008-01-04 03:06:10 +00003111 both the normal and wide char variants of the console I/O
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003112 API. The :func:`getwch` function reads a keypress and returns a Unicode
Christian Heimesa34706f2008-01-04 03:06:10 +00003113 value, as does the :func:`getwche` function. The :func:`putwch` function
3114 takes a Unicode character and writes it to the console.
Christian Heimes679db4a2008-01-18 09:56:22 +00003115 (Contributed by Christian Heimes.)
3116
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003117* :func:`os.path.expandvars` will now expand environment variables in
3118 the form "%var%", and "~user" will be expanded into the user's home
3119 directory path. (Contributed by Josiah Carlson; :issue:`957650`.)
Christian Heimes679db4a2008-01-18 09:56:22 +00003120
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003121* The :mod:`socket` module's socket objects now have an
3122 :meth:`ioctl` method that provides a limited interface to the
Georg Brandl60203b42010-10-06 10:11:56 +00003123 :c:func:`WSAIoctl` system interface.
Georg Brandl116aa622007-08-15 14:28:22 +00003124
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003125* The :mod:`_winreg` module now has a function,
3126 :func:`ExpandEnvironmentStrings`,
Guido van Rossum7736b5b2008-01-15 21:44:53 +00003127 that expands environment variable references such as ``%NAME%``
3128 in an input string. The handle objects provided by this
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003129 module now support the context protocol, so they can be used
Christian Heimes679db4a2008-01-18 09:56:22 +00003130 in :keyword:`with` statements. (Contributed by Christian Heimes.)
3131
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003132 :mod:`_winreg` also has better support for x64 systems,
Christian Heimes5e696852008-04-09 08:37:03 +00003133 exposing the :func:`DisableReflectionKey`, :func:`EnableReflectionKey`,
3134 and :func:`QueryReflectionKey` functions, which enable and disable
3135 registry reflection for 32-bit processes running on 64-bit systems.
Christian Heimes33fe8092008-04-13 13:53:33 +00003136 (:issue:`1753245`)
Christian Heimes5e696852008-04-09 08:37:03 +00003137
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003138* The :mod:`msilib` module's :class:`Record` object
3139 gained :meth:`GetInteger` and :meth:`GetString` methods that
3140 return field values as an integer or a string.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003141 (Contributed by Floris Bruynooghe; :issue:`2125`.)
3142
Christian Heimes5b5e81c2007-12-31 16:14:33 +00003143.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003144
Georg Brandlc575c902008-09-13 17:46:05 +00003145Port-Specific Changes: Mac OS X
Georg Brandl0c77a822008-06-10 16:37:50 +00003146-----------------------------------
3147
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003148* When compiling a framework build of Python, you can now specify the
3149 framework name to be used by providing the
Martin Panter5c679332016-10-30 04:20:17 +00003150 :option:`!--with-framework-name=` option to the
Georg Brandl0c77a822008-06-10 16:37:50 +00003151 :program:`configure` script.
3152
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003153* The :mod:`macfs` module has been removed. This in turn required the
3154 :func:`macostools.touched` function to be removed because it depended on the
3155 :mod:`macfs` module. (:issue:`1490190`)
3156
Martin Panter8d56c022016-05-29 04:13:35 +00003157* Many other Mac OS modules have been deprecated and will be removed in
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003158 Python 3.0:
3159 :mod:`_builtinSuites`,
3160 :mod:`aepack`,
3161 :mod:`aetools`,
3162 :mod:`aetypes`,
3163 :mod:`applesingle`,
3164 :mod:`appletrawmain`,
3165 :mod:`appletrunner`,
3166 :mod:`argvemulator`,
3167 :mod:`Audio_mac`,
3168 :mod:`autoGIL`,
3169 :mod:`Carbon`,
3170 :mod:`cfmfile`,
3171 :mod:`CodeWarrior`,
3172 :mod:`ColorPicker`,
3173 :mod:`EasyDialogs`,
3174 :mod:`Explorer`,
3175 :mod:`Finder`,
3176 :mod:`FrameWork`,
3177 :mod:`findertools`,
3178 :mod:`ic`,
3179 :mod:`icglue`,
3180 :mod:`icopen`,
3181 :mod:`macerrors`,
3182 :mod:`MacOS`,
3183 :mod:`macfs`,
3184 :mod:`macostools`,
3185 :mod:`macresource`,
3186 :mod:`MiniAEFrame`,
3187 :mod:`Nav`,
3188 :mod:`Netscape`,
3189 :mod:`OSATerminology`,
3190 :mod:`pimp`,
3191 :mod:`PixMapWrapper`,
3192 :mod:`StdSuites`,
3193 :mod:`SystemEvents`,
3194 :mod:`Terminal`, and
3195 :mod:`terminalcommand`.
3196
Georg Brandl0c77a822008-06-10 16:37:50 +00003197.. ======================================================================
3198
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003199Port-Specific Changes: IRIX
3200-----------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +00003201
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003202A number of old IRIX-specific modules were deprecated and will
3203be removed in Python 3.0:
3204:mod:`al` and :mod:`AL`,
3205:mod:`cd`,
3206:mod:`cddb`,
3207:mod:`cdplayer`,
3208:mod:`CL` and :mod:`cl`,
3209:mod:`DEVICE`,
3210:mod:`ERRNO`,
3211:mod:`FILE`,
3212:mod:`FL` and :mod:`fl`,
3213:mod:`flp`,
3214:mod:`fm`,
3215:mod:`GET`,
3216:mod:`GLWS`,
3217:mod:`GL` and :mod:`gl`,
3218:mod:`IN`,
3219:mod:`IOCTL`,
3220:mod:`jpeg`,
3221:mod:`panelparser`,
3222:mod:`readcd`,
3223:mod:`SV` and :mod:`sv`,
3224:mod:`torgb`,
3225:mod:`videoreader`, and
3226:mod:`WAIT`.
Georg Brandl116aa622007-08-15 14:28:22 +00003227
Christian Heimes5b5e81c2007-12-31 16:14:33 +00003228.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003229
3230
3231Porting to Python 2.6
3232=====================
3233
Christian Heimesf6cd9672008-03-26 13:45:42 +00003234This section lists previously described changes and other bugfixes
3235that may require changes to your code:
Georg Brandl116aa622007-08-15 14:28:22 +00003236
Benjamin Petersondcc1e112008-09-03 22:22:18 +00003237* Classes that aren't supposed to be hashable should
3238 set ``__hash__ = None`` in their definitions to indicate
3239 the fact.
3240
Benjamin Peterson28d88b42009-01-09 03:03:23 +00003241* String exceptions have been removed. Attempting to use them raises a
3242 :exc:`TypeError`.
3243
Christian Heimesfaf2f632008-01-06 16:59:19 +00003244* The :meth:`__init__` method of :class:`collections.deque`
Christian Heimesa34706f2008-01-04 03:06:10 +00003245 now clears any existing contents of the deque
3246 before adding elements from the iterable. This change makes the
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00003247 behavior match ``list.__init__()``.
Christian Heimesa34706f2008-01-04 03:06:10 +00003248
Benjamin Peterson5478b472008-09-17 22:25:09 +00003249* :meth:`object.__init__` previously accepted arbitrary arguments and
3250 keyword arguments, ignoring them. In Python 2.6, this is no longer
Georg Brandl48310cd2009-01-03 21:18:54 +00003251 allowed and will result in a :exc:`TypeError`. This will affect
3252 :meth:`__init__` methods that end up calling the corresponding
Benjamin Peterson5478b472008-09-17 22:25:09 +00003253 method on :class:`object` (perhaps through using :func:`super`).
3254 See :issue:`1683368` for discussion.
3255
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003256* The :class:`Decimal` constructor now accepts leading and trailing
Guido van Rossum7736b5b2008-01-15 21:44:53 +00003257 whitespace when passed a string. Previously it would raise an
3258 :exc:`InvalidOperation` exception. On the other hand, the
3259 :meth:`create_decimal` method of :class:`Context` objects now
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003260 explicitly disallows extra whitespace, raising a
Guido van Rossum7736b5b2008-01-15 21:44:53 +00003261 :exc:`ConversionSyntax` exception.
3262
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003263* Due to an implementation accident, if you passed a file path to
Guido van Rossum7736b5b2008-01-15 21:44:53 +00003264 the built-in :func:`__import__` function, it would actually import
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003265 the specified file. This was never intended to work, however, and
3266 the implementation now explicitly checks for this case and raises
Guido van Rossum7736b5b2008-01-15 21:44:53 +00003267 an :exc:`ImportError`.
3268
Georg Brandl60203b42010-10-06 10:11:56 +00003269* C API: the :c:func:`PyImport_Import` and :c:func:`PyImport_ImportModule`
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003270 functions now default to absolute imports, not relative imports.
Christian Heimes33fe8092008-04-13 13:53:33 +00003271 This will affect C extensions that import other modules.
3272
Benjamin Petersondcc1e112008-09-03 22:22:18 +00003273* C API: extension data types that shouldn't be hashable
3274 should define their ``tp_hash`` slot to
Georg Brandl60203b42010-10-06 10:11:56 +00003275 :c:func:`PyObject_HashNotImplemented`.
Benjamin Petersondcc1e112008-09-03 22:22:18 +00003276
Georg Brandl9afde1c2007-11-01 20:32:30 +00003277* The :mod:`socket` module exception :exc:`socket.error` now inherits
3278 from :exc:`IOError`. Previously it wasn't a subclass of
3279 :exc:`StandardError` but now it is, through :exc:`IOError`.
Christian Heimes33fe8092008-04-13 13:53:33 +00003280 (Implemented by Gregory P. Smith; :issue:`1706815`.)
Georg Brandl116aa622007-08-15 14:28:22 +00003281
Christian Heimes05e8be12008-02-23 18:30:17 +00003282* The :mod:`xmlrpclib` module no longer automatically converts
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003283 :class:`datetime.date` and :class:`datetime.time` to the
Christian Heimes05e8be12008-02-23 18:30:17 +00003284 :class:`xmlrpclib.DateTime` type; the conversion semantics were
3285 not necessarily correct for all applications. Code using
Serhiy Storchakaee1b01a2016-12-02 23:13:53 +02003286 :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time`
Christian Heimes33fe8092008-04-13 13:53:33 +00003287 instances. (:issue:`1330538`)
Christian Heimes05e8be12008-02-23 18:30:17 +00003288
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003289* (3.0-warning mode) The :class:`Exception` class now warns
3290 when accessed using slicing or index access; having
Christian Heimesf6cd9672008-03-26 13:45:42 +00003291 :class:`Exception` behave like a tuple is being phased out.
3292
3293* (3.0-warning mode) inequality comparisons between two dictionaries
Christian Heimes02781dc2008-03-21 01:11:52 +00003294 or two objects that don't implement comparison methods are reported
3295 as warnings. ``dict1 == dict2`` still works, but ``dict1 < dict2``
3296 is being phased out.
Benjamin Petersonf9c98b42008-07-02 16:19:28 +00003297
Christian Heimes02781dc2008-03-21 01:11:52 +00003298 Comparisons between cells, which are an implementation detail of Python's
3299 scoping rules, also cause warnings because such comparisons are forbidden
3300 entirely in 3.0.
3301
Christian Heimes5b5e81c2007-12-31 16:14:33 +00003302.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003303
3304
Benjamin Petersonf10a79a2008-10-11 00:49:57 +00003305.. _26acks:
Georg Brandl116aa622007-08-15 14:28:22 +00003306
3307Acknowledgements
3308================
3309
Benjamin Petersonae5360b2008-09-08 23:05:23 +00003310The author would like to thank the following people for offering
3311suggestions, corrections and assistance with various drafts of this
Georg Brandl48310cd2009-01-03 21:18:54 +00003312article: Georg Brandl, Steve Brown, Nick Coghlan, Ralph Corderoy,
3313Jim Jewett, Kent Johnson, Chris Lambacher, Martin Michlmayr,
Benjamin Peterson206e3072008-10-19 14:07:49 +00003314Antoine Pitrou, Brian Warner.
Georg Brandl116aa622007-08-15 14:28:22 +00003315