From c91d93ac115e77f4d6abe12813e6743ad1b5915d Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Thu, 10 Nov 2016 16:09:55 +0300 Subject: [PATCH] PY-21374 Fixed: Yellow 'install packages' bar should be displayed when requirements.txt is opened Remove language for PyPackageRequirementsInspection in python-core-common.xml so it could be executed in "requirements.txt" file --- python/src/META-INF/python-core-common.xml | 2 +- .../PyPackageRequirementsInspection.java | 20 +++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/python/src/META-INF/python-core-common.xml b/python/src/META-INF/python-core-common.xml index 22eaa4acff34..ef66e76a77e2 100644 --- a/python/src/META-INF/python-core-common.xml +++ b/python/src/META-INF/python-core-common.xml @@ -384,7 +384,7 @@ - + diff --git a/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java b/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java index 16a543172ce1..5f7ccda53484 100644 --- a/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java @@ -88,11 +88,19 @@ public class PyPackageRequirementsInspection extends PyInspection { @Override public void visitPyFile(PyFile node) { - final Module module = ModuleUtilCore.findModuleForPsiElement(node); - if (module != null) { - if (isRunningPackagingTasks(module)) { - return; - } + checkPackagesHaveBeenInstalled(node, ModuleUtilCore.findModuleForPsiElement(node)); + } + + @Override + public void visitPlainTextFile(PsiPlainTextFile file) { + final Module module = ModuleUtilCore.findModuleForPsiElement(file); + if (module != null && file.getVirtualFile().equals(PyPackageUtil.findRequirementsTxt(module))) { + checkPackagesHaveBeenInstalled(file, module); + } + } + + private void checkPackagesHaveBeenInstalled(@NotNull PsiElement file, @Nullable Module module) { + if (module != null && !isRunningPackagingTasks(module)) { final Sdk sdk = PythonSdkType.findPythonSdk(module); if (sdk != null) { final List unsatisfied = findUnsatisfiedRequirements(module, sdk, myIgnoredPackages); @@ -109,7 +117,7 @@ public class PyPackageRequirementsInspection extends PyInspection { final List quickFixes = new ArrayList<>(); quickFixes.add(new PyInstallRequirementsFix(null, module, sdk, unsatisfied)); quickFixes.add(new IgnoreRequirementFix(unsatisfiedNames)); - registerProblem(node, msg, + registerProblem(file, msg, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, null, quickFixes.toArray(new LocalQuickFix[quickFixes.size()])); }