PY-88280 Convert PyModuleService to Kotlin project-level service with suspended SDK resolution

- Convert PyModuleService (abstract class) to Kotlin interface
- Convert PyModuleServiceImpl to Kotlin with project-level scope
- Change from application-level to project-level service
- Add findPythonSdkWaitingForProjectModel suspend method that awaits
  JPS project model loading before resolving the SDK
- Mark old findPythonSdk as @ApiStatus.Obsolete
- Update all call sites to use getInstance(project)

(cherry picked from commit 4dc39a57dbc6063d37522fac8befe01329c10cde)

GitOrigin-RevId: 529405c76d8e2fa503ccc40e15dd0834dd59f469
This commit is contained in:
Vitaly Legchilkin
2026-03-18 17:22:13 +00:00
committed by intellij-monorepo-bot
parent 81cd22e436
commit 1dc7eb5123
14 changed files with 138 additions and 111 deletions
@@ -174,8 +174,8 @@
<applicationService serviceImplementation="com.jetbrains.python.packaging.pip.PypiPackageCache"/>
<applicationService serviceImplementation="com.jetbrains.python.packaging.PyPackageService"/>
<applicationService serviceInterface="com.jetbrains.python.module.PyModuleService"
serviceImplementation="com.jetbrains.python.module.PyModuleServiceImpl"/>
<projectService serviceInterface="com.jetbrains.python.module.PyModuleService"
serviceImplementation="com.jetbrains.python.module.PyModuleServiceImpl"/>
<applicationService serviceInterface="com.jetbrains.python.psi.resolve.PackageAvailabilityService"
serviceImplementation="com.jetbrains.python.packaging.PackageAvailabilityServiceImpl"/>
<typedHandler implementation="com.jetbrains.python.codeInsight.PyMethodNameTypedHandler" id="pyMethodNameTypedHandler"/>