snakecharm icon indicating copy to clipboard operation
snakecharm copied to clipboard

PyCharm 2024.1 support

Open iromeo opened this issue 10 months ago • 1 comments

The current released plugin isn't compatible with 2024.1 PyCharm

iromeo avatar Apr 04 '24 19:04 iromeo

Fix requires not only deprecated API changes, but also address to change SlowOperations behaviour used to update internal code insight plugin caches:

At the moment exception fails to often:

java.lang.Throwable: Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:376)
	at com.intellij.util.SlowOperations.assertSlowOperationsAreAllowed(SlowOperations.java:106)
	at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexDataImpl.ensureIsUpToDate(WorkspaceFileIndexDataImpl.kt:142)
	at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexDataImpl.getFileInfo(WorkspaceFileIndexDataImpl.kt:87)
	at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl.getFileInfo(WorkspaceFileIndexImpl.kt:245)
	at com.intellij.openapi.roots.impl.DirectoryIndexImpl.getOrderEntries(DirectoryIndexImpl.java:131)
	at com.intellij.openapi.roots.impl.ProjectFileIndexImpl.getOrderEntriesForFile(ProjectFileIndexImpl.java:108)
	at com.intellij.openapi.module.ModuleUtilCore.findModuleForPsiElement(ModuleUtilCore.java:106)
	at com.jetbrains.python.psi.impl.PyBuiltinCache.findSdkForFile(PyBuiltinCache.java:102)
	at com.jetbrains.python.psi.impl.PyBuiltinCache.getInstance(PyBuiltinCache.java:86)
	at com.jetbrains.python.psi.impl.PyClassImpl.getImplicitSuper(PyClassImpl.java:1362)
	at com.jetbrains.python.psi.impl.PyClassImpl.doGetSuperClassTypes(PyClassImpl.java:1309)
	at com.jetbrains.python.psi.PyUtil.getNullableParameterizedCachedValue(PyUtil.java:628)
	at com.jetbrains.python.psi.PyUtil.getParameterizedCachedValue(PyUtil.java:606)
	at com.jetbrains.python.psi.impl.PyClassImpl.getSuperClassTypes(PyClassImpl.java:1291)
	at com.jetbrains.python.psi.types.PyClassTypeImpl.getSuperClassTypes(PyClassTypeImpl.java:119)
	at com.jetbrains.python.psi.impl.PyClassImpl.mroLinearize(PyClassImpl.java:368)
	at com.jetbrains.python.psi.impl.PyClassImpl.getMROAncestorTypes(PyClassImpl.java:1587)
	at com.jetbrains.python.psi.impl.PyClassImpl.lambda$getAncestorTypesWithMetaClassInstances$9(PyClassImpl.java:1390)
	at com.jetbrains.python.psi.PyUtil.getNullableParameterizedCachedValue(PyUtil.java:628)
	at com.jetbrains.python.psi.PyUtil.getParameterizedCachedValue(PyUtil.java:606)
	at com.jetbrains.python.psi.impl.PyClassImpl.getAncestorTypesWithMetaClassInstances(PyClassImpl.java:1386)
	at com.jetbrains.python.psi.impl.PyClassImpl.getAncestorTypes(PyClassImpl.java:1379)
	at com.jetbrains.python.extensions.PyClassExtKt.inherits(PyClassExt.kt:27)
	at com.jetbrains.extensions.python.PyClassExtKt.inherits(PyClassExt.kt:28)
	at com.jetbrains.snakecharm.codeInsight.ImplicitPySymbolsProvider.collectTopLevelClassesInheretedFrom(ImplicitPySymbolsProvider.kt:472)
	at com.jetbrains.snakecharm.codeInsight.ImplicitPySymbolsProvider.doRefreshCache(ImplicitPySymbolsProvider.kt:169)
	at com.jetbrains.snakecharm.codeInsight.ImplicitPySymbolsProvider.onChange$lambda$2$lambda$1(ImplicitPySymbolsProvider.kt:79)
	at com.intellij.util.SlowOperations.allowSlowOperations(SlowOperations.java:214)
	at com.jetbrains.snakecharm.codeInsight.ImplicitPySymbolsProvider.onChange$lambda$2(ImplicitPySymbolsProvider.kt:79)
	at com.intellij.openapi.project.SmartModeScheduler.doRun(SmartModeScheduler.kt:138)
	at com.intellij.openapi.project.SmartModeScheduler.runAllWhileSmart(SmartModeScheduler.kt:130)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
	at com.intellij.openapi.application.impl.RwLockHolder.runIntendedWriteActionOnCurrentThread(RwLockHolder.kt:204)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:830)
	at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:419)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:138)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:129)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1152)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:81)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:123)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:43)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:698)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$12(IdeEventQueue.kt:593)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithoutImplicitRead(RwLockHolder.kt:105)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:593)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:77)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:362)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:361)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:843)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:361)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:356)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1021)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1021)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:356)
	at com.intellij.openapi.application.impl.RwLockHolder.runIntendedWriteActionOnCurrentThread(RwLockHolder.kt:209)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:830)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:398)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

iromeo avatar Apr 04 '24 19:04 iromeo

any news on this?

gmauro avatar Apr 17 '24 15:04 gmauro

@gmauro I made the necessary changes. I'll release it in the next 1-3 days if nothing critical will be found

iromeo avatar Apr 18 '24 17:04 iromeo

Thanks for the updates. The plugin is an essential part of my work.

gmauro avatar Apr 19 '24 06:04 gmauro

Updated plugin just released!

iromeo avatar Apr 20 '24 19:04 iromeo