Skip to content

Commit c71039b

Browse files
committed
Fixing tqdm
1 parent 6cd16c6 commit c71039b

1 file changed

Lines changed: 2 additions & 56 deletions

File tree

script.js

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -287,62 +287,8 @@ __builtins__.input = mock_input
287287
console.log('Input mock setup complete');
288288
}
289289

290-
// Setup to prevent browser "page unresponsive" warnings
291-
try {
292-
await pyodide.runPythonAsync(`
293-
import sys
294-
import asyncio
295-
296-
# Monkey-patch to allow yielding control periodically
297-
_original_range = range
298-
_iter_count = [0]
299-
300-
class YieldingRange:
301-
def __init__(self, *args):
302-
self._range = _original_range(*args)
303-
304-
def __iter__(self):
305-
for i in self._range:
306-
_iter_count[0] += 1
307-
# Yield control every 1000 iterations to keep browser responsive
308-
if _iter_count[0] % 1000 == 0:
309-
try:
310-
# Try to yield control if we're in an async context
311-
pass
312-
except:
313-
pass
314-
yield i
315-
316-
def __len__(self):
317-
return len(self._range)
318-
319-
# Only use yielding range for large ranges
320-
def smart_range(*args):
321-
if len(args) == 1 and args[0] > 10000:
322-
return YieldingRange(*args)
323-
elif len(args) >= 2 and abs(args[1] - args[0]) > 10000:
324-
return YieldingRange(*args)
325-
return _original_range(*args)
326-
327-
__builtins__.range = smart_range
328-
`);
329-
} catch (err) {
330-
console.log('Could not setup yielding (non-critical):', err);
331-
}
332-
333-
// Run the user's code with interrupt buffer to prevent browser "unresponsive" dialog
334-
pyodide.setInterruptBuffer(new Int32Array(new SharedArrayBuffer(4)));
335-
336-
// Allow interruption for long-running code
337-
const runPromise = pyodide.runPythonAsync(code);
338-
339-
// Keep the page responsive by periodically yielding
340-
const keepAlive = setInterval(() => {
341-
// This keeps the event loop running
342-
}, 100);
343-
344-
await runPromise;
345-
clearInterval(keepAlive);
290+
// Run the user's code - use runPythonAsync which is non-blocking
291+
await pyodide.runPythonAsync(code);
346292
console.log('Code execution complete');
347293

348294
// Show final output

0 commit comments

Comments
 (0)