From 2a7d45b680cb8dde1a57ab149461f721c197647d Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Sun, 8 Feb 2009 11:02:10 +0000 Subject: Issue #1717: add a DeprecationWarning in 3.x on type initialization for types that implement tp_reserved (formerly tp_compare) but not tp_richcompare. --- Objects/typeobject.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 05c9ceb..47e425c 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 = -- cgit v0.12