Skip to content

Commit

Permalink
lint
Browse files Browse the repository at this point in the history
  • Loading branch information
DerThorsten committed Dec 8, 2023
1 parent 5f2d923 commit d552808
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 70 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,9 @@ dmypy.json

# Yarn cache
.yarn/



# experiments
experiment.sh
env.yml
60 changes: 29 additions & 31 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,50 +12,50 @@ import { IKernel, IKernelSpecs } from '@jupyterlite/kernel';

import { WebWorkerKernel } from './web_worker_kernel';

const rel_path = '../extensions/@jupyterlite/xeus-python-kernel/static/';



const rel_path = "../extensions/@jupyterlite/xeus-python-kernel/static/";

// helper function to fetch json
// helper function to fetch json
function getPkgJson(url: string) {
const json_url = rel_path + url;
const xhr = new XMLHttpRequest();
xhr.open("GET", json_url, false);
xhr.open('GET', json_url, false);
xhr.send(null);
return JSON.parse(xhr.responseText);
}

let kernel_dir : string[] = [];
try{
kernel_dir = getPkgJson("share/jupyter/kernels.json")
}
catch(err){
let kernel_dir: string[] = [];
try {
kernel_dir = getPkgJson('share/jupyter/kernels.json');
} catch (err) {
console.log(err);
console.log("could not fetch share/jupyter/kernels/kernels.json");
kernel_dir = []
console.log('could not fetch share/jupyter/kernels/kernels.json');
kernel_dir = [];
throw err;
}
console.log(kernel_dir);

// fetch kernel spec for each kernel
const kernel_specs = kernel_dir.map((kernel_dir) => {
let spec : any = getPkgJson("share/jupyter/kernels/" + kernel_dir + "/kernel.json")
const kernel_specs = kernel_dir.map(kernel_dir => {
const spec: any = getPkgJson(
'share/jupyter/kernels/' + kernel_dir + '/kernel.json'
);
spec.name = kernel_dir;
spec.dir = kernel_dir;
spec.resources = {
'logo-32x32': rel_path + "share/jupyter/kernels/" + kernel_dir + "/logo-32x32.png",
'logo-64x64': rel_path + "share/jupyter/kernels/" + kernel_dir + "/logo-64x64.png",
}
'logo-32x32':
rel_path + 'share/jupyter/kernels/' + kernel_dir + '/logo-32x32.png',
'logo-64x64':
rel_path + 'share/jupyter/kernels/' + kernel_dir + '/logo-64x64.png'
};
return spec;
});

console.log(kernel_specs);

const server_kernels = kernel_specs.map((spec) => {
let server_kernel : JupyterLiteServerPlugin<void> = {
const server_kernels = kernel_specs.map(spec => {
const server_kernel: JupyterLiteServerPlugin<void> = {
// use name from spec
id: `@jupyterlite/${spec.name}-extension:kernel`,
id: `@jupyterlite/${spec.name}-extension:kernel`,
autoStart: true,
requires: [IKernelSpecs],
optional: [IServiceWorkerManager, IBroadcastChannelWrapper],
Expand All @@ -71,7 +71,7 @@ const server_kernels = kernel_specs.map((spec) => {
const mountDrive = !!(
serviceWorker?.enabled && broadcastChannel?.enabled
);

if (mountDrive) {
console.info(
`${spec.name} contents will be synced with Jupyter Contents`
Expand All @@ -81,12 +81,13 @@ const server_kernels = kernel_specs.map((spec) => {
`${spec.name} contents will NOT be synced with Jupyter Contents`
);
}

return new WebWorkerKernel({
...options,
mountDrive
},
spec

return new WebWorkerKernel(
{
...options,
mountDrive
},
spec
);
}
});
Expand All @@ -95,9 +96,6 @@ const server_kernels = kernel_specs.map((spec) => {
return server_kernel;
});




const plugins: JupyterLiteServerPlugin<any>[] = server_kernels;

export default plugins;
19 changes: 9 additions & 10 deletions src/web_worker_kernel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,14 @@ export class WebWorkerKernel implements IKernel {
*
* @param options The instantiation options for a new WebWorkerKernel
*/
constructor(
options: WebWorkerKernel.IOptions,
spec: any,
) {
const { id, name, sendMessage, location} = options;
constructor(options: WebWorkerKernel.IOptions, spec: any) {
const { id, name, sendMessage, location } = options;
this._id = id;
this._name = name;
this._location = location;
this._spec = spec;
this._sendMessage = sendMessage;
this._worker = new Worker(new URL(`./worker.js`, import.meta.url), {
this._worker = new Worker(new URL('./worker.js', import.meta.url), {
type: 'module'
});

Expand All @@ -48,10 +45,12 @@ export class WebWorkerKernel implements IKernel {
};
this._remote = wrap(this._worker);
this._remote.processMessage({
msg:{header: {
msg_type: 'initialize',
}},
spec : this._spec
msg: {
header: {
msg_type: 'initialize'
}
},
spec: this._spec
});
this.initFileSystem(options);
}
Expand Down
49 changes: 20 additions & 29 deletions src/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,9 @@ async function get_stdin() {

(self as any).get_stdin = get_stdin;




class XeusKernel {
constructor(resolve: any) {
this._resolve = resolve;

}

async ready(): Promise<void> {
Expand Down Expand Up @@ -141,16 +137,14 @@ class XeusKernel {

async processMessage(event: any): Promise<void> {
const msg_type = event.msg.header.msg_type;
if(msg_type === 'initialize') {

if (msg_type === 'initialize') {
const spec = event.spec;
this._spec = spec;
await this.initialize();

return;
}


await this.ready();

if (
Expand All @@ -163,7 +157,6 @@ class XeusKernel {
globalThis.toplevel_promise = null;
}


if (msg_type === 'input_reply') {
resolveInputReply(event.msg);
} else {
Expand All @@ -174,7 +167,7 @@ class XeusKernel {
private async initialize() {
const dir = this._spec.dir;
const binary_js = this._spec.argv[0];
const binary_wasm = binary_js.replace(".js", ".wasm");
const binary_wasm = binary_js.replace('.js', '.wasm');

console.log(binary_js);
console.log(binary_wasm);
Expand All @@ -189,36 +182,37 @@ class XeusKernel {
}
});
try {

await this.waitRunDependency();
console.log(globalThis.Module);

if(globalThis.Module['async_init'] !== undefined) {
const kernel_root_url=`share/jupyter/kernels/${dir}`
const pkg_root_url = "share/jupyter/kernel_packages"
if (globalThis.Module['async_init'] !== undefined) {
const kernel_root_url = `share/jupyter/kernels/${dir}`;
const pkg_root_url = 'share/jupyter/kernel_packages';
const verbose = true;
await globalThis.Module['async_init'](kernel_root_url, pkg_root_url, verbose);
await globalThis.Module['async_init'](
kernel_root_url,
pkg_root_url,
verbose
);
}

await this.waitRunDependency();

this._raw_xkernel = new globalThis.Module.xkernel();
this._raw_xserver = this._raw_xkernel.get_server();
if (!this._raw_xkernel) {
console.error('Failed to start kernel!');
}
this._raw_xkernel.start();
}
catch (e) {
if( typeof e === 'number' ) {
const msg = globalThis.Module.get_exception_message(e);
console.error(msg);
throw new Error(msg);
}
else {
console.error(e);
throw(e);
}
} catch (e) {
if (typeof e === 'number') {
const msg = globalThis.Module.get_exception_message(e);
console.error(msg);
throw new Error(msg);
} else {
console.error(e);
throw e;
}
}
this._resolve();
}
Expand Down Expand Up @@ -249,6 +243,3 @@ class XeusKernel {
globalThis.ready = new Promise(resolve => {
expose(new XeusKernel(resolve));
});



0 comments on commit d552808

Please sign in to comment.