@jupyterlite/xeus-python-kernel
Version:
A Python kernel for JupyterLite, powered by Xeus
45 lines (44 loc) • 1.92 kB
JavaScript
// Copyright (c) Thorsten Beier
// Copyright (c) JupyterLite Contributors
// Distributed under the terms of the Modified BSD License.
import { IServiceWorkerManager } from '@jupyterlite/server';
import { IBroadcastChannelWrapper } from '@jupyterlite/contents';
import { IKernelSpecs } from '@jupyterlite/kernel';
import { WebWorkerKernel } from './web_worker_kernel';
import logo32 from '!!file-loader?context=.!../style/logos/python-logo-32x32.png';
import logo64 from '!!file-loader?context=.!../style/logos/python-logo-64x64.png';
const server_kernel = {
id: '@jupyterlite/xeus-python-kernel-extension:kernel',
autoStart: true,
requires: [IKernelSpecs],
optional: [IServiceWorkerManager, IBroadcastChannelWrapper],
activate: (app, kernelspecs, serviceWorker, broadcastChannel) => {
kernelspecs.register({
spec: {
name: 'xeus-python',
display_name: 'Python (XPython)',
language: 'python',
argv: [],
resources: {
'logo-32x32': logo32,
'logo-64x64': logo64
}
},
create: async (options) => {
const mountDrive = !!((serviceWorker === null || serviceWorker === void 0 ? void 0 : serviceWorker.enabled) && (broadcastChannel === null || broadcastChannel === void 0 ? void 0 : broadcastChannel.enabled));
if (mountDrive) {
console.info('xeus-python contents will be synced with Jupyter Contents');
}
else {
console.warn('xeus-python contents will NOT be synced with Jupyter Contents');
}
return new WebWorkerKernel({
...options,
mountDrive
});
}
});
}
};
const plugins = [server_kernel];
export default plugins;