Commit e6bcc914 authored by Georg Brandl's avatar Georg Brandl

Remove many "versionchanged" items that didn't use the official markup,

but just some text embedded in the docs.

Also remove paragraph about implicit relative imports from tutorial.
parent c7372837
......@@ -153,9 +153,9 @@ Dictionary Objects
...
}
The dictionary *p* should not be mutated during iteration. It is safe (since
Python 2.1) to modify the values of the keys as you iterate over the dictionary,
but only so long as the set of keys does not change. For example::
The dictionary *p* should not be mutated during iteration. It is safe to
modify the values of the keys as you iterate over the dictionary, but only so
long as the set of keys does not change. For example::
PyObject *key, *value;
Py_ssize_t pos = 0;
......
......@@ -147,7 +147,6 @@ in various ways. There is a separate error indicator for each thread.
.. % The descriptions for %zd and %zu are wrong, but the truth is complicated
.. % because not all compilers support the %z width modifier -- we fake it
.. % when necessary via interpolating PY_FORMAT_SIZE_T.
.. % %u, %lu, %zu should have "new in Python 2.5" blurbs.
+-------------------+---------------+--------------------------------+
| Format Characters | Type | Comment |
......
......@@ -22,10 +22,8 @@ Importing Modules
be the case. (Unfortunately, this has an additional side effect when *name* in
fact specifies a subpackage instead of a submodule: the submodules specified in
the package's ``__all__`` variable are loaded.) Return a new reference to the
imported module, or *NULL* with an exception set on failure. Before Python 2.4,
the module may still be created in the failure case --- examine ``sys.modules``
to find out. Starting with Python 2.4, a failing import of a module no longer
leaves the module in ``sys.modules``.
imported module, or *NULL* with an exception set on failure. A failing
import of a module doesn't leave the module in :data:`sys.modules`.
.. cfunction:: PyObject* PyImport_ImportModuleNoBlock(const char *name)
......@@ -47,11 +45,11 @@ Importing Modules
function :func:`__import__`, as the standard :func:`__import__` function calls
this function directly.
The return value is a new reference to the imported module or top-level package,
or *NULL* with an exception set on failure (before Python 2.4, the module may
still be created in this case). Like for :func:`__import__`, the return value
when a submodule of a package was requested is normally the top-level package,
unless a non-empty *fromlist* was given.
The return value is a new reference to the imported module or top-level
package, or *NULL* with an exception set on failure. Like for
:func:`__import__`, the return value when a submodule of a package was
requested is normally the top-level package, unless a non-empty *fromlist*
was given.
Failing imports remove incomplete module objects, like with
:cfunc:`PyImport_ImportModule`.
......@@ -106,9 +104,8 @@ Importing Modules
Given a module name (possibly of the form ``package.module``) and a code object
read from a Python bytecode file or obtained from the built-in function
:func:`compile`, load the module. Return a new reference to the module object,
or *NULL* with an exception set if an error occurred. Before Python 2.4, the
module could still be created in error cases. Starting with Python 2.4, *name*
is removed from :attr:`sys.modules` in error cases, and even if *name* was already
or *NULL* with an exception set if an error occurred. *name*
is removed from :attr:`sys.modules` in error cases, even if *name* was already
in :attr:`sys.modules` on entry to :cfunc:`PyImport_ExecCodeModule`. Leaving
incompletely initialized modules in :attr:`sys.modules` is dangerous, as imports of
such modules have no way to know that the module object is an unknown (and
......@@ -144,8 +141,6 @@ Importing Modules
Cache the result in :data:`sys.path_importer_cache`. Return a new reference
to the importer object.
.. versionadded:: 2.6
.. cfunction:: void _PyImport_Init()
......
......@@ -273,14 +273,14 @@ Initialization, Finalization, and Threads
Return the version of this Python interpreter. This is a string that looks
something like ::
"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \n[GCC 4.2.3]"
.. index:: single: version (in module sys)
The first word (up to the first space character) is the current Python version;
the first three characters are the major and minor version separated by a
period. The returned string points into static storage; the caller should not
modify its value. The value is available to Python code as ``sys.version``.
modify its value. The value is available to Python code as :data:`sys.version`.
.. cfunction:: const char* Py_GetBuildNumber()
......@@ -479,9 +479,9 @@ the lock, and finally storing their thread state pointer, before they can start
using the Python/C API. When they are done, they should reset the thread state
pointer, release the lock, and finally free their thread state data structure.
Beginning with version 2.3, threads can now take advantage of the
:cfunc:`PyGILState_\*` functions to do all of the above automatically. The
typical idiom for calling into Python from a C thread is now::
Threads can take advantage of the :cfunc:`PyGILState_\*` functions to do all of
the above automatically. The typical idiom for calling into Python from a C
thread is now::
PyGILState_STATE gstate;
gstate = PyGILState_Ensure();
......@@ -777,14 +777,12 @@ The Python interpreter provides some low-level support for attaching profiling
and execution tracing facilities. These are used for profiling, debugging, and
coverage analysis tools.
Starting with Python 2.2, the implementation of this facility was substantially
revised, and an interface from C was added. This C interface allows the
profiling or tracing code to avoid the overhead of calling through Python-level
callable objects, making a direct C function call instead. The essential
attributes of the facility have not changed; the interface allows trace
functions to be installed per-thread, and the basic events reported to the trace
function are the same as had been reported to the Python-level trace functions
in previous versions.
This C interface allows the profiling or tracing code to avoid the overhead of
calling through Python-level callable objects, making a direct C function call
instead. The essential attributes of the facility have not changed; the
interface allows trace functions to be installed per-thread, and the basic
events reported to the trace function are the same as had been reported to the
Python-level trace functions in previous versions.
.. ctype:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)
......
......@@ -13,9 +13,9 @@ back. Files used to store marshalled data must be opened in binary mode.
Numeric values are stored with the least significant byte first.
The module supports two versions of the data format: version 0 is the historical
version, version 1 (new in Python 2.4) shares interned strings in the file, and
upon unmarshalling. *Py_MARSHAL_VERSION* indicates the current file format
(currently 1).
version, version 1 shares interned strings in the file, and upon unmarshalling.
Version 2 uses a binary format for floating point numbers.
*Py_MARSHAL_VERSION* indicates the current file format (currently 2).
.. cfunction:: void PyMarshal_WriteLongToFile(long value, FILE *file, int version)
......
......@@ -267,8 +267,6 @@ Number Protocol
base. If *n* is not an int object, it is converted with
:cfunc:`PyNumber_Index` first.
.. versionadded:: 2.6
.. cfunction:: Py_ssize_t PyNumber_AsSsize_t(PyObject *o, PyObject *exc)
......
......@@ -93,10 +93,6 @@ the constructor functions work with any iterable Python object.
set on success or *NULL* on failure. Raise :exc:`TypeError` if *iterable* is
not actually iterable.
.. versionchanged:: 2.6
Now guaranteed to return a brand-new :class:`frozenset`. Formerly,
frozensets of zero-length were a singleton. This got in the way of
building-up new frozensets with :meth:`PySet_Add`.
The following functions and macros are available for instances of :class:`set`
or :class:`frozenset` or instances of their subtypes.
......@@ -127,16 +123,14 @@ or :class:`frozenset` or instances of their subtypes.
.. cfunction:: int PySet_Add(PyObject *set, PyObject *key)
Add *key* to a :class:`set` instance. Does not apply to :class:`frozenset`
instances. Return 0 on success or -1 on failure. Raise a :exc:`TypeError` if
the *key* is unhashable. Raise a :exc:`MemoryError` if there is no room to grow.
Raise a :exc:`SystemError` if *set* is an not an instance of :class:`set` or its
Add *key* to a :class:`set` instance. Also works with :class:`frozenset`
instances (like :cfunc:`PyTuple_SetItem` it can be used to fill-in the values
of brand new frozensets before they are exposed to other code). Return 0 on
success or -1 on failure. Raise a :exc:`TypeError` if the *key* is
unhashable. Raise a :exc:`MemoryError` if there is no room to grow. Raise a
:exc:`SystemError` if *set* is an not an instance of :class:`set` or its
subtype.
.. versionchanged:: 2.6
Now works with instances of :class:`frozenset` or its subtypes.
Like :cfunc:`PyTuple_SetItem` in that it can be used to fill-in the
values of brand new frozensets before they are exposed to other code.
The following functions are available for instances of :class:`set` or its
subtypes but not for instances of :class:`frozenset` or its subtypes.
......
......@@ -38,10 +38,7 @@ Slice Objects
indices was not :const:`None` and failed to be converted to an integer, in which
case -1 is returned with an exception set).
You probably do not want to use this function. If you want to use slice objects
in versions of Python prior to 2.3, you would probably do well to incorporate
the source of :cfunc:`PySlice_GetIndicesEx`, suitably renamed, in the source of
your extension.
You probably do not want to use this function.
.. cfunction:: int PySlice_GetIndicesEx(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
......
......@@ -63,7 +63,6 @@ called with a non-string parameter.
.. % XXX: The descriptions for %zd and %zu are wrong, but the truth is complicated
.. % because not all compilers support the %z width modifier -- we fake it
.. % when necessary via interpolating PY_FORMAT_SIZE_T.
.. % %u, %lu, %zu should have "new in Python 2.5" blurbs.
+-------------------+---------------+--------------------------------+
| Format Characters | Type | Comment |
......
This diff is collapsed.
......@@ -19,14 +19,6 @@ strings and lists in core Python.
This is not hard; the code for all extension types follows a pattern, but there
are some details that you need to understand before you can get started.
.. note::
The way new types are defined changed dramatically (and for the better) in
Python 2.2. This document documents how to define new types for Python 2.2 and
later. If you need to support older versions of Python, you will need to refer
to `older versions of this documentation
<http://www.python.org/doc/versions/>`_.
.. _dnt-basics:
......@@ -734,9 +726,8 @@ For each subobject that can participate in cycles, we need to call the
*arg* passed to the traversal method. It returns an integer value that must be
returned if it is non-zero.
Python 2.4 and higher provide a :cfunc:`Py_VISIT` macro that automates calling
visit functions. With :cfunc:`Py_VISIT`, :cfunc:`Noddy_traverse` can be
simplified::
Python provides a :cfunc:`Py_VISIT` macro that automates calling visit
functions. With :cfunc:`Py_VISIT`, :cfunc:`Noddy_traverse` can be simplified::
static int
Noddy_traverse(Noddy *self, visitproc visit, void *arg)
......@@ -789,9 +780,9 @@ collection is run, our :attr:`tp_traverse` handler could get called. We can't
take a chance of having :cfunc:`Noddy_traverse` called when a member's reference
count has dropped to zero and its value hasn't been set to *NULL*.
Python 2.4 and higher provide a :cfunc:`Py_CLEAR` that automates the careful
decrementing of reference counts. With :cfunc:`Py_CLEAR`, the
:cfunc:`Noddy_clear` function can be simplified::
Python provides a :cfunc:`Py_CLEAR` that automates the careful decrementing of
reference counts. With :cfunc:`Py_CLEAR`, the :cfunc:`Noddy_clear` function can
be simplified::
static int
Noddy_clear(Noddy *self)
......@@ -1397,7 +1388,6 @@ Here is a desultory example of the implementation of the call function. ::
XXX some fields need to be added here... ::
/* Added in release 2.2 */
/* Iterators */
getiterfunc tp_iter;
iternextfunc tp_iternext;
......
......@@ -21,8 +21,7 @@ encoding and decoding string objects using all three alphabets. The legacy
interface provides for encoding and decoding to and from file-like objects as
well as strings, but only using the Base64 standard alphabet.
The modern interface, which was introduced in Python 2.4, provides:
The modern interface provides:
.. function:: b64encode(s[, altchars])
......
......@@ -66,28 +66,3 @@ To do just the former:
:func:`compile_command`; the difference is that if the instance compiles program
text containing a ``__future__`` statement, the instance 'remembers' and
compiles all subsequent program texts with the statement in force.
A note on version compatibility: the :class:`Compile` and
:class:`CommandCompiler` are new in Python 2.2. If you want to enable the
future-tracking features of 2.2 but also retain compatibility with 2.1 and
earlier versions of Python you can either write ::
try:
from codeop import CommandCompiler
compile_command = CommandCompiler()
del CommandCompiler
except ImportError:
from codeop import compile_command
which is a low-impact change, but introduces possibly unwanted global state into
your program, or you can write::
try:
from codeop import CommandCompiler
except ImportError:
def CommandCompiler():
from codeop import compile_command
return compile_command
and then call ``CommandCompiler`` every time you need a fresh compiler object.
......@@ -38,12 +38,7 @@ The module defines the following exception:
.. exception:: LoadError
Instances of :class:`FileCookieJar` raise this exception on failure to load
cookies from a file.
.. note::
For backwards-compatibility with Python 2.4 (which raised an :exc:`IOError`),
:exc:`LoadError` is a subclass of :exc:`IOError`.
cookies from a file. :exc:`LoadError` is a subclass of :exc:`IOError`.
The following classes are provided:
......@@ -266,11 +261,6 @@ contained :class:`Cookie` objects.
:exc:`LoadError` will be raised. Also, :exc:`IOError` may be raised, for
example if the file does not exist.
.. note::
For backwards-compatibility with Python 2.4 (which raised an :exc:`IOError`),
:exc:`LoadError` is a subclass of :exc:`IOError`.
.. method:: FileCookieJar.revert(filename=None, ignore_discard=False, ignore_expires=False)
......
......@@ -1957,7 +1957,6 @@ Data types
is zero. If the source buffer is not large enough a ValueError
is raised.
.. versionadded:: 2.6
.. method:: _CData.from_buffer_copy(source[, offset])
......@@ -1967,8 +1966,6 @@ Data types
in bytes; the default is zero. If the source buffer is not
large enough a ValueError is raised.
.. versionadded:: 2.6
.. method:: from_address(address)
......
......@@ -766,9 +766,8 @@ Each thread has its own current context which is accessed or changed using the
Set the current context for the active thread to *c*.
Beginning with Python 2.5, you can also use the :keyword:`with` statement and
the :func:`localcontext` function to temporarily change the active context.
You can also use the :keyword:`with` statement and the :func:`localcontext`
function to temporarily change the active context.
.. function:: localcontext([c])
......
......@@ -201,14 +201,13 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module.
Optional keyword parameters *linejunk* and *charjunk* are for filter functions
(or ``None``):
*linejunk*: A function that accepts a single string argument, and returns true
if the string is junk, or false if not. The default is (``None``), starting with
Python 2.3. Before then, the default was the module-level function
:func:`IS_LINE_JUNK`, which filters out lines without visible characters, except
for at most one pound character (``'#'``). As of Python 2.3, the underlying
:class:`SequenceMatcher` class does a dynamic analysis of which lines are so
frequent as to constitute noise, and this usually works better than the pre-2.3
default.
*linejunk*: A function that accepts a single string argument, and returns
true if the string is junk, or false if not. The default is ``None``. There
is also a module-level function :func:`IS_LINE_JUNK`, which filters out lines
without visible characters, except for at most one pound character (``'#'``)
-- however the underlying :class:`SequenceMatcher` class does a dynamic
analysis of which lines are so frequent as to constitute noise, and this
usually works better than using this function.
*charjunk*: A function that accepts a character (a string of length 1), and
returns if the character is junk, or false if not. The default is module-level
......@@ -302,7 +301,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module.
Return true for ignorable lines. The line *line* is ignorable if *line* is
blank or contains a single ``'#'``, otherwise it is not ignorable. Used as a
default for parameter *linejunk* in :func:`ndiff` before Python 2.3.
default for parameter *linejunk* in :func:`ndiff` in older versions.
.. function:: IS_CHARACTER_JUNK(ch)
......
......@@ -65,7 +65,7 @@ The module defines the following functions:
so long as the buffer you pass is as least as long as what the operating system
wants to put there, things should work.
If *mutate_flag* is true, then the buffer is (in effect) passed to the
If *mutate_flag* is true (the default), then the buffer is (in effect) passed to the
underlying :func:`ioctl` system call, the latter's return code is passed back to
the calling Python, and the buffer's new contents reflect the action of the
:func:`ioctl`. This is a slight simplification, because if the supplied buffer
......@@ -73,10 +73,6 @@ The module defines the following functions:
long which is then passed to :func:`ioctl` and copied back into the supplied
buffer.
If *mutate_flag* is not supplied, then from Python 2.5 it defaults to true,
which is a change from versions 2.3 and 2.4. Supply the argument explicitly if
version portability is a priority.
An example::
>>> import array, fcntl, struct, termios, os
......
......@@ -187,9 +187,8 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
.. method:: FTP.set_pasv(boolean)
Enable "passive" mode if *boolean* is true, other disable passive mode. (In
Python 2.0 and before, passive mode was off by default; in Python 2.1 and later,
it is on by default.)
Enable "passive" mode if *boolean* is true, other disable passive mode.
Passive mode is on by default.
.. method:: FTP.storbinary(command, file[, blocksize, callback])
......
......@@ -12,11 +12,11 @@ The :mod:`getpass` module provides two functions:
.. function:: getpass([prompt[, stream]])
Prompt the user for a password without echoing. The user is prompted using the
string *prompt*, which defaults to ``'Password: '``. On Unix, the prompt is
written to the file-like object *stream*. *stream* defaults to the
controlling terminal (/dev/tty) or if that is unavailable to ``sys.stderr``
(this argument is ignored on Windows).
Prompt the user for a password without echoing. The user is prompted using
the string *prompt*, which defaults to ``'Password: '``. On Unix, the prompt
is written to the file-like object *stream*. *stream* defaults to the
controlling terminal (:file:`/dev/tty`) or if that is unavailable to
``sys.stderr`` (this argument is ignored on Windows).
If echo free input is unavailable getpass() falls back to printing
a warning message to *stream* and reading from ``sys.stdin`` and
......@@ -24,9 +24,6 @@ The :mod:`getpass` module provides two functions:
Availability: Macintosh, Unix, Windows.
.. versionchanged:: 2.6
On Unix it defaults to using /dev/tty before falling back
to ``sys.stdin`` and ``sys.stderr``.
.. note::
If you call getpass from within IDLE, the input may be done in the
terminal you launched IDLE from rather than the idle window itself.
......
......@@ -273,10 +273,10 @@ attributes:
Return true if the object is a method descriptor, but not if :func:`ismethod`
or :func:`isclass` or :func:`isfunction` are true.
This is new as of Python 2.2, and, for example, is true of
``int.__add__``. An object passing this test has a :attr:`__get__` attribute
but not a :attr:`__set__` attribute, but beyond that the set of attributes
varies. :attr:`__name__` is usually sensible, and :attr:`__doc__` often is.
This, for example, is true of ``int.__add__``. An object passing this test
has a :attr:`__get__` attribute but not a :attr:`__set__` attribute, but
beyond that the set of attributes varies. :attr:`__name__` is usually
sensible, and :attr:`__doc__` often is.
Methods implemented via descriptors that also pass one of the other tests
return false from the :func:`ismethoddescriptor` test, simply because the
......
......@@ -5,7 +5,6 @@
:synopsis: Encode and decode the JSON format.
.. moduleauthor:: Bob Ippolito <bob@redivi.com>
.. sectionauthor:: Bob Ippolito <bob@redivi.com>
.. versionadded:: 2.6
JSON (JavaScript Object Notation) <http://json.org> is a subset of JavaScript
syntax (ECMA-262 3rd edition) used as a lightweight data interchange format.
......
......@@ -16,9 +16,7 @@ Note the capitalization of the module name; this is a historical artifact.
.. data:: runtimemodel
Always ``'macho'``, from Python 2.4 on. In earlier versions of Python the value
could also be ``'ppc'`` for the classic Mac OS 8 runtime model or ``'carbon'``
for the Mac OS 9 runtime model.
Always ``'macho'``.
.. data:: linkmodel
......
......@@ -11,11 +11,9 @@ Language (SGML) and the Hypertext Markup Language (HTML), and several interfaces
for working with the Extensible Markup Language (XML).
It is important to note that modules in the :mod:`xml` package require that
there be at least one SAX-compliant XML parser available. Starting with Python
2.3, the Expat parser is included with Python, so the :mod:`xml.parsers.expat`
module will always be available. You may still want to be aware of the `PyXML
add-on package <http://pyxml.sourceforge.net/>`_; that package provides an
extended set of XML libraries for Python.
there be at least one SAX-compliant XML parser available. The Expat parser is
included with Python, so the :mod:`xml.parsers.expat` module will always be
available.
The documentation for the :mod:`xml.dom` and :mod:`xml.sax` packages are the
definition of the Python bindings for the DOM and SAX interfaces.
......@@ -35,10 +33,3 @@ definition of the Python bindings for the DOM and SAX interfaces.
xml.sax.utils.rst
xml.sax.reader.rst
xml.etree.elementtree.rst
.. seealso::
`Python/XML Libraries <http://pyxml.sourceforge.net/>`_
Home page for the PyXML package, containing an extension of :mod:`xml` package
bundled with Python.
......@@ -100,10 +100,9 @@ In addition, the following constants are defined:
.. data:: version
Indicates the format that the module uses. Version 0 is the historical format,
version 1 (added in Python 2.4) shares interned strings and version 2 (added in
Python 2.5) uses a binary format for floating point numbers. The current version
is 2.
Indicates the format that the module uses. Version 0 is the historical
format, version 1 shares interned strings and version 2 uses a binary format
for floating point numbers. The current version is 2.
.. rubric:: Footnotes
......
......@@ -277,10 +277,6 @@ The module also defines two mathematical constants:
platform and libm implementation. It's usually :exc:`ValueError` for *EDOM*
and :exc:`OverflowError` for errno *ERANGE*.
..versionchanged:: 2.6
In earlier versions of Python the outcome of an operation with NaN as
input depended on platform and libm implementation.
.. seealso::
......
......@@ -66,9 +66,8 @@ Instances of :class:`netrc` have public instance variables:
.. note::
Passwords are limited to a subset of the ASCII character set. Versions of
this module prior to 2.3 were extremely limited. Starting with 2.3, all
ASCII punctuation is allowed in passwords. However, note that whitespace and
Passwords are limited to a subset of the ASCII character set. All ASCII
punctuation is allowed in passwords, however, note that whitespace and
non-printable characters are not allowed in passwords. This is a limitation
of the way the .netrc file is parsed and may be removed in the future.
......@@ -463,8 +463,7 @@ by file descriptors.
If you're starting with a Python file object *f*, first do ``f.flush()``, and
then do ``os.fsync(f.fileno())``, to ensure that all internal buffers associated
with *f* are written to disk. Availability: Macintosh, Unix, and Windows
starting in 2.2.3.
with *f* are written to disk. Availability: Macintosh, Unix, and Windows.
.. function:: ftruncate(fd, length)
......
......@@ -262,17 +262,6 @@ The :mod:`pickle` module also exports two callables [#]_, :class:`Pickler` and
pickled by reference and not by value. This method is useful when re-using
picklers.
.. note::
Prior to Python 2.3, :meth:`clear_memo` was only available on the picklers
created by :mod:`cPickle`. In the :mod:`pickle` module, picklers have an
instance variable called :attr:`memo` which is a Python dictionary. So to clear
the memo for a :mod:`pickle` module pickler, you could do the following::
mypickler.memo.clear()
Code that does not need to support older versions of Python should simply use
:meth:`clear_memo`.
It is possible to make multiple calls to the :meth:`dump` method of the same
:class:`Pickler` instance. These must then be matched to the same number of
......
......@@ -546,7 +546,7 @@ The object of this exercise is to get a fairly consistent result. If your
computer is *very* fast, or your timer function has poor resolution, you might
have to pass 100000, or even 1000000, to get consistent results.
When you have a consistent answer, there are three ways you can use it: [#]_ ::
When you have a consistent answer, there are three ways you can use it::
import profile
......@@ -616,8 +616,3 @@ The resulting profiler will then call :func:`your_time_func`.
.. [#] Updated and converted to LaTeX by Guido van Rossum. Further updated by Armin
Rigo to integrate the documentation for the new :mod:`cProfile` module of Python
2.5.
.. [#] Prior to Python 2.2, it was necessary to edit the profiler source code to embed
the bias as a literal number. You still can, but that method is no longer
described, because no longer needed.
......@@ -58,8 +58,6 @@ Bookkeeping functions:
Return an object capturing the current internal state of the generator. This
object can be passed to :func:`setstate` to restore the state.
State values produced in Python 2.6 cannot be loaded into earlier versions.
.. function:: setstate(state)
......
......@@ -1035,10 +1035,10 @@ recursion, you may encounter a :exc:`RuntimeError` exception with the message
You can often restructure your regular expression to avoid recursion.
Starting with Python 2.3, simple uses of the ``*?`` pattern are special-cased to
avoid recursion. Thus, the above regular expression can avoid recursion by
being recast as ``Begin [a-zA-Z0-9_ ]*?end``. As a further benefit, such
regular expressions will run faster than their recursive equivalents.
Simple uses of the ``*?`` pattern are special-cased to avoid recursion. Thus,
the above regular expression can avoid recursion by being recast as ``Begin
[a-zA-Z0-9_ ]*?end``. As a further benefit, such regular expressions will run
faster than their recursive equivalents.
search() vs. match()
......
......@@ -43,15 +43,14 @@ The :mod:`shlex` module defines the following class:
A :class:`shlex` instance or subclass instance is a lexical analyzer object.
The initialization argument, if present, specifies where to read characters
from. It must be a file-/stream-like object with :meth:`read` and
:meth:`readline` methods, or a string (strings are accepted since Python 2.3).
If no argument is given, input will be taken from ``sys.stdin``. The second
optional argument is a filename string, which sets the initial value of the
:attr:`infile` member. If the *instream* argument is omitted or equal to
``sys.stdin``, this second argument defaults to "stdin". The *posix* argument
was introduced in Python 2.3, and defines the operational mode. When *posix* is
not true (default), the :class:`shlex` instance will operate in compatibility
mode. When operating in POSIX mode, :class:`shlex` will try to be as close as
possible to the POSIX shell parsing rules.
:meth:`readline` methods, or a string. If no argument is given, input will
be taken from ``sys.stdin``. The second optional argument is a filename
string, which sets the initial value of the :attr:`infile` member. If the
*instream* argument is omitted or equal to ``sys.stdin``, this second
argument defaults to "stdin". The *posix* argument defines the operational
mode: when *posix* is not true (default), the :class:`shlex` instance will
operate in compatibility mode. When operating in POSIX mode, :class:`shlex`
will try to be as close as possible to the POSIX shell parsing rules.
.. seealso::
......
......@@ -87,8 +87,6 @@ empty, and the path manipulations are skipped; however the import of
A list of prefixes for site package directories
.. versionadded:: 2.6
.. data:: ENABLE_USER_SITE
......@@ -96,32 +94,22 @@ empty, and the path manipulations are skipped; however the import of
user site directory is enabled and added to sys.path. When the flag
is None the user site directory is disabled for security reasons.
.. versionadded:: 2.6
.. data:: USER_SITE
Path to the user site directory for the current Python version or None
.. versionadded:: 2.6
.. data:: USER_BASE
Path to the base directory for user site directories
.. versionadded:: 2.6
.. envvar:: PYTHONNOUSERSITE
.. versionadded:: 2.6
.. envvar:: PYTHONUSERBASE
.. versionadded:: 2.6
.. function:: addsitedir(sitedir, known_paths=None)
......
......@@ -479,12 +479,6 @@ correspond to Unix system calls applicable to sockets.
Bind the socket to *address*. The socket must not already be bound. (The format
of *address* depends on the address family --- see above.)
.. note::
This method has historically accepted a pair of parameters for :const:`AF_INET`
addresses instead of only a tuple. This was never intentional and is no longer
available in Python 2.0 and later.
.. method:: socket.close()
......@@ -498,12 +492,6 @@ correspond to Unix system calls applicable to sockets.
Connect to a remote socket at *address*. (The format of *address* depends on the
address family --- see above.)
.. note::
This method has historically accepted a pair of parameters for :const:`AF_INET`
addresses instead of only a tuple. This was never intentional and is no longer
available in Python 2.0 and later.
.. method:: socket.connect_ex(address)
......@@ -514,12 +502,6 @@ correspond to Unix system calls applicable to sockets.
:cdata:`errno` variable. This is useful to support, for example, asynchronous
connects.
.. note::
This method has historically accepted a pair of parameters for :const:`AF_INET`
addresses instead of only a tuple. This was never intentional and is no longer
available in Python 2.0 and later.
.. method:: socket.fileno()
......
......@@ -1906,7 +1906,7 @@ Files have the following methods:
which requires that the file be open will raise a :exc:`ValueError` after the
file has been closed. Calling :meth:`close` more than once is allowed.
As of Python 2.5, you can avoid having to call this method explicitly if you use
You can avoid having to call this method explicitly if you use
the :keyword:`with` statement. For example, the following code will
automatically close *f* when the :keyword:`with` block is exited::
......
......@@ -152,21 +152,18 @@ always available.
.. warning::
Assigning the *traceback* return value to a local variable in a function that is
handling an exception will cause a circular reference. This will prevent
anything referenced by a local variable in the same function or by the traceback
from being garbage collected. Since most functions don't need access to the
traceback, the best solution is to use something like ``exctype, value =
sys.exc_info()[:2]`` to extract only the exception type and value. If you do
need the traceback, make sure to delete it after use (best done with a
:keyword:`try` ... :keyword:`finally` statement) or to call :func:`exc_info` in
a function that does not itself handle an exception.
.. note::
Beginning with Python 2.2, such cycles are automatically reclaimed when garbage
collection is enabled and they become unreachable, but it remains more efficient
to avoid creating cycles.
Assigning the *traceback* return value to a local variable in a function
that is handling an exception will cause a circular reference. Since most
functions don't need access to the traceback, the best solution is to use
something like ``exctype, value = sys.exc_info()[:2]`` to extract only the
exception type and value. If you do need the traceback, make sure to
delete it after use (best done with a :keyword:`try`
... :keyword:`finally` statement) or to call :func:`exc_info` in a
function that does not itself handle an exception.
Such cycles are normally automatically reclaimed when garbage collection
is enabled and they become unreachable, but it remains more efficient to
avoid creating cycles.
.. data:: exec_prefix
......
......@@ -14,14 +14,11 @@
pair: temporary; file
This module generates temporary files and directories. It works on all
supported platforms.
In version 2.3 of Python, this module was overhauled for enhanced security. It
now provides three new functions, :func:`NamedTemporaryFile`, :func:`mkstemp`,
and :func:`mkdtemp`, which should eliminate all remaining need to use the
insecure :func:`mktemp` function. Temporary file names created by this module
no longer contain the process ID; instead a string of six random characters is
used.
supported platforms. It provides three new functions,
:func:`NamedTemporaryFile`, :func:`mkstemp`, and :func:`mkdtemp`, which should
eliminate all remaining need to use the insecure :func:`mktemp` function.
Temporary file names created by this module no longer contain the process ID;
instead a string of six random characters is used.
Also, all the user-callable functions now take additional arguments which
allow direct control over the location and name of temporary files. It is
......@@ -208,10 +205,6 @@ the appropriate function arguments, instead.
On Windows, the default prefix is :file:`~T`; on all other systems it is
:file:`tmp`.
Older versions of this module used to require that ``template`` be set to
``None`` after a call to :func:`os.fork`; this has not been necessary since
version 1.5.2.
.. function:: gettempprefix()
......
......@@ -52,9 +52,7 @@ indentation from strings that have unwanted whitespace to the left of the text.
Note that tabs and spaces are both treated as whitespace, but they are not
equal: the lines ``" hello"`` and ``"\thello"`` are considered to have no
common leading whitespace. (This behaviour is new in Python 2.5; older versions
of this module incorrectly expanded tabs before searching for common leading
whitespace.)
common leading whitespace.
For example::
......
......@@ -94,8 +94,8 @@ The module defines the following public class:
timeit.Timer('for i in range(10): oct(i)', 'gc.enable()').timeit()
Starting with version 2.6, the module also defines two convenience functions:
The module also defines two convenience functions:
.. function:: repeat(stmt[, setup[, timer[, repeat=3 [, number=1000000]]]])
......
......@@ -122,14 +122,6 @@ The module defines the following functions:
A shorthand for ``format_list(extract_stack(f, limit))``.
.. function:: tb_lineno(tb)
This function returns the current line number set in the traceback object. This
function was necessary because in versions of Python prior to 2.3 when the
:option:`-O` flag was passed to Python the ``tb.tb_lineno`` was not updated
correctly. This function has no use in versions past 2.3.
.. _traceback-example:
Traceback Examples
......
......@@ -149,7 +149,7 @@ in the build tree and either rebuilding Python if the modules are statically
linked, or building and installing the shared object if using dynamically-loaded
extensions.
.. (lib-old is empty as of Python 2.5)
.. XXX new explanation of lib-old necessary
Those which are written in Python will be installed into the directory
\file{lib-old/} installed as part of the standard library. To use
......
......@@ -71,9 +71,8 @@ The :mod:`urllib2` module defines the following functions:
If the Python installation has SSL support (i.e., if the :mod:`ssl` module can be imported),
:class:`HTTPSHandler` will also be added.
Beginning in Python 2.3, a :class:`BaseHandler` subclass may also change its
:attr:`handler_order` member variable to modify its position in the handlers
list.
A :class:`BaseHandler` subclass may also change its :attr:`handler_order`
member variable to modify its position in the handlers list.
The following exceptions are raised as appropriate:
......
......@@ -20,13 +20,6 @@ provided by Windows platforms. It includes functions and several constants.
parameter specifies the number of milliseconds the sound should last. If the
system is not able to beep the speaker, :exc:`RuntimeError` is raised.
.. note::
Under Windows 95 and 98, the Windows :cfunc:`Beep` function exists but is
useless (it ignores its arguments). In that case Python simulates it via direct
port manipulation (added in version 2.1). It's unknown whether that will work
on all systems.
.. function:: PlaySound(sound, flags)
......
......@@ -162,16 +162,6 @@ module documentation. This section lists the differences between the API and
There's also an *encoding* argument; see :meth:`toxml`.
The following standard DOM methods have special considerations with
:mod:`xml.dom.minidom`:
.. method:: Node.cloneNode(deep)
Although this method was present in the version of :mod:`xml.dom.minidom`
packaged with Python 2.0, it was seriously broken. This has been corrected for
subsequent releases.
.. _dom-example:
DOM Example
......@@ -224,18 +214,18 @@ rules apply:
:exc:`TypeError` and :exc:`AttributeError`.
* :class:`NodeList` objects are implemented using Python's built-in list type.
Starting with Python 2.2, these objects provide the interface defined in the DOM
specification, but with earlier versions of Python they do not support the
official API. They are, however, much more "Pythonic" than the interface
defined in the W3C recommendations.
These objects provide the interface defined in the DOM specification, but with
earlier versions of Python they do not support the official API. They are,
however, much more "Pythonic" than the interface defined in the W3C
recommendations.
The following interfaces have no implementation in :mod:`xml.dom.minidom`:
* :class:`DOMTimeStamp`
* :class:`DocumentType` (added in Python 2.1)
* :class:`DocumentType`
* :class:`DOMImplementation` (added in Python 2.1)
* :class:`DOMImplementation`
* :class:`CharacterData`
......
......@@ -86,9 +86,8 @@ between conformable Python objects and XML on the wire.
raise a special :exc:`Fault` instance, used to signal XML-RPC server errors, or
:exc:`ProtocolError` used to signal an error in the HTTP/HTTPS transport layer.
Both :exc:`Fault` and :exc:`ProtocolError` derive from a base class called
:exc:`Error`. Note that even though starting with Python 2.2 you can subclass
builtin types, the xmlrpclib module currently does not marshal instances of such
subclasses.
:exc:`Error`. Note that the xmlrpclib module currently does not marshal
instances of subclasses of builtin types.
When passing strings, characters special to XML such as ``<``, ``>``, and ``&``
will be automatically escaped. However, it's the caller's responsibility to
......
......@@ -451,13 +451,11 @@ evaluation stack: enough information is saved so that the next time :meth:`next`
is invoked, the function can proceed exactly as if the :keyword:`yield`
statement were just another external call.
As of Python version 2.5, the :keyword:`yield` statement is now allowed in the
:keyword:`try` clause of a :keyword:`try` ... :keyword:`finally` construct. If
the generator is not resumed before it is finalized (by reaching a zero
reference count or by being garbage collected), the generator-iterator's
:meth:`close` method will be called, allowing any pending :keyword:`finally`
clauses to execute.
The :keyword:`yield` statement is allowed in the :keyword:`try` clause of a
:keyword:`try` ... :keyword:`finally` construct. If the generator is not
resumed before it is finalized (by reaching a zero reference count or by being
garbage collected), the generator-iterator's :meth:`close` method will be
called, allowing any pending :keyword:`finally` clauses to execute.
.. seealso::
......
......@@ -344,8 +344,7 @@ occurred in the :keyword:`try` clause and has not been handled by an
been executed. The :keyword:`finally` clause is also executed "on the way out"
when any other clause of the :keyword:`try` statement is left via a
:keyword:`break`, :keyword:`continue` or :keyword:`return` statement. A more
complicated example (having :keyword:`except` and :keyword:`finally` clauses in
the same :keyword:`try` statement works as of Python 2.5)::
complicated example::
>>> def divide(x, y):
... try:
......
......@@ -493,35 +493,24 @@ packages.
Intra-package References
------------------------
The submodules often need to refer to each other. For example, the
:mod:`surround` module might use the :mod:`echo` module. In fact, such
references are so common that the :keyword:`import` statement first looks in the
containing package before looking in the standard module search path. Thus, the
:mod:`surround` module can simply use ``import echo`` or ``from echo import
echofilter``. If the imported module is not found in the current package (the
package of which the current module is a submodule), the :keyword:`import`
statement looks for a top-level module with the given name.
When packages are structured into subpackages (as with the :mod:`sound` package
in the example), you can use absolute imports to refer to submodules of siblings
packages. For example, if the module :mod:`sound.filters.vocoder` needs to use
the :mod:`echo` module in the :mod:`sound.effects` package, it can use ``from
sound.effects import echo``.
Starting with Python 2.5, in addition to the implicit relative imports described
above, you can write explicit relative imports with the ``from module import
name`` form of import statement. These explicit relative imports use leading
dots to indicate the current and parent packages involved in the relative
import. From the :mod:`surround` module for example, you might use::
You can also write relative imports, with the ``from module import name`` form
of import statement. These imports use leading dots to indicate the current and
parent packages involved in the relative import. From the :mod:`surround`
module for example, you might use::
from . import echo
from .. import formats
from ..filters import equalizer
Note that both explicit and implicit relative imports are based on the name of
the current module. Since the name of the main module is always ``"__main__"``,
modules intended for use as the main module of a Python application should
always use absolute imports.
Note that relative imports are based on the name of the current module. Since
the name of the main module is always ``"__main__"``, modules intended for use
as the main module of a Python application must always use absolute imports.
Packages in Multiple Directories
......
......@@ -130,9 +130,6 @@ source.
added to the start of :data:`sys.path` and the ``__main__.py`` file in
that location is executed as the :mod:`__main__` module.
.. versionchanged:: 2.5
Directories and zipfiles containing a ``__main__.py`` file at the top
level are now considered valid Python scripts.
If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is
an empty string (``""``) and the current directory will be added to the
......@@ -157,7 +154,7 @@ Generic options
Print the Python version number and exit. Example output could be::
Python 2.5.1
Python 3.0
Miscellaneous options
......@@ -174,8 +171,6 @@ Miscellaneous options
If given, Python won't try to write ``.pyc`` or ``.pyo`` files on the
import of source modules. See also :envvar:`PYTHONDONTWRITEBYTECODE`.
.. versionadded:: 2.6
.. cmdoption:: -d
......@@ -216,8 +211,6 @@ Miscellaneous options
Don't add user site directory to sys.path
.. versionadded:: 2.6
.. seealso::
:pep:`370` -- Per user site-packages directory
......@@ -432,8 +425,6 @@ These environment variables influence Python's behavior.
If this is set, Python won't try to write ``.pyc`` or ``.pyo`` files on the
import of source modules.
.. versionadded:: 2.6
.. envvar:: PYTHONNOUSERSITE
......@@ -470,8 +461,6 @@ if Python was configured with the :option:`--with-pydebug` build option.
If set, Python will print threading debug info.
.. versionchanged:: 2.6
Previously, this variable was called ``THREADDEBUG``.
.. envvar:: PYTHONDUMPREFS
......
......@@ -14,18 +14,13 @@ the IDE and the Package Manager that are worth pointing out.
The Mac-specific modules are documented in :ref:`mac-specific-services`.
Python on Mac OS 9 or earlier can be quite different from Python on Unix or
Windows, but is beyond the scope of this manual, as that platform is no longer
supported, starting with Python 2.4. See http://www.cwi.nl/~jack/macpython for
installers for the latest 2.3 release for Mac OS 9 and related documentation.
.. _getting-osx:
Getting and Installing MacPython
================================
Mac OS X 10.4 comes with Python 2.3 pre-installed by Apple. However, you are
Mac OS X 10.5 comes with Python 2.5 pre-installed by Apple. However, you are
encouraged to install the most recent version of Python from the Python website
(http://www.python.org). A "universal binary" build of Python 2.5, which runs
natively on the Mac's new Intel and legacy PPC CPU's, is available there.
......
......@@ -24,8 +24,6 @@ With ongoing development of Python, some platforms that used to be supported
earlier are no longer supported (due to the lack of users or developers).
Check :pep:`11` for details on all unsupported platforms.
* DOS and Windows 3.x are deprecated since Python 2.0 and code specific to these
systems was removed in Python 2.1.
* Up to 2.5, Python was still compatible with Windows 95, 98 and ME (but already
raised a deprecation warning on installation). For Python 2.6 (and all
following releases), this support was dropped and new releases are just
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment