Skip to content

Commit b71cdb3

Browse files
committed
feature: Fix in deprecated API usage, part of #532
1 parent 16013be commit b71cdb3

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
Released on <not released>
99

1010
### Fixed
11+
- Compatibility with PyCharm 2024.2 (see [#532](https://github.com/JetBrains-Research/snakecharm/issues/532))
1112
- Improve parser error message when rule/module is declared with name but lacks ':' (see [#515](https://github.com/JetBrains-Research/snakecharm/issues/515))
1213

1314
### Changed

src/main/kotlin/com/jetbrains/snakecharm/codeInsight/ImplicitPySymbolsProvider.kt

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ import com.intellij.openapi.vfs.VirtualFile
1919
import com.intellij.psi.impl.source.resolve.ResolveCache
2020
import com.intellij.psi.util.QualifiedName
2121
import com.intellij.util.SlowOperations
22-
import com.jetbrains.extensions.python.inherits
23-
import com.jetbrains.python.packaging.PyPackageManager
22+
import com.jetbrains.python.extensions.inherits
23+
import com.jetbrains.python.packaging.PyPackage
24+
import com.jetbrains.python.packaging.common.PythonPackageManagementListener
25+
import com.jetbrains.python.packaging.management.PythonPackageManager
2426
import com.jetbrains.python.packaging.pyRequirement
2527
import com.jetbrains.python.packaging.requirement.PyRequirementRelation.LT
2628
import com.jetbrains.python.psi.*
@@ -223,15 +225,15 @@ class ImplicitPySymbolsProvider(
223225
return false
224226
}
225227

226-
val packages = PyPackageManager.getInstance(sdk).packages
228+
val packages = PythonPackageManager.forSdk(project, sdk).installedPackages
227229

228-
val pkgSnakemake = packages?.firstOrNull { it.name == SnakemakeAPI.SMK_API_PKG_NAME_SMK }
230+
val pkgSnakemake = packages.firstOrNull { it.name == SnakemakeAPI.SMK_API_PKG_NAME_SMK }
229231
if (pkgSnakemake != null) {
230-
return pkgSnakemake.matches(requirementSnakemake)
232+
return PyPackage(pkgSnakemake.name, pkgSnakemake.version).matches(requirementSnakemake)
231233
}
232-
val pkgSnakemakeMinimal = packages?.firstOrNull { it.name == SnakemakeAPI.SMK_API_PKG_NAME_SMK_MINIMAL }
234+
val pkgSnakemakeMinimal = packages.firstOrNull { it.name == SnakemakeAPI.SMK_API_PKG_NAME_SMK_MINIMAL }
233235
if (pkgSnakemakeMinimal != null) {
234-
return pkgSnakemakeMinimal.matches(requirementSnakemakeMinimal)
236+
return PyPackage(pkgSnakemakeMinimal.name, pkgSnakemakeMinimal.version).matches(requirementSnakemakeMinimal)
235237
}
236238
return false
237239
}
@@ -312,15 +314,17 @@ class ImplicitPySymbolsProvider(
312314
})
313315

314316
// Listen packages installed / removed
315-
connection.subscribe(PyPackageManager.PACKAGE_MANAGER_TOPIC, PyPackageManager.Listener { sdk ->
316-
val settings = SmkSupportProjectSettings.getInstance(project)
317-
if (settings.snakemakeSupportEnabled) {
318-
val activeSdk = settings.getActiveSdk()
319-
if (sdk.name == activeSdk?.name) {
320-
LOG.debug("[PACKAGE_MANAGER_TOPIC]: sdk == [$sdk]")
321-
322-
// This events is submitted on module settings closing even if no modifications
323-
doRefresh(false)
317+
connection.subscribe(PythonPackageManager.PACKAGE_MANAGEMENT_TOPIC, object : PythonPackageManagementListener {
318+
override fun packagesChanged(sdk: Sdk) {
319+
val settings = SmkSupportProjectSettings.getInstance(project)
320+
if (settings.snakemakeSupportEnabled) {
321+
val activeSdk = settings.getActiveSdk()
322+
if (sdk.name == activeSdk?.name) {
323+
LOG.debug("[PACKAGE_MANAGER_TOPIC]: sdk == [$sdk]")
324+
325+
// This events is submitted on module settings closing even if no modifications
326+
doRefresh(false)
327+
}
324328
}
325329
}
326330
})

0 commit comments

Comments
 (0)