You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, I'm trying to use gtoolkit to explore some Python code. I would like to open a Python file and use the LSP to get a list of all of the classes in the file. Here is my current attempt:
I cannot reproduce this. What version of Glamorous Toolkit is this on? And what OS? (Admittedly the latter shouldn’t matter, but I’m trying to narrow it down)
I'm using Fedora Linux 41. I tried with v1.0.1889 and also .1894, it happened in both. Both using ./bin/GlamorousToolkit-cli --enable-wayland --interactive image.image (see #4596 wrt wayland) and with the non-cli version.
I realized that there was some stdout/stderr output when the error occurs, here's the output:
output
[2025-06-26T05:54:02Z ERROR value_box::error] Error: There was an IO error
[2025-06-26T05:54:02Z ERROR value_box::error] - No such file or directory (os error 2)
AsyncFutureExecutionError
AsyncStreamCollectFuture>>wait
UndefinedObject>>DoIt
[
aGtPharoSourceCoderEvaluationContext receiverObject
withArgs: methodArguments
executeMethod: aCompiledMethodToEvaluate ] in GtPharoSnippetCoder(GtPharoSourceCoder)>>primitiveEvaluate:inContext:onFailDo: in Block: [...
[aBlock value] in GtProcessStackOverflowChecker class>>checkDuring: in Block: [aBlock value]
FullBlockClosure(BlockClosure)>>ensure:
GtProcessStackOverflowChecker class>>checkDuring:
GtPharoSnippetCoder(GtPharoSourceCoder)>>primitiveEvaluate:inContext:onFailDo:
[
self
primitiveEvaluate: aDecoratedSourceString
inContext: aSourceCoderEvaluationContext
onFailDo: [
| aResultWithSyntaxError |
aResultWithSyntaxError := GtSourceCoderEvaluationResultWithSyntaxError new
evaluationContext: aSourceCoderEvaluationContext.
aThenBlock cull: aResultWithSyntaxError.
^ aResultWithSyntaxError ] ] in GtPharoSnippetCoder(GtSourceCoder)>>evaluate:decorated:inContext:thenDo: in Block: [ ...
FullBlockClosure(BlockClosure)>>on:do:
GtPharoSnippetCoder(GtSourceCoder)>>evaluateBlock:onErrorDo:
GtPharoSnippetCoder(GtSourceCoder)>>evaluate:decorated:inContext:thenDo:
GtPharoSnippetCoder(GtSourceCoder)>>evaluate:inContext:thenDo:
GtPharoSnippetCoder(GtSourceCoder)>>doItAndGoInContext:
[
self coder doItAndGoInContext: self evaluationContext all ] in GtPharoSnippetCoderViewModel(GtSourceCoderViewModel)>>doItAndGoAll in Block: [ ...
[ activeProcess
psValueAt: index
put: anObject.
aBlock value ] in GtCoderUserSnippetDynamicVariable(DynamicVariable)>>value:during: in Block: [ activeProcess...
FullBlockClosure(BlockClosure)>>ensure:
GtCoderUserSnippetDynamicVariable(DynamicVariable)>>value:during:
GtCoderUserSnippetDynamicVariable class(DynamicVariable class)>>value:during:
[ GtCoderUserSnippetDynamicVariable
value: GtCoderUserSnippetEvaluationRunningState default
during: aBlock ] in GtPharoSnippetCoderViewModel(GtSourceCoderViewModel)>>handleCoderEvaluationUnhandledErrorDuring: in Block: [ GtCoderUserSnippetDynamicVariable...
FullBlockClosure(BlockClosure)>>on:do:
GtPharoSnippetCoderViewModel(GtSourceCoderViewModel)>>handleCoderEvaluationUnhandledErrorDuring:
GtPharoSnippetCoderViewModel(GtSourceCoderViewModel)>>doItAndGoAll
GtPharoSnippetCoderViewModel(GtSourceCoderViewModel)>>doItAndGo
[ aSourceCoderViewModel doItAndGo ] in GtSourceCoderDoItAndInspectShortcut>>performOnEditor:element:coderViewModel:dueTo: in Block: [ aSourceCoderViewModel doItAndGo ]
[ activeProcess
psValueAt: index
put: anObject.
aBlock value ] in GtCoderExecutionContextVariable(DynamicVariable)>>value:during: in Block: [ activeProcess...
FullBlockClosure(BlockClosure)>>ensure:
GtCoderExecutionContextVariable(DynamicVariable)>>value:during:
GtCoderExecutionContextVariable class(DynamicVariable class)>>value:during:
GtCoderExecutionContextVariable class>>element:do:
GtSourceCoderDoItAndInspectShortcut>>performOnEditor:element:coderViewModel:dueTo:
GtSourceCoderDoItAndInspectShortcut(GtSourceCoderShortcut)>>performOnEditor:element:dueTo:
GtSourceCoderDoItAndInspectShortcut(BrEditorShortcut)>>performDueTo:
[ :theShortcuts |
| aShortcut |
aShortcut := theShortcuts first key.
"let users explicitely set consumed to false so it bubbles up"
aShortcutEvent consumed: true.
aShortcut performDueTo: aShortcutEvent ] in BlShortcutHandlerWithShortcuts>>handleShortcuts:suchThat: in Block: [ :theShortcuts |...
FullBlockClosure(BlockClosure)>>cull:
OrderedCollection(Collection)>>ifNotEmpty:
BlShortcutHandlerWithShortcuts>>handleShortcuts:suchThat:
BlShortcutHandlerWithShortcuts>>handleEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchArrivedEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlEvent class>>fireEvent:target:
BlEvent class>>fireEvent:
BlKeyboardProcessor(BlBaseEventProcessor)>>fireEvent:
[ self fireEvent: aShortcutEvent ] in BlKeyboardProcessor>>processKeyDown: in Block: [ self fireEvent: aShortcutEvent ]
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
BlKeyboardProcessor>>processKeyDown:
BlSpaceEventListener>>keyDownEvent:
BlKeyDownEvent>>sendTo:
BlSpaceEventListener(BlEventListener)>>handleEvent:
BlSpaceEventListener>>handleEvent:
[GtPharoSnippetCoder] AsyncFutureExecutionError
Okay, I found the issue: by running model lspClient and looking at the "Process invocation" tab, I noticed it's calling pyright-langserver '--stdio', but I didn't have pyright installed. I installed pyright (in a virtual env, which I activated before runnign GT), and now I don't get the AsyncFutureExecutionError!
However, now when I inspect the result, it claims that there are no classes:
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Hi, I'm trying to use gtoolkit to explore some Python code. I would like to open a Python file and use the LSP to get a list of all of the classes in the file. Here is my current attempt:
However, at the last step, I get an
AsyncFutureExecutionErrorwhich I don't understand:The error message is "AssertionFailure: Block already polled". Am I doing something wrong when trying to wait the future?
All reactions