I have a 'special' module with dynamically created attributes. I created a .pyi file to statically define which members are available. PyCharm recognizes and uses this file to provide completion for the module and it works nicely. It would be good if iPython also understood this.