PY-18039 Run packaging_tool.py once to detect IPython version if necessary
authorMikhail Golubev <mikhail.golubev@jetbrains.com>
Mon, 6 Jun 2016 19:12:20 +0000 (22:12 +0300)
committerMikhail Golubev <mikhail.golubev@jetbrains.com>
Thu, 23 Jun 2016 14:40:55 +0000 (17:40 +0300)
In theory IPython cell can be run before PythonSdkUpdater startup
activity finishes updating packaging cache when a project is opened.

python/ipnb/src/org/jetbrains/plugins/ipnb/format/IpnbParser.java

index 1076c0753244807dced8c0a645b7d1f7120c5a2f..4d19bea816a4ed520c51d16ad6637a4852f02552 100644 (file)
@@ -15,7 +15,6 @@ import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.util.text.VersionComparatorUtil;
 import com.jetbrains.python.packaging.PyPackage;
-import com.jetbrains.python.packaging.PyPackageManager;
 import com.jetbrains.python.packaging.PyPackageUtil;
 import com.jetbrains.python.sdk.PythonSdkType;
 import org.jetbrains.annotations.NotNull;
@@ -79,7 +78,8 @@ public class IpnbParser {
       if (module != null) {
         final Sdk sdk = PythonSdkType.findPythonSdk(module);
         if (sdk != null) {
-          final List<PyPackage> packages = PyPackageManager.getInstance(sdk).getPackages();
+          // It should be called first before IpnbConnectionManager#startIpythonServer()
+          final List<PyPackage> packages = PyPackageUtil.refreshAndGetPackagesModally(sdk);
           final PyPackage ipython = packages != null ? PyPackageUtil.findPackage(packages, "ipython") : null;
           final PyPackage jupyter = packages != null ? PyPackageUtil.findPackage(packages, "jupyter") : null;
           if (jupyter == null && ipython != null && VersionComparatorUtil.compare(ipython.getVersion(), "3.0") <= 0) {