davidbrochart / nbterm

Jupyter Notebooks in the terminal.
MIT License
745 stars 37 forks source link

ndterm fails to launch with some notebooks #32

Open DavidMertz opened 3 years ago

DavidMertz commented 3 years ago

I've only tried the tool (which I'm excited by) against two notebooks so far. The one opened helpfully, and I could run cells, including those using %load_ext rpy2.ipython and %%R, as well as `%%bash`` (along with regular Python cells). So that's great.

For this notebook, which runs fine in regular Jupyter or Jupyter Lab, I get this:

% nbterm 99-Outtakes.ipynb
Traceback (most recent call last):
  File "/home/dmertz/miniconda3/envs/cleaning3.9/bin/nbterm", line 10, in <module>
    sys.exit(cli())
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/nbterm/nbterm.py", line 43, in cli
    typer.run(main)
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/typer/main.py", line 859, in run
    app()
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/typer/main.py", line 214, in __call__
    return get_command(self)(*args, **kwargs)
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/typer/main.py", line 497, in wrapper
    return callback(**use_params)  # type: ignore
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/nbterm/nbterm.py", line 29, in main
    nb = Notebook(notebook_path, no_kernel=no_kernel or False, save_path=save_path)
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/nbterm/notebook.py", line 61, in __init__
    self.read_nb()
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/nbterm/format.py", line 15, in read_nb
    self.cells = [
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/nbterm/format.py", line 16, in <listcomp>
    Cell(self, cell_json=cell_json) for cell_json in self.json["cells"]
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/nbterm/cell.py", line 96, in __init__
    output_text, output_height = get_output_text_and_height(
  File "/home/dmertz/miniconda3/envs/cleaning3.9/lib/python3.9/site-packages/nbterm/cell.py", line 43, in get_output_text_and_height
    text_list.append(text)
UnboundLocalError: local variable 'text' referenced before assignment

Hmm, I guess this notebook isn't in a public repo, but I can attach it if that helps diagnose the issue.

DavidMertz commented 3 years ago
(cleaning3.9) 6236-cleaning-data [main|✔]
% nbterm --version
nbterm 0.0.7
(cleaning3.9) 6237-cleaning-data [main|✔]
% uname -a
Linux popkdm 5.11.0-7612-generic #13~1617215757~20.10~97a8d1a-Ubuntu SMP Thu Apr 1 21:09:17 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
(cleaning3.9) 6238-cleaning-data [main|✔]
% python --version
Python 3.9.2
davidbrochart commented 3 years ago

Thanks for reporting, this should be fixed by #20 (not released yet).

kevinjacobs-progenity commented 3 years ago

I fixed the same issue locally for one output type:

        elif output["output_type"] == "display_data":
            text = "\n".join(output["data"].get("text/plain", ""))
            height += text.count("\n") or 1
ghylander commented 3 years ago

great news i think it may have been caused by markdown cells, as it's only notebooks containing those cells the ones that fail to launch for me