Skip to content

Releases: lsst-sqre/noteburst

0.13.0

12 Sep 19:11
058689c
Compare
Choose a tag to compare

New features

  • Notebook execution jobs can now set timeouts. In requests, set a timeout in the timeout request field. This can be a number of seconds, or a human-readable duration string (e.g. "1h30m"). The specified timeout is also repeated in the response body. This timeout applies to the notebook execution, not any time in the queue.

  • Errors that prevented a notebook from being executed are now reported in the notebook job response body in the error field. The field is an object with a code field and a message field. The code field is a string that can be used to identify the error. Currently the codes are timeout, jupyter_error, and unknown. Note that exceptions raised in the Jupyter notebook aren't considered errors, but are instead reported in the ipynb_error field.

What's Changed

Full Changelog: 0.12.1...0.13.0

0.12.1

02 Aug 19:57
7858d60
Compare
Choose a tag to compare

Bug fixes

  • When logging into JupyterHub, a Noteburst now looks for XRSF tokens from each redirect.

Other changes

  • Adopt ruff-shared.toml from https://github.com/lsst/templates
  • Adopt uv for dependency management and resolution.
  • Adopt explicit ASGITransport for setting up test HTTPX client.

What's Changed

  • Update change log for 0.11.0 release by @jonathansick in #87
  • [neophile] Update dependencies by @neophile-square in #88
  • [neophile] Update dependencies by @neophile-square in #89
  • [neophile] Update dependencies by @neophile-square in #90
  • [neophile] Update dependencies by @neophile-square in #91
  • [neophile] Update dependencies by @neophile-square in #92
  • [neophile] Update dependencies by @neophile-square in #93
  • [neophile] Update dependencies by @neophile-square in #94
  • [neophile] Update dependencies by @neophile-square in #95
  • [neophile] Update dependencies by @neophile-square in #96
  • [neophile] Update dependencies by @neophile-square in #97
  • DM-45563: Get JupyterHub XSRF token from each redirect hop by @jonathansick in #98

Full Changelog: 0.12.0...0.12.1

0.12.0

15 May 18:34
401431b
Compare
Choose a tag to compare

New features

  • Create Gafaelfawr service tokens instead of user tokens for authenticated calls to JupyterHub and JupyterLab. Gafaelfawr is standardizing on the new service token type for all service-to-service authentication.

  • Reduced the frequency of keep-alive tasks for the Noteburst workers to once every 15 minutes, from once every 5 minutes. This is intended to clean up the logging output.

Bug fixes

  • Correctly extract cookies from the middle of the redirect chain caused by initial authentication to a Nublado lab. This fixes failures seen with labs containing JupyterHub 4.1.3.

What's Changed

  • [neophile] Update dependencies by @neophile-square in #81
  • DM-44136: Switch to creating Gafaelfawr service tokens by @rra in #82
  • [neophile] Update dependencies by @neophile-square in #85
  • [neophile] Update dependencies by @neophile-square in #86
  • DM-43852: Get xsrf token from each redirect by @jonathansick in #77

New Contributors

  • @rra made their first contribution in #82

Full Changelog: 0.11.0...0.12.0

0.11.0

24 Apr 22:54
8d11db5
Compare
Choose a tag to compare

New features

  • Add support for gid as well as uid fields in the worker identity configuration. Both uid and gid are now validated as integers

What's Changed

  • [neophile] Update dependencies by @neophile-square in #76
  • [neophile] Update dependencies by @neophile-square in #78
  • [neophile] Update dependencies by @neophile-square in #79
  • Add gid to worker, make uid/gid int by @athornton in #80

New Contributors

Full Changelog: 0.10.0...0.11.0

0.10.0

26 Mar 21:51
27ba022
Compare
Choose a tag to compare

0.10.0 (2024-03-26)

New features

  • Add a NOTEBURST_WORKER_MAX_CONCURRENT_JOBS environment variable configuration to limit the number of concurrent jobs a worker can run. The default is 3. Previously this was 10. This should be set to be equal or less than the number of CPUs available to the JupyterLab pod.

  • The notebook execution client now waits as long as possible for the /execution endpoint in the JupyterLab pod to return the executed notebook. Previously the client would wait for a fixed amount of time, which could be too short for long-running notebooks. The JupyterLab server may still time-out the request, though.

