Develop and build a JupyterLab extension using Poetry: is there a clean workflow?

Hi everyone,
I’m looking for a clear and reproducible workflow for developing and building a JupyterLab extension using Poetry.

I’ve tried both the old extension-cookiecutter-ts template and the newer extension-template. In both cases I struggled with:

  • Poetry vs Hatch environments (conflicting assumptions, no clean dependency resolution flow).
  • A pyproject.toml that becomes messy and less reliable when mixing Poetry + Hatch.
  • Difficulty bundling assets (non-code files) without setuptools.
  • Lack of a reproducible development pipeline inside a JupyterLab Docker image.

My expected workflow would be:

  • Base Docker image with JupyterLab. This is explained quite well here.
  • Development inside the container: create env, install deps, live reload/watch (this needs a clean build process).
  • Easily controllable and reproducible build with proper dependency resolution.

Has anyone successfully set up a clean Poetry-based workflow for JupyterLab extension development?
Any minimal reproducible example or template would be very helpful.

Thanks anyway to the Jupyter team for the splendid work done so far

1 Like