def connected_console(console_class=RichJupyterWidget, **kwargs): """ Create a console widget, connected to another kernel running in the current process. 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
def test_get_connection_file(): cfg = Config() with TemporaryWorkingDirectory() as d: cfg.ProfileDir.location = d cf = 'kernel.json' app = DummyKernelApp(config=cfg, connection_file=cf) app.initialize() profile_cf = os.path.join(app.connection_dir, cf) assert profile_cf == app.abs_connection_file with open(profile_cf, 'w') as f: f.write("{}") assert os.path.exists(profile_cf) assert connect.get_connection_file(app) == profile_cf app.connection_file = cf assert connect.get_connection_file(app) == profile_cf
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
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
def __init__(self, user_variables=None): super().__init__() # get current running instance or create new instance shell = get_ipython() if shell is None: # If there is no currently running instance create an in-process # kernel. kernel_manager = QtInProcessKernelManager() kernel_manager.start_kernel(show_banner=False) kernel_manager.kernel.gui = 'qt' kernel_client = kernel_manager.client() kernel_client.start_channels() self.kernel_manager = kernel_manager self.kernel_client = kernel_client self.shell = kernel_manager.kernel.shell self.push = self.shell.push elif type(shell) == InProcessInteractiveShell: # If there is an existing running InProcessInteractiveShell # it is likely because multiple viewers have been launched from # the same process. In that case create a new kernel. # Connect existing kernel kernel_manager = QtInProcessKernelManager(kernel=shell.kernel) kernel_client = kernel_manager.client() self.kernel_manager = kernel_manager self.kernel_client = kernel_client 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) self.enable_calltips = False
def __init__(self, main_window: "BaseMainWindow"): super().__init__() self.main_window = main_window self.syntax_style = "default" self.style_sheet = "" # Connect theme update user_variables = { "window": self.main_window, "settings": self.main_window.settings } # get current running instance or create new instance shell = get_ipython() if shell is None: # If there is no currently running instance create an in-process # kernel. kernel_manager = QtInProcessKernelManager() kernel_manager.start_kernel(show_banner=False) kernel_manager.kernel.gui = "qt" kernel_client = kernel_manager.client() kernel_client.start_channels() self.kernel_manager = kernel_manager self.kernel_client = kernel_client self.shell = kernel_manager.kernel.shell self.push = self.shell.push elif type(shell) is InProcessInteractiveShell: # pylint: disable=C0123 # If there is an existing running InProcessInteractiveShell # it is likely because multiple viewers have been launched from # the same process. In that case create a new kernel. # Connect existing kernel kernel_manager = QtInProcessKernelManager(kernel=shell.kernel) kernel_client = kernel_manager.client() self.kernel_manager = kernel_manager self.kernel_client = kernel_client 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) self.enable_calltips = False