"could not find model" due to outputs:[{text/plain}] truncated at 111 bytes

#1

I have a notebook containing:

  • Nested HBox and VBox to create a table of ipywidget.HTML snippets
  • Vega charts produced via Python code and passed to display({‘application/vnd.vega.v4+json’: …my_string…}, raw=True)

When I start JupyterLab 0.35.4 the content is not restored, it says “could not find model” until I execute the first code cell. I gather this means the ipynb file did not contain saved images/renderings/etc, which is not surprising I suppose given the custom Vega charts.

I’m willing to put in some effort to try to fix this and have my notebook open to a useable state more quickly, but I’m not sure even where to begin. Do I need to write a jupyterlab extension? Do I need to make changes in the backend? Is it simpler than that, is there some option I can pass to display(raw=True) which I’m missing?

1 Like

#2

Looking at my ipynb file, the text is truncated after 111 characters and an ellipse. Admittedly the nested VBox+HBox statements and the Vega code would be many tens of kilobytes, but if it were saved without truncation I think it would work.

Truncating the field makes it seem like it is probably not an issue of needing an extension, it is more likely a limit within Jupyter which is being hit. 111 bytes seems very small, I know I’ve seen larger blocks of HTML saved in an ipynb file than that.

  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c7e179805f494ec6b9b772c705593059",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(VBox(children=(HBox(children=(HTML(value='<div style=\"font-size:large; background-color:white;p…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import os.path\n",
    "\n",
    "import ipywidgets\n",
    "from IPython.display import display, HTML, SVG\n",
    "import pandas as pd\n",
    "import numpy as np\n",
0 Likes

#3

I dug around in the nbformat v3 and v4 code looking for a length limit of about 111 bytes, but didn’t see anything likely. I imagine the truncation happens earlier, prior to calling nbformat to write out the file.

0 Likes

#4

Since I know that something, somewhere is replacing the bulk of the ‘text/plain’ field with an ellipse character ‘…’ I searched the jupyter github repositories for occurrences of that character in decimal and hex code as well the the unicode symbol, but didn’t find it.



0 Likes

#5

So you have your vega inside of the ipywidgets?

I think the issue here is possibly that we don’t have ipywidgets state into the notebook, see https://github.com/jupyterlab/jupyterlab/issues/5235

We just added more complete support for managing notebook metadata like widget state here: https://github.com/jupyterlab/jupyterlab/pull/5968

You might be more of a response on the ipywidgets issue tracker. That is where the jupyter lab extension lives for rendering widgets.

1 Like

#6

We revamp our ipywidgets support for JupyterLab in https://github.com/jupyter-widgets/ipywidgets/pull/2265. We’re very close to merging that and releasing a new version of the ipywidgets jupyterlab manager.

2 Likes