@ -1531,6 +1531,10 @@ PySequence_Size(PyObject *s)
return len ;
}
if ( s - > ob_type - > tp_as_mapping & & s - > ob_type - > tp_as_mapping - > mp_length ) {
type_error ( " %.200s is not a sequence " , s ) ;
return - 1 ;
}
type_error ( " object of type '%.200s' has no len() " , s ) ;
return - 1 ;
}
@ -1677,6 +1681,9 @@ PySequence_GetItem(PyObject *s, Py_ssize_t i)
return m - > sq_item ( s , i ) ;
}
if ( s - > ob_type - > tp_as_mapping & & s - > ob_type - > tp_as_mapping - > mp_subscript ) {
return type_error ( " %.200s is not a sequence " , s ) ;
}
return type_error ( " '%.200s' object does not support indexing " , s ) ;
}
@ -1728,6 +1735,10 @@ PySequence_SetItem(PyObject *s, Py_ssize_t i, PyObject *o)
return m - > sq_ass_item ( s , i , o ) ;
}
if ( s - > ob_type - > tp_as_mapping & & s - > ob_type - > tp_as_mapping - > mp_ass_subscript ) {
type_error ( " %.200s is not a sequence " , s ) ;
return - 1 ;
}
type_error ( " '%.200s' object does not support item assignment " , s ) ;
return - 1 ;
}
@ -1757,6 +1768,10 @@ PySequence_DelItem(PyObject *s, Py_ssize_t i)
return m - > sq_ass_item ( s , i , ( PyObject * ) NULL ) ;
}
if ( s - > ob_type - > tp_as_mapping & & s - > ob_type - > tp_as_mapping - > mp_ass_subscript ) {
type_error ( " %.200s is not a sequence " , s ) ;
return - 1 ;
}
type_error ( " '%.200s' object doesn't support item deletion " , s ) ;
return - 1 ;
}
@ -2093,6 +2108,11 @@ PyMapping_Size(PyObject *o)
return len ;
}
if ( o - > ob_type - > tp_as_sequence & & o - > ob_type - > tp_as_sequence - > sq_length ) {
type_error ( " %.200s is not a mapping " , o ) ;
return - 1 ;
}
/* PyMapping_Size() can be called from PyObject_Size(). */
type_error ( " object of type '%.200s' has no len() " , o ) ;
return - 1 ;
}