[issue43836] range.index doesn't support start/stop optional arguments

Kaleb Barrett report at bugs.python.org
Wed Apr 14 12:31:35 EDT 2021


Kaleb Barrett <dev.ktbarrett at gmail.com> added the comment:

And so it is... There is also a PR open with a solution from 2017. 
https://github.com/python/cpython/pull/4378/files. Can this get reviewed?

The rationalizations against solving this bug stated in the original issue are weak, range.index *is* useful. I use range objects to describe alternate indexing schemes for an array type (to model HDL datatypes that allow arbitrary indexing schemes). range.index is used to translate user supplied indexes into 0-based indexes to index into a parallel list with the array values.
https://github.com/cocotb/cocotb/pull/2510/files#diff-62a4545e5bbb9291f2bdb820609b2d68c69cbafe64faea83beb380d01c02fb5aR315-R319

Additionally, this causes issues with mypy. If you subclass Sequence, mypy will complain if you don't have the optional start and stop arguments in the index method. I would need to feed them into a range object in my implementation. I guess in my case I'm expected to just reject them? This breaks substitutability in my class.

It also breaks substitutability with list, tuples, every built-in Sequence type as well.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue43836>
_______________________________________


More information about the Python-bugs-list mailing list