mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-82105 Virtual environment creation is not requested in case of opening project with requirements.txt
Signed-off-by: Nikita.Ashihmin <nikita.ashihmin@jetbrains.com> GitOrigin-RevId: fba969e0f5cc4ef18bf2c74de557c472dbdc7d69
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6b1720baee
commit
9f0baea357
@@ -33,6 +33,7 @@ import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.PyNames;
|
||||
import com.jetbrains.python.PyPsiPackageUtil;
|
||||
import com.jetbrains.python.codeInsight.typing.PyTypeShed;
|
||||
import com.jetbrains.python.packaging.requirementsTxt.PythonRequirementTxtSdkUtils;
|
||||
import com.jetbrains.python.packaging.requirementsTxt.PythonRequirementsTxtManager;
|
||||
import com.jetbrains.python.packaging.setupPy.SetupPyHelpers;
|
||||
import com.jetbrains.python.packaging.setupPy.SetupPyManager;
|
||||
@@ -83,8 +84,12 @@ public final class PyPackageUtil {
|
||||
|
||||
public static @Nullable PyFile findSetupPy(@NotNull Module module) {
|
||||
Sdk sdk = PythonSdkUtil.findPythonSdk(module);
|
||||
if (sdk == null) return null;
|
||||
return SetupPyManager.getInstance(module.getProject(), sdk).getRequirementsPsiFile();
|
||||
if (sdk == null) {
|
||||
return SetupPyHelpers.detectSetupPyInModule(module);
|
||||
}
|
||||
else {
|
||||
return SetupPyManager.getInstance(module.getProject(), sdk).getRequirementsPsiFile();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean hasRequirementsTxt(@NotNull Module module) {
|
||||
@@ -94,8 +99,12 @@ public final class PyPackageUtil {
|
||||
@SuppressWarnings("unused")
|
||||
public static @Nullable VirtualFile findRequirementsTxt(@NotNull Module module) {
|
||||
Sdk sdk = PythonSdkUtil.findPythonSdk(module);
|
||||
if (sdk == null) return null;
|
||||
return PythonRequirementsTxtManager.getInstance(module.getProject(), sdk).getDependenciesFile();
|
||||
if (sdk == null) {
|
||||
return PythonRequirementTxtSdkUtils.detectRequirementsTxtInModule(module);
|
||||
}
|
||||
else {
|
||||
return PythonRequirementsTxtManager.getInstance(module.getProject(), sdk).getDependenciesFile();
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresReadLock(generateAssertion = false)
|
||||
|
||||
+12
@@ -97,6 +97,18 @@ object PythonRequirementTxtSdkUtils {
|
||||
saveRequirementsTxtPath(project, sdk, path)
|
||||
}
|
||||
|
||||
/**
|
||||
* Should be used if sdk is not setup
|
||||
*/
|
||||
@JvmStatic
|
||||
fun detectRequirementsTxtInModule(module: Module): VirtualFile? {
|
||||
val requirementsPath = module.rootManager.contentRoots.firstNotNullOfOrNull {
|
||||
it.findChild(PythonSdkAdditionalData.REQUIREMENT_TXT_DEFAULT)
|
||||
}
|
||||
|
||||
return requirementsPath
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION", "removal")
|
||||
private fun getRequirementsTxtFromModule(module: Module): String? {
|
||||
val settings = PyPackageRequirementsSettings.getInstance(module)
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
package com.jetbrains.python.packaging.setupPy
|
||||
|
||||
import com.intellij.openapi.command.WriteCommandAction
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.util.Ref
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.codeInsight.controlflow.ScopeOwner
|
||||
import com.jetbrains.python.packaging.PyRequirement
|
||||
@@ -12,6 +14,7 @@ import com.jetbrains.python.psi.*
|
||||
import com.jetbrains.python.psi.impl.PyPsiUtils
|
||||
import com.jetbrains.python.psi.resolve.PyResolveContext
|
||||
import com.jetbrains.python.psi.types.TypeEvalContext
|
||||
import com.jetbrains.python.sdk.rootManager
|
||||
|
||||
|
||||
internal object SetupPyHelpers {
|
||||
@@ -22,6 +25,15 @@ internal object SetupPyHelpers {
|
||||
private const val SETUP_TOOLS_PACKAGE = "setuptools"
|
||||
private val SETUP_PY_REQUIRES_KWARGS_NAMES: Array<String> = arrayOf<String>(REQUIRES, INSTALL_REQUIRES, "setup_requires", "tests_require")
|
||||
|
||||
@JvmStatic
|
||||
fun detectSetupPyInModule(module: Module): PyFile? {
|
||||
val file = module.rootManager.contentRoots.firstNotNullOfOrNull {
|
||||
it.findChild(SETUP_PY)
|
||||
} ?: return null
|
||||
|
||||
return PsiManager.getInstance(module.project).findFile(file) as? PyFile
|
||||
}
|
||||
|
||||
fun parseSetupPy(file: PyFile): List<PyRequirement>? {
|
||||
val setupCall = findSetupCall(file) ?: return null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user