def run(self, code): output = io.StringIO() with contextlib.redirect_stdout(output): with contextlib.redirect_stderr(output): for line in code.splitlines(): self.console.push(line) return {'output': str(output.getvalue())}
def save_last_expr(code, var): try: tree = ast.parse(code) if not tree.body or not isinstance(tree.body[-1], _ast.Expr): return code, False row = tree.body[-1].lineno - 1 col = tree.body[-1].col_offset lines = code.splitlines() lines[row] = lines[row][:col] + var + '=' + lines[row][col:] return '\n'.join(lines), True except Exception: traceback.print_exc() return code, False
def import_function( self, source, function_name, language=None, filename=False ): """ Search for and extract a function.""" source_name = self.path / source code = find_in_source(source_name, function_name) if not code: raise Exception(f"Function not found: {function_name}") output_lines = code.splitlines(keepends=True) self._strip_trailing_blanks(output_lines) output_lines = left_justify(output_lines) self._add_filename(filename, source, output_lines) self._add_language(language, output_lines) return "".join(output_lines).rstrip()
def OnEditCopyCode(self, command, code): """ Sanitizes code from interactive window, removing prompts and output, and inserts it in the clipboard.""" code=self.GetSelText() lines=code.splitlines() out_lines=[] for line in lines: if line.startswith(sys.ps1): line=line[len(sys.ps1):] out_lines.append(line) elif line.startswith(sys.ps2): line=line[len(sys.ps2):] out_lines.append(line) out_code=os.linesep.join(out_lines) win32clipboard.OpenClipboard() try: win32clipboard.SetClipboardData(win32clipboard.CF_UNICODETEXT, str(out_code)) finally: win32clipboard.CloseClipboard()
def OnEditCopyCode(self, command, code): """ Sanitizes code from interactive window, removing prompts and output, and inserts it in the clipboard.""" code=self.GetSelText() lines=code.splitlines() out_lines=[] for line in lines: if line.startswith(sys.ps1): line=line[len(sys.ps1):] out_lines.append(line) elif line.startswith(sys.ps2): line=line[len(sys.ps2):] out_lines.append(line) out_code=os.linesep.join(out_lines) win32clipboard.OpenClipboard() try: win32clipboard.SetClipboardData(win32clipboard.CF_UNICODETEXT, unicode(out_code)) finally: win32clipboard.CloseClipboard()