On 12/4/06, "Martin v. Löwis" <[EMAIL PROTECTED]> wrote: > Russ schrieb: > > I love Python, but every time I get an out-of-range error message, I > > wonder why it didn't just tell me what the out-of-range index was and > > what the allowable range was. Certainly that information must be > > available to the exception handler, or how would it know that it is out > > of range? > > Yes, that is true. The information is readily available. > > It's not true that it is "trivial" to fix, though: for every fix, there > ought to be a new test case also, and you have to run the test suite. > Depending on how fast a developer is, it may take between 30min and > 1hour to get a fix implemented (for the list case alone, not counting > all the other sequences).
Maybe it is not as trivial as the OP thought, but it can't be that hard. It could be implemented as a utility function that does the index checking: bool PyObject_IsIndexOutOfBounds(PyObject *o, const char *ob_name, int i) { if (i < 0 || i >= o->ob_size) { char buf[256]; const char fmt[] = "%s index %d not in range(%d)" snprintf(buf, fmt, ob_name, i, o->ob_size); PyErr_SetString(PyExc_IndexError, buf); return true; } return false; } Then replace all code like: if (i < 0 || i >= a->ob_size) { PyErr_SetString(PyExc_IndexError, "string index out of range"); return NULL; } with: if (PyObject_IsOutOfBounds((PyObject *)a, "string", i) return NULL; Or maybe add "index" and "length" attributes to the PyExc_IndexError? "index" and "length" would of course be the invalid index and "length" the length of the container. That would be harder and probably involve some API change or something. Sorry I haven't thought this through 100%, but I don't see how actually _implementing it_ (getting it through the layers of bureaucracy may be harder) could be so difficult. > Even though I could fix it, I don't feel tempted to do so: I never had > this problem; in most cases of IndexError, it was very clear what the > problem was so I didn't need the additional information. For you yes, for a newbie the extra information would certainly be helpful. -- mvh Björn -- http://mail.python.org/mailman/listinfo/python-list