blob: bed9bbba4d36a18b977d5db3ff470e76230d3047 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001****************************
2 What's New in Python 2.6
3****************************
4
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00005.. XXX add trademark info for Apple, Microsoft, SourceForge.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00006
Georg Brandl8ec7f652007-08-15 14:28:01 +00007:Author: A.M. Kuchling
8:Release: |release|
9:Date: |today|
10
Georg Brandlb19be572007-12-29 10:57:00 +000011.. $Id: whatsnew26.tex 55746 2007-06-02 18:33:53Z neal.norwitz $
12 Rules for maintenance:
13
14 * 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.
17
18 * 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.
21
22 * 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.)
27
28 * 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.
31
32 * 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.
36
37 * You can comment out your additions if you like, but it's not
38 necessary (especially when a final release is some months away).
39
40 * Credit the author of a patch or bugfix. Just the name is
41 sufficient; the e-mail address isn't necessary.
42
Andrew M. Kuchling17f84292008-04-10 21:29:01 +000043 * It's helpful to add the bug/patch number in an parenthetical
Georg Brandlb19be572007-12-29 10:57:00 +000044
Georg Brandlb19be572007-12-29 10:57:00 +000045 XXX Describe the transmogrify() function added to the socket
46 module.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +000047 (Contributed by P.Y. Developer; :issue:`12345`.)
Georg Brandlb19be572007-12-29 10:57:00 +000048
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +000049 This saves the maintainer the effort of going through the SVN logs
Georg Brandlb19be572007-12-29 10:57:00 +000050 when researching a change.
Georg Brandl8ec7f652007-08-15 14:28:01 +000051
52This article explains the new features in Python 2.6. No release date for
53Python 2.6 has been set; it will probably be released in mid 2008.
54
Andrew M. Kuchling17f84292008-04-10 21:29:01 +000055This article doesn't attempt to provide a complete specification of
56the new features, but instead provides a convenient overview. For
57full details, you should refer to the documentation for Python 2.6. If
58you want to understand the complete implementation and design
59rationale, refer to the PEP for a particular new feature. For smaller
60changes, this edition of "What's New in Python" links to the bug/patch
61item for each change whenever possible.
Georg Brandl8ec7f652007-08-15 14:28:01 +000062
Georg Brandlb19be572007-12-29 10:57:00 +000063.. Compare with previous release in 2 - 3 sentences here.
64 add hyperlink when the documentation becomes available online.
Georg Brandl8ec7f652007-08-15 14:28:01 +000065
Georg Brandlb19be572007-12-29 10:57:00 +000066.. ========================================================================
67.. Large, PEP-level features and changes should be described here.
68.. Should there be a new section here for 3k migration?
69.. Or perhaps a more general section describing module changes/deprecation?
70.. ========================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +000071
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +000072Python 3.0
73================
74
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +000075The development cycle for Python 2.6 also saw the release of the first
76alphas of Python 3.0, and the development of 3.0 has influenced
77a number of features in 2.6.
78
79Python 3.0 is a far-ranging redesign of Python that breaks
80compatibility with the 2.x series. This means that existing Python
81code will need a certain amount of conversion in order to run on
82Python 3.0. However, not all the changes in 3.0 necessarily break
83compatibility. In cases where new features won't cause existing code
84to break, they've been backported to 2.6 and are described in this
85document in the appropriate place. Some of the 3.0-derived features
86are:
87
88* A :meth:`__complex__` method for converting objects to a complex number.
89* Alternate syntax for catching exceptions: ``except TypeError as exc``.
90* The addition of :func:`functools.reduce` as a synonym for the built-in
91 :func:`reduce` function.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +000092
93A new command-line switch, :option:`-3`, enables warnings
94about features that will be removed in Python 3.0. You can run code
95with this switch to see how much work will be necessary to port
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +000096code to 3.0. The value of this switch is available
Georg Brandld5b635f2008-03-25 08:29:14 +000097to Python code as the boolean variable :data:`sys.py3kwarning`,
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +000098and to C extension code as :cdata:`Py_Py3kWarningFlag`.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +000099
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000100Python 3.0 adds several new built-in functions and change the
101semantics of some existing built-ins. Entirely new functions such as
102:func:`bin` have simply been added to Python 2.6, but existing
103built-ins haven't been changed; instead, the :mod:`future_builtins`
104module has versions with the new 3.0 semantics. Code written to be
105compatible with 3.0 can do ``from future_builtins import hex, map``
106as necessary.
107
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000108.. seealso::
109
110 The 3xxx series of PEPs, which describes the development process for
111 Python 3.0 and various features that have been accepted, rejected,
112 or are still under consideration.
113
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000114
115Development Changes
116==================================================
117
118While 2.6 was being developed, the Python development process
119underwent two significant changes: the developer group
120switched from SourceForge's issue tracker to a customized
121Roundup installation, and the documentation was converted from
122LaTeX to reStructured Text.
123
124
125New Issue Tracker: Roundup
126--------------------------------------------------
127
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000128For a long time, the Python developers have been growing increasingly
129annoyed by SourceForge's bug tracker. SourceForge's hosted solution
130doesn't permit much customization; for example, it wasn't possible to
131customize the life cycle of issues.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000132
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000133The infrastructure committee of the Python Software Foundation
134therefore posted a call for issue trackers, asking volunteers to set
135up different products and import some of the bugs and patches from
136SourceForge. Four different trackers were examined: Atlassian's `Jira
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +0000137<http://www.atlassian.com/software/jira/>`__,
138`Launchpad <http://www.launchpad.net>`__,
139`Roundup <http://roundup.sourceforge.net/>`__, and
140Trac <http://trac.edgewall.org/>`__.
141The committee eventually settled on Jira
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000142and Roundup as the two candidates. Jira is a commercial product that
143offers a no-cost hosted instance to free-software projects; Roundup
144is an open-source project that requires volunteers
145to administer it and a server to host it.
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000146
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000147After posting a call for volunteers, a new Roundup installation was
148set up at http://bugs.python.org. One installation of Roundup can
149host multiple trackers, and this server now also hosts issue trackers
150for Jython and for the Python web site. It will surely find
Andrew M. Kuchling17f84292008-04-10 21:29:01 +0000151other uses in the future. Where possible,
152this edition of "What's New in Python" links to the bug/patch
153item for each change.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000154
Andrew M. Kuchling17f84292008-04-10 21:29:01 +0000155Hosting is kindly provided by
156`Upfront Systems <http://www.upfrontsystems.co.za/>`__
157of Stellenbosch, South Africa. Martin von Loewis put a
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +0000158lot of effort into importing existing bugs and patches from
159SourceForge; his scripts for this import operation are at
160http://svn.python.org/view/tracker/importer/.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000161
162.. seealso::
163
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000164 http://bugs.python.org
165 The Python bug tracker.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000166
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000167 http://bugs.jython.org:
168 The Jython bug tracker.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000169
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000170 http://roundup.sourceforge.net/
171 Roundup downloads and documentation.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000172
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000173
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000174New Documentation Format: ReStructured Text Using Sphinx
175-----------------------------------------------------------
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000176
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000177Since the Python project's inception around 1989, the documentation
178had been written using LaTeX. At that time, most documentation was
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000179printed out for later study, not viewed online. LaTeX was widely used
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000180because it provided attractive printed output while remaining
181straightforward to write, once the basic rules of the markup have been
182learned.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000183
184LaTeX is still used today for writing technical publications destined
185for printing, but the landscape for programming tools has shifted. We
186no longer print out reams of documentation; instead, we browse through
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000187it online and HTML has become the most important format to support.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000188Unfortunately, converting LaTeX to HTML is fairly complicated, and
189Fred L. Drake Jr., the Python documentation editor for many years,
190spent a lot of time wrestling the conversion process into shape.
191Occasionally people would suggest converting the documentation into
192SGML or, later, XML, but performing a good conversion is a major task
193and no one pursued the task to completion.
194
Andrew M. Kuchling17f84292008-04-10 21:29:01 +0000195During the 2.6 development cycle, Georg Brandl put a substantial
196effort into building a new toolchain for processing the documentation.
197The resulting package is called Sphinx, and is available from
198http://sphinx.pocoo.org/. The input format is reStructured Text, a
199markup commonly used in the Python community that supports custom
200extensions and directives. Sphinx concentrates on HTML output,
201producing attractively styled and modern HTML, though printed output
202is still supported through conversion to LaTeX. Sphinx is a
203standalone package that can be used in documenting other projects.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000204
205.. seealso::
206
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000207 :ref:`documenting-index`
208 Describes how to write for Python's documentation.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000209
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000210 `Sphinx <http://sphinx.pocoo.org/>`__
211 Documentation and code for the Sphinx toolchain.
212
213 `Docutils <http://docutils.sf.net>`__
214 The underlying reStructured Text parser and toolset.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000215
216
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000217PEP 343: The 'with' statement
218=============================
219
220The previous version, Python 2.5, added the ':keyword:`with`'
221statement an optional feature, to be enabled by a ``from __future__
Andrew M. Kuchling6e751f42007-12-03 21:28:41 +0000222import with_statement`` directive. In 2.6 the statement no longer needs to
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000223be specially enabled; this means that :keyword:`with` is now always a
224keyword. The rest of this section is a copy of the corresponding
225section from "What's New in Python 2.5" document; if you read
226it back when Python 2.5 came out, you can skip the rest of this
227section.
228
229The ':keyword:`with`' statement clarifies code that previously would use
230``try...finally`` blocks to ensure that clean-up code is executed. In this
231section, I'll discuss the statement as it will commonly be used. In the next
232section, I'll examine the implementation details and show how to write objects
233for use with this statement.
234
235The ':keyword:`with`' statement is a new control-flow structure whose basic
236structure is::
237
238 with expression [as variable]:
239 with-block
240
241The expression is evaluated, and it should result in an object that supports the
242context management protocol (that is, has :meth:`__enter__` and :meth:`__exit__`
243methods.
244
245The object's :meth:`__enter__` is called before *with-block* is executed and
246therefore can run set-up code. It also may return a value that is bound to the
247name *variable*, if given. (Note carefully that *variable* is *not* assigned
248the result of *expression*.)
249
250After execution of the *with-block* is finished, the object's :meth:`__exit__`
251method is called, even if the block raised an exception, and can therefore run
252clean-up code.
253
254Some standard Python objects now support the context management protocol and can
255be used with the ':keyword:`with`' statement. File objects are one example::
256
257 with open('/etc/passwd', 'r') as f:
258 for line in f:
259 print line
260 ... more processing code ...
261
262After this statement has executed, the file object in *f* will have been
263automatically closed, even if the :keyword:`for` loop raised an exception part-
264way through the block.
265
266.. note::
267
268 In this case, *f* is the same object created by :func:`open`, because
269 :meth:`file.__enter__` returns *self*.
270
271The :mod:`threading` module's locks and condition variables also support the
272':keyword:`with`' statement::
273
274 lock = threading.Lock()
275 with lock:
276 # Critical section of code
277 ...
278
279The lock is acquired before the block is executed and always released once the
280block is complete.
281
282The new :func:`localcontext` function in the :mod:`decimal` module makes it easy
283to save and restore the current decimal context, which encapsulates the desired
284precision and rounding characteristics for computations::
285
286 from decimal import Decimal, Context, localcontext
287
288 # Displays with default precision of 28 digits
289 v = Decimal('578')
290 print v.sqrt()
291
292 with localcontext(Context(prec=16)):
293 # All code in this block uses a precision of 16 digits.
294 # The original context is restored on exiting the block.
295 print v.sqrt()
296
297
298.. _new-26-context-managers:
299
300Writing Context Managers
301------------------------
302
303Under the hood, the ':keyword:`with`' statement is fairly complicated. Most
304people will only use ':keyword:`with`' in company with existing objects and
305don't need to know these details, so you can skip the rest of this section if
306you like. Authors of new objects will need to understand the details of the
307underlying implementation and should keep reading.
308
309A high-level explanation of the context management protocol is:
310
311* The expression is evaluated and should result in an object called a "context
312 manager". The context manager must have :meth:`__enter__` and :meth:`__exit__`
313 methods.
314
315* The context manager's :meth:`__enter__` method is called. The value returned
Georg Brandld41b8dc2007-12-16 23:15:07 +0000316 is assigned to *VAR*. If no ``as VAR`` clause is present, the value is simply
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000317 discarded.
318
319* The code in *BLOCK* is executed.
320
321* If *BLOCK* raises an exception, the :meth:`__exit__(type, value, traceback)`
322 is called with the exception details, the same values returned by
323 :func:`sys.exc_info`. The method's return value controls whether the exception
324 is re-raised: any false value re-raises the exception, and ``True`` will result
325 in suppressing it. You'll only rarely want to suppress the exception, because
326 if you do the author of the code containing the ':keyword:`with`' statement will
327 never realize anything went wrong.
328
329* If *BLOCK* didn't raise an exception, the :meth:`__exit__` method is still
330 called, but *type*, *value*, and *traceback* are all ``None``.
331
332Let's think through an example. I won't present detailed code but will only
333sketch the methods necessary for a database that supports transactions.
334
335(For people unfamiliar with database terminology: a set of changes to the
336database are grouped into a transaction. Transactions can be either committed,
337meaning that all the changes are written into the database, or rolled back,
338meaning that the changes are all discarded and the database is unchanged. See
339any database textbook for more information.)
340
341Let's assume there's an object representing a database connection. Our goal will
342be to let the user write code like this::
343
344 db_connection = DatabaseConnection()
345 with db_connection as cursor:
346 cursor.execute('insert into ...')
347 cursor.execute('delete from ...')
348 # ... more operations ...
349
350The transaction should be committed if the code in the block runs flawlessly or
351rolled back if there's an exception. Here's the basic interface for
352:class:`DatabaseConnection` that I'll assume::
353
354 class DatabaseConnection:
355 # Database interface
Georg Brandl9f72d232007-12-16 23:13:29 +0000356 def cursor(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000357 "Returns a cursor object and starts a new transaction"
Georg Brandl9f72d232007-12-16 23:13:29 +0000358 def commit(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000359 "Commits current transaction"
Georg Brandl9f72d232007-12-16 23:13:29 +0000360 def rollback(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000361 "Rolls back current transaction"
362
363The :meth:`__enter__` method is pretty easy, having only to start a new
364transaction. For this application the resulting cursor object would be a useful
365result, so the method will return it. The user can then add ``as cursor`` to
366their ':keyword:`with`' statement to bind the cursor to a variable name. ::
367
368 class DatabaseConnection:
369 ...
Georg Brandl9f72d232007-12-16 23:13:29 +0000370 def __enter__(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000371 # Code to start a new transaction
372 cursor = self.cursor()
373 return cursor
374
375The :meth:`__exit__` method is the most complicated because it's where most of
376the work has to be done. The method has to check if an exception occurred. If
377there was no exception, the transaction is committed. The transaction is rolled
378back if there was an exception.
379
380In the code below, execution will just fall off the end of the function,
381returning the default value of ``None``. ``None`` is false, so the exception
382will be re-raised automatically. If you wished, you could be more explicit and
383add a :keyword:`return` statement at the marked location. ::
384
385 class DatabaseConnection:
386 ...
Georg Brandl9f72d232007-12-16 23:13:29 +0000387 def __exit__(self, type, value, tb):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000388 if tb is None:
389 # No exception, so commit
390 self.commit()
391 else:
392 # Exception occurred, so rollback.
393 self.rollback()
394 # return False
395
396
397.. _module-contextlib:
398
399The contextlib module
400---------------------
401
402The new :mod:`contextlib` module provides some functions and a decorator that
403are useful for writing objects for use with the ':keyword:`with`' statement.
404
405The decorator is called :func:`contextmanager`, and lets you write a single
406generator function instead of defining a new class. The generator should yield
407exactly one value. The code up to the :keyword:`yield` will be executed as the
408:meth:`__enter__` method, and the value yielded will be the method's return
409value that will get bound to the variable in the ':keyword:`with`' statement's
410:keyword:`as` clause, if any. The code after the :keyword:`yield` will be
411executed in the :meth:`__exit__` method. Any exception raised in the block will
412be raised by the :keyword:`yield` statement.
413
414Our database example from the previous section could be written using this
415decorator as::
416
417 from contextlib import contextmanager
418
419 @contextmanager
Georg Brandl9f72d232007-12-16 23:13:29 +0000420 def db_transaction(connection):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000421 cursor = connection.cursor()
422 try:
423 yield cursor
424 except:
425 connection.rollback()
426 raise
427 else:
428 connection.commit()
429
430 db = DatabaseConnection()
431 with db_transaction(db) as cursor:
432 ...
433
434The :mod:`contextlib` module also has a :func:`nested(mgr1, mgr2, ...)` function
435that combines a number of context managers so you don't need to write nested
436':keyword:`with`' statements. In this example, the single ':keyword:`with`'
437statement both starts a database transaction and acquires a thread lock::
438
439 lock = threading.Lock()
440 with nested (db_transaction(db), lock) as (cursor, locked):
441 ...
442
443Finally, the :func:`closing(object)` function returns *object* so that it can be
444bound to a variable, and calls ``object.close`` at the end of the block. ::
445
446 import urllib, sys
447 from contextlib import closing
448
449 with closing(urllib.urlopen('http://www.yahoo.com')) as f:
450 for line in f:
451 sys.stdout.write(line)
452
453
454.. seealso::
455
456 :pep:`343` - The "with" statement
457 PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland,
458 Guido van Rossum, and Neal Norwitz. The PEP shows the code generated for a
459 ':keyword:`with`' statement, which can be helpful in learning how the statement
460 works.
461
462 The documentation for the :mod:`contextlib` module.
463
Georg Brandlb19be572007-12-29 10:57:00 +0000464.. ======================================================================
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000465
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000466.. _pep-0366:
467
468PEP 366: Explicit Relative Imports From a Main Module
469============================================================
470
471Python's :option:`-m` switch allows running a module as a script.
472When you ran a module that was located inside a package, relative
473imports didn't work correctly.
474
475The fix in Python 2.6 adds a :attr:`__package__` attribute to modules.
476When present, relative imports will be relative to the value of this
477attribute instead of the :attr:`__name__` attribute. PEP 302-style
478importers can then set :attr:`__package__`. The :mod:`runpy` module
479that implements the :option:`-m` switch now does this, so relative imports
480can now be used in scripts running from inside a package.
481
Georg Brandlb19be572007-12-29 10:57:00 +0000482.. ======================================================================
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000483
Andrew M. Kuchling2e463552008-01-15 01:47:32 +0000484.. ::
485
486 .. _pep-0370:
487
488 PEP 370: XXX
489 =====================================================
490
491 When you run Python, the module search page ``sys.modules`` usually
492 includes a directory whose path ends in ``"site-packages"``. This
493 directory is intended to hold locally-installed packages available to
494 all users on a machine or using a particular site installation.
495
496 Python 2.6 introduces a convention for user-specific site directories.
497
498 .. seealso::
499
500 :pep:`370` - XXX
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000501 PEP written by XXX; implemented by Christian Heimes.
Andrew M. Kuchling2e463552008-01-15 01:47:32 +0000502
503
504.. ======================================================================
505
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000506.. _pep-3101:
507
508PEP 3101: Advanced String Formatting
509=====================================================
510
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000511In Python 3.0, the `%` operator is supplemented by a more powerful
512string formatting method, :meth:`format`. Support for the
513:meth:`format` method has been backported to Python 2.6.
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000514
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000515In 2.6, both 8-bit and Unicode strings have a `.format()` method that
516treats the string as a template and takes the arguments to be formatted.
517The formatting template uses curly brackets (`{`, `}`) as special characters::
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000518
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000519 # Substitute positional argument 0 into the string.
520 "User ID: {0}".format("root") -> "User ID: root"
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000521
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000522 # Use the named keyword arguments
523 uid = 'root'
524
525 'User ID: {uid} Last seen: {last_login}'.format(uid='root',
526 last_login = '5 Mar 2008 07:20') ->
527 'User ID: root Last seen: 5 Mar 2008 07:20'
528
529Curly brackets can be escaped by doubling them::
530
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000531 format("Empty dict: {{}}") -> "Empty dict: {}"
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000532
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000533Field names can be integers indicating positional arguments, such as
534``{0}``, ``{1}``, etc. or names of keyword arguments. You can also
535supply compound field names that read attributes or access dictionary keys::
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000536
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000537 import sys
538 'Platform: {0.platform}\nPython version: {0.version}'.format(sys) ->
539 'Platform: darwin\n
540 Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41) \n
541 [GCC 4.0.1 (Apple Computer, Inc. build 5367)]'
542
543 import mimetypes
544 'Content-type: {0[.mp4]}'.format(mimetypes.types_map) ->
545 'Content-type: video/mp4'
546
547Note that when using dictionary-style notation such as ``[.mp4]``, you
548don't need to put any quotation marks around the string; it will look
549up the value using ``.mp4`` as the key. Strings beginning with a
550number will be converted to an integer. You can't write more
551complicated expressions inside a format string.
552
553So far we've shown how to specify which field to substitute into the
554resulting string. The precise formatting used is also controllable by
Georg Brandl859043c2008-03-21 17:19:29 +0000555adding a colon followed by a format specifier. For example::
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000556
557 # Field 0: left justify, pad to 15 characters
558 # Field 1: right justify, pad to 6 characters
559 fmt = '{0:15} ${1:>6}'
560 fmt.format('Registration', 35) ->
561 'Registration $ 35'
562 fmt.format('Tutorial', 50) ->
563 'Tutorial $ 50'
564 fmt.format('Banquet', 125) ->
565 'Banquet $ 125'
566
Georg Brandl859043c2008-03-21 17:19:29 +0000567Format specifiers can reference other fields through nesting::
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000568
569 fmt = '{0:{1}}'
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000570 fmt.format('Invoice #1234', 15) ->
571 'Invoice #1234 '
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000572 width = 35
573 fmt.format('Invoice #1234', width) ->
574 'Invoice #1234 '
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000575
576The alignment of a field within the desired width can be specified:
577
578================ ============================================
579Character Effect
580================ ============================================
581< (default) Left-align
582> Right-align
583^ Center
584= (For numeric types only) Pad after the sign.
585================ ============================================
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000586
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000587Format specifiers can also include a presentation type, which
588controls how the value is formatted. For example, floating-point numbers
589can be formatted as a general number or in exponential notation:
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000590
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000591 >>> '{0:g}'.format(3.75)
592 '3.75'
593 >>> '{0:e}'.format(3.75)
594 '3.750000e+00'
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000595
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000596A variety of presentation types are available. Consult the 2.6
597documentation for a complete list (XXX add link, once it's in the 2.6
598docs), but here's a sample::
599
600 'b' - Binary. Outputs the number in base 2.
601 'c' - Character. Converts the integer to the corresponding
602 Unicode character before printing.
603 'd' - Decimal Integer. Outputs the number in base 10.
604 'o' - Octal format. Outputs the number in base 8.
605 'x' - Hex format. Outputs the number in base 16, using lower-
606 case letters for the digits above 9.
607 'e' - Exponent notation. Prints the number in scientific
608 notation using the letter 'e' to indicate the exponent.
609 'g' - General format. This prints the number as a fixed-point
610 number, unless the number is too large, in which case
611 it switches to 'e' exponent notation.
612 'n' - Number. This is the same as 'g', except that it uses the
613 current locale setting to insert the appropriate
614 number separator characters.
615 '%' - Percentage. Multiplies the number by 100 and displays
616 in fixed ('f') format, followed by a percent sign.
617
618Classes and types can define a __format__ method to control how they're
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000619formatted. It receives a single argument, the format specifier::
620
621 def __format__(self, format_spec):
622 if isinstance(format_spec, unicode):
623 return unicode(str(self))
624 else:
625 return str(self)
626
627There's also a format() built-in that will format a single value. It calls
628the type's :meth:`__format__` method with the provided specifier::
629
630 >>> format(75.6564, '.2f')
631 '75.66'
632
633.. seealso::
634
635 :pep:`3101` - Advanced String Formatting
636 PEP written by Talin.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000637
638.. ======================================================================
639
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000640.. _pep-3105:
641
642PEP 3105: ``print`` As a Function
643=====================================================
644
645The ``print`` statement becomes the :func:`print` function in Python 3.0.
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000646Making :func:`print` a function makes it easier to change
647by doing 'def print(...)' or importing a new function from somewhere else.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000648
649Python 2.6 has a ``__future__`` import that removes ``print`` as language
650syntax, letting you use the functional form instead. For example::
651
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000652 from __future__ import print_function
653 print('# of entries', len(dictionary), file=sys.stderr)
654
655The signature of the new function is::
656
657 def print(*args, sep=' ', end='\n', file=None)
658
659The parameters are:
660
661 * **args**: positional arguments whose values will be printed out.
662 * **sep**: the separator, which will be printed between arguments.
663 * **end**: the ending text, which will be printed after all of the
664 arguments have been output.
665 * **file**: the file object to which the output will be sent.
666
667.. seealso::
668
Eric Smith33dd0942008-03-20 23:04:04 +0000669 :pep:`3105` - Make print a function
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000670 PEP written by Georg Brandl.
671
672.. ======================================================================
673
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000674.. _pep-3110:
675
676PEP 3110: Exception-Handling Changes
677=====================================================
678
679One error that Python programmers occasionally make
680is the following::
681
682 try:
683 ...
684 except TypeError, ValueError:
685 ...
686
687The author is probably trying to catch both
688:exc:`TypeError` and :exc:`ValueError` exceptions, but this code
689actually does something different: it will catch
690:exc:`TypeError` and bind the resulting exception object
691to the local name ``"ValueError"``. The correct code
692would have specified a tuple::
693
694 try:
695 ...
696 except (TypeError, ValueError):
697 ...
698
699This error is possible because the use of the comma here is ambiguous:
700does it indicate two different nodes in the parse tree, or a single
701node that's a tuple.
702
703Python 3.0 changes the syntax to make this unambiguous by replacing
704the comma with the word "as". To catch an exception and store the
705exception object in the variable ``exc``, you must write::
706
707 try:
708 ...
709 except TypeError as exc:
710 ...
711
712Python 3.0 will only support the use of "as", and therefore interprets
713the first example as catching two different exceptions. Python 2.6
714supports both the comma and "as", so existing code will continue to
715work.
716
717.. seealso::
718
719 :pep:`3110` - Catching Exceptions in Python 3000
720 PEP written and implemented by Collin Winter.
721
Georg Brandlb19be572007-12-29 10:57:00 +0000722.. ======================================================================
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000723
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000724.. _pep-3112:
725
726PEP 3112: Byte Literals
727=====================================================
728
729Python 3.0 adopts Unicode as the language's fundamental string type, and
730denotes 8-bit literals differently, either as ``b'string'``
731or using a :class:`bytes` constructor. For future compatibility,
732Python 2.6 adds :class:`bytes` as a synonym for the :class:`str` type,
733and it also supports the ``b''`` notation.
734
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +0000735There's also a ``__future__`` import that causes all string literals
736to become Unicode strings. This means that ``\u`` escape sequences
737can be used to include Unicode characters.
738
739XXX give example
740
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000741.. seealso::
742
743 :pep:`3112` - Bytes literals in Python 3000
744 PEP written by Jason Orendorff; backported to 2.6 by Christian Heimes.
745
746.. ======================================================================
747
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +0000748.. _pep-3116:
749
750PEP 3116: New I/O Library
751=====================================================
752
Andrew M. Kuchlingabf8e012008-04-08 21:22:53 +0000753Python's built-in file objects support a number of methods, but
754file-like objects don't necessarily support all of them. Objects that
755imitate files usually support :meth:`read` and :meth:`write`, but they
756may not support :meth:`readline`. Python 3.0 introduces a layered I/O
757library in the :mod:`io` module that separates buffering and
758text-handling features from the fundamental read and write operations.
759
760There are three levels of abstract base classes provided by
761the :mod:`io` module:
762
763* :class:`RawIOBase`: defines raw I/O operations: :meth:`read`,
764 :meth:`readinto`,
765 :meth:`write`, :meth:`seek`, :meth:`tell`, :meth:`truncate`,
766 and :meth:`close`.
767 Most of the methods of this class will often map to a single system call.
768 There are also :meth:`readable`, :meth:`writable`, and :meth:`seekable`
769 methods for determining what operations a given object will allow.
770
771 Python 3.0 has concrete implementations of this class for files and
772 sockets, but Python 2.6 hasn't restructured its file and socket objects
773 in this way.
774
775 .. XXX should 2.6 register them in io.py?
776
777* :class:`BufferedIOBase`: is an abstract base class that
778 buffers data in memory to reduce the number of
779 system calls used, making I/O processing more efficient.
780 It supports all of the methods of :class:`RawIOBase`,
781 and adds a :attr:`raw` attribute holding the underlying raw object.
782
783 There are four concrete classes implementing this ABC:
784 :class:`BufferedWriter` and
785 :class:`BufferedReader` for objects that only support
786 writing or reading and don't support random access,
787 :class:`BufferedRandom` for objects that support the :meth:`seek` method
788 for random access,
789 and :class:`BufferedRWPair` for objects such as TTYs that have
790 both read and write operations that act upon unconnected streams of data.
791
792* :class:`TextIOBase`: Provides functions for reading and writing
793 strings (remember, strings will be Unicode in Python 3.0),
794 and supporting universal newlines. :class:`TextIOBase` defines
795 the :meth:`readline` method and supports iteration upon
796 objects.
797
798 There are two concrete implementations. :class:`TextIOWrapper`
799 wraps a buffered I/O object, supporting all of the methods for
800 text I/O and adding a :attr:`buffer` attribute for access
801 to the underlying object. :class:`StringIO` simply buffers
802 everything in memory without ever writing anything to disk.
803
804 (In current 2.6 alpha releases, :class:`io.StringIO` is implemented in
805 pure Python, so it's pretty slow. You should therefore stick with the
806 existing :mod:`StringIO` module or :mod:`cStringIO` for now. At some
807 point Python 3.0's :mod:`io` module will be rewritten into C for speed,
808 and perhaps the C implementation will be backported to the 2.x releases.)
809
810 .. XXX check before final release: is io.py still written in Python?
811
812In Python 2.6, the underlying implementations haven't been
813restructured to build on top of the :mod:`io` module's classes. The
814module is being provided to make it easier to write code that's
815forward-compatible with 3.0, and to save developers the effort of writing
816their own implementations of buffering and text I/O.
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +0000817
818.. seealso::
819
820 :pep:`3116` - New I/O
821 PEP written by Daniel Stutzbach, Mike Verdone, and Guido van Rossum.
822 XXX code written by who?
823
824.. ======================================================================
825
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000826.. _pep-3118:
827
828PEP 3118: Revised Buffer Protocol
829=====================================================
830
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000831The buffer protocol is a C-level API that lets Python types
832exchange pointers into their internal representations. A
833memory-mapped file can be viewed as a buffer of characters, for
834example, and this lets another module such as :mod:`re`
835treat memory-mapped files as a string of characters to be searched.
836
837The primary users of the buffer protocol are numeric-processing
838packages such as NumPy, which can expose the internal representation
839of arrays so that callers can write data directly into an array instead
840of going through a slower API. This PEP updates the buffer protocol in light of experience
841from NumPy development, adding a number of new features
842such as indicating the shape of an array,
843locking memory .
844
845The most important new C API function is
846``PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags)``, which
847takes an object and a set of flags, and fills in the
848``Py_buffer`` structure with information
849about the object's memory representation. Objects
850can use this operation to lock memory in place
851while an external caller could be modifying the contents,
852so there's a corresponding
853``PyObject_ReleaseBuffer(PyObject *obj, Py_buffer *view)`` to
854indicate that the external caller is done.
855
856The **flags** argument to :cfunc:`PyObject_GetBuffer` specifies
857constraints upon the memory returned. Some examples are:
858
859 * :const:`PyBUF_WRITABLE` indicates that the memory must be writable.
860
861 * :const:`PyBUF_LOCK` requests a read-only or exclusive lock on the memory.
862
863 * :const:`PyBUF_C_CONTIGUOUS` and :const:`PyBUF_F_CONTIGUOUS`
864 requests a C-contiguous (last dimension varies the fastest) or
865 Fortran-contiguous (first dimension varies the fastest) layout.
866
867.. XXX this feature is not in 2.6 docs yet
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000868
869.. seealso::
870
871 :pep:`3118` - Revising the buffer protocol
Andrew M. Kuchling217057f2008-04-05 15:57:46 +0000872 PEP written by Travis Oliphant and Carl Banks; implemented by
873 Travis Oliphant.
874
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000875
876.. ======================================================================
877
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000878.. _pep-3119:
879
880PEP 3119: Abstract Base Classes
881=====================================================
882
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000883Some object-oriented languages such as Java support interfaces: declarations
884that a class has a given set of methods or supports a given access protocol.
885Abstract Base Classes (or ABCs) are an equivalent feature for Python. The ABC
886support consists of an :mod:`abc` module containing a metaclass called
887:class:`ABCMeta`, special handling
888of this metaclass by the :func:`isinstance` and :func:`issubclass` built-ins,
889and a collection of basic ABCs that the Python developers think will be widely
890useful.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000891
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000892Let's say you have a particular class and wish to know whether it supports
893dictionary-style access. The phrase "dictionary-style" is vague, however.
894It probably means that accessing items with ``obj[1]`` works.
895Does it imply that setting items with ``obj[2] = value`` works?
896Or that the object will have :meth:`keys`, :meth:`values`, and :meth:`items`
897methods? What about the iterative variants such as :meth:`iterkeys`? :meth:`copy`
898and :meth:`update`? Iterating over the object with :func:`iter`?
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000899
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000900Python 2.6 includes a number of different ABCs in the :mod:`collections`
901module. :class:`Iterable` indicates that a class defines :meth:`__iter__`,
902and :class:`Container` means the class supports ``x in y`` expressions
903by defining a :meth:`__contains__` method. The basic dictionary interface of
904getting items, setting items, and
905:meth:`keys`, :meth:`values`, and :meth:`items`, is defined by the
906:class:`MutableMapping` ABC.
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000907
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000908You can derive your own classes from a particular ABC
909to indicate they support that ABC's interface::
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000910
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000911 import collections
912
913 class Storage(collections.MutableMapping):
914 ...
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000915
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000916
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000917Alternatively, you could write the class without deriving from
918the desired ABC and instead register the class by
919calling the ABC's :meth:`register` method::
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000920
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000921 import collections
922
923 class Storage:
924 ...
925
926 collections.MutableMapping.register(Storage)
927
928For classes that you write, deriving from the ABC is probably clearer.
929The :meth:`register` method is useful when you've written a new
930ABC that can describe an existing type or class, or if you want
931to declare that some third-party class implements an ABC.
932For example, if you defined a :class:`PrintableType` ABC,
933it's legal to do:
Andrew M. Kuchling73835bd2008-01-04 18:24:41 +0000934
Andrew M. Kuchling21852412008-04-05 18:15:30 +0000935 # Register Python's types
936 PrintableType.register(int)
937 PrintableType.register(float)
938 PrintableType.register(str)
939
940Classes should obey the semantics specified by an ABC, but
941Python can't check this; it's up to the class author to
942understand the ABC's requirements and to implement the code accordingly.
943
944To check whether an object supports a particular interface, you can
945now write::
946
947 def func(d):
948 if not isinstance(d, collections.MutableMapping):
949 raise ValueError("Mapping object expected, not %r" % d)
950
951(Don't feel that you must now begin writing lots of checks as in the
952above example. Python has a strong tradition of duck-typing, where
953explicit type-checking isn't done and code simply calls methods on
954an object, trusting that those methods will be there and raising an
955exception if they aren't. Be judicious in checking for ABCs
956and only do it where it helps.)
957
958You can write your own ABCs by using ``abc.ABCMeta`` as the
959metaclass in a class definition::
960
961 from abc import ABCMeta
962
963 class Drawable():
964 __metaclass__ = ABCMeta
965
966 def draw(self, x, y, scale=1.0):
967 pass
968
969 def draw_doubled(self, x, y):
970 self.draw(x, y, scale=2.0)
971
972
973 class Square(Drawable):
974 def draw(self, x, y, scale):
975 ...
976
977
978In the :class:`Drawable` ABC above, the :meth:`draw_doubled` method
979renders the object at twice its size and can be implemented in terms
980of other methods described in :class:`Drawable`. Classes implementing
981this ABC therefore don't need to provide their own implementation
982of :meth:`draw_doubled`, though they can do so. An implementation
983of :meth:`draw` is necessary, though; the ABC can't provide
984a useful generic implementation. You
985can apply the ``@abstractmethod`` decorator to methods such as
986:meth:`draw` that must be implemented; Python will
987then raise an exception for classes that
988don't define the method::
989
990 class Drawable():
991 __metaclass__ = ABCMeta
992
993 @abstractmethod
994 def draw(self, x, y, scale):
995 pass
996
997Note that the exception is only raised when you actually
998try to create an instance of a subclass without the method::
999
1000 >>> s=Square()
1001 Traceback (most recent call last):
1002 File "<stdin>", line 1, in <module>
1003 TypeError: Can't instantiate abstract class Square with abstract methods draw
1004 >>>
1005
1006Abstract data attributes can be declared using the ``@abstractproperty`` decorator::
1007
Andrew M. Kuchling73835bd2008-01-04 18:24:41 +00001008 @abstractproperty
1009 def readonly(self):
1010 return self._x
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001011
Andrew M. Kuchling21852412008-04-05 18:15:30 +00001012Subclasses must then define a :meth:`readonly` property
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001013
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001014.. seealso::
1015
1016 :pep:`3119` - Introducing Abstract Base Classes
1017 PEP written by Guido van Rossum and Talin.
Andrew M. Kuchling21852412008-04-05 18:15:30 +00001018 Implemented by Guido van Rossum.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001019 Backported to 2.6 by Benjamin Aranguren, with Alex Martelli.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001020
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001021.. ======================================================================
1022
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001023.. _pep-3127:
1024
1025PEP 3127: Integer Literal Support and Syntax
1026=====================================================
1027
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001028Python 3.0 changes the syntax for octal (base-8) integer literals,
1029which are now prefixed by "0o" or "0O" instead of a leading zero, and
1030adds support for binary (base-2) integer literals, signalled by a "0b"
1031or "0B" prefix.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001032
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001033Python 2.6 doesn't drop support for a leading 0 signalling
1034an octal number, but it does add support for "0o" and "0b"::
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001035
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001036 >>> 0o21, 2*8 + 1
1037 (17, 17)
1038 >>> 0b101111
1039 47
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001040
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001041The :func:`oct` built-in still returns numbers
1042prefixed with a leading zero, and a new :func:`bin`
1043built-in returns the binary representation for a number::
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001044
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001045 >>> oct(42)
1046 '052'
1047 >>> bin(173)
1048 '0b10101101'
1049
1050The :func:`int` and :func:`long` built-ins will now accept the "0o"
1051and "0b" prefixes when base-8 or base-2 are requested, or when the
1052**base** argument is zero (meaning the base used is determined from
1053the string):
1054
1055 >>> int ('0o52', 0)
1056 42
1057 >>> int('1101', 2)
1058 13
1059 >>> int('0b1101', 2)
1060 13
1061 >>> int('0b1101', 0)
1062 13
1063
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001064
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001065.. seealso::
1066
1067 :pep:`3127` - Integer Literal Support and Syntax
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001068 PEP written by Patrick Maupin; backported to 2.6 by
1069 Eric Smith.
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001070
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001071.. ======================================================================
1072
1073.. _pep-3129:
1074
1075PEP 3129: Class Decorators
1076=====================================================
1077
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001078Decorators have been extended from functions to classes. It's now legal to
1079write::
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001080
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001081 @foo
1082 @bar
1083 class A:
1084 pass
1085
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001086This is equivalent to::
1087
1088 class A:
1089 pass
1090
1091 A = foo(bar(A))
1092
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001093XXX need to find a good motivating example.
1094
1095.. seealso::
1096
1097 :pep:`3129` - Class Decorators
1098 PEP written by Collin Winter.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001099
1100.. ======================================================================
1101
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001102.. _pep-3141:
1103
1104PEP 3141: A Type Hierarchy for Numbers
1105=====================================================
1106
1107In Python 3.0, several abstract base classes for numeric types,
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +00001108inspired by Scheme's numeric tower, are being added.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001109This change was backported to 2.6 as the :mod:`numbers` module.
1110
1111The most general ABC is :class:`Number`. It defines no operations at
1112all, and only exists to allow checking if an object is a number by
1113doing ``isinstance(obj, Number)``.
1114
1115Numbers are further divided into :class:`Exact` and :class:`Inexact`.
1116Exact numbers can represent values precisely and operations never
1117round off the results or introduce tiny errors that may break the
Georg Brandl907a7202008-02-22 12:31:45 +00001118commutativity and associativity properties; inexact numbers may
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001119perform such rounding or introduce small errors. Integers, long
1120integers, and rational numbers are exact, while floating-point
1121and complex numbers are inexact.
1122
1123:class:`Complex` is a subclass of :class:`Number`. Complex numbers
1124can undergo the basic operations of addition, subtraction,
1125multiplication, division, and exponentiation, and you can retrieve the
1126real and imaginary parts and obtain a number's conjugate. Python's built-in
1127complex type is an implementation of :class:`Complex`.
1128
1129:class:`Real` further derives from :class:`Complex`, and adds
1130operations that only work on real numbers: :func:`floor`, :func:`trunc`,
1131rounding, taking the remainder mod N, floor division,
1132and comparisons.
1133
1134:class:`Rational` numbers derive from :class:`Real`, have
1135:attr:`numerator` and :attr:`denominator` properties, and can be
Mark Dickinsond058cd22008-02-10 21:29:51 +00001136converted to floats. Python 2.6 adds a simple rational-number class,
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001137:class:`Fraction`, in the :mod:`fractions` module. (It's called
1138:class:`Fraction` instead of :class:`Rational` to avoid
1139a name clash with :class:`numbers.Rational`.)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001140
1141:class:`Integral` numbers derive from :class:`Rational`, and
1142can be shifted left and right with ``<<`` and ``>>``,
1143combined using bitwise operations such as ``&`` and ``|``,
1144and can be used as array indexes and slice boundaries.
1145
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +00001146In Python 3.0, the PEP slightly redefines the existing built-ins
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001147:func:`round`, :func:`math.floor`, :func:`math.ceil`, and adds a new
1148one, :func:`math.trunc`, that's been backported to Python 2.6.
1149:func:`math.trunc` rounds toward zero, returning the closest
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +00001150:class:`Integral` that's between the function's argument and zero.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001151
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +00001152.. seealso::
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001153
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001154 :pep:`3141` - A Type Hierarchy for Numbers
1155 PEP written by Jeffrey Yasskin.
1156
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +00001157 `Scheme's numerical tower <http://www.gnu.org/software/guile/manual/html_node/Numerical-Tower.html#Numerical-Tower>`__, from the Guile manual.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001158
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +00001159 `Scheme's number datatypes <http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2>`__ from the R5RS Scheme specification.
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +00001160
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001161
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001162The :mod:`fractions` Module
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001163--------------------------------------------------
1164
1165To fill out the hierarchy of numeric types, a rational-number class
Mark Dickinsond058cd22008-02-10 21:29:51 +00001166has been added as the :mod:`fractions` module. Rational numbers are
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001167represented as a fraction, and can exactly represent
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001168numbers such as two-thirds that floating-point numbers can only
1169approximate.
1170
Mark Dickinsond058cd22008-02-10 21:29:51 +00001171The :class:`Fraction` constructor takes two :class:`Integral` values
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001172that will be the numerator and denominator of the resulting fraction. ::
1173
Mark Dickinsond058cd22008-02-10 21:29:51 +00001174 >>> from fractions import Fraction
1175 >>> a = Fraction(2, 3)
1176 >>> b = Fraction(2, 5)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001177 >>> float(a), float(b)
1178 (0.66666666666666663, 0.40000000000000002)
1179 >>> a+b
Mark Dickinsoncd873fc2008-02-11 03:11:55 +00001180 Fraction(16, 15)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001181 >>> a/b
Mark Dickinsoncd873fc2008-02-11 03:11:55 +00001182 Fraction(5, 3)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001183
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001184To help in converting floating-point numbers to rationals,
1185the float type now has a :meth:`as_integer_ratio()` method that returns
1186the numerator and denominator for a fraction that evaluates to the same
1187floating-point value::
1188
1189 >>> (2.5) .as_integer_ratio()
1190 (5, 2)
1191 >>> (3.1415) .as_integer_ratio()
1192 (7074029114692207L, 2251799813685248L)
1193 >>> (1./3) .as_integer_ratio()
1194 (6004799503160661L, 18014398509481984L)
1195
1196Note that values that can only be approximated by floating-point
1197numbers, such as 1./3, are not simplified to the number being
1198approximated; the fraction attempts to match the floating-point value
1199**exactly**.
1200
Mark Dickinsond058cd22008-02-10 21:29:51 +00001201The :mod:`fractions` module is based upon an implementation by Sjoerd
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001202Mullender that was in Python's :file:`Demo/classes/` directory for a
1203long time. This implementation was significantly updated by Jeffrey
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001204Yasskin.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +00001205
Georg Brandl8ec7f652007-08-15 14:28:01 +00001206Other Language Changes
1207======================
1208
1209Here are all of the changes that Python 2.6 makes to the core Python language.
1210
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001211* When calling a function using the ``**`` syntax to provide keyword
1212 arguments, you are no longer required to use a Python dictionary;
1213 any mapping will now work::
1214
1215 >>> def f(**kw):
1216 ... print sorted(kw)
1217 ...
1218 >>> ud=UserDict.UserDict()
1219 >>> ud['a'] = 1
1220 >>> ud['b'] = 'string'
1221 >>> f(**ud)
1222 ['a', 'b']
1223
Andrew M. Kuchlingc157c9c2008-04-09 22:28:43 +00001224 (Contributed by Alexander Belopolsky; :issue:`1686487`.)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001225
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001226* Tuples now have an :meth:`index` method matching the list type's
1227 :meth:`index` method::
1228
1229 >>> t = (0,1,2,3,4)
1230 >>> t.index(3)
1231 3
1232
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001233* The built-in types now have improved support for extended slicing syntax,
1234 where various combinations of ``(start, stop, step)`` are supplied.
1235 Previously, the support was partial and certain corner cases wouldn't work.
1236 (Implemented by Thomas Wouters.)
1237
Georg Brandlb19be572007-12-29 10:57:00 +00001238 .. Revision 57619
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001239
Christian Heimesff6cc6b2008-01-17 23:01:44 +00001240* Properties now have three attributes, :attr:`getter`,
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001241 :attr:`setter` and :attr:`deleter`, that are useful shortcuts for
Christian Heimesff6cc6b2008-01-17 23:01:44 +00001242 adding or modifying a getter, setter or deleter function to an
1243 existing property. You would use them like this::
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001244
1245 class C(object):
1246 @property
1247 def x(self):
1248 return self._x
1249
1250 @x.setter
1251 def x(self, value):
1252 self._x = value
1253
1254 @x.deleter
1255 def x(self):
1256 del self._x
1257
Christian Heimesff6cc6b2008-01-17 23:01:44 +00001258 class D(C):
1259 @C.x.getter
1260 def x(self):
1261 return self._x * 2
1262
1263 @x.setter
1264 def x(self, value):
1265 self._x = value / 2
1266
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001267
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001268* C functions and methods that use
1269 :cfunc:`PyComplex_AsCComplex` will now accept arguments that
1270 have a :meth:`__complex__` method. In particular, the functions in the
1271 :mod:`cmath` module will now accept objects with this method.
1272 This is a backport of a Python 3.0 change.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001273 (Contributed by Mark Dickinson; :issue:`1675423`.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001274
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001275 A numerical nicety: when creating a complex number from two floats
1276 on systems that support signed zeros (-0 and +0), the
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001277 :func:`complex` constructor will now preserve the sign
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001278 of the zero. (:issue:`1507`)
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001279
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001280* More floating-point features were also added. The :func:`float` function
1281 will now turn the strings ``+nan`` and ``-nan`` into the corresponding
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001282 IEEE 754 Not A Number values, and ``+inf`` and ``-inf`` into
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001283 positive or negative infinity. This works on any platform with
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001284 IEEE 754 semantics. (Contributed by Christian Heimes; :issue:`1635`.)
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001285
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001286 Other functions in the :mod:`math` module, :func:`isinf` and
1287 :func:`isnan`, return true if their floating-point argument is
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001288 infinite or Not A Number. (:issue:`1640`)
Georg Brandle1b8e9c2008-02-20 19:12:36 +00001289
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001290 The ``math.copysign(x, y)`` function
1291 copies the sign bit of an IEEE 754 number, returning the absolute
1292 value of *x* combined with the sign bit of *y*. For example,
1293 ``math.copysign(1, -0.0)`` returns -1.0. (Contributed by Christian
1294 Heimes.)
1295
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001296* Changes to the :class:`Exception` interface
1297 as dictated by :pep:`352` continue to be made. For 2.6,
1298 the :attr:`message` attribute is being deprecated in favor of the
1299 :attr:`args` attribute.
1300
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001301* The :exc:`GeneratorExit` exception now subclasses
1302 :exc:`BaseException` instead of :exc:`Exception`. This means
1303 that an exception handler that does ``except Exception:``
1304 will not inadvertently catch :exc:`GeneratorExit`.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001305 (Contributed by Chad Austin; :issue:`1537`.)
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001306
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001307* Generator objects now have a :attr:`gi_code` attribute that refers to
1308 the original code object backing the generator.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001309 (Contributed by Collin Winter; :issue:`1473257`.)
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001310
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001311* The :func:`compile` built-in function now accepts keyword arguments
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001312 as well as positional parameters. (Contributed by Thomas Wouters;
1313 :issue:`1444529`.)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001314
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001315* The :func:`complex` constructor now accepts strings containing
1316 parenthesized complex numbers, letting ``complex(repr(cmplx))``
1317 will now round-trip values. For example, ``complex('(3+4j)')``
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001318 now returns the value (3+4j). (:issue:`1491866`)
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001319
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001320* The string :meth:`translate` method now accepts ``None`` as the
1321 translation table parameter, which is treated as the identity
1322 transformation. This makes it easier to carry out operations
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001323 that only delete characters. (Contributed by Bengt Richter;
1324 :issue:`1193128`.)
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001325
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001326* The built-in :func:`dir` function now checks for a :meth:`__dir__`
1327 method on the objects it receives. This method must return a list
1328 of strings containing the names of valid attributes for the object,
1329 and lets the object control the value that :func:`dir` produces.
1330 Objects that have :meth:`__getattr__` or :meth:`__getattribute__`
Facundo Batistabd5b6232007-12-03 19:49:54 +00001331 methods can use this to advertise pseudo-attributes they will honor.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001332 (:issue:`1591665`)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001333
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001334* Instance method objects have new attributes for the object and function
1335 comprising the method; the new synonym for :attr:`im_self` is
1336 :attr:`__self__`, and :attr:`im_func` is also available as :attr:`__func__`.
1337 The old names are still supported in Python 2.6; they're gone in 3.0.
1338
Georg Brandl8ec7f652007-08-15 14:28:01 +00001339* An obscure change: when you use the the :func:`locals` function inside a
1340 :keyword:`class` statement, the resulting dictionary no longer returns free
1341 variables. (Free variables, in this case, are variables referred to in the
1342 :keyword:`class` statement that aren't attributes of the class.)
1343
Georg Brandlb19be572007-12-29 10:57:00 +00001344.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001345
1346
1347Optimizations
1348-------------
1349
Georg Brandlaf30b282008-01-15 06:55:56 +00001350* Type objects now have a cache of methods that can reduce
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001351 the amount of work required to find the correct method implementation
Andrew M. Kuchlinga01ed032008-01-15 01:55:32 +00001352 for a particular class; once cached, the interpreter doesn't need to
1353 traverse base classes to figure out the right method to call.
1354 The cache is cleared if a base class or the class itself is modified,
1355 so the cache should remain correct even in the face of Python's dynamic
1356 nature.
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001357 (Original optimization implemented by Armin Rigo, updated for
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001358 Python 2.6 by Kevin Jacobs; :issue:`1700288`.)
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001359
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001360* All of the functions in the :mod:`struct` module have been rewritten in
1361 C, thanks to work at the Need For Speed sprint.
1362 (Contributed by Raymond Hettinger.)
1363
Georg Brandl8ec7f652007-08-15 14:28:01 +00001364* Internally, a bit is now set in type objects to indicate some of the standard
1365 built-in types. This speeds up checking if an object is a subclass of one of
1366 these types. (Contributed by Neal Norwitz.)
1367
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001368* Unicode strings now uses faster code for detecting
1369 whitespace and line breaks; this speeds up the :meth:`split` method
1370 by about 25% and :meth:`splitlines` by 35%.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001371 (Contributed by Antoine Pitrou.) Memory usage is reduced
1372 by using pymalloc for the Unicode string's data.
1373
1374* The ``with`` statement now stores the :meth:`__exit__` method on the stack,
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001375 producing a small speedup. (Implemented by Jeffrey Yasskin.)
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001376
1377* To reduce memory usage, the garbage collector will now clear internal
1378 free lists when garbage-collecting the highest generation of objects.
1379 This may return memory to the OS sooner.
1380
Georg Brandl8ec7f652007-08-15 14:28:01 +00001381The net result of the 2.6 optimizations is that Python 2.6 runs the pystone
1382benchmark around XX% faster than Python 2.5.
1383
Georg Brandlb19be572007-12-29 10:57:00 +00001384.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001385
Andrew M. Kuchlingc161df62008-04-13 01:05:59 +00001386.. _interactive:
1387
1388Interactive Interpreter Changes
1389-------------------------------
1390
1391Two command-line options have been reserved for use by other Python
1392implementations. The :option:`-J` switch has been reserved for use by
1393Jython for Jython-specific options, such as ones that are passed to
1394the underlying JVM. :option:`-X` has been reserved for options
1395specific to a particular implementation of Python such as CPython,
1396Jython, or IronPython. If either option is used with Python 2.6, the
1397interpreter will report that the option isn't currently used.
1398
1399.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001400
1401New, Improved, and Deprecated Modules
1402=====================================
1403
1404As usual, Python's standard library received a number of enhancements and bug
1405fixes. Here's a partial list of the most notable changes, sorted alphabetically
1406by module name. Consult the :file:`Misc/NEWS` file in the source tree for a more
1407complete list of changes, or look through the CVS logs for all the details.
1408
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001409* The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol
1410 available, instead of restricting itself to protocol 1.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001411 (Contributed by W. Barnes; :issue:`1551443`.)
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001412
Andrew M. Kuchling6d57c822007-10-23 20:55:47 +00001413* A new data type in the :mod:`collections` module: :class:`namedtuple(typename,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001414 fieldnames)` is a factory function that creates subclasses of the standard tuple
1415 whose fields are accessible by name as well as index. For example::
1416
Andrew M. Kuchling6d57c822007-10-23 20:55:47 +00001417 >>> var_type = collections.namedtuple('variable',
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001418 ... 'id name type size')
1419 # Names are separated by spaces or commas.
1420 # 'id, name, type, size' would also work.
Raymond Hettinger366523c2007-12-14 18:12:21 +00001421 >>> var_type._fields
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001422 ('id', 'name', 'type', 'size')
Georg Brandl8ec7f652007-08-15 14:28:01 +00001423
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001424 >>> var = var_type(1, 'frequency', 'int', 4)
1425 >>> print var[0], var.id # Equivalent
1426 1 1
1427 >>> print var[2], var.type # Equivalent
1428 int int
Raymond Hettinger366523c2007-12-14 18:12:21 +00001429 >>> var._asdict()
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001430 {'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
Raymond Hettingere9b9b352008-02-15 21:21:25 +00001431 >>> v2 = var._replace(name='amplitude')
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001432 >>> v2
1433 variable(id=1, name='amplitude', type='int', size=4)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001434
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001435 Where the new :class:`namedtuple` type proved suitable, the standard
1436 library has been modified to return them. For example,
1437 the :meth:`Decimal.as_tuple` method now returns a named tuple with
1438 :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
1439
Georg Brandl8ec7f652007-08-15 14:28:01 +00001440 (Contributed by Raymond Hettinger.)
1441
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001442* Another change to the :mod:`collections` module is that the
Georg Brandle7d118a2007-12-08 11:05:05 +00001443 :class:`deque` type now supports an optional *maxlen* parameter;
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001444 if supplied, the deque's size will be restricted to no more
Georg Brandle7d118a2007-12-08 11:05:05 +00001445 than *maxlen* items. Adding more items to a full deque causes
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001446 old items to be discarded.
1447
1448 ::
1449
1450 >>> from collections import deque
1451 >>> dq=deque(maxlen=3)
1452 >>> dq
1453 deque([], maxlen=3)
1454 >>> dq.append(1) ; dq.append(2) ; dq.append(3)
1455 >>> dq
1456 deque([1, 2, 3], maxlen=3)
1457 >>> dq.append(4)
1458 >>> dq
1459 deque([2, 3, 4], maxlen=3)
1460
1461 (Contributed by Raymond Hettinger.)
1462
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001463* The :mod:`ctypes` module now supports a :class:`c_bool` datatype
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001464 that represents the C99 ``bool`` type. (Contributed by David Remahl;
1465 :issue:`1649190`.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001466
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001467 The :mod:`ctypes` string, buffer and array types also have improved
1468 support for extended slicing syntax,
1469 where various combinations of ``(start, stop, step)`` are supplied.
1470 (Implemented by Thomas Wouters.)
1471
Georg Brandlb19be572007-12-29 10:57:00 +00001472 .. Revision 57769
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001473
Georg Brandl8ec7f652007-08-15 14:28:01 +00001474* A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001475 the display characters for a certain number of characters on a single line.
Andrew M. Kuchling4a2762d2008-01-20 00:00:38 +00001476 (Contributed by Fabian Kreutz.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001477 ::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001478
1479 # Boldface text starting at y=0,x=21
1480 # and affecting the rest of the line.
1481 stdscr.chgat(0,21, curses.A_BOLD)
1482
Andrew M. Kuchling4a2762d2008-01-20 00:00:38 +00001483 The :class:`Textbox` class in the :mod:`curses.textpad` module
1484 now supports editing in insert mode as well as overwrite mode.
1485 Insert mode is enabled by supplying a true value for the *insert_mode*
1486 parameter when creating the :class:`Textbox` instance.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001487
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001488* The :mod:`datetime` module's :meth:`strftime` methods now support a
1489 ``%f`` format code that expands to the number of microseconds in the
1490 object, zero-padded on
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001491 the left to six places. (Contributed by Skip Montanaro; :issue:`1158`.)
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001492
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001493* The :mod:`decimal` module was updated to version 1.66 of
1494 `the General Decimal Specification <http://www2.hursley.ibm.com/decimal/decarith.html>`__. New features
1495 include some methods for some basic mathematical functions such as
1496 :meth:`exp` and :meth:`log10`::
1497
1498 >>> Decimal(1).exp()
1499 Decimal("2.718281828459045235360287471")
1500 >>> Decimal("2.7182818").ln()
1501 Decimal("0.9999999895305022877376682436")
1502 >>> Decimal(1000).log10()
1503 Decimal("3")
1504
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001505 The :meth:`as_tuple` method of :class:`Decimal` objects now returns a
1506 named tuple with :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
1507
1508 (Implemented by Facundo Batista and Mark Dickinson. Named tuple
1509 support added by Raymond Hettinger.)
1510
1511* The :mod:`difflib` module's :class:`SequenceMatcher` class
1512 now returns named tuples representing matches.
1513 In addition to behaving like tuples, the returned values
1514 also have :attr:`a`, :attr:`b`, and :attr:`size` attributes.
1515 (Contributed by Raymond Hettinger.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001516
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001517* An optional ``timeout`` parameter was added to the
1518 :class:`ftplib.FTP` class constructor as well as the :meth:`connect`
1519 method, specifying a timeout measured in seconds. (Added by Facundo
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00001520 Batista.) Also, the :class:`FTP` class's
1521 :meth:`storbinary` and :meth:`storlines`
1522 now take an optional *callback* parameter that will be called with
1523 each block of data after the data has been sent.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001524 (Contributed by Phil Schwartz; :issue:`1221598`.)
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001525
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001526* The :func:`reduce` built-in function is also available in the
1527 :mod:`functools` module. In Python 3.0, the built-in is dropped and it's
1528 only available from :mod:`functools`; currently there are no plans
1529 to drop the built-in in the 2.x series. (Patched by
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001530 Christian Heimes; :issue:`1739906`.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001531
Georg Brandl8ec7f652007-08-15 14:28:01 +00001532* The :func:`glob.glob` function can now return Unicode filenames if
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001533 a Unicode path was used and Unicode filenames are matched within the
1534 directory. (:issue:`1001604`)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001535
1536* The :mod:`gopherlib` module has been removed.
1537
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001538* A new function in the :mod:`heapq` module: ``merge(iter1, iter2, ...)``
1539 takes any number of iterables that return data *in sorted
1540 order*, and returns a new iterator that returns the contents of all
1541 the iterators, also in sorted order. For example::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001542
1543 heapq.merge([1, 3, 5, 9], [2, 8, 16]) ->
1544 [1, 2, 3, 5, 8, 9, 16]
1545
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001546 Another new function, ``heappushpop(heap, item)``,
1547 pushes *item* onto *heap*, then pops off and returns the smallest item.
1548 This is more efficient than making a call to :func:`heappush` and then
1549 :func:`heappop`.
1550
Georg Brandl8ec7f652007-08-15 14:28:01 +00001551 (Contributed by Raymond Hettinger.)
1552
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001553* An optional ``timeout`` parameter was added to the
1554 :class:`httplib.HTTPConnection` and :class:`HTTPSConnection`
1555 class constructors, specifying a timeout measured in seconds.
1556 (Added by Facundo Batista.)
1557
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001558* Most of the :mod:`inspect` module's functions, such as
1559 :func:`getmoduleinfo` and :func:`getargs`, now return named tuples.
1560 In addition to behaving like tuples, the elements of the return value
1561 can also be accessed as attributes.
1562 (Contributed by Raymond Hettinger.)
1563
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001564 Some new functions in the module include
1565 :func:`isgenerator`, :func:`isgeneratorfunction`,
1566 and :func:`isabstract`.
1567
1568* The :mod:`itertools` module gained several new functions.
1569
1570 ``izip_longest(iter1, iter2, ...[, fillvalue])`` makes tuples from
1571 each of the elements; if some of the iterables are shorter than
1572 others, the missing values are set to *fillvalue*. For example::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001573
1574 itertools.izip_longest([1,2,3], [1,2,3,4,5]) ->
1575 [(1, 1), (2, 2), (3, 3), (None, 4), (None, 5)]
1576
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001577 ``product(iter1, iter2, ..., [repeat=N])`` returns the Cartesian product
1578 of the supplied iterables, a set of tuples containing
1579 every possible combination of the elements returned from each iterable. ::
1580
1581 itertools.product([1,2,3], [4,5,6]) ->
1582 [(1, 4), (1, 5), (1, 6),
1583 (2, 4), (2, 5), (2, 6),
1584 (3, 4), (3, 5), (3, 6)]
1585
1586 The optional *repeat* keyword argument is used for taking the
1587 product of an iterable or a set of iterables with themselves,
1588 repeated *N* times. With a single iterable argument, *N*-tuples
1589 are returned::
1590
1591 itertools.product([1,2], repeat=3)) ->
1592 [(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
1593 (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
1594
1595 With two iterables, *2N*-tuples are returned. ::
1596
1597 itertools(product([1,2], [3,4], repeat=2) ->
1598 [(1, 3, 1, 3), (1, 3, 1, 4), (1, 3, 2, 3), (1, 3, 2, 4),
1599 (1, 4, 1, 3), (1, 4, 1, 4), (1, 4, 2, 3), (1, 4, 2, 4),
1600 (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),
1601 (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]
1602
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001603 ``combinations(iterable, r)`` returns sub-sequences of length *r* from
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001604 the elements of *iterable*. ::
1605
1606 itertools.combinations('123', 2) ->
1607 [('1', '2'), ('1', '3'), ('2', '3')]
1608
1609 itertools.combinations('123', 3) ->
1610 [('1', '2', '3')]
1611
1612 itertools.combinations('1234', 3) ->
1613 [('1', '2', '3'), ('1', '2', '4'), ('1', '3', '4'),
1614 ('2', '3', '4')]
1615
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001616 ``permutations(iter[, r])`` returns all the permutations of length *r* of
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001617 the iterable's elements. If *r* is not specified, it will default to the
1618 number of elements produced by the iterable.
1619
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001620 itertools.permutations([1,2,3,4], 2) ->
1621 [(1, 2), (1, 3), (1, 4),
1622 (2, 1), (2, 3), (2, 4),
1623 (3, 1), (3, 2), (3, 4),
1624 (4, 1), (4, 2), (4, 3)]
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001625
Andrew M. Kuchlingabf8e012008-04-08 21:22:53 +00001626 ``itertools.chain(*iterables)`` is an existing function in
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001627 :mod:`itertools` that gained a new constructor in Python 2.6.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001628 ``itertools.chain.from_iterable(iterable)`` takes a single
1629 iterable that should return other iterables. :func:`chain` will
1630 then return all the elements of the first iterable, then
1631 all the elements of the second, and so on. ::
1632
1633 chain.from_iterable([[1,2,3], [4,5,6]]) ->
1634 [1, 2, 3, 4, 5, 6]
1635
1636 (All contributed by Raymond Hettinger.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001637
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001638* The :mod:`logging` module's :class:`FileHandler` class
1639 and its subclasses :class:`WatchedFileHandler`, :class:`RotatingFileHandler`,
1640 and :class:`TimedRotatingFileHandler` now
1641 have an optional *delay* parameter to its constructor. If *delay*
1642 is true, opening of the log file is deferred until the first
1643 :meth:`emit` call is made. (Contributed by Vinay Sajip.)
1644
Georg Brandl8ec7f652007-08-15 14:28:01 +00001645* The :mod:`macfs` module has been removed. This in turn required the
1646 :func:`macostools.touched` function to be removed because it depended on the
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001647 :mod:`macfs` module. (:issue:`1490190`)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001648
Andrew M. Kuchling2686f4d2008-01-19 19:14:05 +00001649* :class:`mmap` objects now have a :meth:`rfind` method that finds
1650 a substring, beginning at the end of the string and searching
1651 backwards. The :meth:`find` method
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001652 also gained an *end* parameter containing the index at which to stop
Andrew M. Kuchling2686f4d2008-01-19 19:14:05 +00001653 the forward search.
1654 (Contributed by John Lenton.)
1655
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001656* (3.0-warning mode) The :mod:`new` module has been removed from
1657 Python 3.0. Importing it therefore triggers a warning message.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001658
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001659* The :mod:`operator` module gained a
1660 :func:`methodcaller` function that takes a name and an optional
1661 set of arguments, returning a callable that will call
1662 the named function on any arguments passed to it. For example::
1663
1664 >>> # Equivalent to lambda s: s.replace('old', 'new')
1665 >>> replacer = operator.methodcaller('replace', 'old', 'new')
1666 >>> replacer('old wine in old bottles')
1667 'new wine in new bottles'
1668
Georg Brandl27504da2008-03-04 07:25:54 +00001669 (Contributed by Georg Brandl, after a suggestion by Gregory Petrosyan.)
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001670
1671 The :func:`attrgetter` function now accepts dotted names and performs
1672 the corresponding attribute lookups::
1673
1674 >>> inst_name = operator.attrgetter('__class__.__name__')
1675 >>> inst_name('')
1676 'str'
1677 >>> inst_name(help)
1678 '_Helper'
1679
Georg Brandl27504da2008-03-04 07:25:54 +00001680 (Contributed by Georg Brandl, after a suggestion by Barry Warsaw.)
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001681
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001682* New functions in the :mod:`os` module include
1683 ``fchmod(fd, mode)``, ``fchown(fd, uid, gid)``,
1684 and ``lchmod(path, mode)``, on operating systems that support these
1685 functions. :func:`fchmod` and :func:`fchown` let you change the mode
1686 and ownership of an opened file, and :func:`lchmod` changes the mode
1687 of a symlink.
1688
1689 (Contributed by Georg Brandl and Christian Heimes.)
1690
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001691* The :func:`os.walk` function now has a ``followlinks`` parameter. If
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001692 set to True, it will follow symlinks pointing to directories and
1693 visit the directory's contents. For backward compatibility, the
1694 parameter's default value is false. Note that the function can fall
1695 into an infinite recursion if there's a symlink that points to a
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001696 parent directory. (:issue:`1273829`)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001697
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001698* The ``os.environ`` object's :meth:`clear` method will now unset the
1699 environment variables using :func:`os.unsetenv` in addition to clearing
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001700 the object's keys. (Contributed by Martin Horcicka; :issue:`1181`.)
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001701
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001702* In the :mod:`os.path` module, the :func:`splitext` function
1703 has been changed to not split on leading period characters.
1704 This produces better results when operating on Unix's dot-files.
1705 For example, ``os.path.splitext('.ipython')``
1706 now returns ``('.ipython', '')`` instead of ``('', '.ipython')``.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001707 (:issue:`115886`)
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001708
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001709 A new function, :func:`relpath(path, start)` returns a relative path
1710 from the ``start`` path, if it's supplied, or from the current
1711 working directory to the destination ``path``. (Contributed by
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001712 Richard Barran; :issue:`1339796`.)
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001713
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001714 On Windows, :func:`os.path.expandvars` will now expand environment variables
1715 in the form "%var%", and "~user" will be expanded into the
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001716 user's home directory path. (Contributed by Josiah Carlson;
1717 :issue:`957650`.)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001718
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001719* The Python debugger provided by the :mod:`pdb` module
1720 gained a new command: "run" restarts the Python program being debugged,
1721 and can optionally take new command-line arguments for the program.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001722 (Contributed by Rocky Bernstein; :issue:`1393667`.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001723
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001724 The :func:`post_mortem` function, used to enter debugging of a
1725 traceback, will now use the traceback returned by :func:`sys.exc_info`
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001726 if no traceback is supplied. (Contributed by Facundo Batista;
1727 :issue:`1106316`.)
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001728
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001729* The :mod:`pickletools` module now has an :func:`optimize` function
1730 that takes a string containing a pickle and removes some unused
1731 opcodes, returning a shorter pickle that contains the same data structure.
1732 (Contributed by Raymond Hettinger.)
1733
Georg Brandl8ec7f652007-08-15 14:28:01 +00001734* New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags`
1735 are wrappers for the corresponding system calls (where they're available).
1736 Constants for the flag values are defined in the :mod:`stat` module; some
1737 possible values include :const:`UF_IMMUTABLE` to signal the file may not be
1738 changed and :const:`UF_APPEND` to indicate that data can only be appended to the
1739 file. (Contributed by M. Levinson.)
1740
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001741 ``os.closerange(*low*, *high*)`` efficiently closes all file descriptors
1742 from *low* to *high*, ignoring any errors and not including *high* itself.
1743 This function is now used by the :mod:`subprocess` module to make starting
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001744 processes faster. (Contributed by Georg Brandl; :issue:`1663329`.)
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001745
Andrew M. Kuchlinge0a49b62008-01-08 14:30:55 +00001746* The :mod:`pyexpat` module's :class:`Parser` objects now allow setting
1747 their :attr:`buffer_size` attribute to change the size of the buffer
1748 used to hold character data.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001749 (Contributed by Achim Gaedke; :issue:`1137`.)
Andrew M. Kuchlinge0a49b62008-01-08 14:30:55 +00001750
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00001751* The :mod:`Queue` module now provides queue classes that retrieve entries
1752 in different orders. The :class:`PriorityQueue` class stores
1753 queued items in a heap and retrieves them in priority order,
1754 and :class:`LifoQueue` retrieves the most recently added entries first,
1755 meaning that it behaves like a stack.
1756 (Contributed by Raymond Hettinger.)
1757
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001758* The :mod:`random` module's :class:`Random` objects can
1759 now be pickled on a 32-bit system and unpickled on a 64-bit
1760 system, and vice versa. Unfortunately, this change also means
1761 that Python 2.6's :class:`Random` objects can't be unpickled correctly
1762 on earlier versions of Python.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001763 (Contributed by Shawn Ligocki; :issue:`1727780`.)
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001764
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001765 The new ``triangular(low, high, mode)`` function returns random
1766 numbers following a triangular distribution. The returned values
1767 are between *low* and *high*, not including *high* itself, and
1768 with *mode* as the mode, the most frequently occurring value
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +00001769 in the distribution. (Contributed by Wladmir van der Laan and
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001770 Raymond Hettinger; :issue:`1681432`.)
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001771
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001772* Long regular expression searches carried out by the :mod:`re`
1773 module will now check for signals being delivered, so especially
1774 long searches can now be interrupted.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001775 (Contributed by Josh Hoyt and Ralf Schmitt; :issue:`846388`.)
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001776
Georg Brandl8ec7f652007-08-15 14:28:01 +00001777* The :mod:`rgbimg` module has been removed.
1778
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001779* The :mod:`sched` module's :class:`scheduler` instances now
1780 have a read-only :attr:`queue` attribute that returns the
1781 contents of the scheduler's queue, represented as a list of
Georg Brandl225163d2008-03-05 07:10:35 +00001782 named tuples with the fields ``(time, priority, action, argument)``.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001783 (Contributed by Raymond Hettinger; :issue:`1861`.)
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001784
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001785* The :mod:`select` module now has wrapper functions
1786 for the Linux :cfunc:`epoll` and BSD :cfunc:`kqueue` system calls.
1787 Also, a :meth:`modify` method was added to the existing :class:`poll`
1788 objects; ``pollobj.modify(fd, eventmask)`` takes a file descriptor
1789 or file object and an event mask,
1790
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001791 (Contributed by Christian Heimes; :issue:`1657`.)
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00001792
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00001793* The :mod:`sets` module has been deprecated; it's better to
1794 use the built-in :class:`set` and :class:`frozenset` types.
1795
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001796* Integrating signal handling with GUI handling event loops
1797 like those used by Tkinter or GTk+ has long been a problem; most
Georg Brandle1b8e9c2008-02-20 19:12:36 +00001798 software ends up polling, waking up every fraction of a second.
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001799 The :mod:`signal` module can now make this more efficient.
1800 Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor
1801 to be used; when a signal is received, a byte is written to that
1802 file descriptor. There's also a C-level function,
1803 :cfunc:`PySignal_SetWakeupFd`, for setting the descriptor.
1804
1805 Event loops will use this by opening a pipe to create two descriptors,
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +00001806 one for reading and one for writing. The writable descriptor
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001807 will be passed to :func:`set_wakeup_fd`, and the readable descriptor
1808 will be added to the list of descriptors monitored by the event loop via
1809 :cfunc:`select` or :cfunc:`poll`.
1810 On receiving a signal, a byte will be written and the main event loop
1811 will be woken up, without the need to poll.
1812
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001813 (Contributed by Adam Olsen; :issue:`1583`.)
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001814
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001815 The :func:`siginterrupt` function is now available from Python code,
1816 and allows changing whether signals can interrupt system calls or not.
1817 (Contributed by Ralf Schmitt.)
1818
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +00001819 The :func:`setitimer` and :func:`getitimer` functions have also been
1820 added on systems that support these system calls. :func:`setitimer`
1821 allows setting interval timers that will cause a signal to be
1822 delivered to the process after a specified time, measured in
1823 wall-clock time, consumed process time, or combined process+system
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001824 time. (Contributed by Guilherme Polo; :issue:`2240`.)
Andrew M. Kuchlingb2ff8a72008-04-05 03:38:39 +00001825
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001826* The :mod:`smtplib` module now supports SMTP over SSL thanks to the
1827 addition of the :class:`SMTP_SSL` class. This class supports an
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001828 interface identical to the existing :class:`SMTP` class. Both
1829 class constructors also have an optional ``timeout`` parameter
1830 that specifies a timeout for the initial connection attempt, measured in
1831 seconds.
1832
1833 An implementation of the LMTP protocol (:rfc:`2033`) was also added to
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001834 the module. LMTP is used in place of SMTP when transferring e-mail
1835 between agents that don't manage a mail queue.
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001836
1837 (SMTP over SSL contributed by Monty Taylor; timeout parameter
1838 added by Facundo Batista; LMTP implemented by Leif
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001839 Hedstrom; :issue:`957003`.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001840
Gregory P. Smith63bfc1d2008-01-17 07:43:20 +00001841* In the :mod:`smtplib` module, SMTP.starttls() now complies with :rfc:`3207`
1842 and forgets any knowledge obtained from the server not obtained from
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001843 the TLS negotiation itself. (Patch contributed by Bill Fenner;
1844 :issue:`829951`.)
Gregory P. Smith63bfc1d2008-01-17 07:43:20 +00001845
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001846* The :mod:`socket` module now supports TIPC (http://tipc.sf.net),
1847 a high-performance non-IP-based protocol designed for use in clustered
1848 environments. TIPC addresses are 4- or 5-tuples.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001849 (Contributed by Alberto Bertogli; :issue:`1646`.)
Andrew M. Kuchlingf60b6412008-01-19 16:34:09 +00001850
1851* The base classes in the :mod:`SocketServer` module now support
1852 calling a :meth:`handle_timeout` method after a span of inactivity
1853 specified by the server's :attr:`timeout` attribute. (Contributed
Andrew M. Kuchlingf68b5532008-04-09 01:08:32 +00001854 by Michael Pomraning.) The :meth:`serve_forever` method
1855 now takes an optional poll interval measured in seconds,
1856 controlling how often the server will check for a shutdown request.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001857 (Contributed by Pedro Werneck and Jeffrey Yasskin;
1858 :issue:`742598`, :issue:`1193577`.)
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001859
1860* The :mod:`struct` module now supports the C99 :ctype:`_Bool` type,
1861 using the format character ``'?'``.
1862 (Contributed by David Remahl.)
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001863
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001864* A new variable in the :mod:`sys` module,
Andrew M. Kuchling5d8b3792008-01-14 14:48:43 +00001865 :attr:`float_info`, is an object
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001866 containing information about the platform's floating-point support
Andrew M. Kuchling5d8b3792008-01-14 14:48:43 +00001867 derived from the :file:`float.h` file. Attributes of this object
1868 include
1869 :attr:`mant_dig` (number of digits in the mantissa), :attr:`epsilon`
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001870 (smallest difference between 1.0 and the next largest value
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001871 representable), and several others. (Contributed by Christian Heimes;
1872 :issue:`1534`.)
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001873
Andrew M. Kuchling7b1e9172008-01-15 14:38:05 +00001874 Another new variable, :attr:`dont_write_bytecode`, controls whether Python
1875 writes any :file:`.pyc` or :file:`.pyo` files on importing a module.
1876 If this variable is true, the compiled files are not written. The
1877 variable is initially set on start-up by supplying the :option:`-B`
1878 switch to the Python interpreter, or by setting the
1879 :envvar:`PYTHONDONTWRITEBYTECODE` environment variable before
1880 running the interpreter. Python code can subsequently
1881 change the value of this variable to control whether bytecode files
1882 are written or not.
1883 (Contributed by Neal Norwitz and Georg Brandl.)
1884
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001885 Information about the command-line arguments supplied to the Python
1886 interpreter are available as attributes of a ``sys.flags`` named
1887 tuple. For example, the :attr:`verbose` attribute is true if Python
1888 was executed in verbose mode, :attr:`debug` is true in debugging mode, etc.
1889 These attributes are all read-only.
1890 (Contributed by Christian Heimes.)
1891
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001892 It's now possible to determine the current profiler and tracer functions
1893 by calling :func:`sys.getprofile` and :func:`sys.gettrace`.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001894 (Contributed by Georg Brandl; :issue:`1648`.)
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001895
Andrew M. Kuchlingde37a8c2007-09-18 01:36:16 +00001896* The :mod:`tarfile` module now supports POSIX.1-2001 (pax) and
1897 POSIX.1-1988 (ustar) format tarfiles, in addition to the GNU tar
1898 format that was already supported. The default format
1899 is GNU tar; specify the ``format`` parameter to open a file
1900 using a different format::
1901
1902 tar = tarfile.open("output.tar", "w", format=tarfile.PAX_FORMAT)
1903
1904 The new ``errors`` parameter lets you specify an error handling
1905 scheme for character conversions: the three standard ways Python can
1906 handle errors ``'strict'``, ``'ignore'``, ``'replace'`` , or the
1907 special value ``'utf-8'``, which replaces bad characters with their
1908 UTF-8 representation. Character conversions occur because the PAX
1909 format supports Unicode filenames, defaulting to UTF-8 encoding.
1910
1911 The :meth:`TarFile.add` method now accepts a ``exclude`` argument that's
1912 a function that can be used to exclude certain filenames from
1913 an archive.
1914 The function must take a filename and return true if the file
1915 should be excluded or false if it should be archived.
1916 The function is applied to both the name initially passed to :meth:`add`
1917 and to the names of files in recursively-added directories.
1918
1919 (All changes contributed by Lars Gustäbel).
1920
1921* An optional ``timeout`` parameter was added to the
1922 :class:`telnetlib.Telnet` class constructor, specifying a timeout
1923 measured in seconds. (Added by Facundo Batista.)
1924
1925* The :class:`tempfile.NamedTemporaryFile` class usually deletes
1926 the temporary file it created when the file is closed. This
1927 behaviour can now be changed by passing ``delete=False`` to the
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001928 constructor. (Contributed by Damien Miller; :issue:`1537850`.)
Andrew M. Kuchlingde37a8c2007-09-18 01:36:16 +00001929
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001930 A new class, :class:`SpooledTemporaryFile`, behaves like
1931 a temporary file but stores its data in memory until a maximum size is
1932 exceeded. On reaching that limit, the contents will be written to
1933 an on-disk temporary file. (Contributed by Dustin J. Mitchell.)
1934
1935 The :class:`NamedTemporaryFile` and :class:`SpooledTemporaryFile` classes
1936 both work as context managers, so you can write
1937 ``with tempfile.NamedTemporaryFile() as tmp: ...``.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001938 (Contributed by Alexander Belopolsky; :issue:`2021`.)
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001939
Andrew M. Kuchlingde37a8c2007-09-18 01:36:16 +00001940* The :mod:`test.test_support` module now contains a
1941 :func:`EnvironmentVarGuard`
1942 context manager that supports temporarily changing environment variables and
1943 automatically restores them to their old values.
1944
1945 Another context manager, :class:`TransientResource`, can surround calls
1946 to resources that may or may not be available; it will catch and
1947 ignore a specified list of exceptions. For example,
1948 a network test may ignore certain failures when connecting to an
1949 external web site::
1950
1951 with test_support.TransientResource(IOError, errno=errno.ETIMEDOUT):
1952 f = urllib.urlopen('https://sf.net')
1953 ...
1954
1955 (Contributed by Brett Cannon.)
1956
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001957* The :mod:`textwrap` module can now preserve existing whitespace
1958 at the beginnings and ends of the newly-created lines
1959 by specifying ``drop_whitespace=False``
1960 as an argument::
1961
1962 >>> S = """This sentence has a bunch of extra whitespace."""
1963 >>> print textwrap.fill(S, width=15)
1964 This sentence
1965 has a bunch
1966 of extra
1967 whitespace.
1968 >>> print textwrap.fill(S, drop_whitespace=False, width=15)
1969 This sentence
1970 has a bunch
1971 of extra
1972 whitespace.
1973 >>>
1974
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001975 (Contributed by Dwayne Bailey; :issue:`1581073`.)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001976
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001977* The :mod:`timeit` module now accepts callables as well as strings
1978 for the statement being timed and for the setup code.
1979 Two convenience functions were added for creating
1980 :class:`Timer` instances:
1981 ``repeat(stmt, setup, time, repeat, number)`` and
1982 ``timeit(stmt, setup, time, number)`` create an instance and call
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00001983 the corresponding method. (Contributed by Erik Demaine;
1984 :issue:`1533909`.)
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001985
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001986* An optional ``timeout`` parameter was added to the
1987 :func:`urllib.urlopen` function and the
1988 :class:`urllib.ftpwrapper` class constructor, as well as the
1989 :func:`urllib2.urlopen` function. The parameter specifies a timeout
1990 measured in seconds. For example::
1991
1992 >>> u = urllib2.urlopen("http://slow.example.com", timeout=3)
1993 Traceback (most recent call last):
1994 ...
1995 urllib2.URLError: <urlopen error timed out>
1996 >>>
1997
1998 (Added by Facundo Batista.)
1999
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00002000* The XML-RPC classes :class:`SimpleXMLRPCServer` and :class:`DocXMLRPCServer`
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00002001 classes can now be prevented from immediately opening and binding to
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00002002 their socket by passing True as the ``bind_and_activate``
2003 constructor parameter. This can be used to modify the instance's
2004 :attr:`allow_reuse_address` attribute before calling the
2005 :meth:`server_bind` and :meth:`server_activate` methods to
2006 open the socket and begin listening for connections.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002007 (Contributed by Peter Parente; :issue:`1599845`.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00002008
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00002009 :class:`SimpleXMLRPCServer` also has a :attr:`_send_traceback_header`
2010 attribute; if true, the exception and formatted traceback are returned
2011 as HTTP headers "X-Exception" and "X-Traceback". This feature is
2012 for debugging purposes only and should not be used on production servers
2013 because the tracebacks could possibly reveal passwords or other sensitive
2014 information. (Contributed by Alan McIntyre as part of his
2015 project for Google's Summer of Code 2007.)
2016
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002017* The :mod:`zipfile` module's :class:`ZipFile` class now has
2018 :meth:`extract` and :meth:`extractall` methods that will unpack
2019 a single file or all the files in the archive to the current directory, or
2020 to a specified directory::
2021
2022 z = zipfile.ZipFile('python-251.zip')
2023
2024 # Unpack a single file, writing it relative to the /tmp directory.
2025 z.extract('Python/sysmodule.c', '/tmp')
2026
2027 # Unpack all the files in the archive.
2028 z.extractall()
2029
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002030 (Contributed by Alan McIntyre; :issue:`467924`.)
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002031
Georg Brandlb19be572007-12-29 10:57:00 +00002032.. ======================================================================
2033.. whole new modules get described in subsections here
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00002034
2035Improved SSL Support
Andrew M. Kuchling27a44982007-10-20 19:39:35 +00002036--------------------------------------------------
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00002037
2038Bill Janssen made extensive improvements to Python 2.6's support for
2039SSL.
2040
2041XXX use ssl.sslsocket - subclass of socket.socket.
2042
2043XXX Can specify if certificate is required, and obtain certificate info
2044by calling getpeercert method.
2045
2046XXX sslwrap() behaves like socket.ssl
2047
2048XXX Certain features require the OpenSSL package to be installed, notably
2049 the 'openssl' binary.
2050
2051.. seealso::
2052
2053 SSL module documentation.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002054
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00002055
2056.. ======================================================================
2057
2058plistlib: A Property-List Parser
2059--------------------------------------------------
2060
2061A commonly-used format on MacOS X is the ``.plist`` format,
2062which stores basic data types (numbers, strings, lists,
2063and dictionaries) and serializes them into an XML-based format.
2064(It's a lot like the XML-RPC serialization of data types.)
2065
2066Despite being primarily used on MacOS X, the format
2067has nothing Mac-specific about it and the Python implementation works
2068on any platform that Python supports, so the :mod:`plistlib` module
2069has been promoted to the standard library.
2070
2071Using the module is simple::
2072
2073 import sys
2074 import plistlib
2075 import datetime
2076
2077 # Create data structure
2078 data_struct = dict(lastAccessed=datetime.datetime.now(),
2079 version=1,
2080 categories=('Personal', 'Shared', 'Private'))
2081
2082 # Create string containing XML.
2083 plist_str = plistlib.writePlistToString(data_struct)
2084 new_struct = plistlib.readPlistFromString(plist_str)
2085 print data_struct
2086 print new_struct
2087
2088 # Write data structure to a file and read it back.
2089 plistlib.writePlist(data_struct, '/tmp/customizations.plist')
2090 new_struct = plistlib.readPlist('/tmp/customizations.plist')
2091
2092 # read/writePlist accepts file-like objects as well as paths.
2093 plistlib.writePlist(data_struct, sys.stdout)
2094
2095
Georg Brandlb19be572007-12-29 10:57:00 +00002096.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00002097
2098
2099Build and C API Changes
2100=======================
2101
2102Changes to Python's build process and to the C API include:
2103
Andrew M. Kuchlingf7b462f2007-11-23 13:37:39 +00002104* Python 2.6 can be built with Microsoft Visual Studio 2008.
2105 See the :file:`PCbuild9` directory for the build files.
2106 (Implemented by Christian Heimes.)
2107
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00002108* Python now can only be compiled with C89 compilers (after 19
2109 years!). This means that the Python source tree can now drop its
2110 own implementations of :cfunc:`memmove` and :cfunc:`strerror`, which
2111 are in the C89 standard library.
2112
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00002113* The BerkeleyDB module now has a C API object, available as
2114 ``bsddb.db.api``. This object can be used by other C extensions
2115 that wish to use the :mod:`bsddb` module for their own purposes.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002116 (Contributed by Duncan Grisby; :issue:`1551895`.)
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00002117
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002118* The new buffer interface, previously described in
2119 `the PEP 3118 section <#pep-3118-revised-buffer-protocol>`__,
2120 adds :cfunc:`PyObject_GetBuffer` and :cfunc:`PyObject_ReleaseBuffer`,
2121 as well as a few other functions.
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00002122
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00002123* Python's use of the C stdio library is now thread-safe, or at least
2124 as thread-safe as the underlying library is. A long-standing potential
2125 bug occurred if one thread closed a file object while another thread
2126 was reading from or writing to the object. In 2.6 file objects
2127 have a reference count, manipulated by the
2128 :cfunc:`PyFile_IncUseCount` and :cfunc:`PyFile_DecUseCount`
2129 functions. File objects can't be closed unless the reference count
2130 is zero. :cfunc:`PyFile_IncUseCount` should be called while the GIL
2131 is still held, before carrying out an I/O operation using the
2132 ``FILE *`` pointer, and :cfunc:`PyFile_DecUseCount` should be called
2133 immediately after the GIL is re-acquired.
2134 (Contributed by Antoine Pitrou and Gregory P. Smith.)
2135
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002136* Importing modules simultaneously in two different threads no longer
2137 deadlocks; it will now raise an :exc:`ImportError`. A new API
2138 function, :cfunc:`PyImport_ImportModuleNoBlock`, will look for a
2139 module in ``sys.modules`` first, then try to import it after
2140 acquiring an import lock. If the import lock is held by another
2141 thread, the :exc:`ImportError` is raised.
2142 (Contributed by Christian Heimes.)
2143
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00002144* Several functions return information about the platform's
2145 floating-point support. :cfunc:`PyFloat_GetMax` returns
2146 the maximum representable floating point value,
2147 and :cfunc:`PyFloat_GetMin` returns the minimum
2148 positive value. :cfunc:`PyFloat_GetInfo` returns a dictionary
2149 containing more information from the :file:`float.h` file, such as
2150 ``"mant_dig"`` (number of digits in the mantissa), ``"epsilon"``
2151 (smallest difference between 1.0 and the next largest value
2152 representable), and several others.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002153 (Contributed by Christian Heimes; :issue:`1534`.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00002154
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002155* Python's C API now includes two functions for case-insensitive string
Georg Brandl907a7202008-02-22 12:31:45 +00002156 comparisons, ``PyOS_stricmp(char*, char*)``
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002157 and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002158 (Contributed by Christian Heimes; :issue:`1635`.)
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002159
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00002160* Many C extensions define their own little macro for adding
2161 integers and strings to the module's dictionary in the
2162 ``init*`` function. Python 2.6 finally defines standard macros
2163 for adding values to a module, :cmacro:`PyModule_AddStringMacro`
2164 and :cmacro:`PyModule_AddIntMacro()`. (Contributed by
2165 Christian Heimes.)
2166
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00002167* Some macros were renamed in both 3.0 and 2.6 to make it clearer that
2168 they are macros,
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00002169 not functions. :cmacro:`Py_Size()` became :cmacro:`Py_SIZE()`,
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002170 :cmacro:`Py_Type()` became :cmacro:`Py_TYPE()`, and
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00002171 :cmacro:`Py_Refcnt()` became :cmacro:`Py_REFCNT()`.
2172 The mixed-case macros are still available
2173 in Python 2.6 for backward compatibility.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002174 (:issue:`1629`)
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002175
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00002176* Distutils now places C extensions it builds in a
2177 different directory when running on a debug version of Python.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002178 (Contributed by Collin Winter; :issue:`1530959`.)
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00002179
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00002180* Several basic data types, such as integers and strings, maintain
2181 internal free lists of objects that can be re-used. The data
2182 structures for these free lists now follow a naming convention: the
2183 variable is always named ``free_list``, the counter is always named
2184 ``numfree``, and a macro :cmacro:`Py<typename>_MAXFREELIST` is
2185 always defined.
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00002186
Andrew M. Kuchlingf68b5532008-04-09 01:08:32 +00002187* A new Makefile target, "make check", prepares the Python source tree
2188 for making a patch: it fixes trailing whitespace in all modified
2189 ``.py`` files, checks whether the documentation has been changed,
2190 and reports whether the :file:`Misc/ACKS` and :file:`Misc/NEWS` files
2191 have been updated.
2192 (Contributed by Brett Cannon.)
2193
Georg Brandlb19be572007-12-29 10:57:00 +00002194.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00002195
2196
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002197Port-Specific Changes: Windows
2198-----------------------------------
2199
2200* The :mod:`msvcrt` module now supports
2201 both the normal and wide char variants of the console I/O
2202 API. The :func:`getwch` function reads a keypress and returns a Unicode
2203 value, as does the :func:`getwche` function. The :func:`putwch` function
2204 takes a Unicode character and writes it to the console.
Christian Heimesff6cc6b2008-01-17 23:01:44 +00002205 (Contributed by Christian Heimes.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00002206
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +00002207* :func:`os.path.expandvars` will now expand environment variables
2208 in the form "%var%", and "~user" will be expanded into the
2209 user's home directory path. (Contributed by Josiah Carlson.)
2210
2211* The :mod:`socket` module's socket objects now have an
2212 :meth:`ioctl` method that provides a limited interface to the
2213 :cfunc:`WSAIoctl` system interface.
2214
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002215* The :mod:`_winreg` module now has a function,
2216 :func:`ExpandEnvironmentStrings`,
2217 that expands environment variable references such as ``%NAME%``
2218 in an input string. The handle objects provided by this
2219 module now support the context protocol, so they can be used
Christian Heimesff6cc6b2008-01-17 23:01:44 +00002220 in :keyword:`with` statements. (Contributed by Christian Heimes.)
2221
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00002222 :mod:`_winreg` also has better support for x64 systems,
2223 exposing the :func:`DisableReflectionKey`, :func:`EnableReflectionKey`,
2224 and :func:`QueryReflectionKey` functions, which enable and disable
2225 registry reflection for 32-bit processes running on 64-bit systems.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002226 (:issue:`1753245`)
Andrew M. Kuchling34be7ce2008-04-07 23:57:07 +00002227
Christian Heimesff6cc6b2008-01-17 23:01:44 +00002228* The new default compiler on Windows is Visual Studio 2008 (VS 9.0). The
2229 build directories for Visual Studio 2003 (VS7.1) and 2005 (VS8.0)
2230 were moved into the PC/ directory. The new PCbuild directory supports
2231 cross compilation for X64, debug builds and Profile Guided Optimization
2232 (PGO). PGO builds are roughly 10% faster than normal builds.
2233 (Contributed by Christian Heimes with help from Amaury Forgeot d'Arc and
2234 Martin von Loewis.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00002235
Georg Brandlb19be572007-12-29 10:57:00 +00002236.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00002237
2238
2239.. _section-other:
2240
2241Other Changes and Fixes
2242=======================
2243
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002244As usual, there were a bunch of other improvements and bugfixes
2245scattered throughout the source tree. A search through the change
2246logs finds there were XXX patches applied and YYY bugs fixed between
2247Python 2.5 and 2.6. Both figures are likely to be underestimates.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002248
2249Some of the more notable changes are:
2250
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002251* It's now possible to prevent Python from writing any :file:`.pyc`
2252 or :file:`.pyo` files by either supplying the :option:`-B` switch
2253 or setting the :envvar:`PYTHONDONTWRITEBYTECODE` environment variable
2254 to any non-empty string when running the Python interpreter. These
Georg Brandlca9c6e42008-01-15 06:58:15 +00002255 are also used to set the :data:`sys.dont_write_bytecode` attribute;
2256 Python code can change this variable to control whether bytecode
2257 files are subsequently written.
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002258 (Contributed by Neal Norwitz and Georg Brandl.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00002259
Georg Brandlb19be572007-12-29 10:57:00 +00002260.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00002261
2262
2263Porting to Python 2.6
2264=====================
2265
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00002266This section lists previously described changes and other bugfixes
2267that may require changes to your code:
Georg Brandl8ec7f652007-08-15 14:28:01 +00002268
Andrew M. Kuchling73835bd2008-01-04 18:24:41 +00002269* The :meth:`__init__` method of :class:`collections.deque`
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002270 now clears any existing contents of the deque
2271 before adding elements from the iterable. This change makes the
2272 behavior match that of ``list.__init__()``.
2273
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002274* The :class:`Decimal` constructor now accepts leading and trailing
2275 whitespace when passed a string. Previously it would raise an
2276 :exc:`InvalidOperation` exception. On the other hand, the
2277 :meth:`create_decimal` method of :class:`Context` objects now
2278 explicitly disallows extra whitespace, raising a
2279 :exc:`ConversionSyntax` exception.
2280
2281* Due to an implementation accident, if you passed a file path to
2282 the built-in :func:`__import__` function, it would actually import
2283 the specified file. This was never intended to work, however, and
2284 the implementation now explicitly checks for this case and raises
2285 an :exc:`ImportError`.
2286
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002287* C API: the :cfunc:`PyImport_Import` and :cfunc:`PyImport_ImportModule`
2288 functions now default to absolute imports, not relative imports.
2289 This will affect C extensions that import other modules.
2290
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00002291* The :mod:`socket` module exception :exc:`socket.error` now inherits
2292 from :exc:`IOError`. Previously it wasn't a subclass of
2293 :exc:`StandardError` but now it is, through :exc:`IOError`.
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002294 (Implemented by Gregory P. Smith; :issue:`1706815`.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00002295
Andrew M. Kuchling085f75a2008-02-23 16:23:05 +00002296* The :mod:`xmlrpclib` module no longer automatically converts
2297 :class:`datetime.date` and :class:`datetime.time` to the
2298 :class:`xmlrpclib.DateTime` type; the conversion semantics were
2299 not necessarily correct for all applications. Code using
2300 :mod:`xmlrpclib` should convert :class:`date` and :class:`time`
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002301 instances. (:issue:`1330538`)
Andrew M. Kuchling085f75a2008-02-23 16:23:05 +00002302
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00002303* (3.0-warning mode) The :class:`Exception` class now warns
2304 when accessed using slicing or index access; having
2305 :class:`Exception` behave like a tuple is being phased out.
2306
2307* (3.0-warning mode) inequality comparisons between two dictionaries
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00002308 or two objects that don't implement comparison methods are reported
2309 as warnings. ``dict1 == dict2`` still works, but ``dict1 < dict2``
2310 is being phased out.
2311
2312 Comparisons between cells, which are an implementation detail of Python's
2313 scoping rules, also cause warnings because such comparisons are forbidden
2314 entirely in 3.0.
2315
Georg Brandlb19be572007-12-29 10:57:00 +00002316.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00002317
2318
2319.. _acks:
2320
2321Acknowledgements
2322================
2323
2324The author would like to thank the following people for offering suggestions,
Andrew M. Kuchling17f84292008-04-10 21:29:01 +00002325corrections and assistance with various drafts of this article:
2326Georg Brandl, Jim Jewett.
Georg Brandl8ec7f652007-08-15 14:28:01 +00002327