Commit 6fcf9b50 authored by Benjamin Peterson's avatar Benjamin Peterson

remove the check that classmethod's argument is a callable

parent 8514b85e
......@@ -1391,13 +1391,9 @@ order (MRO) for bases """
self.assertEqual(super(D,D).goo(), (D,))
self.assertEqual(super(D,d).goo(), (D,))
# Verify that argument is checked for callability (SF bug 753451)
try:
classmethod(1).__get__(1)
except TypeError:
pass
else:
self.fail("classmethod should check for callability")
# Verify that a non-callable will raise
meth = classmethod(1).__get__(1)
self.assertRaises(TypeError, meth)
# Verify that classmethod() doesn't allow keyword args
try:
......
......@@ -12,6 +12,8 @@ What's New in Python 2.7 alpha 1
Core and Builtins
-----------------
- classmethod no longer checks if its argument is callable.
- Issue #6750: A text file opened with io.open() could duplicate its output
when writing from multiple threads at the same time.
......
......@@ -2226,10 +2226,6 @@ PyObject *
PyMethod_New(PyObject *func, PyObject *self, PyObject *klass)
{
register PyMethodObject *im;
if (!PyCallable_Check(func)) {
PyErr_BadInternalCall();
return NULL;
}
im = free_list;
if (im != NULL) {
free_list = (PyMethodObject *)(im->im_self);
......
......@@ -659,12 +659,6 @@ cm_init(PyObject *self, PyObject *args, PyObject *kwds)
return -1;
if (!_PyArg_NoKeywords("classmethod", kwds))
return -1;
if (!PyCallable_Check(callable)) {
PyErr_Format(PyExc_TypeError, "'%s' object is not callable",
callable->ob_type->tp_name);
return -1;
}
Py_INCREF(callable);
cm->cm_callable = callable;
return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment