mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
PY-78893 PY-78022: Python scratch file missing built-in print
- backport parts of PY-78022 - only show settings as quickfix when module is null - fix inspection for scratch files Merge-request: IJ-MR-168005 Merged-by: Marcus Mews <marcus.mews@jetbrains.com> GitOrigin-RevId: 17fa21141ac2374dbcb0feb808e483257754d621
This commit is contained in:
committed by
intellij-monorepo-bot
parent
32f48ae00f
commit
4fcbc186b7
@@ -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<LocalQuickFix> 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);
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user