What's the difference between ctypes, SWIG and SIP? I've used SWIG to "convert" C source to Python (as I believe SIP does?), so does ctypes wrap functions from binaries (e.g. DLL's)?