On Thu, Sep 21, 2006 at 08:29:11AM -0700, Carl Banks wrote: > > [EMAIL PROTECTED] wrote: > > itertools.count docs say: > > Does not currently support python long integers. > > Note, count() does not check for overflow and will return negative > > numbers after exceeding sys.maxint. This behavior may change in the > > future. > > > > But it seems it doesn't support negative numbers too: > > > > >>> from itertools import count, islice > > >>> list(islice(count(), 0, 5)) > > [0, 1, 2, 3, 4] > > >>> list(islice(count(10), 0, 5)) > > [10, 11, 12, 13, 14] > > >>> list(islice(count(-3), 0, 5)) > > [4294967293L, 4294967294L, 4294967295L, 0, 1] > > >>> def count2(n=0): > > ... while True: > > ... yield n > > ... n += 1 > > ... > > >>> list(islice(count2(-3), 0, 5)) > > [-3, -2, -1, 0, 1] > > > > If this isn't a bug, then maybe docs can tell about this too. > > Seems like a regression to me. itertools was documented as taking a > sequence of integers, not necessarily positive integers. It worked on > Python 2.4. > > Looking at the source (from 2.5 rc2), it looks like they accidentally > used PyInt_FromSize_t rather than PyInt_FromSSize_t in the count > iterator. size_t is unsigned, of course, hence the large negative > numbers. >
Nuts, that was me. I'll fix and add some tests. -Jack -- http://mail.python.org/mailman/listinfo/python-list