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 """ ...@@ -1391,13 +1391,9 @@ order (MRO) for bases """
self.assertEqual(super(D,D).goo(), (D,)) self.assertEqual(super(D,D).goo(), (D,))
self.assertEqual(super(D,d).goo(), (D,)) self.assertEqual(super(D,d).goo(), (D,))
# Verify that argument is checked for callability (SF bug 753451) # Verify that a non-callable will raise
try: meth = classmethod(1).__get__(1)
classmethod(1).__get__(1) self.assertRaises(TypeError, meth)
except TypeError:
pass
else:
self.fail("classmethod should check for callability")
# Verify that classmethod() doesn't allow keyword args # Verify that classmethod() doesn't allow keyword args
try: try:
......
...@@ -12,6 +12,8 @@ What's New in Python 2.7 alpha 1 ...@@ -12,6 +12,8 @@ What's New in Python 2.7 alpha 1
Core and Builtins 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 - Issue #6750: A text file opened with io.open() could duplicate its output
when writing from multiple threads at the same time. when writing from multiple threads at the same time.
......
...@@ -2226,10 +2226,6 @@ PyObject * ...@@ -2226,10 +2226,6 @@ PyObject *
PyMethod_New(PyObject *func, PyObject *self, PyObject *klass) PyMethod_New(PyObject *func, PyObject *self, PyObject *klass)
{ {
register PyMethodObject *im; register PyMethodObject *im;
if (!PyCallable_Check(func)) {
PyErr_BadInternalCall();
return NULL;
}
im = free_list; im = free_list;
if (im != NULL) { if (im != NULL) {
free_list = (PyMethodObject *)(im->im_self); free_list = (PyMethodObject *)(im->im_self);
......
...@@ -659,12 +659,6 @@ cm_init(PyObject *self, PyObject *args, PyObject *kwds) ...@@ -659,12 +659,6 @@ cm_init(PyObject *self, PyObject *args, PyObject *kwds)
return -1; return -1;
if (!_PyArg_NoKeywords("classmethod", kwds)) if (!_PyArg_NoKeywords("classmethod", kwds))
return -1; 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); Py_INCREF(callable);
cm->cm_callable = callable; cm->cm_callable = callable;
return 0; 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