diff --git a/python/python-sdk/src/com/jetbrains/python/sdk/PySdkUtil.java b/python/python-sdk/src/com/jetbrains/python/sdk/PySdkUtil.java index 3d8e6ef37d12..33ede28308f5 100644 --- a/python/python-sdk/src/com/jetbrains/python/sdk/PySdkUtil.java +++ b/python/python-sdk/src/com/jetbrains/python/sdk/PySdkUtil.java @@ -106,6 +106,7 @@ public final class PySdkUtil { return getProcessOutput(cmd, homePath, extraEnv, timeout, null, true); } + @ApiStatus.Internal public static ProcessOutput getProcessOutput(@NotNull GeneralCommandLine cmd, @Nullable String homePath, @Nullable @NonNls Map extraEnv, int timeout, @@ -201,6 +202,7 @@ public final class PySdkUtil { return result; } + @ApiStatus.Internal public static @NotNull Map activateVirtualEnv(@NotNull Sdk sdk) { final Map cached = sdk.getUserData(ENVIRONMENT_KEY); if (cached != null) return cached; diff --git a/python/src/com/jetbrains/python/sdk/PySdkPopupFactory.kt b/python/src/com/jetbrains/python/sdk/PySdkPopupFactory.kt index 3aed9a2f16e7..e0e2cac997ed 100644 --- a/python/src/com/jetbrains/python/sdk/PySdkPopupFactory.kt +++ b/python/src/com/jetbrains/python/sdk/PySdkPopupFactory.kt @@ -61,10 +61,7 @@ class PySdkPopupFactory(val module: Module) { val interpreterList = PyConfigurableInterpreterList.getInstance(module.project) val moduleSdksByTypes = SlowOperations.knownIssue("PY-76167").use { groupModuleSdksByTypes(interpreterList.getAllPythonSdks(module.project, module, false), module) { - !it.sdkSeemsValid || - PythonSdkType.hasInvalidRemoteCredentials(it) || - PythonSdkType.isIncompleteRemote(it) || - !LanguageLevel.SUPPORTED_LEVELS.contains(PythonSdkType.getLanguageLevelForSdk(it)) + !it.sdkSeemsValid || !LanguageLevel.SUPPORTED_LEVELS.contains(PythonSdkType.getLanguageLevelForSdk(it)) } } diff --git a/python/src/com/jetbrains/python/sdk/PySdkRendering.kt b/python/src/com/jetbrains/python/sdk/PySdkRendering.kt index 05809759ce48..80ab7a002800 100644 --- a/python/src/com/jetbrains/python/sdk/PySdkRendering.kt +++ b/python/src/com/jetbrains/python/sdk/PySdkRendering.kt @@ -33,8 +33,7 @@ fun name(sdk: Sdk): Triple = name(sdk, sdk.name) fun name(sdk: Sdk, name: String): Triple { val modifier = when { - !sdk.sdkSeemsValid || PythonSdkType.hasInvalidRemoteCredentials(sdk) -> "invalid" - PythonSdkType.isIncompleteRemote(sdk) -> "incomplete" + !sdk.sdkSeemsValid -> "invalid" !LanguageLevel.SUPPORTED_LEVELS.contains(PySdkUtil.getLanguageLevelForSdk(sdk)) -> "unsupported" else -> null } @@ -93,10 +92,7 @@ fun icon(sdk: Sdk): Icon { val providedIcon = PySdkProvider.EP_NAME.extensions.firstNotNullOfOrNull { it.getSdkIcon(sdk) } return when { - (!sdk.sdkSeemsValid) || - PythonSdkType.isIncompleteRemote(sdk) || - PythonSdkType.hasInvalidRemoteCredentials(sdk) || - !LanguageLevel.SUPPORTED_LEVELS.contains(PySdkUtil.getLanguageLevelForSdk(sdk)) -> + !sdk.sdkSeemsValid || !LanguageLevel.SUPPORTED_LEVELS.contains(PySdkUtil.getLanguageLevelForSdk(sdk)) -> wrapIconWithWarningDecorator(icon) sdk is PyDetectedSdk -> IconLoader.getTransparentIcon(icon) providedIcon != null -> providedIcon diff --git a/python/src/com/jetbrains/python/sdk/PythonSdkType.java b/python/src/com/jetbrains/python/sdk/PythonSdkType.java index 131e92e5adf4..373cd2ef3e7e 100644 --- a/python/src/com/jetbrains/python/sdk/PythonSdkType.java +++ b/python/src/com/jetbrains/python/sdk/PythonSdkType.java @@ -151,6 +151,7 @@ public final class PythonSdkType extends SdkType { } @RequiresBackgroundThread(generateAssertion = false) //No warning yet as there are usages: to be fixed + @ApiStatus.Internal private static boolean isLocalPathValid(@NotNull Path path) { return PythonSdkFlavor.getFlavor(path.toString()) != null; } @@ -224,6 +225,7 @@ public final class PythonSdkType extends SdkType { return descriptor; } + @ApiStatus.Internal private static boolean isLocatedInWsl(@NotNull VirtualFile file) { return SystemInfo.isWindows && isCustomPythonSdkHomePath(file.getPath()); } @@ -252,6 +254,7 @@ public final class PythonSdkType extends SdkType { * @param commandLine what to patch * @param sdk SDK we're using */ + @ApiStatus.Internal public static void patchCommandLineForVirtualenv(@NotNull GeneralCommandLine commandLine, @NotNull Sdk sdk) { patchEnvironmentVariablesForVirtualenv(commandLine.getEnvironment(), sdk); @@ -297,6 +300,7 @@ public final class PythonSdkType extends SdkType { } @RequiresBackgroundThread(generateAssertion = false) //because of process output + @ApiStatus.Internal public static @Nullable String suggestBaseSdkName(@NotNull String sdkHome) { final PythonSdkFlavor flavor = PythonSdkFlavor.getFlavor(sdkHome); if (flavor == null) return null; @@ -411,6 +415,7 @@ public final class PythonSdkType extends SdkType { return true; // run setupSdkPaths only once (from PythonSdkDetailsStep). Skip this from showCustomCreateUI } + @ApiStatus.Internal public static void notifyRemoteSdkSkeletonsFail(final InvalidSdkException e, final @Nullable Runnable restartAction) { NotificationListener notificationListener; String notificationMessage; @@ -437,6 +442,7 @@ public final class PythonSdkType extends SdkType { notification.notify(null); } + @ApiStatus.Internal public static @NotNull VirtualFile getSdkRootVirtualFile(@NotNull VirtualFile path) { String suffix = path.getExtension(); if (suffix != null) { @@ -504,19 +510,13 @@ public final class PythonSdkType extends SdkType { return homeDir != null && homeDir.isValid(); } - public static boolean isIncompleteRemote(@NotNull Sdk sdk) { - return false; - } - + @ApiStatus.Internal public static boolean isRunAsRootViaSudo(@NotNull Sdk sdk) { SdkAdditionalData data = sdk.getSdkAdditionalData(); return data instanceof PyTargetAwareAdditionalData pyTargetAwareAdditionalData && pyTargetAwareAdditionalData.isRunAsRootViaSudo(); } - public static boolean hasInvalidRemoteCredentials(@NotNull Sdk sdk) { - return false; - } - + @ApiStatus.Internal public static @NotNull String getSdkKey(@NotNull Sdk sdk) { return sdk.getName(); } @@ -527,11 +527,13 @@ public final class PythonSdkType extends SdkType { return !PythonSdkUtil.isRemote(sdk); } + @ApiStatus.Internal public static @Nullable Sdk findLocalCPython(@Nullable Module module) { final Sdk moduleSDK = PythonSdkUtil.findPythonSdk(module); return findLocalCPythonForSdk(moduleSDK); } + @ApiStatus.Internal public static @Nullable Sdk findLocalCPythonForSdk(@Nullable Sdk existingSdk) { if (existingSdk != null && !PythonSdkUtil.isRemote(existingSdk) && PythonSdkFlavor.getFlavor(existingSdk) instanceof CPythonSdkFlavor) { return existingSdk; @@ -561,6 +563,7 @@ public final class PythonSdkType extends SdkType { * @return if SDK is mock (used by tests only) */ @SuppressWarnings("TestOnlyProblems") + @ApiStatus.Internal public static boolean isMock(@NotNull Sdk sdk) { return (sdk.getUserData(MOCK_PY_VERSION_KEY) != null) || (sdk.getUserData(MOCK_SYS_PATH_KEY) != null) || @@ -570,6 +573,7 @@ public final class PythonSdkType extends SdkType { /** * Returns mocked path (stored in sdk with {@link #MOCK_SYS_PATH_KEY} in test) */ + @ApiStatus.Internal public static @NotNull List getMockPath(@NotNull Sdk sdk) { var workDir = Paths.get(Objects.requireNonNull(sdk.getHomePath())).getParent().toString(); var mockPaths = sdk.getUserData(MOCK_SYS_PATH_KEY); diff --git a/python/src/com/jetbrains/python/sdk/uv/run/UvRunSettingsEditor.kt b/python/src/com/jetbrains/python/sdk/uv/run/UvRunSettingsEditor.kt index 93f448e1a845..8a511d65bbc2 100644 --- a/python/src/com/jetbrains/python/sdk/uv/run/UvRunSettingsEditor.kt +++ b/python/src/com/jetbrains/python/sdk/uv/run/UvRunSettingsEditor.kt @@ -20,7 +20,6 @@ import com.intellij.ui.dsl.builder.columns import com.intellij.ui.dsl.builder.panel import com.jetbrains.python.PyBundle import com.jetbrains.python.sdk.PySdkListCellRenderer -import com.jetbrains.python.sdk.PythonSdkType import com.jetbrains.python.sdk.legacy.PythonSdkUtil import com.jetbrains.python.sdk.sdkSeemsValid import com.jetbrains.python.sdk.uv.isUv @@ -165,7 +164,7 @@ fun uvSdkList(): List = PythonSdkUtil .getAllSdks() .filter { sdk -> - sdk.isUv && sdk.sdkSeemsValid && !PythonSdkType.hasInvalidRemoteCredentials(sdk) + sdk.isUv && sdk.sdkSeemsValid } private val whiteSpaceRegex = Regex("\\s+") diff --git a/python/testSrc/com/jetbrains/python/sdk/PythonSdkTypePlatformTest.java b/python/testSrc/com/jetbrains/python/sdk/PythonSdkTypePlatformTest.java deleted file mode 100644 index 39a936ad7787..000000000000 --- a/python/testSrc/com/jetbrains/python/sdk/PythonSdkTypePlatformTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.jetbrains.python.sdk; - -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.SdkAdditionalData; -import com.intellij.remote.ext.CredentialsLanguageContribution; -import com.intellij.testFramework.PlatformLiteFixture; -import org.junit.Assert; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import static org.mockito.Mockito.when; - -/** - * @author Alexander Koshevoy - */ -public class PythonSdkTypePlatformTest extends PlatformLiteFixture { - @Mock private Sdk sdk; - @Mock private SdkAdditionalData sdkAdditionalData; - @Mock private CredentialsLanguageContribution credentialsLanguageContribution; - - @Override - public void setUp() throws Exception { - super.setUp(); - initApplication(); - MockitoAnnotations.initMocks(this); - registerExtension(CredentialsLanguageContribution.EP_NAME, credentialsLanguageContribution); - } - - public void testLocalSdk() { - when(sdk.getSdkAdditionalData()).thenReturn(sdkAdditionalData); - Assert.assertFalse(PythonSdkType.hasInvalidRemoteCredentials(sdk)); - } - -} \ No newline at end of file