Bug fixes

  • Improved handling of the XSRF token when authenticated to JupyterHub and JupyterLab pods. This is required in JupyterLab 4.1.

What's Changed

  • [neophile] Update dependencies by @neophile-square in #75
  • DM-43460: Add a NOTEBURST_WORKER_MAX_CONCURRENT_JOBS config by @jonathansick in #74

Full Changelog: 0.9.1...0.10.0

0.9.1

21 Mar 21:51
b0804a5
Compare
Choose a tag to compare

Bug fixes

  • Fix Slack error messaging in the nbexec worker function.
  • Extract and use the actual XSRF token when communicating with the Hub and Lab.

What's Changed

  • [neophile] Update dependencies by @neophile-square in #72
  • DM-43393: Cast job_try to str when making SlackTextField by @jonathansick in #73

Full Changelog: 0.9.0...0.9.1

0.9.0

13 Mar 18:16
01f870a
Compare
Choose a tag to compare

New features

  • Add formatted errors when a job is not found for the GET /v1/notebooks/:job_id endpoint.

  • Errors and uncaught exceptions are now sent to Slack via a Slack webhook. The webhook URL is set via the SLACK_WEBHOOK_URL environment variable.

Other changes

  • The code base now uses Ruff for linting and formatting, replacing black, isort, and flake8. This change is part of the ongoing effort to standardize SQuaRE code bases and improve the developer experience.

What's Changed

  • [neophile] Update dependencies by @neophile-square in #64
  • [neophile] Update dependencies by @neophile-square in #65
  • [neophile] Update dependencies by @neophile-square in #68
  • DM-43173: Format codebase with ruff by @jonathansick in #69
  • [neophile] Update dependencies by @neophile-square in #71
  • DM-43226: Improve client usage error responses and add Slack error reporting by @jonathansick in #70

Full Changelog: 0.8.0...0.9.0

0.8.0

04 Jan 22:01
466e8c6
Compare
Choose a tag to compare

New features

  • The response to GET /notebooks/:job_id now includes an ipynb_error field that contains structured information about any exception that occurred when executing the notebook. As well, if an exception occurred, the resultant notebook is still included in the response. That is, notebook failures are no longer considered failed jobs.

  • The job_id is now included in log messages when running the nbexec job under arq.

  • The user guide includes a new tutorial for using the Noteburst web API.

Other changes

  • Update to Pydantic 2
  • Adopt FastAPI's lifespan feature
  • Adopt scriv for changelog management
  • Update GitHub Actions workflows, including integrating Neophile for dependency updates.
  • Update to Python 3.12.

What's Changed

  • DM-40143: Modernization by @jonathansick in #58
  • DM-40143: Update github actions to match template by @jonathansick in #59
  • [neophile] Update dependencies by @neophile-square in #60
  • DM-40143: Adopt new notebook execution result with error field by @jonathansick in #61

New Contributors

  • @neophile-square made their first contribution in #60

Full Changelog: 0.7.1...0.8.0

0.7.1

23 Jun 18:26
fda92e3
Compare
Choose a tag to compare

Fixes

  • Add additional logging of JupyterLab spawning failures in workers.

Other changes

  • Added documentation for configuration environment variables.
  • Added OpenAPI docs, rendered by Redoc, to the Sphinx documentation site.

What's Changed

Full Changelog: 0.7.0...0.7.1

0.7.0

22 May 21:51
df9844b
Compare
Choose a tag to compare
  • The JupyterHub service's URL path prefix is now configurable with the NOTEBURST_JUPYTERHUB_PATH_PREFIX environment variable. The default is /nb/, which is the existing value.
  • The Nublado JupyterLab Controller service's URL path prefix is configurable with the NOTEBURST_NUBLADO_CONTROLLER_PATH_PREFIX environment variable. The default is /nublado, which is the existing value.

What's Changed

  • DM-39336: Add configurations for the Nublado API paths by @jonathansick in #54

Full Changelog: 0.6.3...0.7.0