Releases: dbos-inc/dbos-transact-py
2.5.0
What's Changed
- Copy Events and Streams During Fork by @kraftp in #511
- Fork Doesn't Set Version By Default by @kraftp in #512
- nit: use dbos_logger instead of print for Conductor message by @mpfaffenberger in #516
New Contributors
- @mpfaffenberger made their first contribution in #516
Full Changelog: 2.4.0...2.5.0
2.4.0
What's Changed
- Better Introspection by @kraftp in #501
- Add Index for Workflow Rate-Limiter by @kraftp in #499
- Query forked_from by @kraftp in #502
- Check and set workflow executor_id by @apoliakov in #503
- Conductor Protocol Fix by @kraftp in #506
- Support Python 3.14 by @kraftp in #507
- Only set up logger and tracer if the lists are not none by @qianl15 in #510
Full Changelog: 2.3.0...2.4.0
2.3.0
What's Changed
- Set Authenticated User and Role Fields from Client by @kraftp in #490
- Python Fixes by @kraftp in #493
- Better Validation by @kraftp in #495
- Don't promote SIGTERM to SIGKILL; let the users do it if needed by @apoliakov in #496
- Only set OTLP providers when exporter endpoints are set by @qianl15 in #497
Full Changelog: 2.2.0...2.3.0
2.2.0
2.1.0
2.0.0
DBOS Python 2.0 dramatically reduces package size, reducing DBOS from 18 to 6 direct dependencies and from 73 to 10 total dependencies. It also makes the system database more configurable, adding options to use a custom SQLAlchemy engine or custom database schema.
Breaking Changes
- OpenTelemetry is now optional and opt-in. To use DBOS OpenTelemetry features (such as built-in tracing and export) you must install the optional DBOS-OpenTelemetry dependencies (
pip install dbos[otel]) and set theenable_otlpflag to True in your configuration:
config: DBOSConfig = {
"name": "my-app",
"system_database_url": os.environ.get("DBOS_SYSTEM_DATABASE_URL"),
"enable_otlp": True,
}
DBOS(config=config)-
In order to fix silent errors and improve maintainability, we’ve changed the serialization format from jsonpickle to pickle. Because of this change, workflows started on pre-2.0 cannot be forked or recovered in 2.0. This can also affect apps that use custom Workflow IDs to return the results of previously run workflows.
-
In order to upgrade from version 1.12.0 or below, first upgrade to 1.14.0, then upgrade to 2.0. This is because the Alembic-based system database migrations deprecated in DBOS Python 1.13.0 have been removed. System database migrations are now totally managed by DBOS.
-
The following deprecated parameters or methods were removed: the
sys_db_nameconfiguration parameter, the workflow restart method and command (replaced with fork), and theparent_workflow_idmethod. -
Support for Python 3.9 is dropped as it is reaching end of life.
New Features
- The current application version can now be accessed through
DBOS.application_version - The system database schema can now be configured through the
dbos_system_schemaparameter. - A custom system database engine can now be configured through the
system_database_engine. If provided, DBOS will not create an engine but use this instead. - A new
DBOS.get_all_eventsmethod lets you retrieve all events published by a workflow.
All Changes
- Trim Dependencies by @kraftp in #464
- Truly Optional Application Database by @kraftp in #468
- Dynamic Schema Configuration by @kraftp in #467
- Remove Deprecated Features by @kraftp in #470
- Improve DX by @kraftp in #473
- Custom Engine by @kraftp in #469
- Conductor Key in DBOSConfig by @kraftp in #474
- Add badges to readme by @qianl15 in #475
- DBOS.get_events by @kraftp in #477
Full Changelog: 1.14.0...2.0.0
1.14.0
New Features
Workflow Debouncing. When you debounce a workflow, you delay its execution until some time has passed since the workflow has last been called. Debouncing is really useful for preventing wasted work when a workflow may be triggered multiple times in quick succession. For example, if a user is editing an input field, you can debounce their changes to execute a processing workflow only after they haven't edited the field for some time.
Docs: https://docs.dbos.dev/python/reference/contexts#debouncing
What's Changed
- Debouncing by @kraftp in #455
- Fix Tests by @kraftp in #448
- fix(client): Await for a coroutine in retrieve_workflow_async() by @korya in #449
- Fix destroy for asyncio by @qianl15 in #451
- Use to_thread for sync transaction functions by @qianl15 in #454
- Correctly trace OTLP spans by @qianl15 in #457
- Update Debouncer Tests by @kraftp in #460
- Fix Stream Recovery by @kraftp in #461
- Update Debouncer API by @kraftp in #462
New Contributors
Full Changelog: 1.13.0...1.14.0
1.13.2
1.13.1
1.13.0
What's Changed
- You can now use SQLite for your system database! This lets you prototype or test DBOS applications without Postgres, though Postgres is still recommended in production. For ease of getting started, a SQLite database is now the default for new applications. More details: https://docs.dbos.dev/python/tutorials/database-connection
- The application database is now entirely optional. You can configure applications with just a system database like this:
config: DBOSConfig = {
"name": "dbos-starter",
"system_database_url": os.environ.get("DBOS_SYSTEM_DATABASE_URL"),
}
DBOS(config=config)- The CLI has been updated so all commands can run with just a system database URL.
Detailed Notes
- SQLite Support by @kraftp in #441
- System Database URL by @kraftp in #442
- CLI Flags Cleanup by @kraftp in #443
- Improved Destroy by @kraftp in #437
- Add an option to disable OTLP tracing by @qianl15 in #439
- Internally Managed Migrations by @kraftp in #438
- Test dynamically registering workflows, steps, transactions in class by @qianl15 in #440
- Restore Docker Script by @kraftp in #445
Full Changelog: 1.12.0...1.13.0