Skip to content

Releases: lsst-sqre/times-square

0.18.1

06 Mar 16:33
e153941
Compare
Choose a tag to compare

Bug fixes

  • Fix date and datetime parameter support by adding the "format" key to the Pydantic model of the sidecar settings file for pages in GitHub.

What's Changed

  • DM-48923: Add "format" key to NotebookSidecarFile schema by @jonathansick in #96

Full Changelog: 0.18.0...0.18.1

0.18.0

06 Mar 16:32
69dd27b
Compare
Choose a tag to compare

Backwards-incompatible changes

  • Redis cache keys for page instance HTML models and noteburst job records use a new format based on the URL query string of page instances and display settings. Existing cached data will be ignored, but the new times-square migrate-html-cache command is available to migrate cached HTML pages in the old key format to the new one based on URL query strings.

  • The Jinja context for rendering templated Markdown cells now uses the native Python types rather than the string representation. This provides more flexibility for template authors to use these values in their templates. For example, a date parameter is a datetime.date object rather than a string. A boolean parameter is a bool rather than a string.

New features

  • Parameters can now have date and date-time JSON schema formats. In a notebook, these parameters are rendered as datetime.date and datetime.datetime objects, respectively.

  • Improved reliability of constructing URL query strings in the API by using the new PageParameterSchema classes in conjunction with the PageInstanceId class and NbHtmlKey classes.

  • A new times-square migrate-html-cache command is available to migrate cached HTML pages in the old key format to the new one based on URL query strings.

Bug fixes

  • Fix getting date_deleted from the pages database table.

Other changes

  • Update to Python 3.13
  • Adopt uv in the Docker image
  • New internal API for page parameters. Each parameter type is now backed by a subclass of PageParameterSchema. These types implement methods for casting to Python types, creating JSON-compatible values, query-string compatible values, and listing any Python imports needed to instantiate the native Python type.
  • Refactored interface models to the "storage" layer where possible, including the models for settings files in GitHub repositories and models for the GitHub API. This helps clarify the internal domain from external interfaces.

0.17.0

06 Feb 17:32
0.17.0
a958bd6
Compare
Choose a tag to compare

New features

  • GET /v1/github/rendered/{display_path} that returns a rendered GitHub-backed notebook template. This route provides the same functionality as GET /v1/pages/{page}/rendered, but finds the page based on its GitHub URL path. This is an additional path, all existing functionality, including the existing template rendering path, remains unchanged.

    We need to deploy Times Square to environments where some users should not have permissions to execute notebooks, but they should have permissions to render notebook templates for certain GitHub-based notebooks. This will let us configure that access via methods that apply permissions based on URL paths.

What's Changed

Full Changelog: 0.16.0...0.17.0

0.16.0

22 Jan 18:07
0.16.0
cec07b4
Compare
Choose a tag to compare

New features

  • Instrument with Sentry. Don't trace the SSE endpoint because Sentry holds spans in memory as long as the connection is open.

What's Changed

  • DM-48476: Basic Sentry integration by @fajpunk in #90
  • Update change log for version 0.16.0 release by @fajpunk in #91

New Contributors

Full Changelog: 0.15.0...0.16.0

0.15.0

15 Jan 20:28
02fb470
Compare
Choose a tag to compare

Backwards-incompatible changes

  • Migrate the database to use TEXT column types where previously we used VARCHAR columns with a (now unnecessary) length limit. This change requires a database migration on deployment. In Postgres there is no functional or performance difference between VARCHAR and TEXT columns. This change simplifies the database schema and reduce the risk of future issues with column length limits.

Bug fixes

  • In the cli tox environment, fix the name of the executable to be times-square rather than timessquare.

Other changes

  • Improved the developer documentation for database migration to concretely provide copy-and-paste-able commands for preparing and running database migrations.

What's Changed

Full Changelog: 0.14.0...0.15.0

0.14.0

13 Jan 22:23
8423216
Compare
Choose a tag to compare

Other changes

  • Times Square now uses Alembic to manage database schema versioning and migrations.

  • Begin SQLAlchemy 2 adoption with the new DeclarativeBase, mapped_column, and the Mapped type.

  • Update the make update command in the Makefile to use the --universal flag with uv pip compile.

  • Fix type checking issues for Pydantic fields to use empty lists as the default, rather than using a default factory.

  • Explicitly set asyncio_default_fixture_loop_scope to function. An explicit setting is now required by pytest-asyncio.

What's Changed

Full Changelog: 0.13.0...0.14.0

0.13.0

12 Sep 19:12
a52110f
Compare
Choose a tag to compare

New features

  • Times Square now specifies a timeout for notebook executions with Noteburst. This provides better feedback for notebook executions that have hung, either when rendering new pages for users, for when doing a GitHub Check Run. Currently this timeout is set app-wide with the TS_DEFAULT_EXECUTION_TIMEOUT environment variable. The default timeout is 60 seconds. In the future we intend to add per-notebook timeout configuration.

  • Times Square enforces a timeout when polling for Noteburst results during a GitHub Check run. This prevents the Check Run from hanging indefinitely if the Noteburst service is unable to time out a notebook execution or fails for any reason. This timeout is configurable via the TS_CHECK_RUN_TIMEOUT environment variable. The default timeout is 600 seconds.

What's Changed

Full Changelog: 0.12.0...0.13.0

0.12.0

05 Sep 18:54
4f77663
Compare
Choose a tag to compare

New features

  • Improved feedback in GitHub Check Runs:

    • If a YAML file has bad syntax causing a parsing error, we now post the YAML error as a check run annotation — including the location of the error in the file.

    • If the notebook has incorrect Jinja templating in its Markdown cells, we now post a check run annotation with the error message and cell number.

Other changes

  • Adopt uv and tox-uv for pinning and installing dependencies

  • Pin the tox dependencies with a requirements/tox.[in|txt] file

  • Adapt configuration for tox-docker version 5's randomized connection ports

  • Adopt ruff-shared.toml for common SQuaRE ruff configuration.

  • The GitHub Check Run service methods are now part of a new GitHubCheckRunService class, separate from the GitHubRepoService. This internal change helps clarify what functionality is needed for the GitHub Checks functionality, as opposed to syncing data with GitHub repositories.

What's Changed

  • [neophile] Update dependencies by @neophile-square in #73
  • DM-46065: Update for tox-docker 5 and ruff-shared.toml by @jonathansick in #78
  • Bump python from 3.12.2-slim-bullseye to 3.12.5-slim-bullseye by @dependabot in #79
  • DM-46095: Improve GitHub check run feedback by @jonathansick in #80

Full Changelog: 0.11.0...0.12.0

0.11.0

27 Mar 15:10
763887d
Compare
Choose a tag to compare

New features

  • New support for background recomputation of a page instance (cached HTML) with the new DELETE /v1/pages/:page/html?{params} endpoint. This endpoint triggers a Noteburst computation of the page instance and deletes the currently-cached HTML once that computation is complete. This API provides a way for users to request a recomputation of a page instance without affecting other users that may be viewing that page instance.
  • A new server-sent events endpoint for getting updates on the status of a page instance's computation and HTML rendering: GET /v1/pages/:page/html/events?{params}. This endpoint should replace the current practice of clients polling the GET /v1/pages/:page/htmlstatus endpoint to determine when a page instance's HTML is ready to be displayed. The events endpoint also provides additional metadata, such as the time when the current computation job was queued so that clients can provide more detailed status information to users. This endpoint works well with the new DELETE /v1/pages/:page/html?{params} endpoint, as it can provide updates on the status of the recomputation job while still linking to the existing cached HTML.

What's Changed

  • Bump pre-commit/action from 3.0.0 to 3.0.1 by @dependabot in #71
  • DM-43327: Add background replacement of cached page renders by @jonathansick in #72

Full Changelog: 0.10.0...0.11.0

0.10.0

13 Mar 17:19
a623beb
Compare
Choose a tag to compare

New features

  • We've adopted Safir's safir.fastapi.ClientRequestError so that errors like 404 and 422 (input validation) now use the same error format as FastAPI uses for its built-in model validation errors. For parameter errors from endpoints like GET /v1/pages:page/html the parameter name is now part of the loc field in the error message.
  • Times Square and its worker now send uncaught exceptions to a Slack webhook for better error reporting. The webhook URL is set in the TS_SLACK_WEBHOOK_URL environment variable.

Other changes

  • Updated to Python 3.12
  • Updated to Pydantic 2
  • Adopted Ruff for linting and formatting, replacing black, flake8, and isort.
  • Switch to using Annotated for Pydantic models and FastAPI path functions.

What's Changed

  • [neophile] Update dependencies by @neophile-square in #62
  • [neophile] Update dependencies by @neophile-square in #63
  • [neophile] Update dependencies by @neophile-square in #64
  • [neophile] Update dependencies by @neophile-square in #65
  • DM-43173: Update to ruff linting and pydantic 2 by @jonathansick in #69
  • DM-43264: Adopt Safir ClientRequestError and Slack messaging for internal errors by @jonathansick in #70

Full Changelog: 0.9.2...0.10.0