From 5835399ef8fd070f03002126f930220412849cd2 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 8 Aug 2012 13:45:14 +0200 Subject: [PATCH] refresh VFS for site-packages directory after installing or uninstalling a package --- python/src/com/jetbrains/python/PyNames.java | 2 ++ .../jetbrains/python/packaging/PyPackageManagerImpl.java | 9 +++++++++ python/src/com/jetbrains/python/sdk/PythonSdkType.java | 3 ++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/python/src/com/jetbrains/python/PyNames.java b/python/src/com/jetbrains/python/PyNames.java index 2192d910f269..0391507ea4db 100644 --- a/python/src/com/jetbrains/python/PyNames.java +++ b/python/src/com/jetbrains/python/PyNames.java @@ -14,6 +14,8 @@ import java.util.regex.Pattern; */ @NonNls public class PyNames { + public static final String SITE_PACKAGES = "site-packages"; + private PyNames() { } diff --git a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java index c40aa6852de0..82cea9b8396f 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageManagerImpl.java @@ -27,10 +27,12 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.SystemProperties; import com.intellij.util.net.HttpConfigurable; +import com.jetbrains.python.PyNames; import com.jetbrains.python.PythonHelpersLocator; import com.jetbrains.python.psi.PyExpression; import com.jetbrains.python.psi.PyListLiteralExpression; import com.jetbrains.python.psi.PyStringLiteralExpression; +import com.jetbrains.python.psi.search.PyProjectScopeBuilder; import com.jetbrains.python.remote.PyRemoteInterpreterException; import com.jetbrains.python.remote.PythonRemoteInterpreterManager; import com.jetbrains.python.remote.PythonRemoteSdkAdditionalData; @@ -461,6 +463,13 @@ public class PyPackageManagerImpl extends PyPackageManager { public void clearCaches() { myPackagesCache = null; myExceptionCache = null; + VirtualFile libDir = PyProjectScopeBuilder.findLibDir(mySdk); + if (libDir != null) { + VirtualFile sitePackages = libDir.findChild(PyNames.SITE_PACKAGES); + if (sitePackages != null) { + sitePackages.refresh(true, true); + } + } } private static List list(T... xs) { diff --git a/python/src/com/jetbrains/python/sdk/PythonSdkType.java b/python/src/com/jetbrains/python/sdk/PythonSdkType.java index a5313ecea698..ef348430a4a7 100644 --- a/python/src/com/jetbrains/python/sdk/PythonSdkType.java +++ b/python/src/com/jetbrains/python/sdk/PythonSdkType.java @@ -39,6 +39,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.SmartList; import com.jetbrains.python.PyBundle; +import com.jetbrains.python.PyNames; import com.jetbrains.python.PythonFileType; import com.jetbrains.python.PythonHelpersLocator; import com.jetbrains.python.facet.PythonFacetSettings; @@ -750,7 +751,7 @@ public class PythonSdkType extends SdkType { if (pythonSdk != null) { final VirtualFile libDir = PyProjectScopeBuilder.findLibDir(pythonSdk); if (libDir != null && VfsUtilCore.isAncestor(libDir, vFile, false)) { - final VirtualFile sitePackages = libDir.findChild("site-packages"); + final VirtualFile sitePackages = libDir.findChild(PyNames.SITE_PACKAGES); if (sitePackages != null && VfsUtilCore.isAncestor(sitePackages, vFile, false)) { return false; }