예제 #1
0
 def test_export_function(self):
     import sys
     if '__pypy__' in sys.modules:
         from cpyext import is_cpyext_function
     else:
         import inspect
         is_cpyext_function = inspect.isbuiltin
     init = """
     if (Py_IsInitialized())
         Py_InitModule("foo", methods);
     """
     body = """
     PyObject* foo_pi(PyObject* self, PyObject *args)
     {
         return PyFloat_FromDouble(3.14);
     }
     static PyMethodDef methods[] = {
         { "return_pi", foo_pi, METH_NOARGS },
         { NULL }
     };
     """
     module = self.import_module(name='foo', init=init, body=body)
     assert 'foo' in sys.modules
     assert 'return_pi' in dir(module)
     assert module.return_pi is not None
     assert is_cpyext_function(module.return_pi)
     assert module.return_pi() == 3.14
     assert module.return_pi.__module__ == 'foo'
예제 #2
0
 def test_export_function(self):
     import sys
     if '__pypy__' in sys.modules:
         from cpyext import is_cpyext_function
     else:
         import inspect
         is_cpyext_function = inspect.isbuiltin
     body = """
     PyObject* foo_pi(PyObject* self, PyObject *args)
     {
         return PyFloat_FromDouble(3.14);
     }
     static PyMethodDef methods[] = {
         { "return_pi", foo_pi, METH_NOARGS },
         { NULL }
     };
     static struct PyModuleDef moduledef = {
         PyModuleDef_HEAD_INIT,
         "foo",          /* m_name */
         NULL,           /* m_doc */
         -1,             /* m_size */
         methods,        /* m_methods */
     };
     """
     module = self.import_module(name='foo', body=body)
     assert 'foo' in sys.modules
     assert 'return_pi' in dir(module)
     assert module.return_pi is not None
     assert is_cpyext_function(module.return_pi)
     assert module.return_pi() == 3.14
     assert module.return_pi.__module__ == 'foo'