New GitHub issue #101027 from JustAnotherArchivist:<br>

<hr>

<pre>
The documentation of `enumerate(iterable, start=0)` currently reads:

> Return an enumerate object. *iterable* must be a sequence, an [iterator](https://docs.python.org/3.11/glossary.html#term-iterator), or some other object which supports iteration. The `__next__()` method of the iterator returned by `enumerate()` returns a tuple containing a count (from *start* which defaults to 0) and the values obtained from iterating over *iterable*.

This wording dates back to 2002 (commit 38f71973) with minimal changes ('the values obtained' was originally 'the corresponding value obtained', which was slightly more accurate in my opinion). An earlier issue about this paragraph can be found at #66914, though the specific issue at hand, the description of *iterable*'s type, was not really discussed there.

While the parameter name indicates that `enumerate` accepts any iterable as the first argument, I find it strange that the description explicitly lists

> a sequence, an iterator, or some other object which supports iteration

instead of/without actually mentioning 'iterable' and referencing the term's [definition](https://docs.python.org/3.11/glossary.html#term-iterable) in the glossary.

My primary suggestion is to replace (the slightly vague, as it could mean iterable or iterator) 'object which supports iteration' with 'iterable' and a link to the glossary. Additionally, since all iterators are iterables, their mention could also be removed.

Suggestion 1 (with or without a link for 'iterator'):

> *iterable* must be a sequence, an iterator, or some other [iterable](https://docs.python.org/3.11/glossary.html#term-iterable).

Suggestion 2:

> *iterable* must be a sequence or some other [iterable](https://docs.python.org/3.11/glossary.html#term-iterable).

---

`filter` has a similar situation:

> *iterable* may be either a sequence, a container which supports iteration, or an iterator.

'A container which supports iteration' is quite vague and mildly misleading since other parts of the documentation use the term 'container' for lists and similar types. It also uses 'may' instead of 'must'. I would suggest to use the same wording there as for `enumerate`.
</pre>

<hr>

<a href="https://github.com/python/cpython/issues/101027">View on GitHub</a>
<p>Labels: docs</p>
<p>Assignee: </p>