drivendataorg/nbautoexport

Using nbautoexport in VSCode

Opened this issue · 1 comments

  • nbautoexport version: 0.5.2
  • Python version: 3.12.4
  • Operating System: macOS Sonoma 14.4

Description

I’m trying to run nbautoexport in Jupyter Notebooks opened in VSCode. Conversion from .ipynb to .py works without any problems in Jupyter Notebook/Jupyter Lab. However, whenever I connect VSCode to an active Jupyter session, neither automatic nor manual saves force the library to do the export to a .py file.

It seems probable that this is not an issue with nbautoexport itself, but rather with how VSCode saves notebook files. Nevertheless, I would be very grateful for any suggestions on how to tackle this issue.

What I Did

  1. Installed nbautoexport
  2. Tested the behaviour in Jupyter Notebook/Jupyter Lab:
  • Conversion works without any problems.
  1. Tested the behavior in VSCode:
  • Using the same session where nbautoexport worked with Jupyter Notebook/Lab (doesn’t work)
  • Using a new session created in VSCode (doesn’t work)

I also tried adding % autosave 120 to force save the notebooks every 2 minutes, and it also didn’t work.

Observations:

  • Jupyter Notebook/Jupyter Lab: Export to .py works as expected.
  • VSCode: Neither automatic nor manual saves trigger the export.

Additional Information:

  • No error messages were received during testing.

I'm not quite certain what you mean by "session" when you say "using the same session" as Jupyter Notebook/Lab. Do you mean "kernel"?

In any case, nbautoexport not working with VS Code is a general limitation we have. We hook into APIs related to Jupyter Notebook/Lab's functionality as an editor application (i.e., disk I/O) to trigger the export. VS Code is itself an editor and handles that stuff independently.

Supporting VS Code is going to involve building VS-Code-specific support, probably through a VS Code extension. It's something we're certainly interested in, as myself and other folks on our team also often use VS Code for notebooks. (Currently, my work-around is to just run nbautoexport export from the command-line manually periodically.) I had played around with making a VS Code extension for nbautoexport a year or two ago, but I wasn't familiar with developing extensions and didn't make much progress on getting something to work.