@@ -26,6 +26,7 @@ export default function usePythonConsole(props?: UsePythonConsoleProps) {
26
26
const [ banner , setBanner ] = useState < string | undefined > ( )
27
27
const [ consoleState , setConsoleState ] = useState < ConsoleState > ( )
28
28
const [ isRunning , setIsRunning ] = useState ( false )
29
+ const [ output , setOutput ] = useState < string [ ] > ( [ ] )
29
30
const [ stdout , setStdout ] = useState ( '' )
30
31
const [ stderr , setStderr ] = useState ( '' )
31
32
const [ pendingCode , setPendingCode ] = useState < string | undefined > ( )
@@ -72,6 +73,13 @@ export default function usePythonConsole(props?: UsePythonConsoleProps) {
72
73
}
73
74
} , [ ] )
74
75
76
+ // Immediately set stdout upon receiving new input
77
+ useEffect ( ( ) => {
78
+ if ( output . length > 0 && ! isRunning ) {
79
+ setStdout ( output . join ( '' ) )
80
+ }
81
+ } , [ output , isRunning ] )
82
+
75
83
const allPackages = useMemo ( ( ) => {
76
84
const official = [
77
85
...new Set ( [
@@ -104,7 +112,7 @@ export default function usePythonConsole(props?: UsePythonConsoleProps) {
104
112
if ( suppressedMessages . includes ( msg ) ) {
105
113
return
106
114
}
107
- setStdout ( msg )
115
+ setOutput ( ( prev ) => [ ... prev , msg ] )
108
116
} ) ,
109
117
proxy ( ( { id, version, banner } ) => {
110
118
setRunnerId ( id )
@@ -150,6 +158,7 @@ del sys
150
158
const runPython = useCallback (
151
159
async ( code : string ) => {
152
160
// Clear stdout and stderr
161
+ setOutput ( [ ] )
153
162
setStdout ( '' )
154
163
setStderr ( '' )
155
164
0 commit comments