Raymond Hettinger
6b27cda643
Convert iterator __len__() methods to a private API.
2005-09-24 21:23:05 +00:00
Raymond Hettinger
75ccea3777
SF patch #1020188 : Use Py_CLEAR where necessary to avoid crashes
...
(Contributed by Dima Dorfman)
2004-09-01 07:02:44 +00:00
Raymond Hettinger
d2afee47b1
Fix docstring typo.
2004-08-25 19:42:12 +00:00
Raymond Hettinger
7892b1c651
* Add unittests for iterators that report their length
...
* Document the differences between them
* Fix corner cases covered by the unittests
* Use Py_RETURN_NONE where possible for dictionaries
2004-04-12 18:10:01 +00:00
Raymond Hettinger
ef9bf4031a
Tidied up the implementations of reversed (including the custom ones
...
for xrange and list objects).
* list.__reversed__ now checks the length of the sequence object before
calling PyList_GET_ITEM() because the mutable could have changed length.
* all three implementations are now tranparent with respect to length and
maintain the invariant len(it) == len(list(it)) even when the underlying
sequence mutates.
* __builtin__.reversed() now frees the underlying sequence as soon
as the iterator is exhausted.
* the code paths were rearranged so that the most common paths
do not require a jump.
2004-03-10 10:10:42 +00:00
Raymond Hettinger
d2c36261a2
Eliminate the double reverse option. It's only use case
...
was academic and it was potentially confusing to use.
2004-03-10 08:32:47 +00:00
Raymond Hettinger
029dba5a40
Make reversed() transparent with respect to length.
2004-02-10 09:33:39 +00:00
Raymond Hettinger
06353f76be
Let reversed() work with itself.
2004-02-08 10:49:42 +00:00
Raymond Hettinger
c058fd14a9
* Fix ref counting in extend() and extendleft().
...
* Let deques support reversed().
2004-02-07 02:45:22 +00:00
Raymond Hettinger
1021c44b41
Optimize reversed(list) using a custom iterator.
2003-11-07 15:38:09 +00:00
Raymond Hettinger
85c20a41df
Implement and apply PEP 322, reverse iteration
2003-11-06 14:06:48 +00:00
Raymond Hettinger
54a831bef7
Use PyTuple_Pack() to simplify enumerate().
2003-11-02 05:37:44 +00:00
Raymond Hettinger
e8b0f0461b
* Beefed-up tests
...
* Allow tuple re-use
* Call tp_iternext directly
2003-05-28 14:05:34 +00:00
Jeremy Hylton
fbbe34789e
Add a useful docstring to enumerate.
2003-04-21 20:26:25 +00:00
Raymond Hettinger
1da1dbf458
Renamed PyObject_GenericGetIter to PyObject_SelfIter
...
to more accurately describe what the function does.
Suggested by Thomas Wouters.
2003-03-17 19:46:11 +00:00
Raymond Hettinger
0153826964
Created PyObject_GenericGetIter().
...
Factors out the common case of returning self.
2003-03-17 08:24:35 +00:00
Guido van Rossum
ca5ed5b875
Remove the next() method -- one is supplied automatically by
...
PyType_Ready() because the tp_iternext slot is set (fortunately,
because using the tp_iternext implementation for the the next()
implementation is buggy). Also changed the allocation order in
enum_next() so that the underlying iterator is only moved ahead when
we have successfully allocated the result tuple and index.
2002-07-16 21:02:42 +00:00
Martin v. Löwis
14f8b4cfcb
Patch #568124 : Add doc string macros.
2002-06-13 20:33:02 +00:00
Guido van Rossum
7dab2426ca
- New builtin function enumerate(x), from PEP 279. Example:
...
enumerate("abc") is an iterator returning (0,"a"), (1,"b"), (2,"c").
The argument can be an arbitrary iterable object.
2002-04-26 19:40:56 +00:00