diff options
Diffstat (limited to 'test.py')
-rwxr-xr-x | test.py | 38 |
1 files changed, 37 insertions, 1 deletions
@@ -4,5 +4,41 @@ import padlite import settings import code +def load_interpreters(): + """ Load a dict of available Python interpreters """ + interpreters = dict(python=lambda v: InteractiveConsole(v).interact()) + best = "python" + try: + import bpython.cli + interpreters["bpython"] = lambda v: bpython.cli.main(args=[], + locals_=v) + best = "bpython" + except ImportError: + pass + + try: + # whether ipython is actually better than bpython is + # up for debate, but this is the behavior that existed + # before --interpreter was added, so we call IPython + # better + import IPython + # pylint: disable=E1101 + if hasattr(IPython, "Shell"): + interpreters["ipython"] = lambda v: \ + IPython.Shell.IPShell(argv=[], user_ns=v).mainloop() + best = "ipython" + elif hasattr(IPython, "embed"): + interpreters["ipython"] = lambda v: IPython.embed(user_ns=v) + best = "ipython" + else: + print("Unknown IPython API version") + # pylint: enable=E1101 + except ImportError: + pass + + interpreters['best'] = interpreters[best] + return interpreters + p = padlite.PadLite(settings.APIKEY, settings.HOST) -code.interact(local=locals()) +interpreters = load_interpreters() +interpreters['best'](locals()) |