blob: bc1487e964c39993adc5ecd6f6a2ae39db377250 [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
43 * It's helpful to add the bug/patch number as a comment:
44
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +000045 .. Patch 12345
Georg Brandlb19be572007-12-29 10:57:00 +000046 XXX Describe the transmogrify() function added to the socket
47 module.
48 (Contributed by P.Y. Developer.)
49
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +000050 This saves the maintainer the effort of going through the SVN logs
Georg Brandlb19be572007-12-29 10:57:00 +000051 when researching a change.
Georg Brandl8ec7f652007-08-15 14:28:01 +000052
53This article explains the new features in Python 2.6. No release date for
54Python 2.6 has been set; it will probably be released in mid 2008.
55
56This article doesn't attempt to provide a complete specification of the new
57features, but instead provides a convenient overview. For full details, you
58should refer to the documentation for Python 2.6. If you want to understand the
59complete implementation and design rationale, refer to the PEP for a particular
60new feature.
61
Georg Brandlb19be572007-12-29 10:57:00 +000062.. Compare with previous release in 2 - 3 sentences here.
63 add hyperlink when the documentation becomes available online.
Georg Brandl8ec7f652007-08-15 14:28:01 +000064
Georg Brandlb19be572007-12-29 10:57:00 +000065.. ========================================================================
66.. Large, PEP-level features and changes should be described here.
67.. Should there be a new section here for 3k migration?
68.. Or perhaps a more general section describing module changes/deprecation?
69.. ========================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +000070
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +000071Python 3.0
72================
73
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +000074The development cycle for Python 2.6 also saw the release of the first
75alphas of Python 3.0, and the development of 3.0 has influenced
76a number of features in 2.6.
77
78Python 3.0 is a far-ranging redesign of Python that breaks
79compatibility with the 2.x series. This means that existing Python
80code will need a certain amount of conversion in order to run on
81Python 3.0. However, not all the changes in 3.0 necessarily break
82compatibility. In cases where new features won't cause existing code
83to break, they've been backported to 2.6 and are described in this
84document in the appropriate place. Some of the 3.0-derived features
85are:
86
87* A :meth:`__complex__` method for converting objects to a complex number.
88* Alternate syntax for catching exceptions: ``except TypeError as exc``.
89* The addition of :func:`functools.reduce` as a synonym for the built-in
90 :func:`reduce` function.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +000091
92A new command-line switch, :option:`-3`, enables warnings
93about features that will be removed in Python 3.0. You can run code
94with this switch to see how much work will be necessary to port
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +000095code to 3.0. The value of this switch is available
Georg Brandld5b635f2008-03-25 08:29:14 +000096to Python code as the boolean variable :data:`sys.py3kwarning`,
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +000097and to C extension code as :cdata:`Py_Py3kWarningFlag`.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +000098
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +000099Python 3.0 adds several new built-in functions and change the
100semantics of some existing built-ins. Entirely new functions such as
101:func:`bin` have simply been added to Python 2.6, but existing
102built-ins haven't been changed; instead, the :mod:`future_builtins`
103module has versions with the new 3.0 semantics. Code written to be
104compatible with 3.0 can do ``from future_builtins import hex, map``
105as necessary.
106
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000107.. seealso::
108
109 The 3xxx series of PEPs, which describes the development process for
110 Python 3.0 and various features that have been accepted, rejected,
111 or are still under consideration.
112
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000113
114Development Changes
115==================================================
116
117While 2.6 was being developed, the Python development process
118underwent two significant changes: the developer group
119switched from SourceForge's issue tracker to a customized
120Roundup installation, and the documentation was converted from
121LaTeX to reStructured Text.
122
123
124New Issue Tracker: Roundup
125--------------------------------------------------
126
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000127For a long time, the Python developers have been growing increasingly
128annoyed by SourceForge's bug tracker. SourceForge's hosted solution
129doesn't permit much customization; for example, it wasn't possible to
130customize the life cycle of issues.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000131
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000132The infrastructure committee of the Python Software Foundation
133therefore posted a call for issue trackers, asking volunteers to set
134up different products and import some of the bugs and patches from
135SourceForge. Four different trackers were examined: Atlassian's `Jira
136<XXX>`__, `Launchpad <http://www.launchpad.net>`__, ` `Roundup
137<XXX>`__, and Trac <XXX>`__. The committee eventually settled on Jira
138and Roundup as the two candidates. Jira is a commercial product that
139offers a no-cost hosted instance to free-software projects; Roundup
140is an open-source project that requires volunteers
141to administer it and a server to host it.
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000142
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000143After posting a call for volunteers, a new Roundup installation was
144set up at http://bugs.python.org. One installation of Roundup can
145host multiple trackers, and this server now also hosts issue trackers
146for Jython and for the Python web site. It will surely find
147other uses in the future.
148
149Hosting is kindly provided by `Upfront <XXX>`__ of XXX. Martin von
150Loewis put a lot of effort into importing existing bugs and patches
151from SourceForge; his scripts for this import are at XXX.
152
153.. seealso::
154
155 XXX Roundup web site.
156
157 bugs.python.org
158
159 bugs.jython.org
160
161 Python web site bug tracker
162
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000163
164New Documentation Format: ReStructured Text
165--------------------------------------------------
166
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000167Since the Python project's inception around 1989, the documentation
168had been written using LaTeX. At that time, most documentation was
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000169printed out for later study, not viewed online. LaTeX was widely used
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000170because it provided attractive printed output while remaining
171straightforward to write, once the basic rules of the markup have been
172learned.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000173
174LaTeX is still used today for writing technical publications destined
175for printing, but the landscape for programming tools has shifted. We
176no longer print out reams of documentation; instead, we browse through
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000177it online and HTML has become the most important format to support.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000178Unfortunately, converting LaTeX to HTML is fairly complicated, and
179Fred L. Drake Jr., the Python documentation editor for many years,
180spent a lot of time wrestling the conversion process into shape.
181Occasionally people would suggest converting the documentation into
182SGML or, later, XML, but performing a good conversion is a major task
183and no one pursued the task to completion.
184
185During the 2.6 development cycle, Georg Brandl put a substantial
186effort into building a new toolchain called Sphinx
187for processing the documentation.
188The input format is reStructured Text,
189a markup commonly used in the Python community that supports
190custom extensions and directives. Sphinx concentrates
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +0000191on HTML output, producing attractively styled
192and modern HTML, but printed output is still supported through
193conversion to LaTeX as an output format.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000194
195.. seealso::
196
197 `Docutils <http://docutils.sf.net>`__: The fundamental
198 reStructured Text parser and toolset.
199
Georg Brandlb19be572007-12-29 10:57:00 +0000200 :ref:`documenting-index`: Describes how to write for
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000201 Python's documentation.
202
203
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000204PEP 343: The 'with' statement
205=============================
206
207The previous version, Python 2.5, added the ':keyword:`with`'
208statement an optional feature, to be enabled by a ``from __future__
Andrew M. Kuchling6e751f42007-12-03 21:28:41 +0000209import with_statement`` directive. In 2.6 the statement no longer needs to
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000210be specially enabled; this means that :keyword:`with` is now always a
211keyword. The rest of this section is a copy of the corresponding
212section from "What's New in Python 2.5" document; if you read
213it back when Python 2.5 came out, you can skip the rest of this
214section.
215
216The ':keyword:`with`' statement clarifies code that previously would use
217``try...finally`` blocks to ensure that clean-up code is executed. In this
218section, I'll discuss the statement as it will commonly be used. In the next
219section, I'll examine the implementation details and show how to write objects
220for use with this statement.
221
222The ':keyword:`with`' statement is a new control-flow structure whose basic
223structure is::
224
225 with expression [as variable]:
226 with-block
227
228The expression is evaluated, and it should result in an object that supports the
229context management protocol (that is, has :meth:`__enter__` and :meth:`__exit__`
230methods.
231
232The object's :meth:`__enter__` is called before *with-block* is executed and
233therefore can run set-up code. It also may return a value that is bound to the
234name *variable*, if given. (Note carefully that *variable* is *not* assigned
235the result of *expression*.)
236
237After execution of the *with-block* is finished, the object's :meth:`__exit__`
238method is called, even if the block raised an exception, and can therefore run
239clean-up code.
240
241Some standard Python objects now support the context management protocol and can
242be used with the ':keyword:`with`' statement. File objects are one example::
243
244 with open('/etc/passwd', 'r') as f:
245 for line in f:
246 print line
247 ... more processing code ...
248
249After this statement has executed, the file object in *f* will have been
250automatically closed, even if the :keyword:`for` loop raised an exception part-
251way through the block.
252
253.. note::
254
255 In this case, *f* is the same object created by :func:`open`, because
256 :meth:`file.__enter__` returns *self*.
257
258The :mod:`threading` module's locks and condition variables also support the
259':keyword:`with`' statement::
260
261 lock = threading.Lock()
262 with lock:
263 # Critical section of code
264 ...
265
266The lock is acquired before the block is executed and always released once the
267block is complete.
268
269The new :func:`localcontext` function in the :mod:`decimal` module makes it easy
270to save and restore the current decimal context, which encapsulates the desired
271precision and rounding characteristics for computations::
272
273 from decimal import Decimal, Context, localcontext
274
275 # Displays with default precision of 28 digits
276 v = Decimal('578')
277 print v.sqrt()
278
279 with localcontext(Context(prec=16)):
280 # All code in this block uses a precision of 16 digits.
281 # The original context is restored on exiting the block.
282 print v.sqrt()
283
284
285.. _new-26-context-managers:
286
287Writing Context Managers
288------------------------
289
290Under the hood, the ':keyword:`with`' statement is fairly complicated. Most
291people will only use ':keyword:`with`' in company with existing objects and
292don't need to know these details, so you can skip the rest of this section if
293you like. Authors of new objects will need to understand the details of the
294underlying implementation and should keep reading.
295
296A high-level explanation of the context management protocol is:
297
298* The expression is evaluated and should result in an object called a "context
299 manager". The context manager must have :meth:`__enter__` and :meth:`__exit__`
300 methods.
301
302* The context manager's :meth:`__enter__` method is called. The value returned
Georg Brandld41b8dc2007-12-16 23:15:07 +0000303 is assigned to *VAR*. If no ``as VAR`` clause is present, the value is simply
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000304 discarded.
305
306* The code in *BLOCK* is executed.
307
308* If *BLOCK* raises an exception, the :meth:`__exit__(type, value, traceback)`
309 is called with the exception details, the same values returned by
310 :func:`sys.exc_info`. The method's return value controls whether the exception
311 is re-raised: any false value re-raises the exception, and ``True`` will result
312 in suppressing it. You'll only rarely want to suppress the exception, because
313 if you do the author of the code containing the ':keyword:`with`' statement will
314 never realize anything went wrong.
315
316* If *BLOCK* didn't raise an exception, the :meth:`__exit__` method is still
317 called, but *type*, *value*, and *traceback* are all ``None``.
318
319Let's think through an example. I won't present detailed code but will only
320sketch the methods necessary for a database that supports transactions.
321
322(For people unfamiliar with database terminology: a set of changes to the
323database are grouped into a transaction. Transactions can be either committed,
324meaning that all the changes are written into the database, or rolled back,
325meaning that the changes are all discarded and the database is unchanged. See
326any database textbook for more information.)
327
328Let's assume there's an object representing a database connection. Our goal will
329be to let the user write code like this::
330
331 db_connection = DatabaseConnection()
332 with db_connection as cursor:
333 cursor.execute('insert into ...')
334 cursor.execute('delete from ...')
335 # ... more operations ...
336
337The transaction should be committed if the code in the block runs flawlessly or
338rolled back if there's an exception. Here's the basic interface for
339:class:`DatabaseConnection` that I'll assume::
340
341 class DatabaseConnection:
342 # Database interface
Georg Brandl9f72d232007-12-16 23:13:29 +0000343 def cursor(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000344 "Returns a cursor object and starts a new transaction"
Georg Brandl9f72d232007-12-16 23:13:29 +0000345 def commit(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000346 "Commits current transaction"
Georg Brandl9f72d232007-12-16 23:13:29 +0000347 def rollback(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000348 "Rolls back current transaction"
349
350The :meth:`__enter__` method is pretty easy, having only to start a new
351transaction. For this application the resulting cursor object would be a useful
352result, so the method will return it. The user can then add ``as cursor`` to
353their ':keyword:`with`' statement to bind the cursor to a variable name. ::
354
355 class DatabaseConnection:
356 ...
Georg Brandl9f72d232007-12-16 23:13:29 +0000357 def __enter__(self):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000358 # Code to start a new transaction
359 cursor = self.cursor()
360 return cursor
361
362The :meth:`__exit__` method is the most complicated because it's where most of
363the work has to be done. The method has to check if an exception occurred. If
364there was no exception, the transaction is committed. The transaction is rolled
365back if there was an exception.
366
367In the code below, execution will just fall off the end of the function,
368returning the default value of ``None``. ``None`` is false, so the exception
369will be re-raised automatically. If you wished, you could be more explicit and
370add a :keyword:`return` statement at the marked location. ::
371
372 class DatabaseConnection:
373 ...
Georg Brandl9f72d232007-12-16 23:13:29 +0000374 def __exit__(self, type, value, tb):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000375 if tb is None:
376 # No exception, so commit
377 self.commit()
378 else:
379 # Exception occurred, so rollback.
380 self.rollback()
381 # return False
382
383
384.. _module-contextlib:
385
386The contextlib module
387---------------------
388
389The new :mod:`contextlib` module provides some functions and a decorator that
390are useful for writing objects for use with the ':keyword:`with`' statement.
391
392The decorator is called :func:`contextmanager`, and lets you write a single
393generator function instead of defining a new class. The generator should yield
394exactly one value. The code up to the :keyword:`yield` will be executed as the
395:meth:`__enter__` method, and the value yielded will be the method's return
396value that will get bound to the variable in the ':keyword:`with`' statement's
397:keyword:`as` clause, if any. The code after the :keyword:`yield` will be
398executed in the :meth:`__exit__` method. Any exception raised in the block will
399be raised by the :keyword:`yield` statement.
400
401Our database example from the previous section could be written using this
402decorator as::
403
404 from contextlib import contextmanager
405
406 @contextmanager
Georg Brandl9f72d232007-12-16 23:13:29 +0000407 def db_transaction(connection):
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000408 cursor = connection.cursor()
409 try:
410 yield cursor
411 except:
412 connection.rollback()
413 raise
414 else:
415 connection.commit()
416
417 db = DatabaseConnection()
418 with db_transaction(db) as cursor:
419 ...
420
421The :mod:`contextlib` module also has a :func:`nested(mgr1, mgr2, ...)` function
422that combines a number of context managers so you don't need to write nested
423':keyword:`with`' statements. In this example, the single ':keyword:`with`'
424statement both starts a database transaction and acquires a thread lock::
425
426 lock = threading.Lock()
427 with nested (db_transaction(db), lock) as (cursor, locked):
428 ...
429
430Finally, the :func:`closing(object)` function returns *object* so that it can be
431bound to a variable, and calls ``object.close`` at the end of the block. ::
432
433 import urllib, sys
434 from contextlib import closing
435
436 with closing(urllib.urlopen('http://www.yahoo.com')) as f:
437 for line in f:
438 sys.stdout.write(line)
439
440
441.. seealso::
442
443 :pep:`343` - The "with" statement
444 PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland,
445 Guido van Rossum, and Neal Norwitz. The PEP shows the code generated for a
446 ':keyword:`with`' statement, which can be helpful in learning how the statement
447 works.
448
449 The documentation for the :mod:`contextlib` module.
450
Georg Brandlb19be572007-12-29 10:57:00 +0000451.. ======================================================================
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000452
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000453.. _pep-0366:
454
455PEP 366: Explicit Relative Imports From a Main Module
456============================================================
457
458Python's :option:`-m` switch allows running a module as a script.
459When you ran a module that was located inside a package, relative
460imports didn't work correctly.
461
462The fix in Python 2.6 adds a :attr:`__package__` attribute to modules.
463When present, relative imports will be relative to the value of this
464attribute instead of the :attr:`__name__` attribute. PEP 302-style
465importers can then set :attr:`__package__`. The :mod:`runpy` module
466that implements the :option:`-m` switch now does this, so relative imports
467can now be used in scripts running from inside a package.
468
Georg Brandlb19be572007-12-29 10:57:00 +0000469.. ======================================================================
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000470
Andrew M. Kuchling2e463552008-01-15 01:47:32 +0000471.. ::
472
473 .. _pep-0370:
474
475 PEP 370: XXX
476 =====================================================
477
478 When you run Python, the module search page ``sys.modules`` usually
479 includes a directory whose path ends in ``"site-packages"``. This
480 directory is intended to hold locally-installed packages available to
481 all users on a machine or using a particular site installation.
482
483 Python 2.6 introduces a convention for user-specific site directories.
484
485 .. seealso::
486
487 :pep:`370` - XXX
488
489 PEP written by XXX; implemented by Christian Heimes.
490
491
492.. ======================================================================
493
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000494.. _pep-3101:
495
496PEP 3101: Advanced String Formatting
497=====================================================
498
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000499In Python 3.0, the `%` operator is supplemented by a more powerful
500string formatting method, :meth:`format`. Support for the
501:meth:`format` method has been backported to Python 2.6.
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000502
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000503In 2.6, both 8-bit and Unicode strings have a `.format()` method that
504treats the string as a template and takes the arguments to be formatted.
505The formatting template uses curly brackets (`{`, `}`) as special characters::
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000506
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000507 # Substitute positional argument 0 into the string.
508 "User ID: {0}".format("root") -> "User ID: root"
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000509
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000510 # Use the named keyword arguments
511 uid = 'root'
512
513 'User ID: {uid} Last seen: {last_login}'.format(uid='root',
514 last_login = '5 Mar 2008 07:20') ->
515 'User ID: root Last seen: 5 Mar 2008 07:20'
516
517Curly brackets can be escaped by doubling them::
518
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000519 format("Empty dict: {{}}") -> "Empty dict: {}"
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000520
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000521Field names can be integers indicating positional arguments, such as
522``{0}``, ``{1}``, etc. or names of keyword arguments. You can also
523supply compound field names that read attributes or access dictionary keys::
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000524
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000525 import sys
526 'Platform: {0.platform}\nPython version: {0.version}'.format(sys) ->
527 'Platform: darwin\n
528 Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41) \n
529 [GCC 4.0.1 (Apple Computer, Inc. build 5367)]'
530
531 import mimetypes
532 'Content-type: {0[.mp4]}'.format(mimetypes.types_map) ->
533 'Content-type: video/mp4'
534
535Note that when using dictionary-style notation such as ``[.mp4]``, you
536don't need to put any quotation marks around the string; it will look
537up the value using ``.mp4`` as the key. Strings beginning with a
538number will be converted to an integer. You can't write more
539complicated expressions inside a format string.
540
541So far we've shown how to specify which field to substitute into the
542resulting string. The precise formatting used is also controllable by
Georg Brandl859043c2008-03-21 17:19:29 +0000543adding a colon followed by a format specifier. For example::
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000544
545 # Field 0: left justify, pad to 15 characters
546 # Field 1: right justify, pad to 6 characters
547 fmt = '{0:15} ${1:>6}'
548 fmt.format('Registration', 35) ->
549 'Registration $ 35'
550 fmt.format('Tutorial', 50) ->
551 'Tutorial $ 50'
552 fmt.format('Banquet', 125) ->
553 'Banquet $ 125'
554
Georg Brandl859043c2008-03-21 17:19:29 +0000555Format specifiers can reference other fields through nesting::
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000556
557 fmt = '{0:{1}}'
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000558 fmt.format('Invoice #1234', 15) ->
559 'Invoice #1234 '
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000560 width = 35
561 fmt.format('Invoice #1234', width) ->
562 'Invoice #1234 '
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000563
564The alignment of a field within the desired width can be specified:
565
566================ ============================================
567Character Effect
568================ ============================================
569< (default) Left-align
570> Right-align
571^ Center
572= (For numeric types only) Pad after the sign.
573================ ============================================
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000574
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000575Format specifiers can also include a presentation type, which
576controls how the value is formatted. For example, floating-point numbers
577can be formatted as a general number or in exponential notation:
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000578
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000579 >>> '{0:g}'.format(3.75)
580 '3.75'
581 >>> '{0:e}'.format(3.75)
582 '3.750000e+00'
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000583
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000584A variety of presentation types are available. Consult the 2.6
585documentation for a complete list (XXX add link, once it's in the 2.6
586docs), but here's a sample::
587
588 'b' - Binary. Outputs the number in base 2.
589 'c' - Character. Converts the integer to the corresponding
590 Unicode character before printing.
591 'd' - Decimal Integer. Outputs the number in base 10.
592 'o' - Octal format. Outputs the number in base 8.
593 'x' - Hex format. Outputs the number in base 16, using lower-
594 case letters for the digits above 9.
595 'e' - Exponent notation. Prints the number in scientific
596 notation using the letter 'e' to indicate the exponent.
597 'g' - General format. This prints the number as a fixed-point
598 number, unless the number is too large, in which case
599 it switches to 'e' exponent notation.
600 'n' - Number. This is the same as 'g', except that it uses the
601 current locale setting to insert the appropriate
602 number separator characters.
603 '%' - Percentage. Multiplies the number by 100 and displays
604 in fixed ('f') format, followed by a percent sign.
605
606Classes and types can define a __format__ method to control how they're
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000607formatted. It receives a single argument, the format specifier::
608
609 def __format__(self, format_spec):
610 if isinstance(format_spec, unicode):
611 return unicode(str(self))
612 else:
613 return str(self)
614
615There's also a format() built-in that will format a single value. It calls
616the type's :meth:`__format__` method with the provided specifier::
617
618 >>> format(75.6564, '.2f')
619 '75.66'
620
621.. seealso::
622
623 :pep:`3101` - Advanced String Formatting
624 PEP written by Talin.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000625
626.. ======================================================================
627
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000628.. _pep-3105:
629
630PEP 3105: ``print`` As a Function
631=====================================================
632
633The ``print`` statement becomes the :func:`print` function in Python 3.0.
634Making :func:`print` a function makes it easier to replace within a
635module by doing 'def print(...)' or importing a new
636function from somewhere else.
637
638Python 2.6 has a ``__future__`` import that removes ``print`` as language
639syntax, letting you use the functional form instead. For example::
640
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000641 from __future__ import print_function
642 print('# of entries', len(dictionary), file=sys.stderr)
643
644The signature of the new function is::
645
646 def print(*args, sep=' ', end='\n', file=None)
647
648The parameters are:
649
650 * **args**: positional arguments whose values will be printed out.
651 * **sep**: the separator, which will be printed between arguments.
652 * **end**: the ending text, which will be printed after all of the
653 arguments have been output.
654 * **file**: the file object to which the output will be sent.
655
656.. seealso::
657
Eric Smith33dd0942008-03-20 23:04:04 +0000658 :pep:`3105` - Make print a function
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000659 PEP written by Georg Brandl.
660
661.. ======================================================================
662
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000663.. _pep-3110:
664
665PEP 3110: Exception-Handling Changes
666=====================================================
667
668One error that Python programmers occasionally make
669is the following::
670
671 try:
672 ...
673 except TypeError, ValueError:
674 ...
675
676The author is probably trying to catch both
677:exc:`TypeError` and :exc:`ValueError` exceptions, but this code
678actually does something different: it will catch
679:exc:`TypeError` and bind the resulting exception object
680to the local name ``"ValueError"``. The correct code
681would have specified a tuple::
682
683 try:
684 ...
685 except (TypeError, ValueError):
686 ...
687
688This error is possible because the use of the comma here is ambiguous:
689does it indicate two different nodes in the parse tree, or a single
690node that's a tuple.
691
692Python 3.0 changes the syntax to make this unambiguous by replacing
693the comma with the word "as". To catch an exception and store the
694exception object in the variable ``exc``, you must write::
695
696 try:
697 ...
698 except TypeError as exc:
699 ...
700
701Python 3.0 will only support the use of "as", and therefore interprets
702the first example as catching two different exceptions. Python 2.6
703supports both the comma and "as", so existing code will continue to
704work.
705
706.. seealso::
707
708 :pep:`3110` - Catching Exceptions in Python 3000
709 PEP written and implemented by Collin Winter.
710
Georg Brandlb19be572007-12-29 10:57:00 +0000711.. ======================================================================
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000712
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000713.. _pep-3112:
714
715PEP 3112: Byte Literals
716=====================================================
717
718Python 3.0 adopts Unicode as the language's fundamental string type, and
719denotes 8-bit literals differently, either as ``b'string'``
720or using a :class:`bytes` constructor. For future compatibility,
721Python 2.6 adds :class:`bytes` as a synonym for the :class:`str` type,
722and it also supports the ``b''`` notation.
723
724.. seealso::
725
726 :pep:`3112` - Bytes literals in Python 3000
727 PEP written by Jason Orendorff; backported to 2.6 by Christian Heimes.
728
729.. ======================================================================
730
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +0000731.. _pep-3118:
732
733PEP 3118: Revised Buffer Protocol
734=====================================================
735
736The buffer protocol is a C-level API that lets Python extensions
737XXX
738
739.. seealso::
740
741 :pep:`3118` - Revising the buffer protocol
742 PEP written by Travis Oliphant and Carl Banks.
743
744.. ======================================================================
745
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000746.. _pep-3119:
747
748PEP 3119: Abstract Base Classes
749=====================================================
750
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000751XXX write this -- this section is currently just brief notes.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000752
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000753How to identify a file object?
754
755ABCs are a collection of classes describing various interfaces.
756Classes can derive from an ABC to indicate they support that ABC's
757interface. Concrete classes should obey the semantics specified by
758an ABC, but Python can't check this; it's up to the implementor.
759
760A metaclass lets you declare that an existing class or type
761derives from a particular ABC. You can even
762
763class AppendableSequence:
764 __metaclass__ = ABCMeta
765
766AppendableSequence.register(list)
767assert issubclass(list, AppendableSequence)
768assert isinstance([], AppendableSequence)
769
770@abstractmethod decorator -- you can't instantiate classes w/
771an abstract method.
772
Andrew M. Kuchling73835bd2008-01-04 18:24:41 +0000773::
774
775 @abstractproperty decorator
776 @abstractproperty
777 def readonly(self):
778 return self._x
Andrew M. Kuchling3b554702008-01-04 02:31:40 +0000779
780
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000781.. seealso::
782
783 :pep:`3119` - Introducing Abstract Base Classes
784 PEP written by Guido van Rossum and Talin.
785 Implemented by XXX.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000786 Backported to 2.6 by Benjamin Aranguren, with Alex Martelli.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000787
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000788.. ======================================================================
789
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000790.. _pep-3127:
791
792PEP 3127: Integer Literal Support and Syntax
793=====================================================
794
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000795XXX write this -- this section is currently just brief notes.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000796
797Python 3.0 changes the syntax for octal integer literals, and
798adds supports for binary integers: 0o instad of 0,
799and 0b for binary. Python 2.6 doesn't support this, but a bin()
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000800builtin was added.
801
802XXX changes to the hex/oct builtins
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000803
804
805New bin() built-in returns the binary form of a number.
806
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000807.. seealso::
808
809 :pep:`3127` - Integer Literal Support and Syntax
810 PEP written by Patrick Maupin.
811
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000812.. ======================================================================
813
814.. _pep-3129:
815
816PEP 3129: Class Decorators
817=====================================================
818
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000819Decorators have been extended from functions to classes. It's now legal to
820write::
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000821
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000822 @foo
823 @bar
824 class A:
825 pass
826
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +0000827This is equivalent to::
828
829 class A:
830 pass
831
832 A = foo(bar(A))
833
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000834XXX need to find a good motivating example.
835
836.. seealso::
837
838 :pep:`3129` - Class Decorators
839 PEP written by Collin Winter.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000840
841.. ======================================================================
842
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000843.. _pep-3141:
844
845PEP 3141: A Type Hierarchy for Numbers
846=====================================================
847
848In Python 3.0, several abstract base classes for numeric types,
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +0000849inspired by Scheme's numeric tower, are being added.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000850This change was backported to 2.6 as the :mod:`numbers` module.
851
852The most general ABC is :class:`Number`. It defines no operations at
853all, and only exists to allow checking if an object is a number by
854doing ``isinstance(obj, Number)``.
855
856Numbers are further divided into :class:`Exact` and :class:`Inexact`.
857Exact numbers can represent values precisely and operations never
858round off the results or introduce tiny errors that may break the
Georg Brandl907a7202008-02-22 12:31:45 +0000859commutativity and associativity properties; inexact numbers may
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000860perform such rounding or introduce small errors. Integers, long
861integers, and rational numbers are exact, while floating-point
862and complex numbers are inexact.
863
864:class:`Complex` is a subclass of :class:`Number`. Complex numbers
865can undergo the basic operations of addition, subtraction,
866multiplication, division, and exponentiation, and you can retrieve the
867real and imaginary parts and obtain a number's conjugate. Python's built-in
868complex type is an implementation of :class:`Complex`.
869
870:class:`Real` further derives from :class:`Complex`, and adds
871operations that only work on real numbers: :func:`floor`, :func:`trunc`,
872rounding, taking the remainder mod N, floor division,
873and comparisons.
874
875:class:`Rational` numbers derive from :class:`Real`, have
876:attr:`numerator` and :attr:`denominator` properties, and can be
Mark Dickinsond058cd22008-02-10 21:29:51 +0000877converted to floats. Python 2.6 adds a simple rational-number class,
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000878:class:`Fraction`, in the :mod:`fractions` module. (It's called
879:class:`Fraction` instead of :class:`Rational` to avoid
880a name clash with :class:`numbers.Rational`.)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000881
882:class:`Integral` numbers derive from :class:`Rational`, and
883can be shifted left and right with ``<<`` and ``>>``,
884combined using bitwise operations such as ``&`` and ``|``,
885and can be used as array indexes and slice boundaries.
886
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +0000887In Python 3.0, the PEP slightly redefines the existing built-ins
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000888:func:`round`, :func:`math.floor`, :func:`math.ceil`, and adds a new
889one, :func:`math.trunc`, that's been backported to Python 2.6.
890:func:`math.trunc` rounds toward zero, returning the closest
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +0000891:class:`Integral` that's between the function's argument and zero.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000892
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +0000893.. seealso::
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000894
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000895 :pep:`3141` - A Type Hierarchy for Numbers
896 PEP written by Jeffrey Yasskin.
897
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +0000898 XXX link: Discusses Scheme's numeric tower.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000899
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +0000900
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000901
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000902The :mod:`fractions` Module
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000903--------------------------------------------------
904
905To fill out the hierarchy of numeric types, a rational-number class
Mark Dickinsond058cd22008-02-10 21:29:51 +0000906has been added as the :mod:`fractions` module. Rational numbers are
Andrew M. Kuchling378586a2008-03-04 01:50:32 +0000907represented as a fraction, and can exactly represent
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000908numbers such as two-thirds that floating-point numbers can only
909approximate.
910
Mark Dickinsond058cd22008-02-10 21:29:51 +0000911The :class:`Fraction` constructor takes two :class:`Integral` values
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000912that will be the numerator and denominator of the resulting fraction. ::
913
Mark Dickinsond058cd22008-02-10 21:29:51 +0000914 >>> from fractions import Fraction
915 >>> a = Fraction(2, 3)
916 >>> b = Fraction(2, 5)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000917 >>> float(a), float(b)
918 (0.66666666666666663, 0.40000000000000002)
919 >>> a+b
Mark Dickinsoncd873fc2008-02-11 03:11:55 +0000920 Fraction(16, 15)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000921 >>> a/b
Mark Dickinsoncd873fc2008-02-11 03:11:55 +0000922 Fraction(5, 3)
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000923
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000924To help in converting floating-point numbers to rationals,
925the float type now has a :meth:`as_integer_ratio()` method that returns
926the numerator and denominator for a fraction that evaluates to the same
927floating-point value::
928
929 >>> (2.5) .as_integer_ratio()
930 (5, 2)
931 >>> (3.1415) .as_integer_ratio()
932 (7074029114692207L, 2251799813685248L)
933 >>> (1./3) .as_integer_ratio()
934 (6004799503160661L, 18014398509481984L)
935
936Note that values that can only be approximated by floating-point
937numbers, such as 1./3, are not simplified to the number being
938approximated; the fraction attempts to match the floating-point value
939**exactly**.
940
Mark Dickinsond058cd22008-02-10 21:29:51 +0000941The :mod:`fractions` module is based upon an implementation by Sjoerd
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000942Mullender that was in Python's :file:`Demo/classes/` directory for a
943long time. This implementation was significantly updated by Jeffrey
Andrew M. Kuchling3710a132008-03-05 00:44:41 +0000944Yasskin.
Andrew M. Kuchlingaa355542008-01-16 03:17:25 +0000945
Georg Brandl8ec7f652007-08-15 14:28:01 +0000946Other Language Changes
947======================
948
949Here are all of the changes that Python 2.6 makes to the core Python language.
950
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000951* When calling a function using the ``**`` syntax to provide keyword
952 arguments, you are no longer required to use a Python dictionary;
953 any mapping will now work::
954
955 >>> def f(**kw):
956 ... print sorted(kw)
957 ...
958 >>> ud=UserDict.UserDict()
959 >>> ud['a'] = 1
960 >>> ud['b'] = 'string'
961 >>> f(**ud)
962 ['a', 'b']
963
Georg Brandlb19be572007-12-29 10:57:00 +0000964 .. Patch 1686487
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +0000965
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +0000966* The built-in types now have improved support for extended slicing syntax,
967 where various combinations of ``(start, stop, step)`` are supplied.
968 Previously, the support was partial and certain corner cases wouldn't work.
969 (Implemented by Thomas Wouters.)
970
Georg Brandlb19be572007-12-29 10:57:00 +0000971 .. Revision 57619
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +0000972
Christian Heimesff6cc6b2008-01-17 23:01:44 +0000973* Properties now have three attributes, :attr:`getter`,
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000974 :attr:`setter` and :attr:`deleter`, that are useful shortcuts for
Christian Heimesff6cc6b2008-01-17 23:01:44 +0000975 adding or modifying a getter, setter or deleter function to an
976 existing property. You would use them like this::
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +0000977
978 class C(object):
979 @property
980 def x(self):
981 return self._x
982
983 @x.setter
984 def x(self, value):
985 self._x = value
986
987 @x.deleter
988 def x(self):
989 del self._x
990
Christian Heimesff6cc6b2008-01-17 23:01:44 +0000991 class D(C):
992 @C.x.getter
993 def x(self):
994 return self._x * 2
995
996 @x.setter
997 def x(self, value):
998 self._x = value / 2
999
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001000
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001001* C functions and methods that use
1002 :cfunc:`PyComplex_AsCComplex` will now accept arguments that
1003 have a :meth:`__complex__` method. In particular, the functions in the
1004 :mod:`cmath` module will now accept objects with this method.
1005 This is a backport of a Python 3.0 change.
1006 (Contributed by Mark Dickinson.)
1007
Georg Brandlb19be572007-12-29 10:57:00 +00001008 .. Patch #1675423
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001009
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001010 A numerical nicety: when creating a complex number from two floats
1011 on systems that support signed zeros (-0 and +0), the
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001012 :func:`complex` constructor will now preserve the sign
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001013 of the zero.
1014
Georg Brandlb19be572007-12-29 10:57:00 +00001015 .. Patch 1507
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001016
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001017* More floating-point features were also added. The :func:`float` function
1018 will now turn the strings ``+nan`` and ``-nan`` into the corresponding
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001019 IEEE 754 Not A Number values, and ``+inf`` and ``-inf`` into
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001020 positive or negative infinity. This works on any platform with
Christian Heimesd0d7d872008-01-04 02:03:25 +00001021 IEEE 754 semantics. (Contributed by Christian Heimes.)
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001022
Georg Brandl225163d2008-03-05 07:10:35 +00001023 .. Patch 1635
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001024
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001025 Other functions in the :mod:`math` module, :func:`isinf` and
1026 :func:`isnan`, return true if their floating-point argument is
Georg Brandle1b8e9c2008-02-20 19:12:36 +00001027 infinite or Not A Number.
1028
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001029 .. Patch 1640
Georg Brandle1b8e9c2008-02-20 19:12:36 +00001030
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001031 The ``math.copysign(x, y)`` function
1032 copies the sign bit of an IEEE 754 number, returning the absolute
1033 value of *x* combined with the sign bit of *y*. For example,
1034 ``math.copysign(1, -0.0)`` returns -1.0. (Contributed by Christian
1035 Heimes.)
1036
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001037* Changes to the :class:`Exception` interface
1038 as dictated by :pep:`352` continue to be made. For 2.6,
1039 the :attr:`message` attribute is being deprecated in favor of the
1040 :attr:`args` attribute.
1041
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001042* The :exc:`GeneratorExit` exception now subclasses
1043 :exc:`BaseException` instead of :exc:`Exception`. This means
1044 that an exception handler that does ``except Exception:``
1045 will not inadvertently catch :exc:`GeneratorExit`.
1046 (Contributed by Chad Austin.)
1047
Georg Brandlb19be572007-12-29 10:57:00 +00001048 .. Patch #1537
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001049
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001050* Generator objects now have a :attr:`gi_code` attribute that refers to
1051 the original code object backing the generator.
1052 (Contributed by Collin Winter.)
1053
1054 .. Patch #1473257
1055
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001056* The :func:`compile` built-in function now accepts keyword arguments
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001057 as well as positional parameters. (Contributed by Thomas Wouters.)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001058
Georg Brandlb19be572007-12-29 10:57:00 +00001059 .. Patch 1444529
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001060
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001061* The :func:`complex` constructor now accepts strings containing
1062 parenthesized complex numbers, letting ``complex(repr(cmplx))``
1063 will now round-trip values. For example, ``complex('(3+4j)')``
1064 now returns the value (3+4j).
1065
Georg Brandlb19be572007-12-29 10:57:00 +00001066 .. Patch 1491866
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001067
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001068* The string :meth:`translate` method now accepts ``None`` as the
1069 translation table parameter, which is treated as the identity
1070 transformation. This makes it easier to carry out operations
1071 that only delete characters. (Contributed by Bengt Richter.)
1072
Georg Brandlb19be572007-12-29 10:57:00 +00001073 .. Patch 1193128
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001074
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001075* The built-in :func:`dir` function now checks for a :meth:`__dir__`
1076 method on the objects it receives. This method must return a list
1077 of strings containing the names of valid attributes for the object,
1078 and lets the object control the value that :func:`dir` produces.
1079 Objects that have :meth:`__getattr__` or :meth:`__getattribute__`
Facundo Batistabd5b6232007-12-03 19:49:54 +00001080 methods can use this to advertise pseudo-attributes they will honor.
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001081
Georg Brandlb19be572007-12-29 10:57:00 +00001082 .. Patch 1591665
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001083
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001084* Instance method objects have new attributes for the object and function
1085 comprising the method; the new synonym for :attr:`im_self` is
1086 :attr:`__self__`, and :attr:`im_func` is also available as :attr:`__func__`.
1087 The old names are still supported in Python 2.6; they're gone in 3.0.
1088
Georg Brandl8ec7f652007-08-15 14:28:01 +00001089* An obscure change: when you use the the :func:`locals` function inside a
1090 :keyword:`class` statement, the resulting dictionary no longer returns free
1091 variables. (Free variables, in this case, are variables referred to in the
1092 :keyword:`class` statement that aren't attributes of the class.)
1093
Georg Brandlb19be572007-12-29 10:57:00 +00001094.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001095
1096
1097Optimizations
1098-------------
1099
Georg Brandlaf30b282008-01-15 06:55:56 +00001100* Type objects now have a cache of methods that can reduce
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001101 the amount of work required to find the correct method implementation
Andrew M. Kuchlinga01ed032008-01-15 01:55:32 +00001102 for a particular class; once cached, the interpreter doesn't need to
1103 traverse base classes to figure out the right method to call.
1104 The cache is cleared if a base class or the class itself is modified,
1105 so the cache should remain correct even in the face of Python's dynamic
1106 nature.
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001107 (Original optimization implemented by Armin Rigo, updated for
1108 Python 2.6 by Kevin Jacobs.)
1109
Georg Brandl225163d2008-03-05 07:10:35 +00001110 .. Patch 1700288
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001111
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001112* All of the functions in the :mod:`struct` module have been rewritten in
1113 C, thanks to work at the Need For Speed sprint.
1114 (Contributed by Raymond Hettinger.)
1115
Georg Brandl8ec7f652007-08-15 14:28:01 +00001116* Internally, a bit is now set in type objects to indicate some of the standard
1117 built-in types. This speeds up checking if an object is a subclass of one of
1118 these types. (Contributed by Neal Norwitz.)
1119
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001120* Unicode strings now uses faster code for detecting
1121 whitespace and line breaks; this speeds up the :meth:`split` method
1122 by about 25% and :meth:`splitlines` by 35%.
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001123 (Contributed by Antoine Pitrou.) Memory usage is reduced
1124 by using pymalloc for the Unicode string's data.
1125
1126* The ``with`` statement now stores the :meth:`__exit__` method on the stack,
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001127 producing a small speedup. (Implemented by Jeffrey Yasskin.)
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001128
1129* To reduce memory usage, the garbage collector will now clear internal
1130 free lists when garbage-collecting the highest generation of objects.
1131 This may return memory to the OS sooner.
1132
Georg Brandl8ec7f652007-08-15 14:28:01 +00001133The net result of the 2.6 optimizations is that Python 2.6 runs the pystone
1134benchmark around XX% faster than Python 2.5.
1135
Georg Brandlb19be572007-12-29 10:57:00 +00001136.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001137
1138
1139New, Improved, and Deprecated Modules
1140=====================================
1141
1142As usual, Python's standard library received a number of enhancements and bug
1143fixes. Here's a partial list of the most notable changes, sorted alphabetically
1144by module name. Consult the :file:`Misc/NEWS` file in the source tree for a more
1145complete list of changes, or look through the CVS logs for all the details.
1146
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001147* The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol
1148 available, instead of restricting itself to protocol 1.
1149 (Contributed by W. Barnes.)
1150
Georg Brandlb19be572007-12-29 10:57:00 +00001151 .. Patch 1551443
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001152
Andrew M. Kuchling6d57c822007-10-23 20:55:47 +00001153* A new data type in the :mod:`collections` module: :class:`namedtuple(typename,
Georg Brandl8ec7f652007-08-15 14:28:01 +00001154 fieldnames)` is a factory function that creates subclasses of the standard tuple
1155 whose fields are accessible by name as well as index. For example::
1156
Andrew M. Kuchling6d57c822007-10-23 20:55:47 +00001157 >>> var_type = collections.namedtuple('variable',
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001158 ... 'id name type size')
1159 # Names are separated by spaces or commas.
1160 # 'id, name, type, size' would also work.
Raymond Hettinger366523c2007-12-14 18:12:21 +00001161 >>> var_type._fields
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001162 ('id', 'name', 'type', 'size')
Georg Brandl8ec7f652007-08-15 14:28:01 +00001163
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001164 >>> var = var_type(1, 'frequency', 'int', 4)
1165 >>> print var[0], var.id # Equivalent
1166 1 1
1167 >>> print var[2], var.type # Equivalent
1168 int int
Raymond Hettinger366523c2007-12-14 18:12:21 +00001169 >>> var._asdict()
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001170 {'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
Raymond Hettingere9b9b352008-02-15 21:21:25 +00001171 >>> v2 = var._replace(name='amplitude')
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001172 >>> v2
1173 variable(id=1, name='amplitude', type='int', size=4)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001174
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001175 Where the new :class:`namedtuple` type proved suitable, the standard
1176 library has been modified to return them. For example,
1177 the :meth:`Decimal.as_tuple` method now returns a named tuple with
1178 :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
1179
Georg Brandl8ec7f652007-08-15 14:28:01 +00001180 (Contributed by Raymond Hettinger.)
1181
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001182* Another change to the :mod:`collections` module is that the
Georg Brandle7d118a2007-12-08 11:05:05 +00001183 :class:`deque` type now supports an optional *maxlen* parameter;
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001184 if supplied, the deque's size will be restricted to no more
Georg Brandle7d118a2007-12-08 11:05:05 +00001185 than *maxlen* items. Adding more items to a full deque causes
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001186 old items to be discarded.
1187
1188 ::
1189
1190 >>> from collections import deque
1191 >>> dq=deque(maxlen=3)
1192 >>> dq
1193 deque([], maxlen=3)
1194 >>> dq.append(1) ; dq.append(2) ; dq.append(3)
1195 >>> dq
1196 deque([1, 2, 3], maxlen=3)
1197 >>> dq.append(4)
1198 >>> dq
1199 deque([2, 3, 4], maxlen=3)
1200
1201 (Contributed by Raymond Hettinger.)
1202
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001203* The :mod:`ctypes` module now supports a :class:`c_bool` datatype
1204 that represents the C99 ``bool`` type. (Contributed by David Remahl.)
1205
Georg Brandlb19be572007-12-29 10:57:00 +00001206 .. Patch 1649190
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001207
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001208 The :mod:`ctypes` string, buffer and array types also have improved
1209 support for extended slicing syntax,
1210 where various combinations of ``(start, stop, step)`` are supplied.
1211 (Implemented by Thomas Wouters.)
1212
Georg Brandlb19be572007-12-29 10:57:00 +00001213 .. Revision 57769
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001214
Georg Brandl8ec7f652007-08-15 14:28:01 +00001215* A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001216 the display characters for a certain number of characters on a single line.
Andrew M. Kuchling4a2762d2008-01-20 00:00:38 +00001217 (Contributed by Fabian Kreutz.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001218 ::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001219
1220 # Boldface text starting at y=0,x=21
1221 # and affecting the rest of the line.
1222 stdscr.chgat(0,21, curses.A_BOLD)
1223
Andrew M. Kuchling4a2762d2008-01-20 00:00:38 +00001224 The :class:`Textbox` class in the :mod:`curses.textpad` module
1225 now supports editing in insert mode as well as overwrite mode.
1226 Insert mode is enabled by supplying a true value for the *insert_mode*
1227 parameter when creating the :class:`Textbox` instance.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001228
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001229* The :mod:`datetime` module's :meth:`strftime` methods now support a
1230 ``%f`` format code that expands to the number of microseconds in the
1231 object, zero-padded on
1232 the left to six places. (Contributed by XXX.)
1233
1234 .. Patch 1158
1235
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001236* The :mod:`decimal` module was updated to version 1.66 of
1237 `the General Decimal Specification <http://www2.hursley.ibm.com/decimal/decarith.html>`__. New features
1238 include some methods for some basic mathematical functions such as
1239 :meth:`exp` and :meth:`log10`::
1240
1241 >>> Decimal(1).exp()
1242 Decimal("2.718281828459045235360287471")
1243 >>> Decimal("2.7182818").ln()
1244 Decimal("0.9999999895305022877376682436")
1245 >>> Decimal(1000).log10()
1246 Decimal("3")
1247
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001248 The :meth:`as_tuple` method of :class:`Decimal` objects now returns a
1249 named tuple with :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
1250
1251 (Implemented by Facundo Batista and Mark Dickinson. Named tuple
1252 support added by Raymond Hettinger.)
1253
1254* The :mod:`difflib` module's :class:`SequenceMatcher` class
1255 now returns named tuples representing matches.
1256 In addition to behaving like tuples, the returned values
1257 also have :attr:`a`, :attr:`b`, and :attr:`size` attributes.
1258 (Contributed by Raymond Hettinger.)
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001259
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001260* An optional ``timeout`` parameter was added to the
1261 :class:`ftplib.FTP` class constructor as well as the :meth:`connect`
1262 method, specifying a timeout measured in seconds. (Added by Facundo
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00001263 Batista.) Also, the :class:`FTP` class's
1264 :meth:`storbinary` and :meth:`storlines`
1265 now take an optional *callback* parameter that will be called with
1266 each block of data after the data has been sent.
1267 (Contributed by Phil Schwartz.)
1268
1269 .. Patch 1221598
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001270
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001271* The :func:`reduce` built-in function is also available in the
1272 :mod:`functools` module. In Python 3.0, the built-in is dropped and it's
1273 only available from :mod:`functools`; currently there are no plans
1274 to drop the built-in in the 2.x series. (Patched by
1275 Christian Heimes.)
1276
Georg Brandlb19be572007-12-29 10:57:00 +00001277 .. Patch 1739906
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001278
Georg Brandl8ec7f652007-08-15 14:28:01 +00001279* The :func:`glob.glob` function can now return Unicode filenames if
1280 a Unicode path was used and Unicode filenames are matched within the directory.
1281
Georg Brandlb19be572007-12-29 10:57:00 +00001282 .. Patch #1001604
Georg Brandl8ec7f652007-08-15 14:28:01 +00001283
1284* The :mod:`gopherlib` module has been removed.
1285
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001286* A new function in the :mod:`heapq` module: ``merge(iter1, iter2, ...)``
1287 takes any number of iterables that return data *in sorted
1288 order*, and returns a new iterator that returns the contents of all
1289 the iterators, also in sorted order. For example::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001290
1291 heapq.merge([1, 3, 5, 9], [2, 8, 16]) ->
1292 [1, 2, 3, 5, 8, 9, 16]
1293
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001294 Another new function, ``heappushpop(heap, item)``,
1295 pushes *item* onto *heap*, then pops off and returns the smallest item.
1296 This is more efficient than making a call to :func:`heappush` and then
1297 :func:`heappop`.
1298
Georg Brandl8ec7f652007-08-15 14:28:01 +00001299 (Contributed by Raymond Hettinger.)
1300
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001301* An optional ``timeout`` parameter was added to the
1302 :class:`httplib.HTTPConnection` and :class:`HTTPSConnection`
1303 class constructors, specifying a timeout measured in seconds.
1304 (Added by Facundo Batista.)
1305
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001306* Most of the :mod:`inspect` module's functions, such as
1307 :func:`getmoduleinfo` and :func:`getargs`, now return named tuples.
1308 In addition to behaving like tuples, the elements of the return value
1309 can also be accessed as attributes.
1310 (Contributed by Raymond Hettinger.)
1311
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001312 Some new functions in the module include
1313 :func:`isgenerator`, :func:`isgeneratorfunction`,
1314 and :func:`isabstract`.
1315
1316* The :mod:`itertools` module gained several new functions.
1317
1318 ``izip_longest(iter1, iter2, ...[, fillvalue])`` makes tuples from
1319 each of the elements; if some of the iterables are shorter than
1320 others, the missing values are set to *fillvalue*. For example::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001321
1322 itertools.izip_longest([1,2,3], [1,2,3,4,5]) ->
1323 [(1, 1), (2, 2), (3, 3), (None, 4), (None, 5)]
1324
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001325 ``product(iter1, iter2, ..., [repeat=N])`` returns the Cartesian product
1326 of the supplied iterables, a set of tuples containing
1327 every possible combination of the elements returned from each iterable. ::
1328
1329 itertools.product([1,2,3], [4,5,6]) ->
1330 [(1, 4), (1, 5), (1, 6),
1331 (2, 4), (2, 5), (2, 6),
1332 (3, 4), (3, 5), (3, 6)]
1333
1334 The optional *repeat* keyword argument is used for taking the
1335 product of an iterable or a set of iterables with themselves,
1336 repeated *N* times. With a single iterable argument, *N*-tuples
1337 are returned::
1338
1339 itertools.product([1,2], repeat=3)) ->
1340 [(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
1341 (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
1342
1343 With two iterables, *2N*-tuples are returned. ::
1344
1345 itertools(product([1,2], [3,4], repeat=2) ->
1346 [(1, 3, 1, 3), (1, 3, 1, 4), (1, 3, 2, 3), (1, 3, 2, 4),
1347 (1, 4, 1, 3), (1, 4, 1, 4), (1, 4, 2, 3), (1, 4, 2, 4),
1348 (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),
1349 (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]
1350
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001351 ``combinations(iterable, r)`` returns sub-sequences of length *r* from
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001352 the elements of *iterable*. ::
1353
1354 itertools.combinations('123', 2) ->
1355 [('1', '2'), ('1', '3'), ('2', '3')]
1356
1357 itertools.combinations('123', 3) ->
1358 [('1', '2', '3')]
1359
1360 itertools.combinations('1234', 3) ->
1361 [('1', '2', '3'), ('1', '2', '4'), ('1', '3', '4'),
1362 ('2', '3', '4')]
1363
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001364 ``permutations(iter[, r])`` returns all the permutations of length *r* of
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001365 the iterable's elements. If *r* is not specified, it will default to the
1366 number of elements produced by the iterable.
1367
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001368 itertools.permutations([1,2,3,4], 2) ->
1369 [(1, 2), (1, 3), (1, 4),
1370 (2, 1), (2, 3), (2, 4),
1371 (3, 1), (3, 2), (3, 4),
1372 (4, 1), (4, 2), (4, 3)]
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001373
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001374 ``itertools.chain(*iterables)` is an existing function in
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001375 :mod:`itertools` that gained a new constructor in Python 2.6.
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001376 ``itertools.chain.from_iterable(iterable)`` takes a single
1377 iterable that should return other iterables. :func:`chain` will
1378 then return all the elements of the first iterable, then
1379 all the elements of the second, and so on. ::
1380
1381 chain.from_iterable([[1,2,3], [4,5,6]]) ->
1382 [1, 2, 3, 4, 5, 6]
1383
1384 (All contributed by Raymond Hettinger.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001385
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001386* The :mod:`logging` module's :class:`FileHandler` class
1387 and its subclasses :class:`WatchedFileHandler`, :class:`RotatingFileHandler`,
1388 and :class:`TimedRotatingFileHandler` now
1389 have an optional *delay* parameter to its constructor. If *delay*
1390 is true, opening of the log file is deferred until the first
1391 :meth:`emit` call is made. (Contributed by Vinay Sajip.)
1392
Georg Brandl8ec7f652007-08-15 14:28:01 +00001393* The :mod:`macfs` module has been removed. This in turn required the
1394 :func:`macostools.touched` function to be removed because it depended on the
1395 :mod:`macfs` module.
1396
Georg Brandlb19be572007-12-29 10:57:00 +00001397 .. Patch #1490190
Georg Brandl8ec7f652007-08-15 14:28:01 +00001398
Andrew M. Kuchling2686f4d2008-01-19 19:14:05 +00001399* :class:`mmap` objects now have a :meth:`rfind` method that finds
1400 a substring, beginning at the end of the string and searching
1401 backwards. The :meth:`find` method
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001402 also gained an *end* parameter containing the index at which to stop
Andrew M. Kuchling2686f4d2008-01-19 19:14:05 +00001403 the forward search.
1404 (Contributed by John Lenton.)
1405
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001406* (3.0-warning mode) The :mod:`new` module has been removed from
1407 Python 3.0. Importing it therefore triggers a warning message.
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001408
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001409* The :mod:`operator` module gained a
1410 :func:`methodcaller` function that takes a name and an optional
1411 set of arguments, returning a callable that will call
1412 the named function on any arguments passed to it. For example::
1413
1414 >>> # Equivalent to lambda s: s.replace('old', 'new')
1415 >>> replacer = operator.methodcaller('replace', 'old', 'new')
1416 >>> replacer('old wine in old bottles')
1417 'new wine in new bottles'
1418
Georg Brandl27504da2008-03-04 07:25:54 +00001419 (Contributed by Georg Brandl, after a suggestion by Gregory Petrosyan.)
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001420
1421 The :func:`attrgetter` function now accepts dotted names and performs
1422 the corresponding attribute lookups::
1423
1424 >>> inst_name = operator.attrgetter('__class__.__name__')
1425 >>> inst_name('')
1426 'str'
1427 >>> inst_name(help)
1428 '_Helper'
1429
Georg Brandl27504da2008-03-04 07:25:54 +00001430 (Contributed by Georg Brandl, after a suggestion by Barry Warsaw.)
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001431
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001432* New functions in the :mod:`os` module include
1433 ``fchmod(fd, mode)``, ``fchown(fd, uid, gid)``,
1434 and ``lchmod(path, mode)``, on operating systems that support these
1435 functions. :func:`fchmod` and :func:`fchown` let you change the mode
1436 and ownership of an opened file, and :func:`lchmod` changes the mode
1437 of a symlink.
1438
1439 (Contributed by Georg Brandl and Christian Heimes.)
1440
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001441* The :func:`os.walk` function now has a ``followlinks`` parameter. If
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001442 set to True, it will follow symlinks pointing to directories and
1443 visit the directory's contents. For backward compatibility, the
1444 parameter's default value is false. Note that the function can fall
1445 into an infinite recursion if there's a symlink that points to a
1446 parent directory.
1447
Georg Brandlb19be572007-12-29 10:57:00 +00001448 .. Patch 1273829
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001449
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001450* The ``os.environ`` object's :meth:`clear` method will now unset the
1451 environment variables using :func:`os.unsetenv` in addition to clearing
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00001452 the object's keys. (Contributed by Martin Horcicka.)
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001453
Georg Brandlb19be572007-12-29 10:57:00 +00001454 .. Patch #1181
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001455
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001456* In the :mod:`os.path` module, the :func:`splitext` function
1457 has been changed to not split on leading period characters.
1458 This produces better results when operating on Unix's dot-files.
1459 For example, ``os.path.splitext('.ipython')``
1460 now returns ``('.ipython', '')`` instead of ``('', '.ipython')``.
1461
Georg Brandlb19be572007-12-29 10:57:00 +00001462 .. Bug #115886
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001463
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001464 A new function, :func:`relpath(path, start)` returns a relative path
1465 from the ``start`` path, if it's supplied, or from the current
1466 working directory to the destination ``path``. (Contributed by
1467 Richard Barran.)
1468
Georg Brandlb19be572007-12-29 10:57:00 +00001469 .. Patch 1339796
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001470
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001471 On Windows, :func:`os.path.expandvars` will now expand environment variables
1472 in the form "%var%", and "~user" will be expanded into the
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001473 user's home directory path. (Contributed by Josiah Carlson.)
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001474
Georg Brandlb19be572007-12-29 10:57:00 +00001475 .. Patch 957650
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001476
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001477* The Python debugger provided by the :mod:`pdb` module
1478 gained a new command: "run" restarts the Python program being debugged,
1479 and can optionally take new command-line arguments for the program.
1480 (Contributed by Rocky Bernstein.)
1481
Georg Brandlb19be572007-12-29 10:57:00 +00001482 .. Patch #1393667
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001483
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001484* The :mod:`pickletools` module now has an :func:`optimize` function
1485 that takes a string containing a pickle and removes some unused
1486 opcodes, returning a shorter pickle that contains the same data structure.
1487 (Contributed by Raymond Hettinger.)
1488
Georg Brandl8ec7f652007-08-15 14:28:01 +00001489* New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags`
1490 are wrappers for the corresponding system calls (where they're available).
1491 Constants for the flag values are defined in the :mod:`stat` module; some
1492 possible values include :const:`UF_IMMUTABLE` to signal the file may not be
1493 changed and :const:`UF_APPEND` to indicate that data can only be appended to the
1494 file. (Contributed by M. Levinson.)
1495
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001496 ``os.closerange(*low*, *high*)`` efficiently closes all file descriptors
1497 from *low* to *high*, ignoring any errors and not including *high* itself.
1498 This function is now used by the :mod:`subprocess` module to make starting
1499 processes faster. (Contributed by Georg Brandl.)
1500
1501 .. Patch #1663329
1502
Andrew M. Kuchlinge0a49b62008-01-08 14:30:55 +00001503* The :mod:`pyexpat` module's :class:`Parser` objects now allow setting
1504 their :attr:`buffer_size` attribute to change the size of the buffer
1505 used to hold character data.
1506 (Contributed by Achim Gaedke.)
1507
1508 .. Patch 1137
1509
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00001510* The :mod:`Queue` module now provides queue classes that retrieve entries
1511 in different orders. The :class:`PriorityQueue` class stores
1512 queued items in a heap and retrieves them in priority order,
1513 and :class:`LifoQueue` retrieves the most recently added entries first,
1514 meaning that it behaves like a stack.
1515 (Contributed by Raymond Hettinger.)
1516
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001517* The :mod:`random` module's :class:`Random` objects can
1518 now be pickled on a 32-bit system and unpickled on a 64-bit
1519 system, and vice versa. Unfortunately, this change also means
1520 that Python 2.6's :class:`Random` objects can't be unpickled correctly
1521 on earlier versions of Python.
1522 (Contributed by Shawn Ligocki.)
1523
Georg Brandlb19be572007-12-29 10:57:00 +00001524 .. Issue 1727780
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001525
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001526 The new ``triangular(low, high, mode)`` function returns random
1527 numbers following a triangular distribution. The returned values
1528 are between *low* and *high*, not including *high* itself, and
1529 with *mode* as the mode, the most frequently occurring value
1530 in the distribution. (Contributed by Raymond Hettinger. XXX check)
1531
1532 .. Patch 1681432
1533
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001534* Long regular expression searches carried out by the :mod:`re`
1535 module will now check for signals being delivered, so especially
1536 long searches can now be interrupted.
1537 (Contributed by Josh Hoyt and Ralf Schmitt.)
1538
Georg Brandl225163d2008-03-05 07:10:35 +00001539 .. Patch 846388
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001540
Georg Brandl8ec7f652007-08-15 14:28:01 +00001541* The :mod:`rgbimg` module has been removed.
1542
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001543* The :mod:`sched` module's :class:`scheduler` instances now
1544 have a read-only :attr:`queue` attribute that returns the
1545 contents of the scheduler's queue, represented as a list of
Georg Brandl225163d2008-03-05 07:10:35 +00001546 named tuples with the fields ``(time, priority, action, argument)``.
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001547 (Contributed by Raymond Hettinger XXX check.)
Georg Brandl225163d2008-03-05 07:10:35 +00001548
1549 .. Patch 1861
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001550
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00001551* The :mod:`select` module now has wrapper functions
1552 for the Linux :cfunc:`epoll` and BSD :cfunc:`kqueue` system calls.
1553 Also, a :meth:`modify` method was added to the existing :class:`poll`
1554 objects; ``pollobj.modify(fd, eventmask)`` takes a file descriptor
1555 or file object and an event mask,
1556
1557 (Contributed by XXX.)
1558
1559 .. Patch 1657
1560
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00001561* The :mod:`sets` module has been deprecated; it's better to
1562 use the built-in :class:`set` and :class:`frozenset` types.
1563
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001564* Integrating signal handling with GUI handling event loops
1565 like those used by Tkinter or GTk+ has long been a problem; most
Georg Brandle1b8e9c2008-02-20 19:12:36 +00001566 software ends up polling, waking up every fraction of a second.
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001567 The :mod:`signal` module can now make this more efficient.
1568 Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor
1569 to be used; when a signal is received, a byte is written to that
1570 file descriptor. There's also a C-level function,
1571 :cfunc:`PySignal_SetWakeupFd`, for setting the descriptor.
1572
1573 Event loops will use this by opening a pipe to create two descriptors,
1574 one for reading and one for writing. The writeable descriptor
1575 will be passed to :func:`set_wakeup_fd`, and the readable descriptor
1576 will be added to the list of descriptors monitored by the event loop via
1577 :cfunc:`select` or :cfunc:`poll`.
1578 On receiving a signal, a byte will be written and the main event loop
1579 will be woken up, without the need to poll.
1580
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001581 (Contributed by Adam Olsen.)
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001582
Georg Brandl225163d2008-03-05 07:10:35 +00001583 .. Patch 1583
Andrew M. Kuchling2d60cf72007-12-22 17:27:02 +00001584
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001585 The :func:`siginterrupt` function is now available from Python code,
1586 and allows changing whether signals can interrupt system calls or not.
1587 (Contributed by Ralf Schmitt.)
1588
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001589* The :mod:`smtplib` module now supports SMTP over SSL thanks to the
1590 addition of the :class:`SMTP_SSL` class. This class supports an
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001591 interface identical to the existing :class:`SMTP` class. Both
1592 class constructors also have an optional ``timeout`` parameter
1593 that specifies a timeout for the initial connection attempt, measured in
1594 seconds.
1595
1596 An implementation of the LMTP protocol (:rfc:`2033`) was also added to
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001597 the module. LMTP is used in place of SMTP when transferring e-mail
1598 between agents that don't manage a mail queue.
Andrew M. Kuchlingb4c62952007-09-01 21:18:31 +00001599
1600 (SMTP over SSL contributed by Monty Taylor; timeout parameter
1601 added by Facundo Batista; LMTP implemented by Leif
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001602 Hedstrom.)
1603
Georg Brandlb19be572007-12-29 10:57:00 +00001604 .. Patch #957003
Georg Brandl8ec7f652007-08-15 14:28:01 +00001605
Gregory P. Smith63bfc1d2008-01-17 07:43:20 +00001606* In the :mod:`smtplib` module, SMTP.starttls() now complies with :rfc:`3207`
1607 and forgets any knowledge obtained from the server not obtained from
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001608 the TLS negotiation itself. (Patch contributed by Bill Fenner.)
Gregory P. Smith63bfc1d2008-01-17 07:43:20 +00001609
1610 .. Issue 829951
1611
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001612* The :mod:`socket` module now supports TIPC (http://tipc.sf.net),
1613 a high-performance non-IP-based protocol designed for use in clustered
1614 environments. TIPC addresses are 4- or 5-tuples.
1615 (Contributed by Alberto Bertogli.)
1616
1617 .. Patch #1646
Andrew M. Kuchlingf60b6412008-01-19 16:34:09 +00001618
1619* The base classes in the :mod:`SocketServer` module now support
1620 calling a :meth:`handle_timeout` method after a span of inactivity
1621 specified by the server's :attr:`timeout` attribute. (Contributed
1622 by Michael Pomraning.)
1623
1624 .. Patch #742598
Andrew M. Kuchling1d136bb2008-03-06 01:36:27 +00001625
1626* The :mod:`struct` module now supports the C99 :ctype:`_Bool` type,
1627 using the format character ``'?'``.
1628 (Contributed by David Remahl.)
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001629
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001630* A new variable in the :mod:`sys` module,
Andrew M. Kuchling5d8b3792008-01-14 14:48:43 +00001631 :attr:`float_info`, is an object
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001632 containing information about the platform's floating-point support
Andrew M. Kuchling5d8b3792008-01-14 14:48:43 +00001633 derived from the :file:`float.h` file. Attributes of this object
1634 include
1635 :attr:`mant_dig` (number of digits in the mantissa), :attr:`epsilon`
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001636 (smallest difference between 1.0 and the next largest value
1637 representable), and several others. (Contributed by Christian Heimes.)
1638
Georg Brandlb19be572007-12-29 10:57:00 +00001639 .. Patch 1534
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001640
Andrew M. Kuchling7b1e9172008-01-15 14:38:05 +00001641 Another new variable, :attr:`dont_write_bytecode`, controls whether Python
1642 writes any :file:`.pyc` or :file:`.pyo` files on importing a module.
1643 If this variable is true, the compiled files are not written. The
1644 variable is initially set on start-up by supplying the :option:`-B`
1645 switch to the Python interpreter, or by setting the
1646 :envvar:`PYTHONDONTWRITEBYTECODE` environment variable before
1647 running the interpreter. Python code can subsequently
1648 change the value of this variable to control whether bytecode files
1649 are written or not.
1650 (Contributed by Neal Norwitz and Georg Brandl.)
1651
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001652 Information about the command-line arguments supplied to the Python
1653 interpreter are available as attributes of a ``sys.flags`` named
1654 tuple. For example, the :attr:`verbose` attribute is true if Python
1655 was executed in verbose mode, :attr:`debug` is true in debugging mode, etc.
1656 These attributes are all read-only.
1657 (Contributed by Christian Heimes.)
1658
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001659 It's now possible to determine the current profiler and tracer functions
1660 by calling :func:`sys.getprofile` and :func:`sys.gettrace`.
1661 (Contributed by Georg Brandl.)
1662
1663 .. Patch #1648
1664
Andrew M. Kuchlingde37a8c2007-09-18 01:36:16 +00001665* The :mod:`tarfile` module now supports POSIX.1-2001 (pax) and
1666 POSIX.1-1988 (ustar) format tarfiles, in addition to the GNU tar
1667 format that was already supported. The default format
1668 is GNU tar; specify the ``format`` parameter to open a file
1669 using a different format::
1670
1671 tar = tarfile.open("output.tar", "w", format=tarfile.PAX_FORMAT)
1672
1673 The new ``errors`` parameter lets you specify an error handling
1674 scheme for character conversions: the three standard ways Python can
1675 handle errors ``'strict'``, ``'ignore'``, ``'replace'`` , or the
1676 special value ``'utf-8'``, which replaces bad characters with their
1677 UTF-8 representation. Character conversions occur because the PAX
1678 format supports Unicode filenames, defaulting to UTF-8 encoding.
1679
1680 The :meth:`TarFile.add` method now accepts a ``exclude`` argument that's
1681 a function that can be used to exclude certain filenames from
1682 an archive.
1683 The function must take a filename and return true if the file
1684 should be excluded or false if it should be archived.
1685 The function is applied to both the name initially passed to :meth:`add`
1686 and to the names of files in recursively-added directories.
1687
1688 (All changes contributed by Lars Gustäbel).
1689
1690* An optional ``timeout`` parameter was added to the
1691 :class:`telnetlib.Telnet` class constructor, specifying a timeout
1692 measured in seconds. (Added by Facundo Batista.)
1693
1694* The :class:`tempfile.NamedTemporaryFile` class usually deletes
1695 the temporary file it created when the file is closed. This
1696 behaviour can now be changed by passing ``delete=False`` to the
1697 constructor. (Contributed by Damien Miller.)
1698
Georg Brandlb19be572007-12-29 10:57:00 +00001699 .. Patch #1537850
Andrew M. Kuchlingde37a8c2007-09-18 01:36:16 +00001700
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001701 A new class, :class:`SpooledTemporaryFile`, behaves like
1702 a temporary file but stores its data in memory until a maximum size is
1703 exceeded. On reaching that limit, the contents will be written to
1704 an on-disk temporary file. (Contributed by Dustin J. Mitchell.)
1705
1706 The :class:`NamedTemporaryFile` and :class:`SpooledTemporaryFile` classes
1707 both work as context managers, so you can write
1708 ``with tempfile.NamedTemporaryFile() as tmp: ...``.
1709 (Contributed by Alexander Belopolsky.)
1710
1711 .. Issue #2021
1712
Andrew M. Kuchlingde37a8c2007-09-18 01:36:16 +00001713* The :mod:`test.test_support` module now contains a
1714 :func:`EnvironmentVarGuard`
1715 context manager that supports temporarily changing environment variables and
1716 automatically restores them to their old values.
1717
1718 Another context manager, :class:`TransientResource`, can surround calls
1719 to resources that may or may not be available; it will catch and
1720 ignore a specified list of exceptions. For example,
1721 a network test may ignore certain failures when connecting to an
1722 external web site::
1723
1724 with test_support.TransientResource(IOError, errno=errno.ETIMEDOUT):
1725 f = urllib.urlopen('https://sf.net')
1726 ...
1727
1728 (Contributed by Brett Cannon.)
1729
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001730* The :mod:`textwrap` module can now preserve existing whitespace
1731 at the beginnings and ends of the newly-created lines
1732 by specifying ``drop_whitespace=False``
1733 as an argument::
1734
1735 >>> S = """This sentence has a bunch of extra whitespace."""
1736 >>> print textwrap.fill(S, width=15)
1737 This sentence
1738 has a bunch
1739 of extra
1740 whitespace.
1741 >>> print textwrap.fill(S, drop_whitespace=False, width=15)
1742 This sentence
1743 has a bunch
1744 of extra
1745 whitespace.
1746 >>>
1747
Georg Brandl27504da2008-03-04 07:25:54 +00001748 (Contributed by Dwayne Bailey.)
1749
Georg Brandlb19be572007-12-29 10:57:00 +00001750 .. Patch #1581073
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001751
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001752* The :mod:`timeit` module now accepts callables as well as strings
1753 for the statement being timed and for the setup code.
1754 Two convenience functions were added for creating
1755 :class:`Timer` instances:
1756 ``repeat(stmt, setup, time, repeat, number)`` and
1757 ``timeit(stmt, setup, time, number)`` create an instance and call
1758 the corresponding method. (Contributed by Erik Demaine.)
1759
Georg Brandlb19be572007-12-29 10:57:00 +00001760 .. Patch #1533909
Andrew M. Kuchling6c066dd2007-09-01 20:43:36 +00001761
Andrew M. Kuchlingf10878b2007-09-13 22:49:34 +00001762* An optional ``timeout`` parameter was added to the
1763 :func:`urllib.urlopen` function and the
1764 :class:`urllib.ftpwrapper` class constructor, as well as the
1765 :func:`urllib2.urlopen` function. The parameter specifies a timeout
1766 measured in seconds. For example::
1767
1768 >>> u = urllib2.urlopen("http://slow.example.com", timeout=3)
1769 Traceback (most recent call last):
1770 ...
1771 urllib2.URLError: <urlopen error timed out>
1772 >>>
1773
1774 (Added by Facundo Batista.)
1775
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001776* The XML-RPC classes :class:`SimpleXMLRPCServer` and :class:`DocXMLRPCServer`
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00001777 classes can now be prevented from immediately opening and binding to
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001778 their socket by passing True as the ``bind_and_activate``
1779 constructor parameter. This can be used to modify the instance's
1780 :attr:`allow_reuse_address` attribute before calling the
1781 :meth:`server_bind` and :meth:`server_activate` methods to
1782 open the socket and begin listening for connections.
1783 (Contributed by Peter Parente.)
1784
Georg Brandlb19be572007-12-29 10:57:00 +00001785 .. Patch 1599845
Andrew M. Kuchling99479eb2007-09-25 00:09:42 +00001786
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00001787 :class:`SimpleXMLRPCServer` also has a :attr:`_send_traceback_header`
1788 attribute; if true, the exception and formatted traceback are returned
1789 as HTTP headers "X-Exception" and "X-Traceback". This feature is
1790 for debugging purposes only and should not be used on production servers
1791 because the tracebacks could possibly reveal passwords or other sensitive
1792 information. (Contributed by Alan McIntyre as part of his
1793 project for Google's Summer of Code 2007.)
1794
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001795* The :mod:`zipfile` module's :class:`ZipFile` class now has
1796 :meth:`extract` and :meth:`extractall` methods that will unpack
1797 a single file or all the files in the archive to the current directory, or
1798 to a specified directory::
1799
1800 z = zipfile.ZipFile('python-251.zip')
1801
1802 # Unpack a single file, writing it relative to the /tmp directory.
1803 z.extract('Python/sysmodule.c', '/tmp')
1804
1805 # Unpack all the files in the archive.
1806 z.extractall()
1807
1808 (Contributed by Alan McIntyre.)
Georg Brandle1b8e9c2008-02-20 19:12:36 +00001809
1810 .. Patch 467924
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001811
Georg Brandlb19be572007-12-29 10:57:00 +00001812.. ======================================================================
1813.. whole new modules get described in subsections here
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00001814
1815Improved SSL Support
Andrew M. Kuchling27a44982007-10-20 19:39:35 +00001816--------------------------------------------------
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00001817
1818Bill Janssen made extensive improvements to Python 2.6's support for
1819SSL.
1820
1821XXX use ssl.sslsocket - subclass of socket.socket.
1822
1823XXX Can specify if certificate is required, and obtain certificate info
1824by calling getpeercert method.
1825
1826XXX sslwrap() behaves like socket.ssl
1827
1828XXX Certain features require the OpenSSL package to be installed, notably
1829 the 'openssl' binary.
1830
1831.. seealso::
1832
1833 SSL module documentation.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001834
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00001835
1836.. ======================================================================
1837
1838plistlib: A Property-List Parser
1839--------------------------------------------------
1840
1841A commonly-used format on MacOS X is the ``.plist`` format,
1842which stores basic data types (numbers, strings, lists,
1843and dictionaries) and serializes them into an XML-based format.
1844(It's a lot like the XML-RPC serialization of data types.)
1845
1846Despite being primarily used on MacOS X, the format
1847has nothing Mac-specific about it and the Python implementation works
1848on any platform that Python supports, so the :mod:`plistlib` module
1849has been promoted to the standard library.
1850
1851Using the module is simple::
1852
1853 import sys
1854 import plistlib
1855 import datetime
1856
1857 # Create data structure
1858 data_struct = dict(lastAccessed=datetime.datetime.now(),
1859 version=1,
1860 categories=('Personal', 'Shared', 'Private'))
1861
1862 # Create string containing XML.
1863 plist_str = plistlib.writePlistToString(data_struct)
1864 new_struct = plistlib.readPlistFromString(plist_str)
1865 print data_struct
1866 print new_struct
1867
1868 # Write data structure to a file and read it back.
1869 plistlib.writePlist(data_struct, '/tmp/customizations.plist')
1870 new_struct = plistlib.readPlist('/tmp/customizations.plist')
1871
1872 # read/writePlist accepts file-like objects as well as paths.
1873 plistlib.writePlist(data_struct, sys.stdout)
1874
1875
Georg Brandlb19be572007-12-29 10:57:00 +00001876.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001877
1878
1879Build and C API Changes
1880=======================
1881
1882Changes to Python's build process and to the C API include:
1883
Andrew M. Kuchlingf7b462f2007-11-23 13:37:39 +00001884* Python 2.6 can be built with Microsoft Visual Studio 2008.
1885 See the :file:`PCbuild9` directory for the build files.
1886 (Implemented by Christian Heimes.)
1887
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00001888* Python now can only be compiled with C89 compilers (after 19
1889 years!). This means that the Python source tree can now drop its
1890 own implementations of :cfunc:`memmove` and :cfunc:`strerror`, which
1891 are in the C89 standard library.
1892
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001893* The BerkeleyDB module now has a C API object, available as
1894 ``bsddb.db.api``. This object can be used by other C extensions
1895 that wish to use the :mod:`bsddb` module for their own purposes.
1896 (Contributed by Duncan Grisby.)
1897
Georg Brandlb19be572007-12-29 10:57:00 +00001898 .. Patch 1551895
Andrew M. Kuchling6edff592007-10-16 22:58:03 +00001899
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001900* Several functions return information about the platform's
1901 floating-point support. :cfunc:`PyFloat_GetMax` returns
1902 the maximum representable floating point value,
1903 and :cfunc:`PyFloat_GetMin` returns the minimum
1904 positive value. :cfunc:`PyFloat_GetInfo` returns a dictionary
1905 containing more information from the :file:`float.h` file, such as
1906 ``"mant_dig"`` (number of digits in the mantissa), ``"epsilon"``
1907 (smallest difference between 1.0 and the next largest value
1908 representable), and several others.
Christian Heimesd0d7d872008-01-04 02:03:25 +00001909 (Contributed by Christian Heimes.)
Andrew M. Kuchlingd5865592007-12-19 02:02:04 +00001910
Georg Brandlb19be572007-12-29 10:57:00 +00001911 .. Issue 1534
Georg Brandl8ec7f652007-08-15 14:28:01 +00001912
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001913* Python's C API now includes two functions for case-insensitive string
Georg Brandl907a7202008-02-22 12:31:45 +00001914 comparisons, ``PyOS_stricmp(char*, char*)``
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001915 and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``.
Christian Heimesd0d7d872008-01-04 02:03:25 +00001916 (Contributed by Christian Heimes.)
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001917
1918 .. Issue 1635
1919
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001920* Some macros were renamed in both 3.0 and 2.6 to make it clearer that
1921 they are macros,
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001922 not functions. :cmacro:`Py_Size()` became :cmacro:`Py_SIZE()`,
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001923 :cmacro:`Py_Type()` became :cmacro:`Py_TYPE()`, and
Andrew M. Kuchling3710a132008-03-05 00:44:41 +00001924 :cmacro:`Py_Refcnt()` became :cmacro:`Py_REFCNT()`.
1925 The mixed-case macros are still available
1926 in Python 2.6 for backward compatibility.
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001927
Andrew M. Kuchling3b554702008-01-04 02:31:40 +00001928 .. Issue 1629
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001929
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00001930* Distutils now places C extensions it builds in a
1931 different directory when running on a debug version of Python.
1932 (Contributed by Collin Winter.)
1933
1934 .. Patch 1530959
1935
Andrew M. Kuchling378586a2008-03-04 01:50:32 +00001936* Several basic data types, such as integers and strings, maintain
1937 internal free lists of objects that can be re-used. The data
1938 structures for these free lists now follow a naming convention: the
1939 variable is always named ``free_list``, the counter is always named
1940 ``numfree``, and a macro :cmacro:`Py<typename>_MAXFREELIST` is
1941 always defined.
Andrew M. Kuchling0c3f1682008-01-26 13:50:51 +00001942
Georg Brandlb19be572007-12-29 10:57:00 +00001943.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001944
1945
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00001946Port-Specific Changes: Windows
1947-----------------------------------
1948
1949* The :mod:`msvcrt` module now supports
1950 both the normal and wide char variants of the console I/O
1951 API. The :func:`getwch` function reads a keypress and returns a Unicode
1952 value, as does the :func:`getwche` function. The :func:`putwch` function
1953 takes a Unicode character and writes it to the console.
Christian Heimesff6cc6b2008-01-17 23:01:44 +00001954 (Contributed by Christian Heimes.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001955
Andrew M. Kuchlingd2219562008-01-17 12:00:15 +00001956* :func:`os.path.expandvars` will now expand environment variables
1957 in the form "%var%", and "~user" will be expanded into the
1958 user's home directory path. (Contributed by Josiah Carlson.)
1959
1960* The :mod:`socket` module's socket objects now have an
1961 :meth:`ioctl` method that provides a limited interface to the
1962 :cfunc:`WSAIoctl` system interface.
1963
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001964* The :mod:`_winreg` module now has a function,
1965 :func:`ExpandEnvironmentStrings`,
1966 that expands environment variable references such as ``%NAME%``
1967 in an input string. The handle objects provided by this
1968 module now support the context protocol, so they can be used
Christian Heimesff6cc6b2008-01-17 23:01:44 +00001969 in :keyword:`with` statements. (Contributed by Christian Heimes.)
1970
1971* The new default compiler on Windows is Visual Studio 2008 (VS 9.0). The
1972 build directories for Visual Studio 2003 (VS7.1) and 2005 (VS8.0)
1973 were moved into the PC/ directory. The new PCbuild directory supports
1974 cross compilation for X64, debug builds and Profile Guided Optimization
1975 (PGO). PGO builds are roughly 10% faster than normal builds.
1976 (Contributed by Christian Heimes with help from Amaury Forgeot d'Arc and
1977 Martin von Loewis.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001978
Georg Brandlb19be572007-12-29 10:57:00 +00001979.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00001980
1981
1982.. _section-other:
1983
1984Other Changes and Fixes
1985=======================
1986
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001987As usual, there were a bunch of other improvements and bugfixes
1988scattered throughout the source tree. A search through the change
1989logs finds there were XXX patches applied and YYY bugs fixed between
1990Python 2.5 and 2.6. Both figures are likely to be underestimates.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001991
1992Some of the more notable changes are:
1993
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00001994* It's now possible to prevent Python from writing any :file:`.pyc`
1995 or :file:`.pyo` files by either supplying the :option:`-B` switch
1996 or setting the :envvar:`PYTHONDONTWRITEBYTECODE` environment variable
1997 to any non-empty string when running the Python interpreter. These
Georg Brandlca9c6e42008-01-15 06:58:15 +00001998 are also used to set the :data:`sys.dont_write_bytecode` attribute;
1999 Python code can change this variable to control whether bytecode
2000 files are subsequently written.
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002001 (Contributed by Neal Norwitz and Georg Brandl.)
Georg Brandl8ec7f652007-08-15 14:28:01 +00002002
Georg Brandlb19be572007-12-29 10:57:00 +00002003.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00002004
2005
2006Porting to Python 2.6
2007=====================
2008
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00002009This section lists previously described changes and other bugfixes
2010that may require changes to your code:
Georg Brandl8ec7f652007-08-15 14:28:01 +00002011
Andrew M. Kuchling73835bd2008-01-04 18:24:41 +00002012* The :meth:`__init__` method of :class:`collections.deque`
Andrew M. Kuchling654ede72008-01-04 01:16:12 +00002013 now clears any existing contents of the deque
2014 before adding elements from the iterable. This change makes the
2015 behavior match that of ``list.__init__()``.
2016
Andrew M. Kuchling2e463552008-01-15 01:47:32 +00002017* The :class:`Decimal` constructor now accepts leading and trailing
2018 whitespace when passed a string. Previously it would raise an
2019 :exc:`InvalidOperation` exception. On the other hand, the
2020 :meth:`create_decimal` method of :class:`Context` objects now
2021 explicitly disallows extra whitespace, raising a
2022 :exc:`ConversionSyntax` exception.
2023
2024* Due to an implementation accident, if you passed a file path to
2025 the built-in :func:`__import__` function, it would actually import
2026 the specified file. This was never intended to work, however, and
2027 the implementation now explicitly checks for this case and raises
2028 an :exc:`ImportError`.
2029
Andrew M. Kuchlinge34d2892007-10-20 19:35:18 +00002030* The :mod:`socket` module exception :exc:`socket.error` now inherits
2031 from :exc:`IOError`. Previously it wasn't a subclass of
2032 :exc:`StandardError` but now it is, through :exc:`IOError`.
2033 (Implemented by Gregory P. Smith.)
2034
Georg Brandlb19be572007-12-29 10:57:00 +00002035 .. Issue 1706815
Georg Brandl8ec7f652007-08-15 14:28:01 +00002036
Andrew M. Kuchling085f75a2008-02-23 16:23:05 +00002037* The :mod:`xmlrpclib` module no longer automatically converts
2038 :class:`datetime.date` and :class:`datetime.time` to the
2039 :class:`xmlrpclib.DateTime` type; the conversion semantics were
2040 not necessarily correct for all applications. Code using
2041 :mod:`xmlrpclib` should convert :class:`date` and :class:`time`
2042 instances.
2043
2044 .. Issue 1330538
2045
Andrew M. Kuchling7c29aae2008-03-26 00:30:02 +00002046* (3.0-warning mode) The :class:`Exception` class now warns
2047 when accessed using slicing or index access; having
2048 :class:`Exception` behave like a tuple is being phased out.
2049
2050* (3.0-warning mode) inequality comparisons between two dictionaries
Andrew M. Kuchling9cf2f5d2008-03-20 22:49:26 +00002051 or two objects that don't implement comparison methods are reported
2052 as warnings. ``dict1 == dict2`` still works, but ``dict1 < dict2``
2053 is being phased out.
2054
2055 Comparisons between cells, which are an implementation detail of Python's
2056 scoping rules, also cause warnings because such comparisons are forbidden
2057 entirely in 3.0.
2058
Georg Brandlb19be572007-12-29 10:57:00 +00002059.. ======================================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00002060
2061
2062.. _acks:
2063
2064Acknowledgements
2065================
2066
2067The author would like to thank the following people for offering suggestions,
2068corrections and assistance with various drafts of this article: .
2069