On 5/3/11 4:34 PM, Stefan Kuzminski wrote:
Thanks for the clues, I made a modification so that reduce returns this..

   return Py_BuildValue("O(OOOOO)", Py_TYPE(self), PyTuple_New(0), Py_None,
Py_None, Py_None );

and now I get this different error when trying to pickle the type..

  ----------------------------------------------------------------------
Traceback (most recent call last):
   File "test_missing.py", line 16, in test
     print cPickle.dumps( mv )
PicklingError: Can't pickle <type 'MV'>: attribute lookup __builtin__.MV failed

You need to do two things:

1. Set tp_name to something like "mymodule.MV" where "mymodule" is the name of your extension module.

2. Make sure that you add the type object to your module's namespace.

PyMODINIT_FUNC
initmymodule(void) {
  ...
  Py_INCREF(&PyMV_Type);
  PyModule_AddObject(m, "MV", (PyObject*)&PyMV_Type);
}

C.f.

http://docs.python.org/extending/newtypes.html

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to