mirror of https://github.com/python/cpython
PyObject_GetItem(), PyObject_SetItem(), PyObject_DelItem(): Fix a few
confusing error messages. If a new-style class has no sequence or mapping behavior, attempting to use the indexing notation with a non-integer key would complain that the sequence index must be an integer, rather than complaining that the operation is not supported.
This commit is contained in:
parent
bf7c52c233
commit
64585f6afb
|
@ -103,7 +103,8 @@ PyObject_GetItem(PyObject *o, PyObject *key)
|
||||||
return NULL;
|
return NULL;
|
||||||
return PySequence_GetItem(o, key_value);
|
return PySequence_GetItem(o, key_value);
|
||||||
}
|
}
|
||||||
return type_error("sequence index must be integer");
|
else if (o->ob_type->tp_as_sequence->sq_item)
|
||||||
|
return type_error("sequence index must be integer");
|
||||||
}
|
}
|
||||||
|
|
||||||
return type_error("unsubscriptable object");
|
return type_error("unsubscriptable object");
|
||||||
|
@ -131,8 +132,10 @@ PyObject_SetItem(PyObject *o, PyObject *key, PyObject *value)
|
||||||
return -1;
|
return -1;
|
||||||
return PySequence_SetItem(o, key_value, value);
|
return PySequence_SetItem(o, key_value, value);
|
||||||
}
|
}
|
||||||
type_error("sequence index must be integer");
|
else if (o->ob_type->tp_as_sequence->sq_ass_item) {
|
||||||
return -1;
|
type_error("sequence index must be integer");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type_error("object does not support item assignment");
|
type_error("object does not support item assignment");
|
||||||
|
@ -161,8 +164,10 @@ PyObject_DelItem(PyObject *o, PyObject *key)
|
||||||
return -1;
|
return -1;
|
||||||
return PySequence_DelItem(o, key_value);
|
return PySequence_DelItem(o, key_value);
|
||||||
}
|
}
|
||||||
type_error("sequence index must be integer");
|
else if (o->ob_type->tp_as_sequence->sq_ass_item) {
|
||||||
return -1;
|
type_error("sequence index must be integer");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type_error("object does not support item deletion");
|
type_error("object does not support item deletion");
|
||||||
|
|
Loading…
Reference in New Issue