mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-56794: Disable SSH for Conda
Temporary env configuration can't be used for conda environments listening, hence no conda command could be executed until SDK created GitOrigin-RevId: e0b2202ad0543b7ec954e1b7feba2b1ba492e7ed
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c2365b36c5
commit
c6d6a21b1e
+7
@@ -0,0 +1,7 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.execution.target
|
||||
|
||||
/**
|
||||
* Temporary configuration that supposed to be created in wizards and never be stored on disk, nor used
|
||||
*/
|
||||
interface IncompleteTargetEnvironmentConfiguration
|
||||
@@ -51,6 +51,7 @@ import com.jetbrains.python.packaging.ui.PyPackageManagementService
|
||||
import com.jetbrains.python.psi.LanguageLevel
|
||||
import com.jetbrains.python.remote.PyRemoteSdkAdditionalData
|
||||
import com.jetbrains.python.remote.PyRemoteSdkAdditionalDataBase
|
||||
import com.jetbrains.python.sdk.add.target.PyDetectedSdkAdditionalData
|
||||
import com.jetbrains.python.sdk.flavors.PyFlavorAndData
|
||||
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor
|
||||
import com.jetbrains.python.sdk.flavors.VirtualEnvSdkFlavor
|
||||
@@ -436,9 +437,12 @@ fun Sdk.configureBuilderToRunPythonOnTarget(targetCommandLineBuilder: TargetedCo
|
||||
getOrCreateAdditionalData().flavorAndData.data.prepareTargetCommandLine(this, targetCommandLineBuilder)
|
||||
}
|
||||
|
||||
val Sdk.sdkSeemsValid: Boolean get() = getOrCreateAdditionalData().flavorAndData.sdkSeemsValid(this, targetEnvConfiguration)
|
||||
val Sdk.sdkSeemsValid: Boolean
|
||||
get() = getOrCreateAdditionalData().flavorAndData
|
||||
.sdkSeemsValid(this, (sdkAdditionalData as? PyDetectedSdkAdditionalData)?.temporaryConfiguration ?: targetEnvConfiguration)
|
||||
|
||||
private val SDK_PYTHON_PATH = Key<FullPathOnTarget>("SDK_PYTHON_PATH")
|
||||
|
||||
/**
|
||||
* @return path to python binary on target
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
package com.jetbrains.python.sdk.add.target
|
||||
|
||||
import com.intellij.CommonBundle
|
||||
import com.intellij.execution.target.IncompleteTargetEnvironmentConfiguration
|
||||
import com.intellij.execution.target.TargetEnvironmentConfiguration
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.project.Project
|
||||
@@ -30,9 +31,9 @@ import com.jetbrains.python.sdk.add.showProcessExecutionErrorDialog
|
||||
import com.jetbrains.python.sdk.add.target.conda.PyAddCondaPanelModel
|
||||
import com.jetbrains.python.sdk.add.target.conda.PyAddCondaPanelView
|
||||
import com.jetbrains.python.sdk.conda.PyCondaSdkCustomizer
|
||||
import com.jetbrains.python.sdk.sdkSeemsValid
|
||||
import com.jetbrains.python.sdk.pipenv.PyAddPipEnvPanel
|
||||
import com.jetbrains.python.sdk.poetry.createPoetryPanel
|
||||
import com.jetbrains.python.sdk.sdkSeemsValid
|
||||
import com.jetbrains.python.target.PythonLanguageRuntimeConfiguration
|
||||
import java.awt.CardLayout
|
||||
import java.awt.Component
|
||||
@@ -96,7 +97,10 @@ class PyAddTargetBasedSdkPanel(private val project: Project?,
|
||||
listOf(venvPanel, condaPanel, systemWidePanel, pipEnvPanel, poetryPanel) to venvPanel
|
||||
}
|
||||
}
|
||||
targetEnvironmentConfiguration.isMutableTarget -> listOf(venvPanel, systemWidePanel, condaPanel) to venvPanel
|
||||
targetEnvironmentConfiguration.isMutableTarget -> mutableListOf<PyAddSdkView>(venvPanel, systemWidePanel).apply {
|
||||
// Conda not supported for SSH (which is mutable incomplete environment)
|
||||
if (targetEnvironmentConfiguration !is IncompleteTargetEnvironmentConfiguration) add(condaPanel)
|
||||
} to venvPanel
|
||||
else -> listOf(venvPanel, systemWidePanel, condaPanel) to systemWidePanel
|
||||
}
|
||||
}
|
||||
@@ -148,7 +152,8 @@ class PyAddTargetBasedSdkPanel(private val project: Project?,
|
||||
}
|
||||
}
|
||||
|
||||
private fun createAnacondaPanel(): PyAddSdkView = PyAddCondaPanelView(PyAddCondaPanelModel(targetEnvironmentConfiguration, existingSdks, project!!))
|
||||
private fun createAnacondaPanel(): PyAddSdkView = PyAddCondaPanelView(
|
||||
PyAddCondaPanelModel(targetEnvironmentConfiguration, existingSdks, project!!))
|
||||
|
||||
private fun createPipEnvPanel(newProjectPath: String?) = PyAddPipEnvPanel(project, module, existingSdks, newProjectPath, context)
|
||||
|
||||
|
||||
@@ -5,15 +5,13 @@ import com.intellij.execution.target.TargetEnvironmentConfiguration
|
||||
import com.jetbrains.python.sdk.PyDetectedSdk
|
||||
import com.jetbrains.python.sdk.PyRemoteSdkAdditionalDataMarker
|
||||
import com.jetbrains.python.sdk.PythonSdkAdditionalData
|
||||
import com.jetbrains.python.sdk.flavors.PyFlavorAndData
|
||||
import com.jetbrains.python.target.PyTargetAwareAdditionalData
|
||||
|
||||
/**
|
||||
* Allows passing SDK with such additional data [com.jetbrains.python.sdk.PythonSdkUtil.isRemote] check.
|
||||
*
|
||||
* This class is meant for use in UI and should be used with caution.
|
||||
*/
|
||||
private class PyDetectedSdkAdditionalData : PythonSdkAdditionalData(), PyRemoteSdkAdditionalDataMarker
|
||||
class PyDetectedSdkAdditionalData(val temporaryConfiguration: TargetEnvironmentConfiguration?) : PythonSdkAdditionalData(), PyRemoteSdkAdditionalDataMarker
|
||||
|
||||
/**
|
||||
* Returns new [PyDetectedSdk] with the additional data that corresponds to the local or non-local interpreter based on the provided flag.
|
||||
@@ -22,15 +20,9 @@ private class PyDetectedSdkAdditionalData : PythonSdkAdditionalData(), PyRemoteS
|
||||
*/
|
||||
internal fun createDetectedSdk(name: String, isLocal: Boolean): PyDetectedSdk {
|
||||
val sdk = PyDetectedSdk(name)
|
||||
if (!isLocal) sdk.sdkAdditionalData = PyDetectedSdkAdditionalData()
|
||||
if (!isLocal) sdk.sdkAdditionalData = PyDetectedSdkAdditionalData(null)
|
||||
return sdk
|
||||
}
|
||||
|
||||
internal fun createDetectedSdk(name: String, targetEnvironmentConfiguration: TargetEnvironmentConfiguration?): PyDetectedSdk {
|
||||
val sdk = PyDetectedSdk(name)
|
||||
sdk.sdkAdditionalData = when (targetEnvironmentConfiguration) {
|
||||
is TargetEnvironmentConfiguration -> PyTargetAwareAdditionalData(PyFlavorAndData.UNKNOWN_FLAVOR_DATA, targetEnvironmentConfiguration)
|
||||
else -> PythonSdkAdditionalData(PyFlavorAndData.UNKNOWN_FLAVOR_DATA)
|
||||
}
|
||||
return sdk
|
||||
}
|
||||
internal fun createDetectedSdk(name: String, targetEnvironmentConfiguration: TargetEnvironmentConfiguration?): PyDetectedSdk =
|
||||
PyDetectedSdk(name).apply { sdkAdditionalData = PyDetectedSdkAdditionalData(targetEnvironmentConfiguration) }
|
||||
Reference in New Issue
Block a user