mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
PY-87236 Fix version-sensitive management detection in PipManagementInstaller
hasInstalledPackage(PythonPackage) matched both name and version, so if the venv had any pip version other than the bundled 24.3.1 (e.g. after a user upgrade), hasManagement() returned false. This caused a redundant reinstall attempt which pip rejected with "To modify pip, please run python -m pip". Fix: check by package name only via hasInstalledPackage(String). (cherry picked from commit b2dfd1a8b74c11fa2b04d687e31cb48b9ea774a0) IJ-MR-194802 GitOrigin-RevId: 2a86cbab1978bc119f0e842c788c8355b8bc4bb1
This commit is contained in:
committed by
intellij-monorepo-bot
parent
95d47787ec
commit
834c5b33d6
@@ -110,7 +110,7 @@ class PipManagementInstaller(private val sdk: Sdk, private val manager: PythonPa
|
||||
}
|
||||
|
||||
suspend fun hasManagement(): Boolean =
|
||||
languageLevel < LanguageLevel.PYTHON27 || (manager.hasInstalledPackage(PIP_PACKAGE) && hasSetuptools())
|
||||
languageLevel < LanguageLevel.PYTHON27 || (hasPip() && hasSetuptools())
|
||||
|
||||
private suspend fun installManagement(): PyResult<Unit> {
|
||||
if (!hasPip()) installWheel(WheelFiles.PIP_WHEEL_NAME).getOr { return it }
|
||||
@@ -126,21 +126,16 @@ class PipManagementInstaller(private val sdk: Sdk, private val manager: PythonPa
|
||||
ExecService().execGetStdout(pythonPath, args).mapSuccess { }
|
||||
}
|
||||
|
||||
private suspend fun hasPip(): Boolean = manager.hasInstalledPackage(PIP_PACKAGE)
|
||||
private suspend fun hasPip(): Boolean = manager.hasInstalledPackage(PyPackageUtil.PIP)
|
||||
|
||||
private suspend fun hasSetuptools(): Boolean =
|
||||
languageLevel >= LanguageLevel.PYTHON312 ||
|
||||
manager.hasInstalledPackage(SETUPTOOLS_PACKAGE) ||
|
||||
manager.hasInstalledPackage(DISTRIBUTE_PACKAGE)
|
||||
manager.hasInstalledPackage(PyPackageUtil.SETUPTOOLS) ||
|
||||
manager.hasInstalledPackage(PyPackageUtil.DISTRIBUTE)
|
||||
|
||||
private object WheelFiles {
|
||||
const val SETUPTOOLS_WHEEL_NAME = "setuptools-44.1.1-py2.py3-none-any.whl"
|
||||
const val PIP_WHEEL_NAME = "pip-24.3.1-py2.py3-none-any.whl"
|
||||
}
|
||||
|
||||
companion object {
|
||||
val PIP_PACKAGE: PythonPackage = PythonPackage(PyPackageUtil.PIP, "24.3.1", false)
|
||||
val SETUPTOOLS_PACKAGE: PythonPackage = PythonPackage(PyPackageUtil.SETUPTOOLS, "44.1.1", false)
|
||||
val DISTRIBUTE_PACKAGE: PythonPackage = PythonPackage(PyPackageUtil.DISTRIBUTE, "", false)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user