improve abstract property support (closes #11610)

Thanks to Darren Dale for patch.
This commit is contained in:
Benjamin Peterson 2011-12-15 15:34:02 -05:00
parent a8ff01ca74
commit bfebb7b54a
12 changed files with 396 additions and 36 deletions

View file

@ -840,6 +840,29 @@ PyObject_SetAttrString(PyObject *v, const char *name, PyObject *w)
return res;
}
int
_PyObject_IsAbstract(PyObject *obj)
{
int res;
PyObject* isabstract;
_Py_IDENTIFIER(__isabstractmethod__);
if (obj == NULL)
return 0;
isabstract = _PyObject_GetAttrId(obj, &PyId___isabstractmethod__);
if (isabstract == NULL) {
if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Clear();
return 0;
}
return -1;
}
res = PyObject_IsTrue(isabstract);
Py_DECREF(isabstract);
return res;
}
PyObject *
_PyObject_GetAttrId(PyObject *v, _Py_Identifier *name)
{