Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
This is used for instance if glue has been started from IPython.
Keyword arguments will be added to the namespace of the shell.
Parameters
----------
console_class : `type`
The class of the console widget to create
"""
shell = get_ipython()
if shell is None:
raise RuntimeError("There is no IPython kernel in this process")
client = QtKernelClient(connection_file=get_connection_file())
client.load_connection_file()
client.start_channels()
control = console_class()
control.kernel_client = client
control.shell = shell
control.shell.user_ns.update(**kwargs)
return control
self.shell = kernel_manager.kernel.shell
self.push = self.shell.push
elif isinstance(shell, TerminalInteractiveShell):
# if launching from an ipython terminal then adding a console is
# not supported. Instead users should use the ipython terminal for
# the same functionality.
self.kernel_client = None
self.kernel_manager = None
self.shell = None
self.push = lambda var: None
elif isinstance(shell, ZMQInteractiveShell):
# if launching from jupyter notebook, connect to the existing
# kernel
kernel_client = QtKernelClient(
connection_file=get_connection_file()
)
kernel_client.load_connection_file()
kernel_client.start_channels()
self.kernel_manager = None
self.kernel_client = kernel_client
self.shell = shell
self.push = self.shell.push
else:
raise ValueError(
'ipython shell not recognized; ' f'got {type(shell)}'
)
# Add any user variables
user_variables = user_variables or {}
self.push(user_variables)
def connected_console(console_class=RichIPythonWidget, **kwargs):
"""Create a console widget, connected to another kernel running in
the current process
This only works on IPython v1.0 and above
Parameters:
console_class : The class of the console widget to create
kwargs : Extra variables to put into the namespace
"""
shell = get_ipython()
if shell is None:
raise RuntimeError("There is no IPython kernel in this process")
client = QtKernelClient(connection_file=get_connection_file())
client.load_connection_file()
client.start_channels()
control = console_class()
control.kernel_client = client
control.shell = shell
control.shell.user_ns.update(**kwargs)
return control