New submission from Michael Seifert:

In a question on StackOverflow 
(https://stackoverflow.com/questions/44302946/itertools-does-not-recognize-numpy-ints-as-valid-inputs-on-python-3-6)
 it was mentioned that numpys scalars cannot be used as index for 
`itertools.islice`. 

The reason for this is because the numbers are converted with 
`PyLong_AsSsize_t` (which requires a PyLongObject [or subclass]) instead of 
`PyNumber_AsSsize_t` (which only requires an `__index__` method).

I'm not sure if there are many use-cases where numpy scalars make sense as 
inputs for `islice` but it's definetly unexpected that `itertools.islice([1, 2, 
3, 4, 5, 6], np.int32(3))` currently throws a `ValueError: Stop argument for 
islice() must be None or an integer: 0 <= x <= sys.maxsize.`

----------
components: Library (Lib)
messages: 294934
nosy: MSeifert
priority: normal
severity: normal
status: open
title: Using PyNumber_AsSsize_t in itertools.islice
type: behavior
versions: Python 3.5, Python 3.6, Python 3.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue30537>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to