From: Mark Dickinson Date: Sun, 8 Feb 2009 11:02:10 +0000 (+0000) Subject: Issue #1717: add a DeprecationWarning in 3.x on type initialization X-Git-Tag: v3.1a1~235 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a7d45b680cb8dde1a57ab149461f721c197647d;p=python Issue #1717: add a DeprecationWarning in 3.x on type initialization for types that implement tp_reserved (formerly tp_compare) but not tp_richcompare. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 05c9ceb92f..47e425cab1 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -3886,6 +3886,21 @@ PyType_Ready(PyTypeObject *type) goto error; } + /* Warn for a type that implements tp_compare (now known as + tp_reserved) but not tp_richcompare. */ + if (type->tp_reserved && !type->tp_richcompare) { + int error; + char msg[240]; + PyOS_snprintf(msg, sizeof(msg), + "Type %.100s defines tp_reserved (formerly " + "tp_compare) but not tp_richcompare. " + "Comparisons may not behave as intended.", + type->tp_name); + error = PyErr_WarnEx(PyExc_DeprecationWarning, msg, 1); + if (error == -1) + goto error; + } + /* All done -- set the ready flag */ assert(type->tp_dict != NULL); type->tp_flags =