New submission from Mark Russell:

This patch adds documentation for the reversed() builtin and 
__reversed__() special method.

----------
components: Documentation
files: reverse-2.6-docs.diff
messages: 58369
nosy: mark_t_russell
severity: normal
status: open
title: Documentation patch for reversed() and __reversed__()
versions: Python 2.6
Added file: http://bugs.python.org/file8912/reverse-2.6-docs.diff

__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1582>
__________________________________
Index: Doc/reference/datamodel.rst
===================================================================
--- Doc/reference/datamodel.rst (revision 59453)
+++ Doc/reference/datamodel.rst (working copy)
@@ -1819,12 +1819,27 @@
    Iterator objects also need to implement this method; they are required to 
return
    themselves.  For more information on iterator objects, see :ref:`typeiter`.
 
+.. method:: object.__reversed__(self)
+
+   Called (if present) by the :func:`reversed()` builtin to implement
+   reverse iteration.  It should return a new iterator object that iterates
+   over all the objects in the container in reverse order.
+
+   If the :meth:`__reversed__()` method is not provided, the
+   :func:`reversed()` builtin will fall back to using the sequence protocol
+   (:meth:`__len__()` and :meth:`__getitem__()`). Objects should normally
+   only provide :meth:`__reversed__()` if they do not support the sequence
+   protocol and an efficient implementation of reverse iteration is possible.
+   
 The membership test operators (:keyword:`in` and :keyword:`not in`) are 
normally
 implemented as an iteration through a sequence.  However, container objects can
 supply the following special method with a more efficient implementation, which
 also does not require the object be a sequence.
 
 
+
+
+
 .. method:: object.__contains__(self, item)
 
    Called to implement membership test operators.  Should return true if 
*item* is
Index: Doc/library/functions.rst
===================================================================
--- Doc/library/functions.rst   (revision 59453)
+++ Doc/library/functions.rst   (working copy)
@@ -974,8 +974,9 @@
 
 .. function:: reversed(seq)
 
-   Return a reverse :term:`iterator`.  *seq* must be an object which supports
-   the sequence protocol (the :meth:`__len__` method and the 
:meth:`__getitem__`
+   Return a reverse :term:`iterator`.  *seq* must be an object which has
+   a :meth:`__reversed__` method [#]_ or supports the sequence protocol
+   (the :meth:`__len__` method and the :meth:`__getitem__`
    method with integer arguments starting at ``0``).
 
    .. versionadded:: 2.4
@@ -1342,6 +1343,8 @@
    any I/O has been performed, and there's no reliable way to determine whether
    this is the case.
 
+.. [#] See :ref:`sequence-types`
+
 .. [#] In the current implementation, local variable bindings cannot normally 
be
    affected this way, but variables retrieved from other scopes (such as 
modules)
    can be.  This may change.
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to