PY-88057 Replace "Configure Python Interpreter" with "Custom Environment" dropdown

- Add a dropdown menu listing available interpreters (venv, conda, system, etc.)
  instead of a single "Configure Python Interpreter" link
- Introduce BusyGuardExecutor interface and InterpreterFixExecutor service
  that shares busy state across all notification panels via MutableStateFlow;
  while a fix is running, panels show a spinner instead of action links
- Move SDK creation work off EDT through the executor's coroutine scope
- Refresh module content roots after SDK creation instead of full VFS refresh
- Remove redundant SdkConfigurationService and InspectionRunnerService,
  consolidating their scopes into InterpreterFixExecutor

(cherry picked from commit 513beeaf0565721540aec4e248ea00ba7948e0cf)

GitOrigin-RevId: b1eed6952e43b229b01363a0ddac9b9269f241f3
This commit is contained in:
Vitaly Legchilkin
2026-03-04 08:38:55 +00:00
committed by intellij-monorepo-bot
parent 22c2cbb69e
commit 9a36684baf
7 changed files with 171 additions and 79 deletions
@@ -339,7 +339,9 @@ python.debug.remote.name=PyRemoteDebug
filetype.python.debug.remote.description=Remote debug
python.sdk.no.interpreter.configured.for.module=No Python interpreter configured for {0}
python.sdk.interpreter.fix.already.in.progress=Interpreter configuration is in progress
python.sdk.configure.python.interpreter=Configure Python interpreter
python.sdk.custom.environment=Custom Environment
python.sdk.checking.existing.environments=Checking existing environments
python.sdk.interpreter.settings=Interpreter settings
python.sdk.pipenv.associated.with.another.project=Pipenv interpreter is associated with another project: ''{0}''