]> granicus.if.org Git - python/commitdiff
Issue #1717: add a DeprecationWarning in 3.x on type initialization
authorMark Dickinson <dickinsm@gmail.com>
Sun, 8 Feb 2009 11:02:10 +0000 (11:02 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sun, 8 Feb 2009 11:02:10 +0000 (11:02 +0000)
for types that implement tp_reserved (formerly tp_compare) but
not tp_richcompare.

Objects/typeobject.c

index 05c9ceb92ff5002f0808b8347a71e0ae866a6a03..47e425cab10be3507ff4ddfeab0cf6f95507f713 100644 (file)
@@ -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 =