This is a bit tricky, because the SIP API's are *always* committed (implicitly or explicitly) by the time PyQt4 is imported. In Python 2, PyQt4 sets them to v1 if they haven't been set already. It sounds like on python 3, the default is reversed?

I added the explicit setapi setting since in Python 2.7, pyqt untouched == pyqt + strict v1. I didn't realize this led to a logic change on Python 3.

However, even if the default is different on python 3, I still think SIP should be set explicitly. If IPython uses an "untouched" approach, it won't always be obvious which API is being used. Is there some benefit to falling back on a version-dependent default that I'm not realizing?