Skip to content

Python package and CLI 1.37.0

Deployments now block until fully available.

How to install this version

Review the changes below before installing. To install this version, activate a compatible Python virtual environment and run:

Terminal window
python -m pip install "relationalai==1.37.0"

For the latest installation instructions, see Start building with PyRel.

We recommend that all customers upgrade to PyRel 1.37.0. This release updates third-party dependencies to versions released in response to security advisories.

  • Model deployment now waits for the initial data refresh by default with no timeout, so deployment scripts may take longer to finish. To return without waiting, use rai models deploy --no-wait or Model.deploy(wait=False). Remove the now-redundant --wait flag to avoid a deprecation warning. Model deployment is in Public Preview.

  • You can now limit how long Model.deploy() waits for the initial data refresh, for example with model.deploy(wait_timeout=300) for a five-minute limit. If the refresh takes longer, Python raises TimeoutError, but the refresh continues. The timeout applies only to waiting for the refresh, not the entire deployment.

  • Deployed models now use regular Snowflake tables for outputs by default, rather than dynamic tables that Snowflake refreshes automatically. To keep using dynamic tables, explicitly set deployment.outputs.type: dynamic_table before redeploying. Upgrading PyRel alone does not convert tables you have already deployed.

  • You can now use ${VAR} to read an environment variable or ${VAR:-default} to provide a default value in PyRel configuration files. If for some reason you have the literal ${VAR} text in your settings, escape it with $${VAR} before upgrading to avoid unexpected substitution or ValueErrors. The existing {{ env_var('VAR') }} syntax still works.

  • Some errors when you deploy or remove a model now suggest running rai doctor to check your environment and deployment state. You still see the original error, and these checks do not fix the problem automatically.

  • In Python notebooks, model deployment progress now shows timers and counts that update in the same output area instead of static progress lines. Warnings and final results stay visible, and notebooks without widget support still show text output.

  • Some deployed Snowflake queries now count or sum all intended input rows when you select the totals alongside split text, generated range values, or regular-expression matches, instead of failing with an invalid identifier error.

  • Fixed an issue caused rank to quietly fail for entities excluded by a chained .where(...) filter.

  • Some model queries with nested aggregates now run faster in Snowflake.

  • Fixed in issue that caused some model queries running in Snowflake to count duplicated even when distinct was used.

  • Queries that first access the same deployed model at the same time now share setup and wait until the model is ready, avoiding duplicate deployments, SQL errors, and hangs. This does not make all model operations safe to run concurrently: do not change model definitions while queries run.

  • Some rules that derive properties from grouped sums no longer fail with unused-variable or cyclic-dependency errors when the sum is written before its input filters in the same where(...) expression.

  • With compiler.dry_run enabled, Model.deploy() now returns without waiting for an initial data refresh, since a dry run does not start one. A successful dry run does not guarantee that a real deployment or refresh will succeed.

  • You can now deploy a model with dynamic-table outputs in Snowflake even when a source view reads another dynamic table. Source names containing $ or escaped quotes also work in this setup, and SQL text that only looks like a source reference stays unchanged. Source dynamic tables still refresh on their own schedules, which can delay updates in your model’s output.

  • You can now create diagnostic ZIP files with rai doctor report in notebook environments where it previously failed with OSError: [Errno 95] Operation not supported. Without an active Streamlit app, the notebook helper now prints the ZIP’s location and file-browser guidance instead of offering a download button that does not appear. The full ZIP must fit in memory before it is saved.

  • Diagnostic bundles from the RAI CLI now report plan-row counts correctly even with large or multiline CSV fields, include rules and inline data in local model history, and provide corrected troubleshooting instructions. Review bundles for sensitive information before sharing them: they now include more model data. Automatic redaction of selected settings remains enabled.

  • This update includes dependency updates related to recent security fixes. We recommend all users fully re-install relationalai in their environments to ensure its dependencies have all been updated.