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

1#!/usr/bin/env python 

2# coding: utf-8 

3"""This module provides integration of an IPython kernel. 

4 

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 

11 

12 

13class InternalIPyKernel(object): 

14 

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)] 

19 

20 self.kernel = IPKernelApp.instance() 

21 self.kernel.initialize(_optslist) 

22 

23 # To create and track active qt consoles 

24 self.consoles = [] 

25 

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) 

29 

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() 

36 

37 def add_to_namespace(self, namestr, nameobj): 

38 """Extend kernel namespace.""" 

39 self.namespace[namestr] = nameobj 

40 

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)) 

44 

45 def cleanup_consoles(self): 

46 for c in self.consoles: 

47 c.kill()