MCPcopy Index your code
hub / github.com/bpython/bpython / run_code

Method run_code

bpython/curtsiesfrontend/coderunner.py:125–168  ·  view source on GitHub ↗

Returns Truthy values if code finishes, False otherwise if for_code is provided, send that value to the code greenlet if source code is complete, returns "done" if source code is incomplete, returns "unfinished"

(self, for_code=None)

Source from the content-addressed store, hash-verified

123 self.code_is_waiting = False
124
125 def run_code(self, for_code=None):
126 """Returns Truthy values if code finishes, False otherwise
127
128 if for_code is provided, send that value to the code greenlet
129 if source code is complete, returns "done"
130 if source code is incomplete, returns "unfinished"
131 """
132 if self.code_context is None:
133 assert self.source is not None
134 self.code_context = greenlet.greenlet(self._blocking_run_code)
135 if is_main_thread():
136 self.orig_sigint_handler = signal.getsignal(signal.SIGINT)
137 signal.signal(signal.SIGINT, self.sigint_handler)
138 request = self.code_context.switch()
139 else:
140 assert self.code_is_waiting
141 self.code_is_waiting = False
142 if is_main_thread():
143 signal.signal(signal.SIGINT, self.sigint_handler)
144 if self.sigint_happened_in_main_context:
145 self.sigint_happened_in_main_context = False
146 request = self.code_context.switch(SigintHappened)
147 else:
148 request = self.code_context.switch(for_code)
149
150 logger.debug("request received from code was %r", request)
151 if not isinstance(request, RequestFromCodeRunner):
152 raise ValueError(
153 "Not a valid value from code greenlet: %r" % request
154 )
155 if isinstance(request, (Wait, Refresh)):
156 self.code_is_waiting = True
157 if isinstance(request, Refresh):
158 self.request_refresh()
159 return False
160 elif isinstance(request, (Done, Unfinished)):
161 self._unload_code()
162 if is_main_thread():
163 signal.signal(signal.SIGINT, self.orig_sigint_handler)
164 self.orig_sigint_handler = None
165 return request
166 elif isinstance(request, SystemExitRequest):
167 self._unload_code()
168 raise SystemExitFromCodeRunner(request.args)
169
170 def sigint_handler(self, *args):
171 """SIGINT handler to use while code is running or request being

Callers 3

test_simpleMethod · 0.95
test_exceptionMethod · 0.95

Calls 3

_unload_codeMethod · 0.95
request_refreshMethod · 0.80

Tested by 2

test_simpleMethod · 0.76
test_exceptionMethod · 0.76