Edit the library section, rearranging items to flow better and making lots of edits

This commit is contained in:
Andrew M. Kuchling 2008-08-31 14:29:31 +00:00
parent 4907d27c1f
commit fa881f2bd4

View file

@ -1585,50 +1585,7 @@ Some smaller changes made to the core Python language are:
>>> b.hex() >>> b.hex()
'0x1.5555555555555p-2' '0x1.5555555555555p-2'
* Several new functions were added to the :mod:`math` module: * A numerical nicety: when creating a complex number from two floats
* :func:`~math.isinf` and :func:`~math.isnan` determine whether a given float
is a (positive or negative) infinity or a NaN (Not a Number), respectively.
* :func:`~math.copysign` copies the sign bit of an IEEE 754 number,
returning the absolute value of *x* combined with the sign bit of
*y*. For example, ``math.copysign(1, -0.0)`` returns -1.0.
(Contributed by Christian Heimes.)
* :func:`~math.factorial` computes the factorial of a number.
(Contributed by Raymond Hettinger; :issue:`2138`.)
* :func:`~math.fsum` adds up the stream of numbers from an iterable,
and is careful to avoid loss of precision through using partial sums.
(Contributed by Jean Brouwers, Raymond Hettinger, and Mark Dickinson;
:issue:`2819`.)
* :func:`~math.acosh`, :func:`~math.asinh`
and :func:`~math.atanh` compute the inverse hyperbolic functions.
* The function :func:`~math.log1p` returns the natural logarithm of *1+x*
(base *e*).
There's also a new :func:`trunc` built-in function from the
backport of `PEP 3141's type hierarchy for numbers <#pep-3141>`__.
* The :mod:`math` module has been improved to give more consistent
behaviour across platforms, especially with respect to handling of
floating-point exceptions and IEEE 754 special values.
Whenever possible, the module follows the recommendations of the C99
standard about 754's special values. For example, ``sqrt(-1.)``
should now give a :exc:`ValueError` across almost all platforms,
while ``sqrt(float('NaN'))`` should return a NaN on all IEEE 754
platforms. Where Annex 'F' of the C99 standard recommends signaling
'divide-by-zero' or 'invalid', Python will raise :exc:`ValueError`.
Where Annex 'F' of the C99 standard recommends signaling 'overflow',
Python will raise :exc:`OverflowError`. (See :issue:`711019` and
:issue:`1640`.)
(Contributed by Christian Heimes and Mark Dickinson.)
* Another numerical nicety: when creating a complex number from two floats
on systems that support signed zeros (-0 and +0), the on systems that support signed zeros (-0 and +0), the
:func:`complex` constructor will now preserve the sign :func:`complex` constructor will now preserve the sign
of the zero. (Fixed by Mark T. Dickinson; :issue:`1507`.) of the zero. (Fixed by Mark T. Dickinson; :issue:`1507`.)
@ -1737,10 +1694,10 @@ Optimizations
* To reduce memory usage, the garbage collector will now clear internal * To reduce memory usage, the garbage collector will now clear internal
free lists when garbage-collecting the highest generation of objects. free lists when garbage-collecting the highest generation of objects.
This may return memory to the OS sooner. This may return memory to the operating system sooner.
The net result of the 2.6 optimizations is that Python 2.6 runs the pystone The net result of the 2.6 optimizations is that Python 2.6 runs the pystone
benchmark around XX% faster than Python 2.5. benchmark around XXX% faster than Python 2.5.
.. ====================================================================== .. ======================================================================
@ -1751,25 +1708,24 @@ Interpreter Changes
Two command-line options have been reserved for use by other Python Two command-line options have been reserved for use by other Python
implementations. The :option:`-J` switch has been reserved for use by implementations. The :option:`-J` switch has been reserved for use by
Jython for Jython-specific options, such as ones that are passed to Jython for Jython-specific options, such as switches that are passed to
the underlying JVM. :option:`-X` has been reserved for options the underlying JVM. :option:`-X` has been reserved for options
specific to a particular implementation of Python such as CPython, specific to a particular implementation of Python such as CPython,
Jython, or IronPython. If either option is used with Python 2.6, the Jython, or IronPython. If either option is used with Python 2.6, the
interpreter will report that the option isn't currently used. interpreter will report that the option isn't currently used.
It's now possible to prevent Python from writing :file:`.pyc` or Python can now be prevented from writing :file:`.pyc` or :file:`.pyo`
:file:`.pyo` files on importing a module by supplying the :option:`-B` files by supplying the :option:`-B` switch to the Python interpreter,
switch to the Python interpreter, or by setting the or by setting the :envvar:`PYTHONDONTWRITEBYTECODE` environment
:envvar:`PYTHONDONTWRITEBYTECODE` environment variable before running variable before running the interpreter. This setting is available to
the interpreter. This setting is available to Python programs as the Python programs as the ``sys.dont_write_bytecode`` variable, and
``sys.dont_write_bytecode`` variable, and can be changed by Python Python code can change the value to modify the interpreter's
code to modify the interpreter's behaviour. (Contributed by Neal behaviour. (Contributed by Neal Norwitz and Georg Brandl.)
Norwitz and Georg Brandl.)
The encoding used for standard input, output, and standard error can The encoding used for standard input, output, and standard error can
be specified by setting the :envvar:`PYTHONIOENCODING` environment be specified by setting the :envvar:`PYTHONIOENCODING` environment
variable before running the interpreter. The value should be a string variable before running the interpreter. The value should be a string
in the form ``*encoding*`` or ``*encoding*:*errorhandler*``. in the form ``<encoding>`` or ``<encoding>:<errorhandler>``.
The *encoding* part specifies the encoding's name, e.g. ``utf-8`` or The *encoding* part specifies the encoding's name, e.g. ``utf-8`` or
``latin-1``; the optional *errorhandler* part specifies ``latin-1``; the optional *errorhandler* part specifies
what to do with characters that can't be handled by the encoding, what to do with characters that can't be handled by the encoding,
@ -1781,14 +1737,14 @@ by Martin von Loewis.)
New, Improved, and Deprecated Modules New, Improved, and Deprecated Modules
===================================== =====================================
As usual, Python's standard library received a number of enhancements and bug As in every release, Python's standard library received a number of
fixes. Here's a partial list of the most notable changes, sorted alphabetically enhancements and bug fixes. Here's a partial list of the most notable
by module name. Consult the :file:`Misc/NEWS` file in the source tree for a more changes, sorted alphabetically by module name. Consult the
complete list of changes, or look through the Subversion logs for all the :file:`Misc/NEWS` file in the source tree for a more complete list of
details. changes, or look through the Subversion logs for all the details.
* (3.0-warning mode) Python 3.0 will feature a reorganized standard * (3.0-warning mode) Python 3.0 will feature a reorganized standard
library; many outdated modules are being dropped. library that will drop many outdated modules and rename others.
Python 2.6 running in 3.0-warning mode will warn about these modules Python 2.6 running in 3.0-warning mode will warn about these modules
when they are imported. when they are imported.
@ -1815,99 +1771,43 @@ details.
:mod:`pure`, :mod:`pure`,
:mod:`statvfs`, :mod:`statvfs`,
:mod:`sunaudiodev`, :mod:`sunaudiodev`,
:mod:`test.testall`, :mod:`test.testall`, and
:mod:`toaiff`. :mod:`toaiff`.
Various MacOS modules have been removed:
:mod:`_builtinSuites`,
:mod:`aepack`,
:mod:`aetools`,
:mod:`aetypes`,
:mod:`applesingle`,
:mod:`appletrawmain`,
:mod:`appletrunner`,
:mod:`argvemulator`,
:mod:`Audio_mac`,
:mod:`autoGIL`,
:mod:`Carbon`,
:mod:`cfmfile`,
:mod:`CodeWarrior`,
:mod:`ColorPicker`,
:mod:`EasyDialogs`,
:mod:`Explorer`,
:mod:`Finder`,
:mod:`FrameWork`,
:mod:`findertools`,
:mod:`ic`,
:mod:`icglue`,
:mod:`icopen`,
:mod:`macerrors`,
:mod:`MacOS`,
:mod:`macostools`,
:mod:`macresource`,
:mod:`MiniAEFrame`,
:mod:`Nav`,
:mod:`Netscape`,
:mod:`OSATerminology`,
:mod:`pimp`,
:mod:`PixMapWrapper`,
:mod:`StdSuites`,
:mod:`SystemEvents`,
:mod:`Terminal`,
:mod:`terminalcommand`.
A number of old IRIX-specific modules were deprecated:
:mod:`al` and :mod:`AL`,
:mod:`cd`,
:mod:`cddb`,
:mod:`cdplayer`,
:mod:`CL` and :mod:`cl`,
:mod:`DEVICE`,
:mod:`ERRNO`,
:mod:`FILE`,
:mod:`FL` and :mod:`fl`,
:mod:`flp`,
:mod:`fm`,
:mod:`GET`,
:mod:`GLWS`,
:mod:`GL` and :mod:`gl`,
:mod:`IN`,
:mod:`IOCTL`,
:mod:`jpeg`,
:mod:`panelparser`,
:mod:`readcd`,
:mod:`SV` and :mod:`sv`,
:mod:`torgb`,
:mod:`videoreader`,
:mod:`WAIT`.
* The :mod:`asyncore` and :mod:`asynchat` modules are * The :mod:`asyncore` and :mod:`asynchat` modules are
being actively maintained again, and a number of patches and bugfixes being actively maintained again, and a number of patches and bugfixes
were applied. (Maintained by Josiah Carlson; see :issue:`1736190` for were applied. (Maintained by Josiah Carlson; see :issue:`1736190` for
one patch.) one patch.)
.. |uacute| unicode:: 0xA9
* The :mod:`bsddb` module also has a new maintainer, Jes|uacute|s Cea,
and the package is now available as a standalone package.
The web page for the package is
`www.jcea.es/programacion/pybsddb.htm <http://www.jcea.es/programacion/pybsddb.htm>`__.
* The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol * The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol
available, instead of restricting itself to protocol 1. available, instead of restricting itself to protocol 1.
(Contributed by W. Barnes; :issue:`1551443`.) (Contributed by W. Barnes; :issue:`1551443`.)
* The :mod:`cgi` module will now read variables from the query string of an * The :mod:`cgi` module will now read variables from the query string
HTTP POST request. This makes it possible to use form actions with of an HTTP POST request. This makes it possible to use form actions
URLs such as "/cgi-bin/add.py?category=1". (Contributed by with URLs that include query strings such as
Alexandre Fiori and Nubis; :issue:`1817`.) "/cgi-bin/add.py?category=1". (Contributed by Alexandre Fiori and
Nubis; :issue:`1817`.)
* The :mod:`cmath` module underwent an extensive set of revisions,
thanks to Mark Dickinson and Christian Heimes, that added some new
features and greatly improved the accuracy of the computations.
* The :mod:`cmath` module underwent extensive revision,
contributed by Mark Dickinson and Christian Heimes.
Five new functions were added: Five new functions were added:
* :func:`polar` converts a complex number to polar form, returning * :func:`polar` converts a complex number to polar form, returning
the modulus and argument of that complex number. the modulus and argument of the complex number.
* :func:`rect` does the opposite, turning a (modulus, argument) pair * :func:`rect` does the opposite, turning a modulus, argument pair
back into the corresponding complex number. back into the corresponding complex number.
* :func:`phase` returns the phase or argument of a complex number. * :func:`phase` returns the argument (also called the angle) of a complex
number.
* :func:`isnan` returns True if either * :func:`isnan` returns True if either
the real or imaginary part of its argument is a NaN. the real or imaginary part of its argument is a NaN.
@ -1951,8 +1851,8 @@ details.
>>> v2 >>> v2
variable(id=1, name='amplitude', type='int', size=4) variable(id=1, name='amplitude', type='int', size=4)
Where the new :class:`namedtuple` type proved suitable, the standard Several places in the standard library that returned tuples have
library has been modified to return them. For example, been modified to return :class:`namedtuple` instances. For example,
the :meth:`Decimal.as_tuple` method now returns a named tuple with the :meth:`Decimal.as_tuple` method now returns a named tuple with
:attr:`sign`, :attr:`digits`, and :attr:`exponent` fields. :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields.
@ -1979,10 +1879,9 @@ details.
(Contributed by Raymond Hettinger.) (Contributed by Raymond Hettinger.)
* A new method in the :mod:`curses` module: for a window, :meth:`chgat` changes * A new window method in the :mod:`curses` module,
the display characters for a certain number of characters on a single line. :meth:`chgat`, changes the display attributes for a certain number of
(Contributed by Fabian Kreutz.) characters on a single line. (Contributed by Fabian Kreutz.) ::
::
# Boldface text starting at y=0,x=21 # Boldface text starting at y=0,x=21
# and affecting the rest of the line. # and affecting the rest of the line.
@ -2017,32 +1916,29 @@ details.
support added by Raymond Hettinger.) support added by Raymond Hettinger.)
* The :mod:`difflib` module's :class:`SequenceMatcher` class * The :mod:`difflib` module's :class:`SequenceMatcher` class
now returns named tuples representing matches. now returns named tuples representing matches,
In addition to behaving like tuples, the returned values with :attr:`a`, :attr:`b`, and :attr:`size` attributes.
also have :attr:`a`, :attr:`b`, and :attr:`size` attributes.
(Contributed by Raymond Hettinger.) (Contributed by Raymond Hettinger.)
* An optional ``timeout`` parameter was added to the * An optional ``timeout`` parameter, specifying a timeout measured in
:class:`ftplib.FTP` class constructor as well as the :meth:`connect` seconds, was added to the :class:`ftplib.FTP` class constructor as
method, specifying a timeout measured in seconds. (Added by Facundo well as the :meth:`connect` method. (Added by Facundo Batista.)
Batista.) Also, the :class:`FTP` class's Also, the :class:`FTP` class's :meth:`storbinary` and
:meth:`storbinary` and :meth:`storlines` :meth:`storlines` now take an optional *callback* parameter that
now take an optional *callback* parameter that will be called with will be called with each block of data after the data has been sent.
each block of data after the data has been sent.
(Contributed by Phil Schwartz; :issue:`1221598`.) (Contributed by Phil Schwartz; :issue:`1221598`.)
* The :func:`reduce` built-in function is also available in the * 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 :mod:`functools` module. In Python 3.0, the built-in has been
only available from :mod:`functools`; currently there are no plans dropped and :func:`reduce` is only available from :mod:`functools`;
to drop the built-in in the 2.x series. (Patched by currently there are no plans to drop the built-in in the 2.x series.
Christian Heimes; :issue:`1739906`.) (Patched by Christian Heimes; :issue:`1739906`.)
* When possible, the :mod:`getpass` module will now use * When possible, the :mod:`getpass` module will now use
:file:`/dev/tty` (when available) to print :file:`/dev/tty` to print a prompt message and read the password,
a prompting message and read the password, falling back to using falling back to standard error and standard input. If the
standard error and standard input. If the password may be echoed to password may be echoed to the terminal, a warning is printed before
the terminal, a warning is printed before the prompt is displayed. the prompt is displayed. (Contributed by Gregory P. Smith.)
(Contributed by Gregory P. Smith.)
* The :func:`glob.glob` function can now return Unicode filenames if * The :func:`glob.glob` function can now return Unicode filenames if
a Unicode path was used and Unicode filenames are matched within the a Unicode path was used and Unicode filenames are matched within the
@ -2050,9 +1946,9 @@ details.
* The :mod:`gopherlib` module has been removed. * The :mod:`gopherlib` module has been removed.
* A new function in the :mod:`heapq` module: ``merge(iter1, iter2, ...)`` * A new function in the :mod:`heapq` module, ``merge(iter1, iter2, ...)``,
takes any number of iterables that return data *in sorted takes any number of iterables returning data in sorted
order*, and returns a new iterator that returns the contents of all order, and returns a new iterator that returns the contents of all
the iterators, also in sorted order. For example:: the iterators, also in sorted order. For example::
heapq.merge([1, 3, 5, 9], [2, 8, 16]) -> heapq.merge([1, 3, 5, 9], [2, 8, 16]) ->
@ -2065,14 +1961,14 @@ details.
:mod:`heapq` is now implemented to only use less-than comparison, :mod:`heapq` is now implemented to only use less-than comparison,
instead of the less-than-or-equal comparison it previously used. instead of the less-than-or-equal comparison it previously used.
This makes :mod:`heapq`'s usage of a type match that of the This makes :mod:`heapq`'s usage of a type match the
:meth:`list.sort` method. :meth:`list.sort` method.
(Contributed by Raymond Hettinger.) (Contributed by Raymond Hettinger.)
* An optional ``timeout`` parameter was added to the * An optional ``timeout`` parameter, specifying a timeout measured in
:class:`httplib.HTTPConnection` and :class:`HTTPSConnection` seconds, was added to the :class:`httplib.HTTPConnection` and
class constructors, specifying a timeout measured in seconds. :class:`HTTPSConnection` class constructors. (Added by Facundo
(Added by Facundo Batista.) Batista.)
* Most of the :mod:`inspect` module's functions, such as * Most of the :mod:`inspect` module's functions, such as
:func:`getmoduleinfo` and :func:`getargs`, now return named tuples. :func:`getmoduleinfo` and :func:`getargs`, now return named tuples.
@ -2157,7 +2053,7 @@ details.
* The :mod:`logging` module's :class:`FileHandler` class * The :mod:`logging` module's :class:`FileHandler` class
and its subclasses :class:`WatchedFileHandler`, :class:`RotatingFileHandler`, and its subclasses :class:`WatchedFileHandler`, :class:`RotatingFileHandler`,
and :class:`TimedRotatingFileHandler` now and :class:`TimedRotatingFileHandler` now
have an optional *delay* parameter to its constructor. If *delay* have an optional *delay* parameter to their constructors. If *delay*
is true, opening of the log file is deferred until the first is true, opening of the log file is deferred until the first
:meth:`emit` call is made. (Contributed by Vinay Sajip.) :meth:`emit` call is made. (Contributed by Vinay Sajip.)
@ -2166,15 +2062,55 @@ details.
in determining when midnight occurs and in generating filenames; in determining when midnight occurs and in generating filenames;
otherwise local time will be used. otherwise local time will be used.
* The :mod:`macfs` module has been removed. This in turn required the * Several new functions were added to the :mod:`math` module:
:func:`macostools.touched` function to be removed because it depended on the
:mod:`macfs` module. (:issue:`1490190`)
* :class:`mmap` objects now have a :meth:`rfind` method that finds * :func:`~math.isinf` and :func:`~math.isnan` determine whether a given float
a substring, beginning at the end of the string and searching is a (positive or negative) infinity or a NaN (Not a Number), respectively.
backwards. The :meth:`find` method
also gained an *end* parameter containing the index at which to stop * :func:`~math.copysign` copies the sign bit of an IEEE 754 number,
the forward search. returning the absolute value of *x* combined with the sign bit of
*y*. For example, ``math.copysign(1, -0.0)`` returns -1.0.
(Contributed by Christian Heimes.)
* :func:`~math.factorial` computes the factorial of a number.
(Contributed by Raymond Hettinger; :issue:`2138`.)
* :func:`~math.fsum` adds up the stream of numbers from an iterable,
and is careful to avoid loss of precision through using partial sums.
(Contributed by Jean Brouwers, Raymond Hettinger, and Mark Dickinson;
:issue:`2819`.)
* :func:`~math.acosh`, :func:`~math.asinh`
and :func:`~math.atanh` compute the inverse hyperbolic functions.
* :func:`~math.log1p` returns the natural logarithm of *1+x*
(base *e*).
* :func:`trunc` rounds a number toward zero, returning the closest
:class:`Integral` that's between the function's argument and zero.
Added as part of the backport of
`PEP 3141's type hierarchy for numbers <#pep-3141>`__.
* The :mod:`math` module has been improved to give more consistent
behaviour across platforms, especially with respect to handling of
floating-point exceptions and IEEE 754 special values.
Whenever possible, the module follows the recommendations of the C99
standard about 754's special values. For example, ``sqrt(-1.)``
should now give a :exc:`ValueError` across almost all platforms,
while ``sqrt(float('NaN'))`` should return a NaN on all IEEE 754
platforms. Where Annex 'F' of the C99 standard recommends signaling
'divide-by-zero' or 'invalid', Python will raise :exc:`ValueError`.
Where Annex 'F' of the C99 standard recommends signaling 'overflow',
Python will raise :exc:`OverflowError`. (See :issue:`711019` and
:issue:`1640`.)
(Contributed by Christian Heimes and Mark Dickinson.)
* :class:`mmap` objects now have a :meth:`rfind` method that searches for a
substring beginning at the end of the string and searching
backwards. The :meth:`find` method also gained an *end* parameter
giving an index at which to stop searching.
(Contributed by John Lenton.) (Contributed by John Lenton.)
* The :mod:`operator` module gained a * The :mod:`operator` module gained a
@ -2192,7 +2128,8 @@ details.
The :func:`attrgetter` function now accepts dotted names and performs The :func:`attrgetter` function now accepts dotted names and performs
the corresponding attribute lookups:: the corresponding attribute lookups::
>>> inst_name = operator.attrgetter('__class__.__name__') >>> inst_name = operator.attrgetter(
... '__class__.__name__')
>>> inst_name('') >>> inst_name('')
'str' 'str'
>>> inst_name(help) >>> inst_name(help)
@ -2200,14 +2137,28 @@ details.
(Contributed by Georg Brandl, after a suggestion by Barry Warsaw.) (Contributed by Georg Brandl, after a suggestion by Barry Warsaw.)
* New functions in the :mod:`os` module include * The :mod:`os` module now wraps several new system calls.
``fchmod(fd, mode)``, ``fchown(fd, uid, gid)``, ``fchmod(fd, mode)`` and ``fchown(fd, uid, gid)`` change the mode
and ``lchmod(path, mode)``, on operating systems that support these and ownership of an opened file, and ``lchmod(path, mode)`` changes
functions. :func:`fchmod` and :func:`fchown` change the mode the mode of a symlink. (Contributed by Georg Brandl and Christian
and ownership of an opened file, and :func:`lchmod` changes the mode Heimes.)
of a symlink.
(Contributed by Georg Brandl and Christian Heimes.) :func:`chflags` and :func:`lchflags` are wrappers for the
corresponding system calls (where they're available), changing the
flags set on a file. Constants for the flag values are defined in
the :mod:`stat` module; some possible values include
:const:`UF_IMMUTABLE` to signal the file may not be changed and
:const:`UF_APPEND` to indicate that data can only be appended to the
file. (Contributed by M. Levinson.)
``os.closerange(*low*, *high*)`` efficiently closes all file descriptors
from *low* to *high*, ignoring any errors and not including *high* itself.
This function is now used by the :mod:`subprocess` module to make starting
processes faster. (Contributed by Georg Brandl; :issue:`1663329`.)
* The ``os.environ`` object's :meth:`clear` method will now unset the
environment variables using :func:`os.unsetenv` in addition to clearing
the object's keys. (Contributed by Martin Horcicka; :issue:`1181`.)
* 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 set to True, it will follow symlinks pointing to directories and
@ -2216,10 +2167,6 @@ details.
into an infinite recursion if there's a symlink that points to a into an infinite recursion if there's a symlink that points to a
parent directory. (:issue:`1273829`) parent directory. (:issue:`1273829`)
* The ``os.environ`` object's :meth:`clear` method will now unset the
environment variables using :func:`os.unsetenv` in addition to clearing
the object's keys. (Contributed by Martin Horcicka; :issue:`1181`.)
* In the :mod:`os.path` module, the :func:`splitext` function * In the :mod:`os.path` module, the :func:`splitext` function
has been changed to not split on leading period characters. has been changed to not split on leading period characters.
This produces better results when operating on Unix's dot-files. This produces better results when operating on Unix's dot-files.
@ -2227,22 +2174,22 @@ details.
now returns ``('.ipython', '')`` instead of ``('', '.ipython')``. now returns ``('.ipython', '')`` instead of ``('', '.ipython')``.
(:issue:`115886`) (:issue:`115886`)
A new function, :func:`relpath(path, start)` returns a relative path A new function, ``os.path.relpath(path, start='.')``, returns a relative path
from the ``start`` path, if it's supplied, or from the current from the ``start`` path, if it's supplied, or from the current
working directory to the destination ``path``. (Contributed by working directory to the destination ``path``. (Contributed by
Richard Barran; :issue:`1339796`.) Richard Barran; :issue:`1339796`.)
On Windows, :func:`os.path.expandvars` will now expand environment variables On Windows, :func:`os.path.expandvars` will now expand environment variables
in the form "%var%", and "~user" will be expanded into the given in the form "%var%", and "~user" will be expanded into the
user's home directory path. (Contributed by Josiah Carlson; user's home directory path. (Contributed by Josiah Carlson;
:issue:`957650`.) :issue:`957650`.)
* The Python debugger provided by the :mod:`pdb` module * The Python debugger provided by the :mod:`pdb` module
gained a new command: "run" restarts the Python program being debugged, gained a new command: "run" restarts the Python program being debugged
and can optionally take new command-line arguments for the program. and can optionally take new command-line arguments for the program.
(Contributed by Rocky Bernstein; :issue:`1393667`.) (Contributed by Rocky Bernstein; :issue:`1393667`.)
The :func:`post_mortem` function, used to enter debugging of a The :func:`post_mortem` function, used to begin debugging a
traceback, will now use the traceback returned by :func:`sys.exc_info` traceback, will now use the traceback returned by :func:`sys.exc_info`
if no traceback is supplied. (Contributed by Facundo Batista; if no traceback is supplied. (Contributed by Facundo Batista;
:issue:`1106316`.) :issue:`1106316`.)
@ -2270,24 +2217,12 @@ details.
(Contributed by Paul Moore; :issue:`2439`.) (Contributed by Paul Moore; :issue:`2439`.)
* 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
possible values include :const:`UF_IMMUTABLE` to signal the file may not be
changed and :const:`UF_APPEND` to indicate that data can only be appended to the
file. (Contributed by M. Levinson.)
``os.closerange(*low*, *high*)`` efficiently closes all file descriptors
from *low* to *high*, ignoring any errors and not including *high* itself.
This function is now used by the :mod:`subprocess` module to make starting
processes faster. (Contributed by Georg Brandl; :issue:`1663329`.)
* The :mod:`pyexpat` module's :class:`Parser` objects now allow setting * The :mod:`pyexpat` module's :class:`Parser` objects now allow setting
their :attr:`buffer_size` attribute to change the size of the buffer their :attr:`buffer_size` attribute to change the size of the buffer
used to hold character data. used to hold character data.
(Contributed by Achim Gaedke; :issue:`1137`.) (Contributed by Achim Gaedke; :issue:`1137`.)
* The :mod:`Queue` module now provides queue classes that retrieve entries * The :mod:`Queue` module now provides queue variants that retrieve entries
in different orders. The :class:`PriorityQueue` class stores in different orders. The :class:`PriorityQueue` class stores
queued items in a heap and retrieves them in priority order, queued items in a heap and retrieves them in priority order,
and :class:`LifoQueue` retrieves the most recently added entries first, and :class:`LifoQueue` retrieves the most recently added entries first,
@ -2304,12 +2239,12 @@ details.
The new ``triangular(low, high, mode)`` function returns random The new ``triangular(low, high, mode)`` function returns random
numbers following a triangular distribution. The returned values numbers following a triangular distribution. The returned values
are between *low* and *high*, not including *high* itself, and are between *low* and *high*, not including *high* itself, and
with *mode* as the mode, the most frequently occurring value with *mode* as the most frequently occurring value
in the distribution. (Contributed by Wladmir van der Laan and in the distribution. (Contributed by Wladmir van der Laan and
Raymond Hettinger; :issue:`1681432`.) Raymond Hettinger; :issue:`1681432`.)
* Long regular expression searches carried out by the :mod:`re` * Long regular expression searches carried out by the :mod:`re`
module will now check for signals being delivered, so especially module will check for signals being delivered, so
time-consuming searches can now be interrupted. time-consuming searches can now be interrupted.
(Contributed by Josh Hoyt and Ralf Schmitt; :issue:`846388`.) (Contributed by Josh Hoyt and Ralf Schmitt; :issue:`846388`.)
@ -2334,10 +2269,10 @@ details.
* The :mod:`select` module now has wrapper functions * The :mod:`select` module now has wrapper functions
for the Linux :cfunc:`epoll` and BSD :cfunc:`kqueue` system calls. for the Linux :cfunc:`epoll` and BSD :cfunc:`kqueue` system calls.
Also, a :meth:`modify` method was added to the existing :class:`poll` :meth:`modify` method was added to the existing :class:`poll`
objects; ``pollobj.modify(fd, eventmask)`` takes a file descriptor objects; ``pollobj.modify(fd, eventmask)`` takes a file descriptor
or file object and an event mask, or file object and an event mask, modifying the recorded event mask
for that file.
(Contributed by Christian Heimes; :issue:`1657`.) (Contributed by Christian Heimes; :issue:`1657`.)
* The :mod:`sets` module has been deprecated; it's better to * The :mod:`sets` module has been deprecated; it's better to
@ -2351,8 +2286,8 @@ details.
The :mod:`shutil` module also provides an :func:`ignore_patterns` The :mod:`shutil` module also provides an :func:`ignore_patterns`
function for use with this new parameter. function for use with this new parameter.
:func:`ignore_patterns` takes an arbitrary number of glob-style patterns :func:`ignore_patterns` takes an arbitrary number of glob-style patterns
and will ignore any files and directories that match this pattern. and will ignore any files and directories that match any of these patterns.
The following example copies a directory tree, but skip both SVN's internal The following example copies a directory tree, but skips both
:file:`.svn` directories and Emacs backup :file:`.svn` directories and Emacs backup
files, which have names ending with '~':: files, which have names ending with '~'::
@ -2363,7 +2298,8 @@ details.
* Integrating signal handling with GUI handling event loops * Integrating signal handling with GUI handling event loops
like those used by Tkinter or GTk+ has long been a problem; most like those used by Tkinter or GTk+ has long been a problem; most
software ends up polling, waking up every fraction of a second. software ends up polling, waking up every fraction of a second to check
if any GUI events have occurred.
The :mod:`signal` module can now make this more efficient. The :mod:`signal` module can now make this more efficient.
Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor
to be used; when a signal is received, a byte is written to that to be used; when a signal is received, a byte is written to that
@ -2376,7 +2312,7 @@ details.
will be added to the list of descriptors monitored by the event loop via will be added to the list of descriptors monitored by the event loop via
:cfunc:`select` or :cfunc:`poll`. :cfunc:`select` or :cfunc:`poll`.
On receiving a signal, a byte will be written and the main event loop On receiving a signal, a byte will be written and the main event loop
will be woken up, without the need to poll. will be woken up, avoiding the need to poll.
(Contributed by Adam Olsen; :issue:`1583`.) (Contributed by Adam Olsen; :issue:`1583`.)
@ -2385,7 +2321,7 @@ details.
(Contributed by Ralf Schmitt.) (Contributed by Ralf Schmitt.)
The :func:`setitimer` and :func:`getitimer` functions have also been The :func:`setitimer` and :func:`getitimer` functions have also been
added on systems that support these system calls. :func:`setitimer` added (where they're available). :func:`setitimer`
allows setting interval timers that will cause a signal to be allows setting interval timers that will cause a signal to be
delivered to the process after a specified time, measured in delivered to the process after a specified time, measured in
wall-clock time, consumed process time, or combined process+system wall-clock time, consumed process time, or combined process+system
@ -2393,22 +2329,20 @@ details.
* The :mod:`smtplib` module now supports SMTP over SSL thanks to the * The :mod:`smtplib` module now supports SMTP over SSL thanks to the
addition of the :class:`SMTP_SSL` class. This class supports an addition of the :class:`SMTP_SSL` class. This class supports an
interface identical to the existing :class:`SMTP` class. Both interface identical to the existing :class:`SMTP` class.
class constructors also have an optional ``timeout`` parameter (Contributed by Monty Taylor.) Both class constructors also have an
that specifies a timeout for the initial connection attempt, measured in optional ``timeout`` parameter that specifies a timeout for the
seconds. initial connection attempt, measured in seconds. (Contributed by
Facundo Batista.)
An implementation of the LMTP protocol (:rfc:`2033`) was also added to An implementation of the LMTP protocol (:rfc:`2033`) was also added
the module. LMTP is used in place of SMTP when transferring e-mail to the module. LMTP is used in place of SMTP when transferring
between agents that don't manage a mail queue. e-mail between agents that don't manage a mail queue. (LMTP
implemented by Leif Hedstrom; :issue:`957003`.)
(SMTP over SSL contributed by Monty Taylor; timeout parameter SMTP.starttls() now complies with :rfc:`3207` and forgets any
added by Facundo Batista; LMTP implemented by Leif knowledge obtained from the server not obtained from the TLS
Hedstrom; :issue:`957003`.) negotiation itself. (Patch contributed by Bill Fenner;
* In the :mod:`smtplib` module, SMTP.starttls() now complies with :rfc:`3207`
and forgets any knowledge obtained from the server not obtained from
the TLS negotiation itself. (Patch contributed by Bill Fenner;
:issue:`829951`.) :issue:`829951`.)
* The :mod:`socket` module now supports TIPC (http://tipc.sf.net), * The :mod:`socket` module now supports TIPC (http://tipc.sf.net),
@ -2440,15 +2374,13 @@ details.
:cfunc:`TerminateProcess`. :cfunc:`TerminateProcess`.
(Contributed by Christian Heimes.) (Contributed by Christian Heimes.)
* A new variable in the :mod:`sys` module, * A new variable in the :mod:`sys` module, :attr:`float_info`, is an
:attr:`float_info`, is an object object containing information derived from the :file:`float.h` file
containing information about the platform's floating-point support about the platform's floating-point support. Attributes of this
derived from the :file:`float.h` file. Attributes of this object object include :attr:`mant_dig` (number of digits in the mantissa),
include :attr:`epsilon` (smallest difference between 1.0 and the next
:attr:`mant_dig` (number of digits in the mantissa), :attr:`epsilon` largest value representable), and several others. (Contributed by
(smallest difference between 1.0 and the next largest value Christian Heimes; :issue:`1534`.)
representable), and several others. (Contributed by Christian Heimes;
:issue:`1534`.)
Another new variable, :attr:`dont_write_bytecode`, controls whether Python Another new variable, :attr:`dont_write_bytecode`, controls whether Python
writes any :file:`.pyc` or :file:`.pyo` files on importing a module. writes any :file:`.pyc` or :file:`.pyo` files on importing a module.
@ -2486,16 +2418,17 @@ details.
is GNU tar; specify the ``format`` parameter to open a file is GNU tar; specify the ``format`` parameter to open a file
using a different format:: using a different format::
tar = tarfile.open("output.tar", "w", format=tarfile.PAX_FORMAT) tar = tarfile.open("output.tar", "w",
format=tarfile.PAX_FORMAT)
The new ``errors`` parameter specifies an error handling The new ``errors`` parameter specifies an error handling scheme for
scheme for character conversions: the three standard ways Python can character conversions. ``'strict'``, ``'ignore'``, and
handle errors ``'strict'``, ``'ignore'``, ``'replace'`` , or the ``'replace'`` are the three standard ways Python can handle errors,;
special value ``'utf-8'``, which replaces bad characters with their ``'utf-8'`` is a special value that replaces bad characters with
UTF-8 representation. Character conversions occur because the PAX their UTF-8 representation. (Character conversions occur because the
format supports Unicode filenames, defaulting to UTF-8 encoding. PAX format supports Unicode filenames, defaulting to UTF-8 encoding.)
The :meth:`TarFile.add` method now accepts a ``exclude`` argument that's The :meth:`TarFile.add` method now accepts an ``exclude`` argument that's
a function that can be used to exclude certain filenames from a function that can be used to exclude certain filenames from
an archive. an archive.
The function must take a filename and return true if the file The function must take a filename and return true if the file
@ -2524,9 +2457,9 @@ details.
``with tempfile.NamedTemporaryFile() as tmp: ...``. ``with tempfile.NamedTemporaryFile() as tmp: ...``.
(Contributed by Alexander Belopolsky; :issue:`2021`.) (Contributed by Alexander Belopolsky; :issue:`2021`.)
* The :mod:`test.test_support` module now contains a * The :mod:`test.test_support` module now contains an
:func:`EnvironmentVarGuard` :func:`EnvironmentVarGuard`
context manager that supports temporarily changing environment variables and context manager that temporarily changes environment variables and
automatically restores them to their old values. automatically restores them to their old values.
Another context manager, :class:`TransientResource`, can surround calls Another context manager, :class:`TransientResource`, can surround calls
@ -2535,7 +2468,8 @@ details.
a network test may ignore certain failures when connecting to an a network test may ignore certain failures when connecting to an
external web site:: external web site::
with test_support.TransientResource(IOError, errno=errno.ETIMEDOUT): with test_support.TransientResource(IOError,
errno=errno.ETIMEDOUT):
f = urllib.urlopen('https://sf.net') f = urllib.urlopen('https://sf.net')
... ...
@ -2546,7 +2480,8 @@ details.
by specifying ``drop_whitespace=False`` by specifying ``drop_whitespace=False``
as an argument:: as an argument::
>>> S = """This sentence has a bunch of extra whitespace.""" >>> S = """This sentence has a bunch of
... extra whitespace."""
>>> print textwrap.fill(S, width=15) >>> print textwrap.fill(S, width=15)
This sentence This sentence
has a bunch has a bunch
@ -2561,7 +2496,7 @@ details.
(Contributed by Dwayne Bailey; :issue:`1581073`.) (Contributed by Dwayne Bailey; :issue:`1581073`.)
* The :mod:`threading` module API is being changed for Python 3.0, to * The :mod:`threading` module API is being changed in Python 3.0 to
use properties such as :attr:`daemon` instead of :meth:`setDaemon` use properties such as :attr:`daemon` instead of :meth:`setDaemon`
and :meth:`isDaemon` methods, and some methods have been renamed to and :meth:`isDaemon` methods, and some methods have been renamed to
use underscores instead of camel-case; for example, the use underscores instead of camel-case; for example, the
@ -2593,11 +2528,11 @@ details.
Gregor Lingl. New features in the module include: Gregor Lingl. New features in the module include:
* Better animation of turtle movement and rotation. * Better animation of turtle movement and rotation.
* Control over turtle movement using the new delay(), * Control over turtle movement using the new :meth:`delay`,
tracer(), and speed() methods. :meth:`tracer`, and :meth:`speed` methods.
* The ability to set new shapes for the turtle, and to * The ability to set new shapes for the turtle, and to
define a new coordinate system. define a new coordinate system.
* Turtles now have an undo() method that can roll back actions. * Turtles now have an :meth:`undo()` method that can roll back actions.
* Simple support for reacting to input events such as mouse and keyboard * Simple support for reacting to input events such as mouse and keyboard
activity, making it possible to write simple games. activity, making it possible to write simple games.
* A :file:`turtle.cfg` file can be used to customize the starting appearance * A :file:`turtle.cfg` file can be used to customize the starting appearance
@ -2613,7 +2548,8 @@ details.
:func:`urllib2.urlopen` function. The parameter specifies a timeout :func:`urllib2.urlopen` function. The parameter specifies a timeout
measured in seconds. For example:: measured in seconds. For example::
>>> u = urllib2.urlopen("http://slow.example.com", timeout=3) >>> u = urllib2.urlopen("http://slow.example.com",
timeout=3)
Traceback (most recent call last): Traceback (most recent call last):
... ...
urllib2.URLError: <urlopen error timed out> urllib2.URLError: <urlopen error timed out>
@ -2639,7 +2575,7 @@ details.
attribute; if true, the exception and formatted traceback are returned attribute; if true, the exception and formatted traceback are returned
as HTTP headers "X-Exception" and "X-Traceback". This feature is as HTTP headers "X-Exception" and "X-Traceback". This feature is
for debugging purposes only and should not be used on production servers for debugging purposes only and should not be used on production servers
because the tracebacks could possibly reveal passwords or other sensitive because the tracebacks might reveal passwords or other sensitive
information. (Contributed by Alan McIntyre as part of his information. (Contributed by Alan McIntyre as part of his
project for Google's Summer of Code 2007.) project for Google's Summer of Code 2007.)
@ -2660,7 +2596,8 @@ details.
z = zipfile.ZipFile('python-251.zip') z = zipfile.ZipFile('python-251.zip')
# Unpack a single file, writing it relative to the /tmp directory. # Unpack a single file, writing it relative
# to the /tmp directory.
z.extract('Python/sysmodule.c', '/tmp') z.extract('Python/sysmodule.c', '/tmp')
# Unpack all the files in the archive. # Unpack all the files in the archive.
@ -3077,6 +3014,83 @@ Port-Specific Changes: MacOS X
:option:`--with-framework-name=` option to the :option:`--with-framework-name=` option to the
:program:`configure` script. :program:`configure` script.
* The :mod:`macfs` module has been removed. This in turn required the
:func:`macostools.touched` function to be removed because it depended on the
:mod:`macfs` module. (:issue:`1490190`)
* Many other MacOS modules have been deprecated and will removed in
Python 3.0:
:mod:`_builtinSuites`,
:mod:`aepack`,
:mod:`aetools`,
:mod:`aetypes`,
:mod:`applesingle`,
:mod:`appletrawmain`,
:mod:`appletrunner`,
:mod:`argvemulator`,
:mod:`Audio_mac`,
:mod:`autoGIL`,
:mod:`Carbon`,
:mod:`cfmfile`,
:mod:`CodeWarrior`,
:mod:`ColorPicker`,
:mod:`EasyDialogs`,
:mod:`Explorer`,
:mod:`Finder`,
:mod:`FrameWork`,
:mod:`findertools`,
:mod:`ic`,
:mod:`icglue`,
:mod:`icopen`,
:mod:`macerrors`,
:mod:`MacOS`,
:mod:`macfs`,
:mod:`macostools`,
:mod:`macresource`,
:mod:`MiniAEFrame`,
:mod:`Nav`,
:mod:`Netscape`,
:mod:`OSATerminology`,
:mod:`pimp`,
:mod:`PixMapWrapper`,
:mod:`StdSuites`,
:mod:`SystemEvents`,
:mod:`Terminal`, and
:mod:`terminalcommand`.
.. ======================================================================
Port-Specific Changes: IRIX
-----------------------------------
A number of old IRIX-specific modules were deprecated and will
be removed in Python 3.0:
:mod:`al` and :mod:`AL`,
:mod:`cd`,
:mod:`cddb`,
:mod:`cdplayer`,
:mod:`CL` and :mod:`cl`,
:mod:`DEVICE`,
:mod:`ERRNO`,
:mod:`FILE`,
:mod:`FL` and :mod:`fl`,
:mod:`flp`,
:mod:`fm`,
:mod:`GET`,
:mod:`GLWS`,
:mod:`GL` and :mod:`gl`,
:mod:`IN`,
:mod:`IOCTL`,
:mod:`jpeg`,
:mod:`panelparser`,
:mod:`readcd`,
:mod:`SV` and :mod:`sv`,
:mod:`torgb`,
:mod:`videoreader`, and
:mod:`WAIT`.
.. ====================================================================== .. ======================================================================
@ -3113,7 +3127,7 @@ that may require changes to your code:
* The :meth:`__init__` method of :class:`collections.deque` * The :meth:`__init__` method of :class:`collections.deque`
now clears any existing contents of the deque now clears any existing contents of the deque
before adding elements from the iterable. This change makes the before adding elements from the iterable. This change makes the
behavior match that of ``list.__init__()``. behavior match ``list.__init__()``.
* The :class:`Decimal` constructor now accepts leading and trailing * The :class:`Decimal` constructor now accepts leading and trailing
whitespace when passed a string. Previously it would raise an whitespace when passed a string. Previously it would raise an