Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Creating Jupytext markdown cells can cause notebook to crash #65

Closed
vandalt opened this issue Mar 12, 2023 · 3 comments · Fixed by #68
Closed

Creating Jupytext markdown cells can cause notebook to crash #65

vandalt opened this issue Mar 12, 2023 · 3 comments · Fixed by #68
Labels
bug Something isn't working

Comments

@vandalt
Copy link
Contributor

vandalt commented Mar 12, 2023

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
@vandalt vandalt added the bug Something isn't working label Mar 12, 2023
@kiyoon
Copy link
Owner

kiyoon commented Mar 12, 2023

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?

@vandalt
Copy link
Contributor Author

vandalt commented Mar 12, 2023

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

@kiyoon
Copy link
Owner

kiyoon commented Mar 12, 2023

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
2 participants