Ticket #1508: nagare-admin-shell-ipython.patch

File nagare-admin-shell-ipython.patch, 1.8 KB (added by bertrand.croq, 6 years ago)
  • nagare/admin/shell.py

    diff --git a/nagare/admin/shell.py b/nagare/admin/shell.py
    a b  
    2121 
    2222import sys, os, code, atexit, __builtin__ 
    2323 
     24try: 
     25    import IPython 
     26except ImportError: 
     27    IPython = None 
     28 
    2429from nagare import database, log, local 
    2530from nagare.admin import util 
    2631 
     
    7580    optparser.add_option('--plain', action='store_const', const=False, default=True, dest='ipython', help='launch a plain Python interpreter instead of IPython') 
    7681 
    7782 
    78 def run_ipython_shell(shell, ns): 
     83def run_ipython_shell(ns): 
    7984    """Launch a IPython interpreter 
    8085 
    8186    In: 
    82       - ``shell`` -- a IPython interpreter 
    8387      - ``ns`` -- the namespace with the ``apps`` and ``session`` variables defined 
    8488    """ 
    85     print "Variables 'apps' and 'session' are available" 
    86     shell.IPShell(argv=[], user_ns=ns).mainloop(sys_exit=1) 
     89    assert IPython is not None 
     90 
     91    banner = "Variables 'apps' and 'session' are available" 
     92    try: 
     93        # IPython < 0.11 
     94        shell = IPython.Shell.IPShell(argv=[], user_ns=ns) 
     95        run = lambda: shell.mainloop(sys_exit=1) 
     96        print banner 
     97    except: 
     98        # IPython >= 0.11 
     99        shell = IPython.frontend.terminal.embed.InteractiveShellEmbed(user_ns=ns) 
     100        run = lambda: shell(header=banner) 
     101 
     102    run() 
    87103 
    88104 
    89105def run_python_shell(ns): 
     
    130146    ns = create_globals(args, options.debug, parser.error) 
    131147    ns['__name__'] = '__console__' 
    132148 
    133     try: 
    134         import IPython 
    135         ipython_available = True 
    136     except ImportError: 
    137         ipython_available = False 
    138  
    139     if ipython_available and options.ipython: 
    140         run_ipython_shell(IPython.Shell, ns) 
     149    if IPython is not None and options.ipython: 
     150        run_ipython_shell(ns) 
    141151    else: 
    142152        run_python_shell(ns) 
    143153