mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-81238 Packages: Fix Project Generation
Signed-off-by: Nikita.Ashihmin <nikita.ashihmin@jetbrains.com> GitOrigin-RevId: edd4e3acd80657aa171fdd8aeae06cb9ce9cd439
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e3c4abbc2d
commit
5aef76953c
+5
-3
@@ -9,16 +9,16 @@ import com.intellij.openapi.project.rootManager
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.pycharm.community.ide.impl.newProjectWizard.welcome.PyWelcome
|
||||
import com.jetbrains.python.errorProcessing.ErrorSink
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
import com.jetbrains.python.newProjectWizard.PyV3ProjectTypeSpecificSettings
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class PyV3EmptyProjectSettings(var generateWelcomeScript: Boolean = false) : PyV3ProjectTypeSpecificSettings {
|
||||
|
||||
override suspend fun generateProject(module: Module, baseDir: VirtualFile, sdk: Sdk, errorSink: ErrorSink) {
|
||||
override suspend fun generateProject(module: Module, baseDir: VirtualFile, sdk: Sdk): PyResult<Unit> {
|
||||
if (!generateWelcomeScript)
|
||||
return
|
||||
return PyResult.success(Unit)
|
||||
|
||||
val sourceRoot = module.rootManager.sourceRoots.firstOrNull() ?: baseDir
|
||||
val file = edtWriteAction {
|
||||
@@ -29,6 +29,8 @@ class PyV3EmptyProjectSettings(var generateWelcomeScript: Boolean = false) : PyV
|
||||
file.navigate(true)
|
||||
}
|
||||
}
|
||||
|
||||
return PyResult.success(Unit)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
|
||||
@@ -972,6 +972,8 @@ python.project.view.typeshed.stubs=Typeshed Stubs
|
||||
python.project.view.bundled.stubs=Bundled Stubs
|
||||
python.project.view.user.skeletons.node=Extended Definitions
|
||||
|
||||
|
||||
python.packaging.installing.error.failed.to.find.specification=Failed to find specification for {0}
|
||||
python.packaging.installing.packaging.tools=Installing packaging tools\u2026
|
||||
python.packaging.list.packages=Loading installed packages\u2026
|
||||
python.packaging.check.is.package.installed=Checking if package {0} is installed\u2026
|
||||
@@ -1677,6 +1679,8 @@ python.project.model.uv=Uv
|
||||
action.Python.UvSync.text=Sync All uv Projects
|
||||
action.Python.UvLink.text=Link All uv Projects
|
||||
|
||||
|
||||
python.project.model.progress.title.generating=Generating new project\u2026
|
||||
python.project.model.progress.title.syncing.all.projects=Syncing all {0} projects
|
||||
python.project.model.progress.title.syncing.projects.at=Syncing {0} projects at {1}
|
||||
python.project.model.progress.title.unlinking.projects.at=Unlinking {0} projects at {1}
|
||||
@@ -1705,4 +1709,5 @@ uv.run.configuration.editor.field.check.sync=Warn about package synchronization
|
||||
|
||||
uv.run.configuration.validation.sdk=Please specify a valid uv sdk
|
||||
uv.run.configuration.validation.script=Please specify a valid python script to execute
|
||||
uv.run.configuration.validation.module=Please specify a valid python module to execute
|
||||
uv.run.configuration.validation.module=Please specify a valid python module to execute
|
||||
|
||||
|
||||
@@ -13,7 +13,9 @@ import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.intellij.platform.DirectoryProjectGenerator
|
||||
import com.intellij.platform.ProjectGeneratorPeer
|
||||
import com.intellij.platform.ide.progress.withBackgroundProgress
|
||||
import com.intellij.util.concurrency.annotations.RequiresEdt
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.Result
|
||||
import com.jetbrains.python.newProjectWizard.collector.PyProjectTypeGenerator
|
||||
import com.jetbrains.python.newProjectWizard.collector.PythonNewProjectWizardCollector.logPythonNewProjectGenerated
|
||||
@@ -90,7 +92,9 @@ abstract class PyV3ProjectBaseGenerator<TYPE_SPECIFIC_SETTINGS : PyV3ProjectType
|
||||
// Either base settings (which create venv) might generate some or type-specific settings (like Django) may.
|
||||
// So we expand it right after SDK generation, but if there are no files yet, we do it again after project generation
|
||||
uiServices.expandProjectTreeView(project)
|
||||
typeSpecificSettings.generateProject(module, baseDir, sdk, uiServices.errorSink)
|
||||
withBackgroundProgress(project, PyBundle.message("python.project.model.progress.title.generating"), cancellable = true) {
|
||||
typeSpecificSettings.generateProject(module, baseDir, sdk)
|
||||
}
|
||||
uiServices.expandProjectTreeView(project)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ package com.jetbrains.python.newProjectWizard
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.jetbrains.python.errorProcessing.ErrorSink
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
|
||||
/**
|
||||
* Implementation must have fields and generate project-specific (like Django) things using them i.e:
|
||||
@@ -21,5 +21,5 @@ fun interface PyV3ProjectTypeSpecificSettings {
|
||||
* Generate project-specific things in [baseDir].
|
||||
* You might need to [installPackages] on [sdk].
|
||||
*/
|
||||
suspend fun generateProject(module: Module, baseDir: VirtualFile, sdk: Sdk, errorSink: ErrorSink)
|
||||
suspend fun generateProject(module: Module, baseDir: VirtualFile, sdk: Sdk): PyResult<Unit>
|
||||
}
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
package com.jetbrains.python.packaging.management
|
||||
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonRepositoryPackageSpecification
|
||||
import com.jetbrains.python.packaging.normalizePackageName
|
||||
@@ -12,6 +14,17 @@ import com.jetbrains.python.packaging.requirement.PyRequirementRelation
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
|
||||
@ApiStatus.Internal
|
||||
suspend fun PythonPackageManager.installPackages(vararg packages: String): PyResult<List<PythonPackage>> {
|
||||
waitForInit()
|
||||
val specifications = packages.map {
|
||||
findPackageSpecification(normalizePackageName(it))
|
||||
?: return PyResult.localizedError(PyBundle.message("python.packaging.installing.error.failed.to.find.specification", it))
|
||||
}
|
||||
return installPackage(PythonPackageInstallRequest.ByRepositoryPythonPackageSpecifications(specifications))
|
||||
}
|
||||
|
||||
|
||||
@ApiStatus.Internal
|
||||
fun PythonPackageManager.getInstalledPackageSnapshot(packageName: String, version: String? = null): PythonPackage? {
|
||||
val normalizedPackage = normalizePackageName(packageName)
|
||||
|
||||
Reference in New Issue
Block a user