.. % XXX add general comment about Python 3.0 features in 2.6
-.. % XXX mention -3 switch
+The development cycle for Python 2.6 also saw the release of the first
+alphas of Python 3.0, and the development of 3.0 has influenced
+a number of features in 2.6.
+
+Python 3.0 is a far-ranging redesign of Python that breaks
+compatibility with the 2.x series. This means that existing Python
+code will need a certain amount of conversion in order to run on
+Python 3.0. However, not all the changes in 3.0 necessarily break
+compatibility. In cases where new features won't cause existing code
+to break, they've been backported to 2.6 and are described in this
+document in the appropriate place. Some of the 3.0-derived features
+are:
+
+* A :meth:`__complex__` method for converting objects to a complex number.
+* Alternate syntax for catching exceptions: ``except TypeError as exc``.
+* The addition of :func:`functools.reduce` as a synonym for the built-in
+ :func:`reduce` function.
A new command-line switch, :option:`-3`, enables warnings
about features that will be removed in Python 3.0. You can run code
Here are all of the changes that Python 2.6 makes to the core Python language.
-* Changes to the :class:`Exception` interface
- as dictated by :pep:`352` continue to be made. For 2.6,
- the :attr:`message` attribute is being deprecated in favor of the
- :attr:`args` attribute.
-
* When calling a function using the ``**`` syntax to provide keyword
arguments, you are no longer required to use a Python dictionary;
any mapping will now work::
.. % Patch 1686487
+* The built-in types now have improved support for extended slicing syntax,
+ where various combinations of ``(start, stop, step)`` are supplied.
+ Previously, the support was partial and certain corner cases wouldn't work.
+ (Implemented by Thomas Wouters.)
+
+ .. % Revision 57619
+
+* C functions and methods that use
+ :cfunc:`PyComplex_AsCComplex` will now accept arguments that
+ have a :meth:`__complex__` method. In particular, the functions in the
+ :mod:`cmath` module will now accept objects with this method.
+ This is a backport of a Python 3.0 change.
+ (Contributed by Mark Dickinson.)
+
+ .. % Patch #1675423
+
+* Changes to the :class:`Exception` interface
+ as dictated by :pep:`352` continue to be made. For 2.6,
+ the :attr:`message` attribute is being deprecated in favor of the
+ :attr:`args` attribute.
+
* The :func:`compile` built-in function now accepts keyword arguments
- as well as positional parameters. (Contributed by XXX.)
+ as well as positional parameters. (Contributed by Thomas Wouters.)
.. % Patch 1444529
fieldnames)` is a factory function that creates subclasses of the standard tuple
whose fields are accessible by name as well as index. For example::
- var_type = collections.NamedTuple('variable',
- 'id name type size')
- var = var_type(1, 'frequency', 'int', 4)
-
- print var[0], var.id # Equivalent
- print var[2], var.type # Equivalent
+ >>> var_type = collections.NamedTuple('variable',
+ ... 'id name type size')
+ # Names are separated by spaces or commas.
+ # 'id, name, type, size' would also work.
+ >>> var_type.__fields__
+ ('id', 'name', 'type', 'size')
+
+ >>> var = var_type(1, 'frequency', 'int', 4)
+ >>> print var[0], var.id # Equivalent
+ 1 1
+ >>> print var[2], var.type # Equivalent
+ int int
+ >>> v2 = var.__replace__('name', 'amplitude')
+ >>> v2
+ variable(id=1, name='amplitude', type='int', size=4)
(Contributed by Raymond Hettinger.)
+* The :mod:`ctypes` module now supports a :class:`c_bool` datatype
+ that represents the C99 ``bool`` type. (Contributed by David Remahl.)
+
+ .. % Patch 1649190
+
* A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes
- the display characters for a certain number of characters on a single line. ::
+ the display characters for a certain number of characters on a single line.
+ ::
# Boldface text starting at y=0,x=21
# and affecting the rest of the line.
(Contributed by Fabian Kreutz.)
+* The :mod:`decimal` module was updated to version 1.66 of
+ `the General Decimal Specification <http://www2.hursley.ibm.com/decimal/decarith.html>`__. New features
+ include some methods for some basic mathematical functions such as
+ :meth:`exp` and :meth:`log10`::
+
+ >>> Decimal(1).exp()
+ Decimal("2.718281828459045235360287471")
+ >>> Decimal("2.7182818").ln()
+ Decimal("0.9999999895305022877376682436")
+ >>> Decimal(1000).log10()
+ Decimal("3")
+
+ (Implemented by Facundo Batista and Mark Dickinson.)
+
* An optional ``timeout`` parameter was added to the
:class:`ftplib.FTP` class constructor as well as the :meth:`connect`
method, specifying a timeout measured in seconds. (Added by Facundo
Batista.)
+* The :func:`reduce` built-in function is also available in the
+ :mod:`functools` module. In Python 3.0, the built-in is dropped and it's
+ only available from :mod:`functools`; currently there are no plans
+ to drop the built-in in the 2.x series. (Patched by
+ Christian Heimes.)
+
+ .. % Patch 1739906
+
* The :func:`glob.glob` function can now return Unicode filenames if
a Unicode path was used and Unicode filenames are matched within the directory.
.. % Patch #1490190
-* The :func:`os.walk` function now has a "followlinks" parameter. If
+* The :func:`os.walk` function now has a ``followlinks`` parameter. If
set to True, it will follow symlinks pointing to directories and
visit the directory's contents. For backward compatibility, the
parameter's default value is false. Note that the function can fall
On Windows, :func:`os.path.expandvars` will now expand environment variables
in the form "%var%", and "~user" will be expanded into the
- user's home directory path. (Contributed by XXX.)
+ user's home directory path. (Contributed by Josiah Carlson.)
.. % Patch 957650
+* The Python debugger provided by the :mod:`pdb` module
+ gained a new command: "run" restarts the Python program being debugged,
+ and can optionally take new command-line arguments for the program.
+ (Contributed by Rocky Bernstein.)
+
+ .. % Patch #1393667
+
* New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags`
are wrappers for the corresponding system calls (where they're available).
Constants for the flag values are defined in the :mod:`stat` module; some
(Added by Facundo Batista.)
+* The XML-RPC classes :class:`SimpleXMLRPCServer` and :class:`DocXMLRPCServer`
+ classes can now be preventing from immediately opening and binding to
+ their socket by passing True as the ``bind_and_activate``
+ constructor parameter. This can be used to modify the instance's
+ :attr:`allow_reuse_address` attribute before calling the
+ :meth:`server_bind` and :meth:`server_activate` methods to
+ open the socket and begin listening for connections.
+ (Contributed by Peter Parente.)
+
+ .. % Patch 1599845
+
.. % ======================================================================
.. % whole new modules get described in \subsections here
Changes to Python's build process and to the C API include:
-* Detailed changes are listed here.
+* Detailed changes will be listed here.
.. % ======================================================================
Some of the more notable changes are:
-* Details go here.
+* Details will go here.
.. % ======================================================================