Extension modules
-----------------
+- operator.isMappingType() and operator.isSequenceType() now give
+ fewer false positives.
+
- socket.sslerror is now a subclass of socket.error . Also added
socket.error to the socket module's C API.
int
PySequence_Check(PyObject *s)
{
+ if (PyInstance_Check(s))
+ return PyObject_HasAttrString(s, "__getitem__");
return s != NULL && s->ob_type->tp_as_sequence &&
s->ob_type->tp_as_sequence->sq_item != NULL;
}
int
PyMapping_Check(PyObject *o)
{
- return o && o->ob_type->tp_as_mapping &&
- o->ob_type->tp_as_mapping->mp_subscript;
+ if (PyInstance_Check(o))
+ return PyObject_HasAttrString(o, "__getitem__");
+
+ return o && o->ob_type->tp_as_mapping &&
+ o->ob_type->tp_as_mapping->mp_subscript &&
+ !PyObject_HasAttrString(o, "__getslice__");
}
int