<s> import coro <EOL> import operator <EOL> import sys <EOL> from functools import reduce <EOL> W = coro . write_stderr <EOL> class thing : <EOL> def __init__ ( self , sleep ) : <EOL> self . sleep = sleep <EOL> def __call__ ( self , * args ) : <EOL> W ( '<STR_LIT>' % ( self , sys . get_dispatcher_depth ( ) ) ) <EOL> coro . sleep_relative ( self . sleep ) <EOL> return reduce ( operator . add , args ) <EOL> class thing2 : <EOL> def __init__ ( self , sleep ) : <EOL> coro . sleep_relative ( sleep ) <EOL> W ( '<STR_LIT>' % ( self , sys . get_dispatcher_depth ( ) ) ) <EOL> def fun0 ( sleep , arg0 , arg1 ) : <EOL> fun_42 ( sleep ) <EOL> return arg0 + arg1 <EOL> def fun_42 ( sleep ) : <EOL> coro . sleep_relative ( sleep ) <EOL> def fun1 ( sleep , arg0 , arg1 ) : <EOL> W ( '<STR_LIT>' % sleep ) <EOL> result = fun0 ( * ( sleep , arg0 , arg1 ) ) <EOL> W ( '<STR_LIT>' % ( sleep , result ) ) <EOL> def go ( t ) : <EOL> W ( '<STR_LIT>' % ( t , sys . get_dispatcher_depth ( ) ) ) <EOL> result = t ( <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> ) <EOL> W ( '<STR_LIT>' % ( t , sys . get_dispatcher_depth ( ) ) ) <EOL> return result <EOL> def go2 ( ) : <EOL> for x in range ( <NUM_LIT:5> ) : <EOL> coro . spawn ( go3 , x ) <EOL> def go4 ( ) : <EOL> for x in range ( <NUM_LIT:5> ) : <EOL> coro . spawn ( fun1 , x , <NUM_LIT:3> , <NUM_LIT:4> ) <EOL> def fun2 ( sleep ) : <EOL> W ( "<STR_LIT>" % ( sleep , ) ) <EOL> x = thing2 ( * ( sleep , ) ) <EOL> W ( "<STR_LIT>" % ( sleep , x ) ) <EOL> def go5 ( ) : <EOL> for x in range ( <NUM_LIT:5> ) : <EOL> coro . spawn ( fun2 , x ) <EOL> all_things = [ ] <EOL> def go3 ( x ) : <EOL> global all_things <EOL> W ( '<STR_LIT>' ) <EOL> t = thing2 ( x ) <EOL> W ( '<STR_LIT>' % ( t , ) ) <EOL> all_things . append ( t ) <EOL> class Plonk ( Exception ) : <EOL> def __init__ ( * args ) : <EOL> Exception . __init__ ( * args ) <EOL> W ( '<STR_LIT>' % ( args , ) ) <EOL> def fun3 ( ) : <EOL> coro . sleep_relative ( <NUM_LIT:5> ) <EOL> raise Plonk ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) <EOL> def fun4 ( ) : <EOL> for i in range ( <NUM_LIT:50> ) : <EOL> x = operator . add ( * ( <NUM_LIT:3> , <NUM_LIT:4> ) ) <EOL> assert ( x == <NUM_LIT:7> ) <EOL> W ( '<STR_LIT>' % ( sys . getrefcount ( <NUM_LIT:7> ) ) ) <EOL> def fun5 ( ) : <EOL> for i in range ( <NUM_LIT:50> ) : <EOL> x = thing ( * ( i , ) ) <EOL> W ( '<STR_LIT>' % ( sys . getrefcount ( None ) ) ) <EOL> class my_fifo ( coro . fifo ) : <EOL> def pop ( self ) : <EOL> return coro . fifo . pop ( self ) <EOL> the_fifo = my_fifo ( ) <EOL> def popper ( n ) : <EOL> global live <EOL> W ( '<STR_LIT>' % ( n , ) ) <EOL> while True : <EOL> x = the_fifo . pop ( ) <EOL> W ( '<STR_LIT>' % ( n , x ) ) <EOL> coro . sleep_relative ( <NUM_LIT:0> ) <EOL> W ( '<STR_LIT>' % ( n , ) ) <EOL> def pusher ( ) : <EOL> i = <NUM_LIT:0> <EOL> while i < <NUM_LIT:100> : <EOL> the_fifo . push ( i ) <EOL> coro . sleep_relative ( <NUM_LIT> ) <EOL> i += <NUM_LIT:1> <EOL> coro . _exit = <NUM_LIT:1> <EOL> def fun6 ( ) : <EOL> coro . spawn ( pusher ) <EOL> for i in xrange ( <NUM_LIT> ) : <EOL> coro . spawn ( popper , i ) <EOL> def fun7 ( ) : <EOL> import os <EOL> v = os . environ . get ( "<STR_LIT>" ) <EOL> W ( '<STR_LIT>' % ( v , ) ) <EOL> W ( '<STR_LIT>' % ( os . environ , ) ) <EOL> import _coro <EOL> class X : <EOL> def m ( self , arg ) : <EOL> _coro . breakpoint ( ) <EOL> return arg + <NUM_LIT> <EOL> class Y ( X ) : <EOL> def m ( self , arg ) : <EOL> return X . m ( self , arg ) + <NUM_LIT> <EOL> def fun8 ( ) : <EOL> y = Y ( ) <EOL> W ( '<STR_LIT>' % ( y . m ( <NUM_LIT> ) , ) ) <EOL> class A : <EOL> def m ( self , t , * args ) : <EOL> W ( '<STR_LIT>' % ( self , t , sys . get_dispatcher_depth ( ) ) ) <EOL> coro . sleep_relative ( t ) <EOL> W ( '<STR_LIT>' % ( self , t , sys . get_dispatcher_depth ( ) ) ) <EOL> return args + ( <NUM_LIT> , ) <EOL> def go9 ( t ) : <EOL> a = A ( ) <EOL> return a . m ( t , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> ) <EOL> def fun9 ( ) : <EOL> for x in range ( <NUM_LIT:5> ) : <EOL> coro . spawn ( go9 , x ) <EOL> if <NUM_LIT:0> : <EOL> for x in range ( <NUM_LIT:5> ) : <EOL> t = thing ( x ) <EOL> coro . spawn ( go , t ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( go2 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( go4 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( go5 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( fun3 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( fun4 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( fun5 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( fun6 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( fun7 ) <EOL> elif <NUM_LIT:0> : <EOL> coro . spawn ( fun8 ) <EOL> elif <NUM_LIT:1> : <EOL> coro . spawn ( fun9 ) <EOL> coro . event_loop ( ) </s>
