@@ -61,13 +61,13 @@ class CodeRunner(object):
61
61
"""Runs user code in an interpreter.
62
62
63
63
Running code requests a refresh by calling
64
- request_from_main_greenlet (force_refresh=True), which
64
+ request_from_main_context (force_refresh=True), which
65
65
suspends execution of the code and switches back to the main greenlet
66
66
67
67
After load_code() is called with the source code to be run,
68
68
the run_code() method should be called to start running the code.
69
69
The running code may request screen refreshes and user input
70
- by calling request_from_main_greenlet .
70
+ by calling request_from_main_context .
71
71
When this are called, the running source code cedes
72
72
control, and the current run_code() method call returns.
73
73
@@ -93,32 +93,32 @@ def __init__(self, interp=None, request_refresh=lambda: None):
93
93
"""
94
94
self .interp = interp or code .InteractiveInterpreter ()
95
95
self .source = None
96
- self .main_greenlet = greenlet .getcurrent ()
97
- self .code_greenlet = None
96
+ self .main_context = greenlet .getcurrent ()
97
+ self .code_context = None
98
98
self .request_refresh = request_refresh
99
99
# waiting for response from main thread
100
100
self .code_is_waiting = False
101
101
# sigint happened while in main thread
102
- self .sigint_happened_in_main_greenlet = False
102
+ self .sigint_happened_in_main_context = False
103
103
self .orig_sigint_handler = None
104
104
105
105
@property
106
106
def running (self ):
107
107
"""Returns greenlet if code has been loaded greenlet has been
108
108
started"""
109
- return self .source and self .code_greenlet
109
+ return self .source and self .code_context
110
110
111
111
def load_code (self , source ):
112
112
"""Prep code to be run"""
113
113
assert self .source is None , "you shouldn't load code when some is " \
114
114
"already running"
115
115
self .source = source
116
- self .code_greenlet = None
116
+ self .code_context = None
117
117
118
118
def _unload_code (self ):
119
119
"""Called when done running code"""
120
120
self .source = None
121
- self .code_greenlet = None
121
+ self .code_context = None
122
122
self .code_is_waiting = False
123
123
124
124
def run_code (self , for_code = None ):
@@ -128,21 +128,21 @@ def run_code(self, for_code=None):
128
128
if source code is complete, returns "done"
129
129
if source code is incomplete, returns "unfinished"
130
130
"""
131
- if self .code_greenlet is None :
131
+ if self .code_context is None :
132
132
assert self .source is not None
133
- self .code_greenlet = greenlet .greenlet (self ._blocking_run_code )
133
+ self .code_context = greenlet .greenlet (self ._blocking_run_code )
134
134
self .orig_sigint_handler = signal .getsignal (signal .SIGINT )
135
135
signal .signal (signal .SIGINT , self .sigint_handler )
136
- request = self .code_greenlet .switch ()
136
+ request = self .code_context .switch ()
137
137
else :
138
138
assert self .code_is_waiting
139
139
self .code_is_waiting = False
140
140
signal .signal (signal .SIGINT , self .sigint_handler )
141
- if self .sigint_happened_in_main_greenlet :
142
- self .sigint_happened_in_main_greenlet = False
143
- request = self .code_greenlet .switch (SigintHappened )
141
+ if self .sigint_happened_in_main_context :
142
+ self .sigint_happened_in_main_context = False
143
+ request = self .code_context .switch (SigintHappened )
144
144
else :
145
- request = self .code_greenlet .switch (for_code )
145
+ request = self .code_context .switch (for_code )
146
146
147
147
logger .debug ('request received from code was %r' , request )
148
148
if not isinstance (request , RequestFromCodeRunner ):
@@ -165,13 +165,13 @@ def run_code(self, for_code=None):
165
165
def sigint_handler (self , * args ):
166
166
"""SIGINT handler to use while code is running or request being
167
167
fulfilled"""
168
- if greenlet .getcurrent () is self .code_greenlet :
168
+ if greenlet .getcurrent () is self .code_context :
169
169
logger .debug ('sigint while running user code!' )
170
170
raise KeyboardInterrupt ()
171
171
else :
172
172
logger .debug ('sigint while fulfilling code request sigint handler '
173
173
'running!' )
174
- self .sigint_happened_in_main_greenlet = True
174
+ self .sigint_happened_in_main_context = True
175
175
176
176
def _blocking_run_code (self ):
177
177
try :
@@ -180,15 +180,15 @@ def _blocking_run_code(self):
180
180
return SystemExitRequest (e .args )
181
181
return Unfinished () if unfinished else Done ()
182
182
183
- def request_from_main_greenlet (self , force_refresh = False ):
183
+ def request_from_main_context (self , force_refresh = False ):
184
184
"""Return the argument passed in to .run_code(for_code)
185
185
186
186
Nothing means calls to run_code must be... ???
187
187
"""
188
188
if force_refresh :
189
- value = self .main_greenlet .switch (Refresh ())
189
+ value = self .main_context .switch (Refresh ())
190
190
else :
191
- value = self .main_greenlet .switch (Wait ())
191
+ value = self .main_context .switch (Wait ())
192
192
if value is SigintHappened :
193
193
raise KeyboardInterrupt ()
194
194
return value
@@ -211,7 +211,7 @@ def write(self, s, *args, **kwargs):
211
211
if not py3 and isinstance (s , str ):
212
212
s = s .decode (getpreferredencoding (), 'ignore' )
213
213
self .on_write (s , * args , ** kwargs )
214
- return self .coderunner .request_from_main_greenlet (force_refresh = True )
214
+ return self .coderunner .request_from_main_context (force_refresh = True )
215
215
216
216
# Some applications which use curses require that sys.stdout
217
217
# have a method called fileno. One example is pwntools. This
0 commit comments