diff --git a/powershell_kernel/kernel.py b/powershell_kernel/kernel.py index 7718124..811acaf 100644 --- a/powershell_kernel/kernel.py +++ b/powershell_kernel/kernel.py @@ -1,3 +1,5 @@ +from subprocess import check_output + from ipykernel.kernelbase import Kernel from os import unlink, environ @@ -8,6 +10,8 @@ import signal import urllib +from traitlets import default, Unicode + from powershell_kernel import subprocess_repl, powershell_proxy from powershell_kernel.util import get_powershell @@ -15,6 +19,7 @@ version_pat = re.compile(r'version (\d+(\.\d+)+)') + class PowerShellKernel(Kernel): implementation = 'powershell_kernel' implementation_version = __version__ @@ -24,11 +29,12 @@ def language_version(self): m = version_pat.search(self.banner) return m.group(1) - _banner = None + banner = Unicode() - @property - def banner(self): - return self._banner + @default('banner') + def _banner_default(self): + return check_output(['powershell', '$PSVersionTable.PSVersion']).decode('utf-8') + # return self._banner language_info = {'name': 'powershell', 'codemirror_mode': 'shell', @@ -37,7 +43,7 @@ def banner(self): def __init__(self, **kwargs): Kernel.__init__(self, **kwargs) - + # powershell_command env variable is set by the kernel to allow both powershell and pwsh # but on python2 we cannot pass it thru env variable, see https://github.com/vors/jupyter-powershell/issues/7 # TODO(python2): can we pass it somehow differently and still provide user-picked value on python2? @@ -54,7 +60,7 @@ def do_execute(self, code, silent, store_history=True, if not code.strip(): return {'status': 'ok', 'execution_count': self.execution_count, 'payload': [], 'user_expressions': {}} - + self.proxy.send_input(code) output = self.proxy.get_output()