When objects are returned from QModelIndex.data they are not an instance of the object return from QAbstractItemModel.data.
I have setup a QAbstractItemModel subclass the returns a custom modelObject when given the custom userRole. This works just fine when I call mode.data(index,role). When I call index.data(role) I do not get an object of the correct type returned. It seems to return the python base type even if it is a super class way up in the inheritance. This happens with QAbstractProxyModel as well. I think any time it goes to Qt wraped data method it looses its python type information.