Coverage for /Users/Newville/Codes/xraylarch/larch/qtlib/console.py: 0%
26 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-09 10:08 -0600
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-09 10:08 -0600
1#!/usr/bin/env python
2# coding: utf-8
3"""This module provides integration of an IPython kernel.
5.. note:: Initial idea taken from ipykernel example `internal_ipkernel.py`.
6"""
7from __future__ import absolute_import, division
8import sys
9from ipykernel import connect_qtconsole
10from ipykernel.kernelapp import IPKernelApp
13class InternalIPyKernel(object):
15 def init_kernel(self, backend='qt', log_level='INFO'):
16 _optslist = ['python',
17 '--gui={0}'.format(backend),
18 '--log-level={0}'.format(log_level)]
20 self.kernel = IPKernelApp.instance()
21 self.kernel.initialize(_optslist)
23 # To create and track active qt consoles
24 self.consoles = []
26 # This application will also act on the shell user namespace
27 self.namespace = self.kernel.shell.user_ns
28 self.add_to_namespace('kernel', self.kernel)
30 def print_namespace(self, evt=None):
31 print("\n***Variables in User namespace***")
32 for k, v in self.namespace.items():
33 if not k.startswith('_'):
34 print('%s -> %r' % (k, v))
35 sys.stdout.flush()
37 def add_to_namespace(self, namestr, nameobj):
38 """Extend kernel namespace."""
39 self.namespace[namestr] = nameobj
41 def new_qt_console(self):
42 """Start a new qtconsole connected to our kernel."""
43 self.consoles.append(connect_qtconsole(self.kernel.abs_connection_file, profile=self.kernel.profile))
45 def cleanup_consoles(self):
46 for c in self.consoles:
47 c.kill()