base: Add support for newer versions of IPython
IPython is used for the interactive gem5 shell if it exists. IPython made API changes in version 0.11. This patch adds support for IPython version 0.11 and above. --HG-- extra : rebase_source : 5388d0919adb58d97f49a1a637db48cba61283a3
This commit is contained in:
parent
7c6bc52bf5
commit
d4eca0591d
|
@ -129,11 +129,40 @@ def parse_options():
|
|||
|
||||
def interact(scope):
|
||||
banner = "gem5 Interactive Console"
|
||||
|
||||
ipshell = None
|
||||
prompt_in1 = "gem5 \\#> "
|
||||
prompt_out = "gem5 \\#: "
|
||||
|
||||
# Is IPython version 0.10 or earlier available?
|
||||
try:
|
||||
from IPython.Shell import IPShellEmbed
|
||||
ipshell = IPShellEmbed(argv=[], banner=banner, user_ns=scope)
|
||||
ipshell()
|
||||
ipshell = IPShellEmbed(argv=["-prompt_in1", prompt_in1,
|
||||
"-prompt_out", prompt_out],
|
||||
banner=banner, user_ns=scope)
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
# Is IPython version 0.11 or later available?
|
||||
if not ipshell:
|
||||
try:
|
||||
import IPython
|
||||
from IPython.config.loader import Config
|
||||
from IPython.frontend.terminal.embed import InteractiveShellEmbed
|
||||
|
||||
cfg = Config()
|
||||
cfg.PromptManager.in_template = prompt_in1
|
||||
cfg.PromptManager.out_template = prompt_out
|
||||
ipshell = InteractiveShellEmbed(config=cfg, user_ns=scope,
|
||||
banner1=banner)
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
if ipshell:
|
||||
ipshell()
|
||||
else:
|
||||
# Use the Python shell in the standard library if IPython
|
||||
# isn't available.
|
||||
code.InteractiveConsole(scope).interact(banner)
|
||||
|
||||
def main(*args):
|
||||
|
|
Loading…
Reference in a new issue