#!/usr/bin/env python 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.PAD['apikey'], settings.PAD['host']) interpreters = load_interpreters() interpreters['best'](locals())