Skip to content

Commit 4711621

Browse files
terapyonterapyon
authored andcommitted
bugfix and comlite MIM render
1 parent 38b43b9 commit 4711621

5 files changed

Lines changed: 36 additions & 55 deletions

File tree

examples/introduction.ipynb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,12 @@
7373
"outputs": [
7474
{
7575
"data": {
76-
"application/vnd.jupyter.widget-view+json": {
77-
"model_id": "e6b8538beb4e4601b2dc2054ab1eb41a",
78-
"version_major": 2,
79-
"version_minor": 0
76+
"application/vnd.netvis+json": {
77+
"data": "\n{\n \"nodes\": [\n {\n \"page_id\": 1,\n \"id\": \"Network\"\n },\n {\n \"page_id\": 2,\n \"id\": \"Graph\"\n }\n ],\n \"links\": [\n {\n \"source\": \"Network\",\n \"target\": \"Graph\"\n }\n ]\n}\n",
78+
"version": "0.4.0"
8079
},
8180
"text/plain": [
82-
"NetVis(value='\\n{\\n \"nodes\": [\\n {\\n \"page_id\": 1,\\n \"id\": \"Network\"\\n },\\n {\\n \"page…"
81+
"NetVis Graph"
8382
]
8483
},
8584
"execution_count": 4,
@@ -254,7 +253,7 @@
254253
"name": "python",
255254
"nbconvert_exporter": "python",
256255
"pygments_lexer": "ipython3",
257-
"version": "3.12.7"
256+
"version": "3.11.7"
258257
}
259258
},
260259
"nbformat": 4,

net_vis/_frontend.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
"""
1010

1111
module_name = "net_vis"
12-
module_version = "^0.3.1"
12+
module_version = "^0.4.0"

net_vis/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
# Copyright (c) Manabu TERADA.
55
# Distributed under the terms of the Modified BSD License.
66

7-
version_info = (0, 3, 1)
7+
version_info = (0, 4, 0)
88
__version__ = ".".join(map(str, version_info))

src/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Entry point for Node/webpack consumers.
2+
// Re-export the MIME extension and public symbols explicitly to avoid duplication.
3+
export {
4+
default as mimeExtension,
5+
MIME_TYPE,
6+
NetVisMimeRenderer,
7+
parseGraphData,
8+
validateVersion
9+
} from './mimePlugin';
10+
11+
export * from './renderer';
12+
export * from './version';

src/mimePlugin.ts

Lines changed: 17 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
// Copyright (c) Manabu TERADA
22
// Distributed under the terms of the Modified BSD License.
33

4-
import {
5-
JupyterFrontEnd,
6-
JupyterFrontEndPlugin,
7-
} from '@jupyterlab/application';
8-
9-
import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
104
import { IRenderMime } from '@jupyterlab/rendermime-interfaces';
115
import { Widget } from '@lumino/widgets';
126

@@ -132,49 +126,25 @@ export class NetVisMimeRenderer extends Widget implements IRenderMime.IRenderer
132126
}
133127

134128
/**
135-
* Extension definition for JupyterLab 4.x
129+
* Mime extension definition (JupyterLab expects rendererFactory & rank here).
136130
*/
137-
const mimeExtension: JupyterFrontEndPlugin<void> = {
138-
id: 'net_vis:mime',
139-
autoStart: true,
140-
requires: [IRenderMimeRegistry],
141-
activate: (app: JupyterFrontEnd, rendermime: IRenderMimeRegistry) => {
142-
console.log('NetVis MIME extension activation started');
143-
144-
/**
145-
* Create a renderer factory for NetVis data.
146-
*/
147-
const factory: IRenderMime.IRendererFactory & { defaultRank?: number } = {
148-
safe: true,
149-
mimeTypes: [MIME_TYPE],
150-
// Explicit default rank to match JupyterLab 4 expectations and avoid
151-
// `defaultRank` lookups on undefined.
152-
defaultRank: 0,
153-
createRenderer: (options: IRenderMime.IRendererOptions) => {
154-
return new NetVisMimeRenderer(options);
155-
}
156-
};
157-
158-
// Register the factory with fallback paths for JL3/JL4
159-
try {
160-
// Preferred path (JL4): factory carries its defaultRank
161-
rendermime.addFactory(factory);
162-
} catch (primaryError) {
163-
console.warn('[NetVis] Primary factory registration failed, retrying with explicit rank', primaryError);
164-
try {
165-
// JL3-style explicit rank argument
166-
rendermime.addFactory(factory, 0);
167-
} catch (fallbackError) {
168-
console.error('[NetVis] Failed to register MIME renderer factory', {
169-
primaryError,
170-
fallbackError
171-
});
172-
return;
173-
}
174-
}
175-
176-
console.log(`NetVis MIME renderer registered for ${MIME_TYPE}`);
131+
const rendererFactory: IRenderMime.IRendererFactory & { defaultRank?: number } = {
132+
safe: true,
133+
mimeTypes: [MIME_TYPE],
134+
// Explicit default rank to match JupyterLab 4 expectations and avoid
135+
// `defaultRank` lookups on undefined.
136+
defaultRank: 0,
137+
createRenderer: (options: IRenderMime.IRendererOptions) => {
138+
return new NetVisMimeRenderer(options);
177139
}
178140
};
179141

142+
const mimeExtension: IRenderMime.IExtension = {
143+
id: 'net_vis:mime',
144+
rendererFactory,
145+
// Rank used by JupyterLab registry; also keep defaultRank on factory.
146+
rank: 0,
147+
dataType: 'json'
148+
};
149+
180150
export default mimeExtension;

0 commit comments

Comments
 (0)