aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py')
-rw-r--r--.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py b/.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py
new file mode 100644
index 00000000..3e52345a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/greenlet/tests/fail_switch_two_greenlets.py
@@ -0,0 +1,41 @@
+"""
+Uses a trace function to switch greenlets at unexpected times.
+
+In the trace function, we switch from the current greenlet to another
+greenlet, which switches
+"""
+import greenlet
+
+g1 = None
+g2 = None
+
+switch_to_g2 = False
+
+def tracefunc(*args):
+ print('TRACE', *args)
+ global switch_to_g2
+ if switch_to_g2:
+ switch_to_g2 = False
+ g2.switch()
+ print('\tLEAVE TRACE', *args)
+
+def g1_run():
+ print('In g1_run')
+ global switch_to_g2
+ switch_to_g2 = True
+ greenlet.getcurrent().parent.switch()
+ print('Return to g1_run')
+ print('Falling off end of g1_run')
+
+def g2_run():
+ g1.switch()
+ print('Falling off end of g2')
+
+greenlet.settrace(tracefunc)
+
+g1 = greenlet.greenlet(g1_run)
+g2 = greenlet.greenlet(g2_run)
+
+g1.switch()
+print('Falling off end of main')
+g2.switch()