diff options
author | Georg Brandl <georg@python.org> | 2008-05-12 18:05:20 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-12 18:05:20 (GMT) |
commit | e6bcc9145e3ecae592dd2e24da5508f34022b920 (patch) | |
tree | 407b0d02ac1d4e16d0d30d6b2795d4d1345201d2 /Doc | |
parent | c73728373c767119271e3813b3f4d182c845a297 (diff) | |
download | cpython-e6bcc9145e3ecae592dd2e24da5508f34022b920.zip cpython-e6bcc9145e3ecae592dd2e24da5508f34022b920.tar.gz cpython-e6bcc9145e3ecae592dd2e24da5508f34022b920.tar.bz2 |
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.
Diffstat (limited to 'Doc')
52 files changed, 148 insertions, 470 deletions
diff --git a/Doc/c-api/dict.rst b/Doc/c-api/dict.rst index b346d68..def60d2 100644 --- a/Doc/c-api/dict.rst +++ b/Doc/c-api/dict.rst @@ -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; diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst index 3e06e4f..9c9ee7f 100644 --- a/Doc/c-api/exceptions.rst +++ b/Doc/c-api/exceptions.rst @@ -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 | diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst index 89d5f84..6f6b4b8 100644 --- a/Doc/c-api/import.rst +++ b/Doc/c-api/import.rst @@ -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() diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst index 53fc735..4bf6445 100644 --- a/Doc/c-api/init.rst +++ b/Doc/c-api/init.rst @@ -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) diff --git a/Doc/c-api/marshal.rst b/Doc/c-api/marshal.rst index e7b5c13..6d9879c 100644 --- a/Doc/c-api/marshal.rst +++ b/Doc/c-api/marshal.rst @@ -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) diff --git a/Doc/c-api/number.rst b/Doc/c-api/number.rst index 187fe73..1bf08ad 100644 --- a/Doc/c-api/number.rst +++ b/Doc/c-api/number.rst @@ -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) diff --git a/Doc/c-api/set.rst b/Doc/c-api/set.rst index 1560717..4348108 100644 --- a/Doc/c-api/set.rst +++ b/Doc/c-api/set.rst @@ -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. diff --git a/Doc/c-api/slice.rst b/Doc/c-api/slice.rst index ea2b5d6..8761dfc 100644 --- a/Doc/c-api/slice.rst +++ b/Doc/c-api/slice.rst @@ -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) diff --git a/Doc/c-api/string.rst b/Doc/c-api/string.rst index d57757a..56fcd80 100644 --- a/Doc/c-api/string.rst +++ b/Doc/c-api/string.rst @@ -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 | diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index 6b7c4ac..9f47516 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -80,12 +80,10 @@ type objects) *must* have the :attr:`ob_size` field. This should be done before any instances of the type are created. :cfunc:`PyType_Ready` checks if :attr:`ob_type` is *NULL*, and if so, - initializes it: in Python 2.2, it is set to ``&PyType_Type``; in Python 2.2.1 - and later it is initialized to the :attr:`ob_type` field of the base class. + initializes it to the :attr:`ob_type` field of the base class. :cfunc:`PyType_Ready` will not change this field if it is non-zero. - In Python 2.2, this field is not inherited by subtypes. In 2.2.1, and in 2.3 - and beyond, it is inherited by subtypes. + This field is inherited by subtypes. .. cmember:: Py_ssize_t PyVarObject.ob_size @@ -150,8 +148,7 @@ type objects) *must* have the :attr:`ob_size` field. :attr:`_ob_next` fields if they are present. This means that the only correct way to get an initializer for the :attr:`tp_basicsize` is to use the ``sizeof`` operator on the struct used to declare the instance layout. - The basic size does not include the GC header size (this is new in Python 2.2; - in 2.1 and 2.0, the GC header size was included in :attr:`tp_basicsize`). + The basic size does not include the GC header size. These fields are inherited separately by subtypes. If the base type has a non-zero :attr:`tp_itemsize`, it is generally not safe to set @@ -415,9 +412,8 @@ type objects) *must* have the :attr:`ob_size` field. structure. The :const:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with the :attr:`tp_traverse` and :attr:`tp_clear` fields, i.e. if the :const:`Py_TPFLAGS_HAVE_GC` flag bit is clear in the subtype and the - :attr:`tp_traverse` and :attr:`tp_clear` fields in the subtype exist (as - indicated by the :const:`Py_TPFLAGS_HAVE_RICHCOMPARE` flag bit) and have *NULL* - values. + :attr:`tp_traverse` and :attr:`tp_clear` fields in the subtype exist and have + *NULL* values. The following bit masks are currently defined; these can be ORed together using the ``|`` operator to form the value of the :attr:`tp_flags` field. The macro @@ -425,68 +421,6 @@ type objects) *must* have the :attr:`ob_size` field. checks whether ``tp->tp_flags & f`` is non-zero. - .. data:: Py_TPFLAGS_HAVE_GETCHARBUFFER - - If this bit is set, the :ctype:`PyBufferProcs` struct referenced by - :attr:`tp_as_buffer` has the :attr:`bf_getcharbuffer` field. - - - .. data:: Py_TPFLAGS_HAVE_SEQUENCE_IN - - If this bit is set, the :ctype:`PySequenceMethods` struct referenced by - :attr:`tp_as_sequence` has the :attr:`sq_contains` field. - - - .. data:: Py_TPFLAGS_GC - - This bit is obsolete. The bit it used to name is no longer in use. The symbol - is now defined as zero. - - - .. data:: Py_TPFLAGS_HAVE_INPLACEOPS - - If this bit is set, the :ctype:`PySequenceMethods` struct referenced by - :attr:`tp_as_sequence` and the :ctype:`PyNumberMethods` structure referenced by - :attr:`tp_as_number` contain the fields for in-place operators. In particular, - this means that the :ctype:`PyNumberMethods` structure has the fields - :attr:`nb_inplace_add`, :attr:`nb_inplace_subtract`, - :attr:`nb_inplace_multiply`, :attr:`nb_inplace_divide`, - :attr:`nb_inplace_remainder`, :attr:`nb_inplace_power`, - :attr:`nb_inplace_lshift`, :attr:`nb_inplace_rshift`, :attr:`nb_inplace_and`, - :attr:`nb_inplace_xor`, and :attr:`nb_inplace_or`; and the - :ctype:`PySequenceMethods` struct has the fields :attr:`sq_inplace_concat` and - :attr:`sq_inplace_repeat`. - - - .. data:: Py_TPFLAGS_HAVE_RICHCOMPARE - - If this bit is set, the type object has the :attr:`tp_richcompare` field, as - well as the :attr:`tp_traverse` and the :attr:`tp_clear` fields. - - - .. data:: Py_TPFLAGS_HAVE_WEAKREFS - - If this bit is set, the :attr:`tp_weaklistoffset` field is defined. Instances - of a type are weakly referenceable if the type's :attr:`tp_weaklistoffset` field - has a value greater than zero. - - - .. data:: Py_TPFLAGS_HAVE_ITER - - If this bit is set, the type object has the :attr:`tp_iter` and - :attr:`tp_iternext` fields. - - - .. data:: Py_TPFLAGS_HAVE_CLASS - - If this bit is set, the type object has several new fields defined starting in - Python 2.2: :attr:`tp_methods`, :attr:`tp_members`, :attr:`tp_getset`, - :attr:`tp_base`, :attr:`tp_dict`, :attr:`tp_descr_get`, :attr:`tp_descr_set`, - :attr:`tp_dictoffset`, :attr:`tp_init`, :attr:`tp_alloc`, :attr:`tp_new`, - :attr:`tp_free`, :attr:`tp_is_gc`, :attr:`tp_bases`, :attr:`tp_mro`, - :attr:`tp_cache`, :attr:`tp_subclasses`, and :attr:`tp_weaklist`. - - .. data:: Py_TPFLAGS_HEAPTYPE This bit is set when the type object itself is allocated on the heap. In this @@ -523,19 +457,15 @@ type objects) *must* have the :attr:`ob_size` field. destroyed using :cfunc:`PyObject_GC_Del`. More information in section :ref:`supporting-cycle-detection`. This bit also implies that the GC-related fields :attr:`tp_traverse` and :attr:`tp_clear` are present in - the type object; but those fields also exist when - :const:`Py_TPFLAGS_HAVE_GC` is clear but - :const:`Py_TPFLAGS_HAVE_RICHCOMPARE` is set. + the type object. .. data:: Py_TPFLAGS_DEFAULT This is a bitmask of all the bits that pertain to the existence of certain fields in the type object and its extension structures. Currently, it includes - the following bits: :const:`Py_TPFLAGS_HAVE_GETCHARBUFFER`, - :const:`Py_TPFLAGS_HAVE_SEQUENCE_IN`, :const:`Py_TPFLAGS_HAVE_INPLACEOPS`, - :const:`Py_TPFLAGS_HAVE_RICHCOMPARE`, :const:`Py_TPFLAGS_HAVE_WEAKREFS`, - :const:`Py_TPFLAGS_HAVE_ITER`, and :const:`Py_TPFLAGS_HAVE_CLASS`. + the following bits: :const:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`, + :const:`Py_TPFLAGS_HAVE_VERSION_TAG`. .. cmember:: char* PyTypeObject.tp_doc @@ -546,9 +476,6 @@ type objects) *must* have the :attr:`ob_size` field. This field is *not* inherited by subtypes. -The following three fields only exist if the -:const:`Py_TPFLAGS_HAVE_RICHCOMPARE` flag bit is set. - .. cmember:: traverseproc PyTypeObject.tp_traverse @@ -587,8 +514,7 @@ The following three fields only exist if the This field is inherited by subtypes together with :attr:`tp_clear` and the :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :attr:`tp_traverse`, and :attr:`tp_clear` are all inherited from the base type if they are all zero in - the subtype *and* the subtype has the :const:`Py_TPFLAGS_HAVE_RICHCOMPARE` flag - bit set. + the subtype. .. cmember:: inquiry PyTypeObject.tp_clear @@ -643,8 +569,7 @@ The following three fields only exist if the This field is inherited by subtypes together with :attr:`tp_traverse` and the :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :attr:`tp_traverse`, and :attr:`tp_clear` are all inherited from the base type if they are all zero in - the subtype *and* the subtype has the :const:`Py_TPFLAGS_HAVE_RICHCOMPARE` flag - bit set. + the subtype. .. cmember:: richcmpfunc PyTypeObject.tp_richcompare @@ -688,9 +613,6 @@ The following three fields only exist if the +----------------+------------+ -The next field only exists if the :const:`Py_TPFLAGS_HAVE_WEAKREFS` flag bit is -set. - .. cmember:: long PyTypeObject.tp_weaklistoffset If the instances of this type are weakly referenceable, this field is greater @@ -722,9 +644,6 @@ set. :attr:`__weakref__`, the type inherits its :attr:`tp_weaklistoffset` from its base type. -The next two fields only exist if the :const:`Py_TPFLAGS_HAVE_CLASS` flag bit is -set. - .. cmember:: getiterfunc PyTypeObject.tp_iter @@ -753,9 +672,6 @@ set. This field is inherited by subtypes. -The next fields, up to and including :attr:`tp_weaklist`, only exist if the -:const:`Py_TPFLAGS_HAVE_CLASS` flag bit is set. - .. cmember:: struct PyMethodDef* PyTypeObject.tp_methods @@ -933,10 +849,7 @@ The next fields, up to and including :attr:`tp_weaklist`, only exist if the has returned an instance of the type. If the :attr:`tp_new` function returns an instance of some other type that is not a subtype of the original type, no :attr:`tp_init` function is called; if :attr:`tp_new` returns an instance of a - subtype of the original type, the subtype's :attr:`tp_init` is called. (VERSION - NOTE: described here is what is implemented in Python 2.2.1 and later. In - Python 2.2, the :attr:`tp_init` of the type of the object returned by - :attr:`tp_new` was always called, if not *NULL*.) + subtype of the original type, the subtype's :attr:`tp_init` is called. This field is inherited by subtypes. @@ -995,26 +908,17 @@ The next fields, up to and including :attr:`tp_weaklist`, only exist if the deferred to :attr:`tp_init`. This field is inherited by subtypes, except it is not inherited by static types - whose :attr:`tp_base` is *NULL* or ``&PyBaseObject_Type``. The latter exception - is a precaution so that old extension types don't become callable simply by - being linked with Python 2.2. + whose :attr:`tp_base` is *NULL* or ``&PyBaseObject_Type``. .. cmember:: destructor PyTypeObject.tp_free - An optional pointer to an instance deallocation function. - - The signature of this function has changed slightly: in Python 2.2 and 2.2.1, - its signature is :ctype:`destructor`:: - - void tp_free(PyObject *) - - In Python 2.3 and beyond, its signature is :ctype:`freefunc`:: + An optional pointer to an instance deallocation function. Its signature is + :ctype:`freefunc`:: void tp_free(void *) - The only initializer that is compatible with both versions is ``PyObject_Free``, - whose definition has suitably adapted in Python 2.3. + An initializer that is compatible with this signature is :cfunc:`PyObject_Free`. This field is inherited by static subtypes, but not by dynamic subtypes (subtypes created by a class statement); in the latter, this field is set to a @@ -1040,8 +944,7 @@ The next fields, up to and including :attr:`tp_weaklist`, only exist if the :cdata:`PyType_Type`, defines this function to distinguish between statically and dynamically allocated types.) - This field is inherited by subtypes. (VERSION NOTE: in Python 2.2, it was not - inherited. It is inherited in 2.2.1 and later versions.) + This field is inherited by subtypes. .. cmember:: PyObject* PyTypeObject.tp_bases @@ -1309,7 +1212,7 @@ member in the :ctype:`PyTypeObject` structure should be *NULL*. Otherwise, the did not have this member, so a new Python interpreter using an old extension needs to be able to test for its presence before using it. - +.. XXX out of date! .. ctype:: PyBufferProcs Structure used to hold the function pointers which define an implementation of @@ -1352,13 +1255,6 @@ member in the :ctype:`PyTypeObject` structure should be *NULL*. Otherwise, the characters present. -.. data:: Py_TPFLAGS_HAVE_GETCHARBUFFER - - Flag bit set in the type structure to indicate that the :attr:`bf_getcharbuffer` - slot is known. This being set does not indicate that the object supports the - buffer interface or that the :attr:`bf_getcharbuffer` slot is non-*NULL*. - - .. ctype:: Py_ssize_t (*readbufferproc) (PyObject *self, Py_ssize_t segment, void **ptrptr) Return a pointer to a readable segment of the buffer in ``*ptrptr``. This diff --git a/Doc/extending/newtypes.rst b/Doc/extending/newtypes.rst index 106aae3..17da3b5 100644 --- a/Doc/extending/newtypes.rst +++ b/Doc/extending/newtypes.rst @@ -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; diff --git a/Doc/library/base64.rst b/Doc/library/base64.rst index 68a941f..35b61ae 100644 --- a/Doc/library/base64.rst +++ b/Doc/library/base64.rst @@ -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]) diff --git a/Doc/library/codeop.rst b/Doc/library/codeop.rst index 456f6dd..97b6267 100644 --- a/Doc/library/codeop.rst +++ b/Doc/library/codeop.rst @@ -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. - diff --git a/Doc/library/cookielib.rst b/Doc/library/cookielib.rst index f6008f1..c8e7298 100644 --- a/Doc/library/cookielib.rst +++ b/Doc/library/cookielib.rst @@ -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) diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index 6968f42..5efa548 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -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) diff --git a/Doc/library/decimal.rst b/Doc/library/decimal.rst index b7dd32f..7052c7b 100644 --- a/Doc/library/decimal.rst +++ b/Doc/library/decimal.rst @@ -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]) diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index 01c9c85..00f273e 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -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) diff --git a/Doc/library/fcntl.rst b/Doc/library/fcntl.rst index 7244e7b..0e69407 100644 --- a/Doc/library/fcntl.rst +++ b/Doc/library/fcntl.rst @@ -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 diff --git a/Doc/library/ftplib.rst b/Doc/library/ftplib.rst index 4ce8893..41bdcd8 100644 --- a/Doc/library/ftplib.rst +++ b/Doc/library/ftplib.rst @@ -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]) diff --git a/Doc/library/getpass.rst b/Doc/library/getpass.rst index 91c811b..ff1c091 100644 --- a/Doc/library/getpass.rst +++ b/Doc/library/getpass.rst @@ -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. diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index d622e1d..7ef5d3f 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -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 diff --git a/Doc/library/json.rst b/Doc/library/json.rst index a0a62d1..79430c3 100644 --- a/Doc/library/json.rst +++ b/Doc/library/json.rst @@ -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. diff --git a/Doc/library/macos.rst b/Doc/library/macos.rst index 543f868..0eb7225 100644 --- a/Doc/library/macos.rst +++ b/Doc/library/macos.rst @@ -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 diff --git a/Doc/library/markup.rst b/Doc/library/markup.rst index dd0dd8f..19ce7b9 100644 --- a/Doc/library/markup.rst +++ b/Doc/library/markup.rst @@ -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. - diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index fbe3e45..8ef443f 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -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 diff --git a/Doc/library/math.rst b/Doc/library/math.rst index d9593a8..b153f21 100644 --- a/Doc/library/math.rst +++ b/Doc/library/math.rst @@ -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:: diff --git a/Doc/library/netrc.rst b/Doc/library/netrc.rst index e6cc648..91990df 100644 --- a/Doc/library/netrc.rst +++ b/Doc/library/netrc.rst @@ -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. diff --git a/Doc/library/os.rst b/Doc/library/os.rst index bf0fe19..55e007a 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -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) diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index c3b9c8f..2194523 100644 --- a/Doc/library/pickle.rst +++ b/Doc/library/pickle.rst @@ -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 diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst index 5f770f6..f763f2d 100644 --- a/Doc/library/profile.rst +++ b/Doc/library/profile.rst @@ -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. - diff --git a/Doc/library/random.rst b/Doc/library/random.rst index afdff76..d8c3f5a 100644 --- a/Doc/library/random.rst +++ b/Doc/library/random.rst @@ -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) diff --git a/Doc/library/re.rst b/Doc/library/re.rst index 019652e..e3867c0 100644 --- a/Doc/library/re.rst +++ b/Doc/library/re.rst @@ -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() diff --git a/Doc/library/shlex.rst b/Doc/library/shlex.rst index 4c509d8..7d88610 100644 --- a/Doc/library/shlex.rst +++ b/Doc/library/shlex.rst @@ -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:: diff --git a/Doc/library/site.rst b/Doc/library/site.rst index 354043f..a574878 100644 --- a/Doc/library/site.rst +++ b/Doc/library/site.rst @@ -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) diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index a55ae70..9a3af1d 100644 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -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() diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index c910347..9e06a22 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -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:: diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index f66899c..0929f0e 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -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 diff --git a/Doc/library/tempfile.rst b/Doc/library/tempfile.rst index 4de9236..7363940 100644 --- a/Doc/library/tempfile.rst +++ b/Doc/library/tempfile.rst @@ -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() diff --git a/Doc/library/textwrap.rst b/Doc/library/textwrap.rst index 9b2ad11..243e43c 100644 --- a/Doc/library/textwrap.rst +++ b/Doc/library/textwrap.rst @@ -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:: diff --git a/Doc/library/timeit.rst b/Doc/library/timeit.rst index 6a8a94d..495ac81 100644 --- a/Doc/library/timeit.rst +++ b/Doc/library/timeit.rst @@ -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]]]]) diff --git a/Doc/library/traceback.rst b/Doc/library/traceback.rst index 2f29aae..389753a 100644 --- a/Doc/library/traceback.rst +++ b/Doc/library/traceback.rst @@ -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 diff --git a/Doc/library/undoc.rst b/Doc/library/undoc.rst index 62157d4..b314530 100644 --- a/Doc/library/undoc.rst +++ b/Doc/library/undoc.rst @@ -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 diff --git a/Doc/library/urllib2.rst b/Doc/library/urllib2.rst index d6a5fbd..7987007 100644 --- a/Doc/library/urllib2.rst +++ b/Doc/library/urllib2.rst @@ -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: diff --git a/Doc/library/winsound.rst b/Doc/library/winsound.rst index 3088848..dfe3c84 100644 --- a/Doc/library/winsound.rst +++ b/Doc/library/winsound.rst @@ -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) diff --git a/Doc/library/xml.dom.minidom.rst b/Doc/library/xml.dom.minidom.rst index bb3ad02..fb3f5cf 100644 --- a/Doc/library/xml.dom.minidom.rst +++ b/Doc/library/xml.dom.minidom.rst @@ -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` diff --git a/Doc/library/xmlrpclib.rst b/Doc/library/xmlrpclib.rst index dd6a0cc..c1f13c3 100644 --- a/Doc/library/xmlrpclib.rst +++ b/Doc/library/xmlrpclib.rst @@ -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 diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst index cdf249b..2f9db9d 100644 --- a/Doc/reference/simple_stmts.rst +++ b/Doc/reference/simple_stmts.rst @@ -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:: diff --git a/Doc/tutorial/errors.rst b/Doc/tutorial/errors.rst index cedffd5..a9687e5 100644 --- a/Doc/tutorial/errors.rst +++ b/Doc/tutorial/errors.rst @@ -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: diff --git a/Doc/tutorial/modules.rst b/Doc/tutorial/modules.rst index 279afc8..eee989f 100644 --- a/Doc/tutorial/modules.rst +++ b/Doc/tutorial/modules.rst @@ -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 diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index 8704b7f..ae661ce 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -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 diff --git a/Doc/using/mac.rst b/Doc/using/mac.rst index 7811f37..8953e0b 100644 --- a/Doc/using/mac.rst +++ b/Doc/using/mac.rst @@ -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. diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index cd706a7..4064fa1 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -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 |