# XXX Not sure where this should really go since I can't find a
# test module specifically for builtin_function_or_method.
+ def test_builtin__module__(self):
+ import math
+
+ # builtin function:
+ self.assertEqual(len.__module__, 'builtins')
+ self.assertEqual(math.sin.__module__, 'math')
+
+ # instance method:
+ self.assertRaises(AttributeError, getattr, int.to_bytes, '__module__')
+ self.assertEqual(int.to_bytes.__objclass__.__module__, 'builtins')
+
+ # builtin classmethod:
+ self.assertEqual(int.from_bytes.__module__, None)
+ self.assertEqual(int.from_bytes.__self__.__module__, 'builtins')
+
+ # builtin staticmethod:
+ self.assertEqual(bytes.maketrans.__module__, 'builtins')
+
def test_builtin__qualname__(self):
import time
descr = PyDescr_NewClassMethod(type, meth);
}
else if (meth->ml_flags & METH_STATIC) {
- PyObject *cfunc = PyCFunction_NewEx(meth, (PyObject*)type, NULL);
+ PyObject *mod = type_module(type);
+ if (mod == NULL) {
+ if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
+ return -1;
+ }
+ PyErr_Clear();
+ }
+ PyObject *cfunc = PyCFunction_NewEx(meth, (PyObject*)type, mod);
+ Py_XDECREF(mod);
if (cfunc == NULL) {
return -1;
}