diff --git a/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java b/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java index b5ca6f903ebc..9e4b09a89f0b 100644 --- a/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java @@ -44,6 +44,7 @@ import com.jetbrains.python.PyPsiBundle; import com.jetbrains.python.PythonIdeLanguageCustomization; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.psi.PyFile; +import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.types.TypeEvalContext; import com.jetbrains.python.sdk.*; import com.jetbrains.python.sdk.conda.PyCondaSdkCustomizer; @@ -105,9 +106,9 @@ public final class PyInterpreterInspection extends PyInspection { @Override public void visitPyFile(@NotNull PyFile node) { - Module module = guessModule(node); - if (module == null || isFileIgnored(node)) return; - final Sdk sdk = PythonSdkUtil.findPythonSdk(module); + if (isFileIgnored(node)) return; + @Nullable final Module module = ModuleUtilCore.findModuleForPsiElement(node); + @Nullable final Sdk sdk = PyBuiltinCache.findSdkForFile(node); final boolean pyCharm = PythonIdeLanguageCustomization.isMainlyPythonIde(); @@ -124,7 +125,7 @@ public final class PyInterpreterInspection extends PyInspection { } else { final @NlsSafe String associatedModulePath = PySdkExtKt.getAssociatedModulePath(sdk); - if (!PlatformUtils.isFleetBackend() && (associatedModulePath == null || PySdkExtKt.isAssociatedWithAnotherModule(sdk, module))) { + if (module != null && !PlatformUtils.isFleetBackend() && (associatedModulePath == null || PySdkExtKt.isAssociatedWithAnotherModule(sdk, module))) { final PyInterpreterInspectionQuickFixData fixData = PySdkProvider.EP_NAME.getExtensionList().stream() .map(ext -> ext.createEnvironmentAssociationFix(module, sdk, pyCharm, associatedModulePath)) .filter(it -> it != null) @@ -169,15 +170,15 @@ public final class PyInterpreterInspection extends PyInspection { private void registerProblemWithCommonFixes(PyFile node, @InspectionMessage String message, - Module module, + @Nullable Module module, Sdk sdk, List fixes, boolean pyCharm) { - if (pyCharm && sdk == null) { + if (module != null && pyCharm && sdk == null) { final String sdkName = ProjectRootManager.getInstance(node.getProject()).getProjectSdkName(); ContainerUtil.addIfNotNull(fixes, getSuitableSdkFix(sdkName, module)); } - if (pyCharm) { + if (module != null && pyCharm) { fixes.add(new ConfigureInterpreterFix()); } else { @@ -359,27 +360,15 @@ public final class PyInterpreterInspection extends PyInspection { } } - private static @Nullable Module guessModule(@NotNull PsiElement element) { - Module module = ModuleUtilCore.findModuleForPsiElement(element); - if (module == null) { - Module[] modules = ModuleManager.getInstance(element.getProject()).getModules(); - if (modules.length != 1) { - return null; - } - module = modules[0]; - } - return module; - } - private static boolean isFileIgnored(@NotNull PyFile pyFile) { return PyInspectionExtension.EP_NAME.getExtensionList().stream().anyMatch(ep -> ep.ignoreInterpreterWarnings(pyFile)); } public static final class InterpreterSettingsQuickFix implements LocalQuickFix { - private final @NotNull Module myModule; + private final @Nullable Module myModule; - public InterpreterSettingsQuickFix(@NotNull Module module) { + public InterpreterSettingsQuickFix(@Nullable Module module) { myModule = module; } @@ -441,7 +430,7 @@ public final class PyInterpreterInspection extends PyInspection { final PsiElement element = descriptor.getPsiElement(); if (element == null) return; - final Module module = guessModule(element); + final Module module = ModuleUtilCore.findModuleForPsiElement(element); if (module == null) return; PySdkPopupFactory.Companion.createAndShow(module); diff --git a/python/src/com/jetbrains/python/newProjectWizard/PyV3BaseProjectSettings.kt b/python/src/com/jetbrains/python/newProjectWizard/PyV3BaseProjectSettings.kt index c1c98c469439..0dc675300b82 100644 --- a/python/src/com/jetbrains/python/newProjectWizard/PyV3BaseProjectSettings.kt +++ b/python/src/com/jetbrains/python/newProjectWizard/PyV3BaseProjectSettings.kt @@ -11,9 +11,9 @@ import com.jetbrains.python.Result import com.jetbrains.python.newProject.collector.InterpreterStatisticsInfo import com.jetbrains.python.sdk.ModuleOrProject import com.jetbrains.python.sdk.add.v2.PySdkCreator -import com.jetbrains.python.sdk.pythonSdk import com.jetbrains.python.sdk.setAssociationToModule import com.jetbrains.python.errorProcessing.PyError +import com.jetbrains.python.sdk.configurePythonSdk import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.coroutineScope @@ -39,7 +39,7 @@ class PyV3BaseProjectSettings(var createGitRepository: Boolean = false) { } val (sdk: Sdk, interpreterStatistics: InterpreterStatisticsInfo) = getSdkAndInterpreter(module).getOr { return@coroutineScope it } sdk.setAssociationToModule(module) - module.pythonSdk = sdk + configurePythonSdk(project, module, sdk) return@coroutineScope com.jetbrains.python.Result.success(Pair(sdk, interpreterStatistics)) }