kiyoon / jupynium.nvim

Selenium-automated Jupyter Notebook that is synchronised with NeoVim in real-time.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Creating Jupytext markdown cells can cause notebook to crash

vandalt opened this issue · comments

Describe the bug
Creating a markdown cell with the # %% [markdown] jupytext format can cause the notebook to crash if using snippets or adding the comment only after writing %% [markdown].

To Reproduce
Steps to reproduce the behavior:

  1. Open a jupynium file and sync it
  2. Create a markdown cell either with a snippet (e.g. with LuaSnip and nvim-cmp) or by first writing %% [markdown] and then adding # at the start of line.
  3. See error

Expected behavior
A markdown cell should be created in the notebook, as is the case when typing # %% [markdown] manually.

Output when using jupynium command
The output below is when using a snippet. to generate the cell.
One thing I noted is that the line right before the notebook call is

jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 4, 4]]

when crashing (both with snippet or when manually adding # after the rest), and

jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 1, 1]]

when working. The numbers at the end are different. I thought this might be the cause, though I have no idea what they mean, nor how the Selenium and Jupyter APIs work.

Crashing example jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, [''], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['m'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['ma'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mar'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/m'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/ma'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/mar'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/mark'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/markd'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/markdo'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/markdow'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/markdown'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['m'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['mark/markdown'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, [''], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['# %% [markdown]'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['# %% [markdown]'], 4, 5, 5]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 4, 4]] jupynium.buffer: 254 - INFO - Inserting cell 1 from Notebook jupynium.jupyter_notebook_selenium: 19 - INFO - New markdown (jupytext) cell created below cell 0 jupynium.buffer: 398 - INFO - Converting to markdown cells: [1, 2] jupynium.cmds.jupynium: 507 - ERROR - Uncaught exception occurred while processing events. Detaching nvim. Traceback (most recent call last): File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/jupynium/cmds/jupynium.py", line 502, in main status, rpcrequest_event = process_events(nvim_info, driver) File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/jupynium/events_control.py", line 217, in process_events prev_lazy_args_per_buf.process_all(nvim_info, driver) File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/jupynium/events_control.py", line 137, in process_all lazy_args.process(nvim_info, driver, bufnr) File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/jupynium/events_control.py", line 116, in process process_on_lines_event(nvim_info, driver, bufnr, self.on_lines_args) File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/jupynium/events_control.py", line 546, in process_on_lines_event nvim_info.jupbufs[bufnr].process_on_lines( File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/jupynium/buffer.py", line 134, in process_on_lines self._partial_sync_to_notebook( File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/jupynium/buffer.py", line 400, in _partial_sync_to_notebook driver.execute_script( File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 500, in execute_script return self.execute(command, {"script": script, "args": converted_args})["value"] File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute self.error_handler.check_response(response) File "/home/vandal/.local/pipx/venvs/jupynium/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.JavascriptException: Message: TypeError: string is undefined Stacktrace: splitLinesAuto<@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112727106f1684f27b88c5d6 f856ec07bf47f23b510f08badb65d627f757e61eca804345b:774:27 splitLines@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112727106f1684f27b88c5d6f856e c07bf47f23b510f08badb65d627f757e61eca804345b:6557:14 Doc.prototype<.setValue<@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112727106f1684f 27b88c5d6f856ec07bf47f23b510f08badb65d627f757e61eca804345b:6211:36 docMethodOp/<@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112727106f1684f27b88c5d6f8 56ec07bf47f23b510f08badb65d627f757e61eca804345b:4038:22 CodeMirror.prototype[prop]@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112727106f168 4f27b88c5d6f856ec07bf47f23b510f08badb65d627f757e61eca804345b:9845:40 TextCell.prototype.set_text@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112727106f16 84f27b88c5d6f856ec07bf47f23b510f08badb65d627f757e61eca804345b:59692:26 Notebook.prototype.transfer_to_new_cell@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653 112727106f1684f27b88c5d6f856ec07bf47f23b510f08badb65d627f757e61eca804345b:68324:21 Notebook.prototype.to_markdown@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112727106 f1684f27b88c5d6f856ec07bf47f23b510f08badb65d627f757e61eca804345b:68408:22 Notebook.prototype.cells_to_markdown@http://localhost:8888/static/notebook/js/main.min.js?v=bac2262d97e0eab7b445494fe686be11796512a6902a434d05aa653112 727106f1684f27b88c5d6f856ec07bf47f23b510f08badb65d627f757e61eca804345b:68391:18 @http://localhost:8888/notebooks/Untitled5.ipynb?kernel_name=comm8-plan:2:24 @http://localhost:8888/notebooks/Untitled5.ipynb?kernel_name=comm8-plan:3:8

[I 16:13:52.416 NotebookApp] Starting buffering for 929e72b9-1150-4ee6-9588-49430fe1eaf0:21863c760c7f45509e6789f6d9574497

Working example jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['# %% [markd]'], 0, 1, 1]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 0, 0]] jupynium.buffer: 258 - INFO - Cell 0 type change to code from Notebook jupynium.buffer: 391 - INFO - Converting to code cells: [1] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['# %% [markdo]'], 0, 1, 1]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 0, 0]] jupynium.buffer: 258 - INFO - Cell 0 type change to code from Notebook jupynium.buffer: 391 - INFO - Converting to code cells: [1] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['# %% [markdow]'], 0, 1, 1]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 0, 0]] jupynium.buffer: 258 - INFO - Cell 0 type change to code from Notebook jupynium.buffer: 391 - INFO - Converting to code cells: [1] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['# %% [markdown]'], 0, 1, 1]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 0, 0]] jupynium.buffer: 258 - INFO - Cell 0 type change to markdown (jupytext) from Notebook jupynium.buffer: 398 - INFO - Converting to markdown cells: [1] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 0, 0]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'on_lines', [1, ['# %% [markdown]', '# '], 0, 1, 2]] jupynium.events_control: 195 - INFO - Event from nvim: ['notification', 'CursorMovedI', [1, 1, 1]] jupynium.buffer: 258 - INFO - Cell 0 type change to markdown (jupytext) from Notebook jupynium.buffer: 398 - INFO - Converting to markdown cells: [1]

Output of jupynium --version

Jupynium v0.1.2.dev55+g8a1b2be.d20230311

Output of nvim --version

NVIM v0.8.3
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by builduser

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/share/nvim"

Run :checkhealth for more info

Thanks for reporting. Based on the log, it looks like after creating a cell it wants to set the cell content, and the type of the content is not a string and rater is undefined. It looks like a simple type mismatch issue. Does it only happen with markdown cells though?

Yes, creating a regular cell seems to work fine with snippets or by adding %% first and then # .

I still can't figure out what the exact cause is. Based on the fact that it only happens with Jupytext style markdown separator, it looks like a problem with the implementation of #52 (removing comments for the markdown cells)