This project has moved and is read-only. For the latest updates, please go here.

Intellisense broke with PySide

Aug 1, 2013 at 9:49 PM
I am using the beta version of 2.0 with Visual Studio 2013. Aside from the Completion DB scanning taking hours, it does not identify any of the PySide modules for Intellisense. I am using Python 2.7 32-bit and 64-bit. Both seem to have this issue. Ctrl + Space returns a list with some garbled characters instead of the PySide objectlist.

What can I do to help diagnose the issue?
Aug 1, 2013 at 10:12 PM
Edited Aug 1, 2013 at 10:12 PM
This sounds like the original issue in, which we have fixed (though intellisense for PyQt may still be lacking for other reasons - it's detailed in the comments to that bug).

If you don't mind building from source, try taking the most recent bits from CodePlex, and see if it fixes your problem. It's always great to get outside verification of bug fixes.
Aug 2, 2013 at 12:06 PM
pminaev, reading through the issue, I agree that it is pretty much the same problem that I am facing.

Unfortunately I do not have access to the tools that I can use to build the latest source. I will just have to wait for the new beta (unless of course I could convince you to post a nightly build of sorts :-)).

As an aside, Pyside linked to Qt4 worked just fine on releases 1.5 and the 2.0alpha releases. Is there such a drastic change in the code completion architecture between the alpha and the beta releases?
Aug 2, 2013 at 2:34 PM
There's a bug in Beta that produces garbage for .pyd files and overwrites our actual results. Once fixed, things will be better than 2.0 Alpha, since the bug was introduced while improving that area.

We'd love to be releasing nightly builds, but unfortunately we have to abide by corporate requirements that make it infeasible. All the build tools are freely available (VS 2013 Ultimate is currently free, and VS 2012 Ultimate has a free trial) but I can understand that it's still a big ask. We're locking down on RC, so it won't be far off.
Aug 3, 2013 at 5:26 PM
I understand your restrictions. Look forward to the RC.
Sep 10, 2013 at 9:59 PM
RC is out now and includes a slew of fixes that make IntelliSense for PyQt and PySide much better.

Unfortunately, with PySide, we are largely constrained by the package itself at this point. For pure Python packages, we can glean a lot of useful information for completion purposes from analyzing the code. For binary packages, however, all we see are the API entry points, and they are not type-annotated, or even provide the argument information. So we do try to glean parameter & type info for native functions from their docstrings. And, unfortunately, PySide does not provide any docstrings. So you will get completion for package/module names, classes, and methods of those classes in PySide, but you won't get completion for parameter names & types, nor for return values of methods - which also means that something like button.parentWidget(). will not give any further completions since we don't know the return type of parentWidget.

The story is much better with PyQt, because not only they provide docstrings, but their docstrings include the complete type information in an easily parsable format. So there we show the argument names and return types, and the earlier example with parentWidget works great.

Since both PySide and PyQt have bindings generated from Qt headers, and since docstrings with type info are something that can be generated in a fully automatic way given the original C++ declaration, this is purely a question of binding generator support. PyQt uses SIP, which has this feature. PySide uses Shiboken (, which does not. I believe Shiboken actually has a feature request for this; if someone were to contribute a patch to them which does it, it would improve things considerably - not just for PTVS, actually, but also for some other Python IDEs, e.g. PyCharm seems to be doing something similar.