I don't know whether it's a bug or not, but please consider the following behavior:

First, I import pandas and it all looks fine. Next, I want to type from pandas.io.json import json_normalize and it works nicely as well. Lastly, I want to try pd.io.json.json_normalize directly, and this is where the behavior is unfriendly. The LS doesn't find neither io nor json when I start typing pd..
So, is this a bug or an expected behavior? If it's neither, how can I workaround it?
This is b/c pandas has io submodule and hence pandas.io works in import statement completion. However, __init__.py does not directly import io and only has from pandas.io.api .... So io does not appear in exported items. I guess submodules should be added there too.
What __init__.py are you referring to?
The one in site-packages/pandas folder.
So is this a pandas bug??
No, LS completion issue. I think submodules should appear in the list even if not explicitly imported.
@MikhailArkhipov Can it be that a similar problem happens with numpy.testing?
Unfortunately, change regressed more than it fixed. Reverting, needs more work.