Python-Qt dynamic bindings: add QObject derived types and instances at run-time and have all the invokable methods automatically accessible from Python and bind Qt signals to Python functions and methods
When an object or type is added to the Python context do allow client code to select which methods and properties are actually added through a filter object or RegExp.
Pass an additional MemeberFilter object to the context which is used to filter members.
Add a version attribute for the QObject wrapper and qpy module. Use git hash or regular number, but in case of a regular number do create a map between git hash and version number.
Make method pure virtual to force derived implementations to explicitly implement it. This will make errors like registering new QObject derived types without explicitly returning true less likely.
Since all signals are forwarded to the same dispatcher method it is not possible to disconnect a signal from individual objects.
It's probably cleaner to derive PyCBackMethod from QObject and have signals routed to instances of this class. This will also fix the issue of not being able to deleted CBackMethods to maintain the mapping between method id and position in the method array consistent.
New constructors for Python <--> Qt types are currently added statically at object construction time, add maps and a registration method to allow client code to register its own value constructors.
In the current implementation method invocators are never removed since they are stored into an array whose index is used as the method id, therefore removing elements invalidates the indices.