X7ROOT File Manager
Current Path:
/opt/hc_python/lib/python3.12/site-packages/greenlet/tests
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
greenlet
/
tests
/
ðŸ“
..
📄
__init__.py
(9.14 KB)
ðŸ“
__pycache__
📄
_test_extension.c
(5.64 KB)
📄
_test_extension.cpython-312-x86_64-linux-gnu.so
(16.85 KB)
📄
_test_extension_cpp.cpp
(6.41 KB)
📄
_test_extension_cpp.cpython-312-x86_64-linux-gnu.so
(57.02 KB)
📄
fail_clearing_run_switches.py
(1.23 KB)
📄
fail_cpp_exception.py
(985 B)
📄
fail_initialstub_already_started.py
(1.92 KB)
📄
fail_slp_switch.py
(524 B)
📄
fail_switch_three_greenlets.py
(956 B)
📄
fail_switch_three_greenlets2.py
(1.25 KB)
📄
fail_switch_two_greenlets.py
(817 B)
📄
leakcheck.py
(11.68 KB)
📄
test_contextvars.py
(10.29 KB)
📄
test_cpp.py
(2.67 KB)
📄
test_extension_interface.py
(3.74 KB)
📄
test_gc.py
(2.85 KB)
📄
test_generator.py
(1.21 KB)
📄
test_generator_nested.py
(3.63 KB)
📄
test_greenlet.py
(45.17 KB)
📄
test_greenlet_trash.py
(7.76 KB)
📄
test_leaks.py
(17.3 KB)
📄
test_stack_saved.py
(446 B)
📄
test_throw.py
(3.63 KB)
📄
test_tracing.py
(8.06 KB)
📄
test_version.py
(1.31 KB)
📄
test_weakref.py
(883 B)
Editing: fail_initialstub_already_started.py
""" Testing initialstub throwing an already started exception. """ import greenlet a = None b = None c = None main = greenlet.getcurrent() # If we switch into a dead greenlet, # we go looking for its parents. # if a parent is not yet started, we start it. results = [] def a_run(*args): #results.append('A') results.append(('Begin A', args)) def c_run(): results.append('Begin C') b.switch('From C') results.append('C done') class A(greenlet.greenlet): pass class B(greenlet.greenlet): doing_it = False def __getattribute__(self, name): if name == 'run' and not self.doing_it: assert greenlet.getcurrent() is c self.doing_it = True results.append('Switch to b from B.__getattribute__ in ' + type(greenlet.getcurrent()).__name__) b.switch() results.append('B.__getattribute__ back from main in ' + type(greenlet.getcurrent()).__name__) if name == 'run': name = '_B_run' return object.__getattribute__(self, name) def _B_run(self, *arg): results.append(('Begin B', arg)) results.append('_B_run switching to main') main.switch('From B') class C(greenlet.greenlet): pass a = A(a_run) b = B(parent=a) c = C(c_run, b) # Start a child; while running, it will start B, # but starting B will ALSO start B. result = c.switch() results.append(('main from c', result)) # Switch back to C, which was in the middle of switching # already. This will throw the ``GreenletStartedWhileInPython`` # exception, which results in parent A getting started (B is finished) c.switch() results.append(('A dead?', a.dead, 'B dead?', b.dead, 'C dead?', c.dead)) # A and B should both be dead now. assert a.dead assert b.dead assert not c.dead result = c.switch() results.append(('main from c.2', result)) # Now C is dead assert c.dead print("RESULTS:", results)
Upload File
Create Folder