DS-3787 Missing "No SDK" panel for Python and Jupyter files

PyInterpreterInspection -> PyEditorNotificationProvider

GitOrigin-RevId: d733de44d45b1c012bd16187416978930daf6277
This commit is contained in:
Andrey Vokin
2022-08-16 17:15:27 +02:00
committed by intellij-monorepo-bot
parent efb28f98cc
commit 0bef9bdf84
12 changed files with 21 additions and 23 deletions

View File

@@ -15,7 +15,7 @@ import com.intellij.util.ui.FormBuilder
import com.jetbrains.python.PyBundle
import com.jetbrains.python.PySdkBundle
import com.jetbrains.python.configuration.PyConfigurableInterpreterList
import com.jetbrains.python.inspections.PyInterpreterInspection
import com.jetbrains.python.sdk.PyEditorNotificationProvider
import com.jetbrains.python.newProject.steps.ProjectSpecificSettingsStep
import com.jetbrains.python.sdk.*
import com.jetbrains.python.sdk.add.PySdkPathChoosingComboBox
@@ -152,7 +152,7 @@ abstract class PythonBasedLangSupport : AbstractLangSupport() {
}
val configureCallbackId = LearningUiManager.addCallback {
val module = project.modules.singleOrNull() ?: return@addCallback
PyInterpreterInspection.InterpreterSettingsQuickFix.showPythonInterpreterSettings(project, module)
PyEditorNotificationProvider.InterpreterSettingsQuickFix.showPythonInterpreterSettings(project, module)
}
if (useUserProjects || isLearningProject(project, this@PythonBasedLangSupport)) {
showWarning(PythonLessonsBundle.message("no.interpreter.in.learning.project", configureCallbackId),

View File

@@ -7,7 +7,7 @@ import com.intellij.openapi.util.NlsSafe
import com.intellij.openapi.util.UserDataHolderBase
import com.intellij.ui.dsl.builder.Panel
import com.jetbrains.python.configuration.PyConfigurableInterpreterList
import com.jetbrains.python.inspections.PyInterpreterInspection
import com.jetbrains.python.sdk.PyEditorNotificationProvider
import com.jetbrains.python.newProject.steps.ProjectSpecificSettingsStep
import com.jetbrains.python.sdk.findBaseSdks
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor
@@ -33,7 +33,7 @@ object PythonLessonsUtil {
fun LessonContext.showWarningIfPython3NotFound() {
task {
val callbackId = LearningUiManager.addCallback {
PyInterpreterInspection.InterpreterSettingsQuickFix.showPythonInterpreterSettings(project, project.modules.first())
PyEditorNotificationProvider.InterpreterSettingsQuickFix.showPythonInterpreterSettings(project, project.modules.first())
}
stateCheck { isPython3Installed(project) }
showWarning(PythonLessonsBundle.message("python.3.required.warning.message", callbackId)) {

View File

@@ -18,10 +18,10 @@
<projectListeners>
<listener
class="com.jetbrains.python.inspections.PyInterpreterInspection$CacheCleaner"
class="com.jetbrains.python.sdk.PyEditorNotificationProvider$CacheCleaner"
topic="com.intellij.workspaceModel.ide.WorkspaceModelChangeListener"/>
<listener
class="com.jetbrains.python.inspections.PyInterpreterInspection$CacheCleaner"
class="com.jetbrains.python.sdk.PyEditorNotificationProvider$CacheCleaner"
topic="com.intellij.openapi.projectRoots.ProjectJdkTable$Listener"/>
</projectListeners>
@@ -185,7 +185,7 @@
<liveTemplateMacro implementation="com.jetbrains.python.codeInsight.liveTemplates.PyFunctionNameMacro"/>
<liveTemplateMacro implementation="com.jetbrains.python.codeInsight.liveTemplates.PyIterableVariableMacro"/>
<editorNotificationProvider implementation="com.jetbrains.python.inspections.PyInterpreterInspection"/>
<editorNotificationProvider implementation="com.jetbrains.python.sdk.PyEditorNotificationProvider"/>
<codeInsight.overrideMethod language="Python" implementationClass="com.jetbrains.python.codeInsight.override.PyOverrideMethodsHandler"/>
<codeInsight.implementMethod language="Python" implementationClass="com.jetbrains.python.codeInsight.implement.PyImplementMethodsHandler"/>

View File

@@ -15,7 +15,7 @@ import com.intellij.psi.PsiElementVisitor
import com.jetbrains.python.PyPsiBundle
import com.jetbrains.python.inspections.PyInspection
import com.jetbrains.python.inspections.PyInspectionVisitor
import com.jetbrains.python.inspections.PyInterpreterInspection
import com.jetbrains.python.sdk.PyEditorNotificationProvider
import com.jetbrains.python.packaging.PyPackage
import com.jetbrains.python.packaging.PyPackageManager
import com.jetbrains.python.packaging.requirement.PyRequirementRelation
@@ -97,7 +97,7 @@ class PyStubPackagesCompatibilityInspection : PyInspection() {
runtimePkgName, specsToString)
registerProblem(node,
message,
PyInterpreterInspection.InterpreterSettingsQuickFix(module),
PyEditorNotificationProvider.InterpreterSettingsQuickFix(module),
createIgnoreStubPackageQuickFix(stubPkgName, ignoredStubPackages))
}
}

View File

@@ -68,7 +68,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.jetbrains.python.inspections.PyInterpreterInspection.InterpreterSettingsQuickFix.showPythonInterpreterSettings;
import static com.jetbrains.python.sdk.PyEditorNotificationProvider.InterpreterSettingsQuickFix.showPythonInterpreterSettings;
public class PyDebugRunner implements ProgramRunner<RunnerSettings> {

View File

@@ -30,9 +30,9 @@ public class PyDocstringVisitorFilter implements PythonVisitorFilter {
visitorClass == PyUnboundLocalVariableInspection.class || visitorClass == PyUnnecessaryBackslashInspection.class ||
visitorClass == PyByteLiteralInspection.class || visitorClass == PyNonAsciiCharInspection.class ||
visitorClass == PyPackageRequirementsInspection.class || visitorClass == PyMandatoryEncodingInspection.class ||
visitorClass == PyInterpreterInspection.class || visitorClass == PyDocstringTypesInspection.class ||
visitorClass == PySingleQuotedDocstringInspection.class || visitorClass == PyClassHasNoInitInspection.class ||
visitorClass == PyStatementEffectInspection.class || visitorClass == PyPep8Inspection.class) {
visitorClass == PyDocstringTypesInspection.class || visitorClass == PySingleQuotedDocstringInspection.class ||
visitorClass == PyClassHasNoInitInspection.class || visitorClass == PyStatementEffectInspection.class ||
visitorClass == PyPep8Inspection.class) {
return false;
}
//annotators

View File

@@ -73,10 +73,10 @@ import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class PyInterpreterInspection implements DumbAware, EditorNotificationProvider {
public final class PyEditorNotificationProvider implements DumbAware, EditorNotificationProvider {
@NotNull
private static final Logger LOGGER = Logger.getInstance(PyInterpreterInspection.class);
private static final Logger LOGGER = Logger.getInstance(PyEditorNotificationProvider.class);
@NotNull
private static final Pattern NAME = Pattern.compile("Python (?<version>\\d\\.\\d+)\\s*(\\((?<name>.+?)\\))?");
@@ -297,7 +297,7 @@ public final class PyInterpreterInspection implements DumbAware, EditorNotificat
return findAssociatedViaRootNameEnv(
associatedName,
PySdkExtKt.detectVirtualEnvs(module, existingSdks, context),
PyInterpreterInspection::getVirtualEnvRootName
PyEditorNotificationProvider::getVirtualEnvRootName
);
}

View File

@@ -41,6 +41,7 @@ import com.jetbrains.python.packaging.ui.PyChooseRequirementsDialog;
import com.jetbrains.python.psi.*;
import com.jetbrains.python.psi.impl.PyPsiUtils;
import com.jetbrains.python.psi.types.TypeEvalContext;
import com.jetbrains.python.sdk.PyEditorNotificationProvider;
import com.jetbrains.python.sdk.PySdkExtKt;
import com.jetbrains.python.sdk.PySdkProvider;
import com.jetbrains.python.sdk.PythonSdkUtil;
@@ -352,7 +353,7 @@ public class PyPackageRequirementsInspection extends PyInspection {
final int answer = askToConfigureInterpreter(project, sdk);
switch (answer) {
case Messages.YES:
new PyInterpreterInspection.ConfigureInterpreterFix().applyFix(project, descriptor);
new PyEditorNotificationProvider.ConfigureInterpreterFix().applyFix(project, descriptor);
return true;
case Messages.CANCEL:
case -1:

View File

@@ -17,7 +17,6 @@ public class PyTypeAnnotationVisitorFilter implements PythonVisitorFilter {
visitorClass == PyByteLiteralInspection.class ||
visitorClass == PyMandatoryEncodingInspection.class ||
visitorClass == PyNonAsciiCharInspection.class ||
visitorClass == PyInterpreterInspection.class ||
visitorClass == PyPep8Inspection.class ||
visitorClass == PyCompatibilityInspection.class ||
visitorClass == PyPackageRequirementsInspection.class);

View File

@@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.concurrency.AsyncPromise;
import org.jetbrains.concurrency.Promise;
import static com.jetbrains.python.inspections.PyInterpreterInspection.InterpreterSettingsQuickFix.showPythonInterpreterSettings;
import static com.jetbrains.python.sdk.PyEditorNotificationProvider.InterpreterSettingsQuickFix.showPythonInterpreterSettings;
public class PythonRunner extends AsyncProgramRunner<RunnerSettings> {
@Override

View File

@@ -18,7 +18,6 @@ import com.intellij.util.text.trimMiddle
import com.intellij.util.ui.SwingHelper
import com.jetbrains.python.PyBundle
import com.jetbrains.python.configuration.PyConfigurableInterpreterList
import com.jetbrains.python.inspections.PyInterpreterInspection
import com.jetbrains.python.psi.LanguageLevel
class PySdkPopupFactory(val project: Project, val module: Module) {
@@ -110,7 +109,7 @@ class PySdkPopupFactory(val project: Project, val module: Module) {
private inner class InterpreterSettingsAction : DumbAwareAction(PyBundle.messagePointer("python.sdk.popup.interpreter.settings")) {
override fun actionPerformed(e: AnActionEvent) {
PyInterpreterInspection.InterpreterSettingsQuickFix.showPythonInterpreterSettings(project, module)
PyEditorNotificationProvider.InterpreterSettingsQuickFix.showPythonInterpreterSettings(project, module)
}
}
}

View File

@@ -11,7 +11,6 @@ import com.intellij.ui.EditorNotificationsImpl
import com.intellij.util.ui.UIUtil
import com.jetbrains.extensions.getSdk
import com.jetbrains.python.fixtures.PyTestCase
import com.jetbrains.python.inspections.PyInterpreterInspection
import org.assertj.core.api.AssertionsForClassTypes
class PythonNoSdkEditorNotificationTest : PyTestCase() {
@@ -45,7 +44,7 @@ class PythonNoSdkEditorNotificationTest : PyTestCase() {
}
}
fun getNotificationPanel(fileEditor: FileEditor) = EditorNotificationsImpl.getNotificationPanels(fileEditor)[PyInterpreterInspection::class.java]
fun getNotificationPanel(fileEditor: FileEditor) = EditorNotificationsImpl.getNotificationPanels(fileEditor)[PyEditorNotificationProvider::class.java]
fun openFileInEditor(fileName: String, fileText: String, fixture: CodeInsightTestFixture) : FileEditor {
UIUtil.dispatchAllInvocationEvents()