private static void updateSdk(@NotNull Project project, @NotNull final Sdk sdk) throws InvalidSdkException { PySkeletonRefresher.refreshSkeletonsOfSdk( project, sdk); // NOTE: whole thing would need a rename if (!PySdkUtil.isRemote(sdk)) { updateSysPath(sdk); } }
private boolean generateSkeletonsForList( @NotNull final PySkeletonRefresher refresher, ProgressIndicator indicator, @Nullable final String currentBinaryFilesPath) throws InvalidSdkException { final PySkeletonGenerator generator = new PySkeletonGenerator(refresher.getSkeletonsPath(), mySdk, currentBinaryFilesPath); indicator.setIndeterminate(false); final String homePath = mySdk.getHomePath(); if (homePath == null) return false; final ProcessOutput runResult = PySdkUtil.getProcessOutput( new File(homePath).getParent(), new String[] { homePath, PythonHelpersLocator.getHelperPath("extra_syspath.py"), myQualifiedName }, PythonSdkType.getVirtualEnvExtraEnv(homePath), 5000); if (runResult.getExitCode() == 0 && !runResult.isTimeout()) { final String extraPath = runResult.getStdout(); final PySkeletonGenerator.ListBinariesResult binaries = generator.listBinaries(mySdk, extraPath); final List<String> names = Lists.newArrayList(binaries.modules.keySet()); Collections.sort(names); final int size = names.size(); for (int i = 0; i != size; ++i) { final String name = names.get(i); indicator.setFraction((double) i / size); if (needBinaryList(name)) { indicator.setText2(name); final PySkeletonRefresher.PyBinaryItem item = binaries.modules.get(name); final String modulePath = item != null ? item.getPath() : ""; //noinspection unchecked refresher.generateSkeleton( name, modulePath, new ArrayList<String>(), Consumer.EMPTY_CONSUMER); } } } return true; }