From 6eaa3d19b016d0fd5b9a3ba7feea9f3a95993dbb Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 11 Aug 2013 12:06:56 +0000 Subject: test: use {i,b}python if available --- test.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index 0fdc59f..9013dcb 100755 --- a/test.py +++ b/test.py @@ -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()) -- cgit v1.2.3-1-g7c22