That error means the type_id of uuid is not in the bp registry.

I think you can fix this by deriving uuid_to_python from to_python_converter, as demonstrated in the pytype_function example[1]. This will add the get_pytype function call, and on initialisation, should hopefully add what's missing: a call to `registry::lookup`[2].

Cheers,
Alex

[1] - http://www.boost.org/doc/libs/1_53_0/libs/python/doc/v2/pytype_function.html
[2] - http://www.boost.org/doc/libs/1_53_0/boost/python/converter/registry.hpp


On Wed, 08 May 2013 21:33:51 +0100, Wichert Akkerman <wich...@wiggy.net> wrote:

I am trying to expose a class with a boost::uuids::uuid member to Python. The class is pretty simple:

class Article {
public:
     boost::uuids::uuid uuid;
};

which is exposed like this:

article
        .def(init<boost::uuids::uuid, Article::Type>((arg("uuid")))
        .def_readwrite("uuid", &Article::uuid);

and I have basic converter registered (see https://gist.github.com/wichert/5543390 , it is a bit large to include in this email). This compiles fine and the uuid convertor works correctly when trying converting from python to C++, but trying to access the uuid property results in "TypeError: No Python class registered for C++ class boost::uuids::uuid". I don't understand why that doesn't work; does anyone see what I missed?

Wichert.





--
Using Opera's mail client: http://www.opera.com/mail/
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to