On Sun, Dec 28, 2008 at 21:52, Andreas Klöckner <li...@informa.tiker.net> wrote: > On Montag 29 Dezember 2008, Robert Kern wrote: >> On Sun, Dec 28, 2008 at 20:38, Andreas Klöckner <li...@informa.tiker.net> > wrote: >> > On Montag 29 Dezember 2008, Robert Kern wrote: >> >> On Sun, Dec 28, 2008 at 19:23, Andreas Klöckner >> >> <li...@informa.tiker.net> >> > >> > wrote: >> >> > Hi all, >> >> > >> >> > I don't think PyObject pointers should be accessible via the buffer >> >> > interface. I'd throw an error, but maybe a (silenceable) warning would >> >> > do. Would have saved me some bug-hunting. >> >> >> >> Can you describe in more detail what problem it caused? >> > >> > Well, I'm a little bit embarrassed. :) But here goes. >> > >> > I have one-line MPI wrappers that build on Boost.MPI and Boost.Python. >> > They take a numpy array, obtain its buffer, and shove that into >> > Boost.MPI's isend(). >> >> How do you communicate the dtype? > > I don't. The app is a PDE solver, both ends are working at the same (known) > precision. Passing an object array was completely wrong, but since my wrapper > functions only deal with the buffer API, they couldn't really do the checking.
You could wrap the wrappers in Python and check the dtype. You'd have a similar bug if you passed a wrong non-object dtype, too. Checking/communicating the dtype is something you always have to do when using the 2.x buffer protocol. I'm inclined not to make object a special case. When you ask for the raw bytes, you should get the raw bytes. -- 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 _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion