def main(args=None, locals_=None, banner=None): config, options, exec_args = bpargs.parse(args, ( 'scroll options', None, [ Option('--log', '-L', action='store_true', help=_("log debug messages to bpython-curtsies.log")), Option('--type', '-t', action='store_true', help=_("enter lines of file as though interactively typed")), ])) if options.log: import logging logging.basicConfig(filename='scroll.log', level=logging.DEBUG) interp = None paste = None if exec_args: assert options, "don't pass in exec_args without options" exit_value = 0 if options.type: paste = curtsies.events.PasteEvent() sourcecode = open(exec_args[0]).read() paste.events.extend(sourcecode) else: try: interp = code.InteractiveInterpreter(locals=locals_) bpargs.exec_code(interp, exec_args) except SystemExit, e: exit_value = e.args if not options.interactive: raise SystemExit(exit_value)
def start(main_loop, user_data): if exec_args: bpargs.exec_code(interpreter, exec_args) if not options.interactive: raise urwid.ExitMainLoop() if not exec_args: sys.path.insert(0, '') # this is CLIRepl.startup inlined. filename = os.environ.get('PYTHONSTARTUP') if filename and os.path.isfile(filename): with open(filename, 'r') as f: if py3: interpreter.runsource(f.read(), filename, 'exec') else: interpreter.runsource(f.read(), filename, 'exec', encode=False) if banner is not None: myrepl.write(banner) myrepl.write('\n') myrepl.start() # This bypasses main_loop.set_alarm_in because we must *not* # hit the draw_screen call (it's unnecessary and slow). def run_find_coroutine(): if find_coroutine(): main_loop.event_loop.alarm(0, run_find_coroutine) run_find_coroutine()
def start(main_loop, user_data): if exec_args: bpargs.exec_code(interpreter, exec_args) if not options.interactive: raise urwid.ExitMainLoop() if not exec_args: sys.path.insert(0, '') # this is CLIRepl.startup inlined. filename = os.environ.get('PYTHONSTARTUP') if filename and os.path.isfile(filename): with open(filename, 'r') as f: if py3: interpreter.runsource(f.read(), filename, 'exec') else: interpreter.runsource(f.read(), filename, 'exec', encode=False) if banner is not None: repl.write(banner) repl.write('\n') myrepl.start() # This bypasses main_loop.set_alarm_in because we must *not* # hit the draw_screen call (it's unnecessary and slow). def run_find_coroutine(): if find_coroutine(): main_loop.event_loop.alarm(0, run_find_coroutine) run_find_coroutine()
def main(args=None, locals_=None, banner=None): translations.init() config, options, exec_args = bpargs.parse( args, ('curtsies options', None, [ Option('--log', '-L', action='count', help=_("log debug messages to bpython.log")), Option('--paste', '-p', action='store_true', help=_("start by pasting lines of a file into session")), ])) if options.log is None: options.log = 0 logging_levels = [logging.ERROR, logging.INFO, logging.DEBUG] level = logging_levels[min(len(logging_levels) - 1, options.log)] logging.getLogger('curtsies').setLevel(level) logging.getLogger('bpython').setLevel(level) if options.log: handler = logging.FileHandler(filename='bpython.log') logging.getLogger('curtsies').addHandler(handler) logging.getLogger('curtsies').propagate = False logging.getLogger('bpython').addHandler(handler) logging.getLogger('bpython').propagate = False interp = None paste = None if exec_args: if not options: raise ValueError("don't pass in exec_args without options") exit_value = 0 if options.paste: paste = curtsies.events.PasteEvent() encoding = inspection.get_encoding_file(exec_args[0]) with io.open(exec_args[0], encoding=encoding) as f: sourcecode = f.read() paste.events.extend(sourcecode) else: try: interp = code.InteractiveInterpreter(locals=locals_) bpargs.exec_code(interp, exec_args) except SystemExit as e: exit_value = e.args if not options.interactive: raise SystemExit(exit_value) else: # expected for interactive sessions (vanilla python does it) sys.path.insert(0, '') print(bpargs.version_banner()) mainloop(config, locals_, banner, interp, paste, interactive=(not exec_args))
def test_interactive(self): interp = code.InteractiveInterpreter(locals={}) with captured_output() as (out, err): with tempfile.NamedTemporaryFile(mode="w", suffix=".py") as f: f.write("print(1/2)\n") f.flush() args.exec_code(interp, [f.name]) repl = create_repl(interp=interp) repl.push("1 / 2") self.assertEqual(out.getvalue(), "0.5\n0.5\n")
def test_interactive(self): interp = code.InteractiveInterpreter(locals={}) with captured_output() as (out, err): with tempfile.NamedTemporaryFile(suffix='.py') as f: f.write('from __future__ import division\n') f.write('print 1/2\n') f.flush() args.exec_code(interp, [f.name]) repl = create_repl(interp=interp) repl.push('1 / 2') self.assertEqual(out.getvalue(), '0.5\n0.5\n')
def test_interactive(self): interp = code.InteractiveInterpreter(locals={}) with captured_output() as (out, err): with tempfile.NamedTemporaryFile(mode='w', suffix='.py') as f: f.write('from __future__ import division\n') f.write('print(1/2)\n') f.flush() args.exec_code(interp, [f.name]) repl = create_repl(interp=interp) repl.push('1 / 2') self.assertEqual(out.getvalue(), '0.5\n0.5\n')
def main(args=None, locals_=None, banner=None): config, options, exec_args = bpargs.parse(args, ('scroll options', None, [ Option('--log', '-L', action='store_true', help=_("log debug messages to bpython.log")), Option('--type', '-t', action='store_true', help=_("enter lines of file as though interactively typed")), ])) if options.log: handler = logging.FileHandler(filename='bpython.log') logging.getLogger('curtsies').setLevel(logging.DEBUG) logging.getLogger('curtsies').addHandler(handler) logging.getLogger('curtsies').propagate = False logging.getLogger('bpython').setLevel(logging.DEBUG) logging.getLogger('bpython').addHandler(handler) logging.getLogger('bpython').propagate = False else: logging.getLogger('bpython').setLevel(logging.WARNING) interp = None paste = None if exec_args: if not options: raise ValueError("don't pass in exec_args without options") exit_value = 0 if options.type: paste = curtsies.events.PasteEvent() sourcecode = open(exec_args[0]).read() paste.events.extend(sourcecode) else: try: interp = code.InteractiveInterpreter(locals=locals_) bpargs.exec_code(interp, exec_args) except SystemExit, e: exit_value = e.args if not options.interactive: raise SystemExit(exit_value)
def main(args=None, locals_=None, banner=None): config, options, exec_args = bpargs.parse(args, ( 'scroll options', None, [ Option('--log', '-L', action='store_true', help=_("log debug messages to bpython.log")), Option('--type', '-t', action='store_true', help=_("enter lines of file as though interactively typed")), ])) if options.log: handler = logging.FileHandler(filename='bpython.log') logging.getLogger('curtsies').setLevel(logging.DEBUG) logging.getLogger('curtsies').addHandler(handler) logging.getLogger('curtsies').propagate = False logging.getLogger('bpython').setLevel(logging.DEBUG) logging.getLogger('bpython').addHandler(handler) logging.getLogger('bpython').propagate = False else: logging.getLogger('bpython').setLevel(logging.WARNING) interp = hy.cmdline.HyREPL() paste = None if exec_args: assert options, "don't pass in exec_args without options" exit_value = 0 if options.type: paste = curtsies.events.PasteEvent() sourcecode = open(exec_args[0]).read() paste.events.extend(sourcecode) else: try: interp = code.InteractiveInterpreter(locals=locals_) bpargs.exec_code(interp, exec_args) except SystemExit as e: exit_value = e.args if not options.interactive: raise SystemExit(exit_value) else: sys.path.insert(0, '') # expected for interactive sessions (vanilla python does it) mainloop(config, locals_, banner, interp, paste, interactive=(not exec_args))
def main(args=None, locals_=None, banner=None): config, options, exec_args = bpargs.parse(args, ( 'curtsies options', None, [ Option('--log', '-L', action='store_true', help=_("log debug messages to bpython.log")), Option('--type', '-t', action='store_true', help=_("enter lines of file as though interactively typed")), ])) if options.log: handler = logging.FileHandler(filename='bpython.log') logging.getLogger('curtsies').setLevel(logging.WARNING) logging.getLogger('curtsies').addHandler(handler) logging.getLogger('curtsies').propagate = False logging.getLogger('bpython').setLevel(logging.WARNING) logging.getLogger('bpython').addHandler(handler) logging.getLogger('bpython').propagate = False else: logging.getLogger('bpython').setLevel(logging.ERROR) logging.getLogger('curtsies').setLevel(logging.ERROR) interp = None paste = None if exec_args: if not options: raise ValueError("don't pass in exec_args without options") exit_value = 0 if options.type: paste = curtsies.events.PasteEvent() sourcecode = open(exec_args[0]).read() paste.events.extend(sourcecode) else: try: interp = code.InteractiveInterpreter(locals=locals_) bpargs.exec_code(interp, exec_args) except SystemExit, e: exit_value = e.args if not options.interactive: raise SystemExit(exit_value)
def main(args=None, locals_=None, banner=None, welcome_message=None): """ banner is displayed directly after the version information. welcome_message is passed on to Repl and displayed in the statusbar. """ translations.init() config, options, exec_args = bpargs.parse(args, ( 'curtsies options', None, [ Option('--log', '-L', action='count', help=_("log debug messages to bpython.log")), Option('--paste', '-p', action='store_true', help=_("start by pasting lines of a file into session")), ])) if options.log is None: options.log = 0 logging_levels = [logging.ERROR, logging.INFO, logging.DEBUG] level = logging_levels[min(len(logging_levels) - 1, options.log)] logging.getLogger('curtsies').setLevel(level) logging.getLogger('bpython').setLevel(level) if options.log: handler = logging.FileHandler(filename='bpython.log') logging.getLogger('curtsies').addHandler(handler) logging.getLogger('curtsies').propagate = False logging.getLogger('bpython').addHandler(handler) logging.getLogger('bpython').propagate = False interp = None paste = None if exec_args: if not options: raise ValueError("don't pass in exec_args without options") exit_value = () if options.paste: paste = curtsies.events.PasteEvent() encoding = inspection.get_encoding_file(exec_args[0]) with io.open(exec_args[0], encoding=encoding) as f: sourcecode = f.read() paste.events.extend(sourcecode) else: try: interp = Interp(locals=locals_) bpargs.exec_code(interp, exec_args) except SystemExit as e: exit_value = e.args if not options.interactive: return extract_exit_value(exit_value) else: # expected for interactive sessions (vanilla python does it) sys.path.insert(0, '') if not options.quiet: print(bpargs.version_banner()) if banner is not None: print(banner) global repl repl = FullCurtsiesRepl(config, locals_, welcome_message, interp, paste) try: with repl.input_generator: with repl.window as win: with repl: repl.height, repl.width = win.t.height, win.t.width exit_value = repl.mainloop() except (SystemExitFromCodeGreenlet, SystemExit) as e: exit_value = e.args return extract_exit_value(exit_value)
def main(args=None, locals_=None, banner=None, welcome_message=None): """ banner is displayed directly after the version information. welcome_message is passed on to Repl and displayed in the statusbar. """ translations.init() config, options, exec_args = bpargs.parse( args, ('curtsies options', None, [ Option('--log', '-L', action='count', help=_("log debug messages to bpython.log")), Option('--paste', '-p', action='store_true', help=_("start by pasting lines of a file into session")), ])) if options.log is None: options.log = 0 logging_levels = [logging.ERROR, logging.INFO, logging.DEBUG] level = logging_levels[min(len(logging_levels) - 1, options.log)] logging.getLogger('curtsies').setLevel(level) logging.getLogger('bpython').setLevel(level) if options.log: handler = logging.FileHandler(filename='bpython.log') logging.getLogger('curtsies').addHandler(handler) logging.getLogger('curtsies').propagate = False logging.getLogger('bpython').addHandler(handler) logging.getLogger('bpython').propagate = False interp = None paste = None if exec_args: if not options: raise ValueError("don't pass in exec_args without options") exit_value = () if options.paste: paste = curtsies.events.PasteEvent() encoding = inspection.get_encoding_file(exec_args[0]) with io.open(exec_args[0], encoding=encoding) as f: sourcecode = f.read() paste.events.extend(sourcecode) else: try: interp = Interp(locals=locals_) bpargs.exec_code(interp, exec_args) except SystemExit as e: exit_value = e.args if not options.interactive: return extract_exit_value(exit_value) else: # expected for interactive sessions (vanilla python does it) sys.path.insert(0, '') if not options.quiet: print(bpargs.version_banner()) if banner is not None: print(banner) global repl repl = FullCurtsiesRepl(config, locals_, welcome_message, interp, paste) try: with repl.input_generator: with repl.window as win: with repl: repl.height, repl.width = win.t.height, win.t.width exit_value = repl.mainloop() except (SystemExitFromCodeGreenlet, SystemExit) as e: exit_value = e.args return extract_exit_value(exit_value)