dbos 2.17.0


pip install dbos

  Latest version

Released: Mar 31, 2026

Project Links

Meta
Author: DBOS, Inc.
Requires Python: >=3.10

Classifiers

Development Status
  • 5 - Production/Stable

Programming Language
  • Python
  • Python :: 3
  • Python :: 3 :: Only
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13

Intended Audience
  • Developers
  • Information Technology

License
  • OSI Approved :: MIT License

Operating System
  • OS Independent

Topic
  • Internet
  • Scientific/Engineering :: Artificial Intelligence
  • Database
  • Software Development :: Libraries :: Python Modules

Framework
  • AsyncIO

GitHub Actions PyPI release (latest SemVer) Python Versions License (MIT) Join Discord

DBOS Transact: Lightweight Durable Workflows

Documentation   •   Examples   •   Github   •   Discord


What is DBOS?

DBOS provides lightweight durable workflows built on top of Postgres. Instead of managing your own workflow orchestrator or task queue system, you can use DBOS to add durable workflows and queues to your program in just a few lines of code.

To get started, follow the quickstart to install this open-source library and connect it to a Postgres database. Then, annotate workflows and steps in your program to make it durable! That's all you need to do—DBOS is entirely contained in this open-source library, there's no additional infrastructure for you to configure or manage.

When Should I Use DBOS?

You should consider using DBOS if your application needs to reliably handle failures. For example, you might be building a payments service that must reliably process transactions even if servers crash mid-operation, or a long-running data pipeline that needs to resume seamlessly from checkpoints rather than restart from the beginning when interrupted.

Handling failures is costly and complicated, requiring complex state management and recovery logic as well as heavyweight tools like external orchestration services. DBOS makes it simpler: annotate your code to checkpoint it in Postgres and automatically recover from any failure. DBOS also provides powerful Postgres-backed primitives that makes it easier to write and operate reliable code, including durable queues, notifications, scheduling, event processing, and programmatic workflow management.

Features

💾 Durable Workflows

DBOS workflows make your program durable by checkpointing its state in Postgres. If your program ever fails, when it restarts all your workflows will automatically resume from the last completed step.

You add durable workflows to your existing Python program by annotating ordinary functions as workflows and steps:

from dbos import DBOS

@DBOS.step()
def step_one():
    ...

@DBOS.step()
def step_two():
    ...

@DBOS.workflow()
def workflow()
    step_one()
    step_two()

Workflows are particularly useful for

  • Orchestrating business processes so they seamlessly recover from any failure.
  • Building observable and fault-tolerant data pipelines.
  • Operating an AI agent, or any application that relies on unreliable or non-deterministic APIs.

Read more ↗️

📒 Durable Queues

DBOS queues help you durably run tasks in the background. You can enqueue a task (which can be a single step or an entire workflow) from a durable workflow and one of your processes will pick it up for execution. DBOS manages the execution of your tasks: it guarantees that tasks complete, and that their callers get their results without needing to resubmit them, even if your application is interrupted.

Queues also provide flow control, so you can limit the concurrency of your tasks on a per-queue or per-process basis. You can also set timeouts for tasks, rate limit how often queued tasks are executed, deduplicate tasks, or prioritize tasks.

You can add queues to your workflows in just a couple lines of code. They don't require a separate queueing service or message broker—just Postgres.

from dbos import DBOS, Queue

queue = Queue("example_queue")

@DBOS.step()
def process_task(task):
  ...

@DBOS.workflow()
def process_tasks(tasks):
  task_handles = []
  # Enqueue each task so all tasks are processed concurrently.
  for task in tasks:
    handle = queue.enqueue(process_task, task)
    task_handles.append(handle)
  # Wait for each task to complete and retrieve its result.
  # Return the results of all tasks.
  return [handle.get_result() for handle in task_handles]

Read more ↗️

⚙️ Programmatic Workflow Management

Your workflows are stored as rows in a Postgres table, so you have full programmatic control over them. Write scripts to query workflow executions, batch pause or resume workflows, or even restart failed workflows from a specific step. Handle bugs or failures that affect thousands of workflows with power and flexibility.

# Create a DBOS client connected to your Postgres database.
client = DBOSClient(database_url)
# Find all workflows that errored between 3:00 and 5:00 AM UTC on 2025-04-22.
workflows = client.list_workflows(status="ERROR", 
  start_time="2025-04-22T03:00:00Z", end_time="2025-04-22T05:00:00Z")
for workflow in workflows:
    # Check which workflows failed due to an outage in a service called from Step 2.
    steps = client.list_workflow_steps(workflow)
    if len(steps) >= 3 and isinstance(steps[2]["error"], ServiceOutage):
        # To recover from the outage, restart those workflows from Step 2.
        DBOS.fork_workflow(workflow.workflow_id, 2)

Read more ↗️

🎫 Exactly-Once Event Processing

Use DBOS to build reliable webhooks, event listeners, or Kafka consumers by starting a workflow exactly-once in response to an event. Acknowledge the event immediately while reliably processing it in the background.

For example:

def handle_message(request: Request) -> None:
  event_id = request.body["event_id"]
  # Use the event ID as an idempotency key to start the workflow exactly-once
  with SetWorkflowID(event_id):
    # Start the workflow in the background, then acknowledge the event
    DBOS.start_workflow(message_workflow, request.body["event"])

Or with Kafka:

@DBOS.kafka_consumer(config,["alerts-topic"])
@DBOS.workflow()
def process_kafka_alerts(msg):
    # This workflow runs exactly-once for each message sent to the topic
    alerts = msg.value.decode()
    for alert in alerts:
        respond_to_alert(alert)

Read more ↗️

📅 Durable Scheduling

Schedule workflows using cron syntax, or use durable sleep to pause workflows for as long as you like (even days or weeks) before executing.

You can schedule a workflow using a single annotation:

@DBOS.scheduled('* * * * *') # crontab syntax to run once every minute
@DBOS.workflow()
def example_scheduled_workflow(scheduled_time: datetime, actual_time: datetime):
    DBOS.logger.info("I am a workflow scheduled to run once a minute.")

You can add a durable sleep to any workflow with a single line of code. It stores its wakeup time in Postgres so the workflow sleeps through any interruption or restart, then always resumes on schedule.

@DBOS.workflow()
def reminder_workflow(email: str, time_to_sleep: int):
    send_confirmation_email(email)
    DBOS.sleep(time_to_sleep)
    send_reminder_email(email)

Read more ↗️

📫 Durable Notifications

Pause your workflow executions until a notification is received, or emit events from your workflow to send progress updates to external clients. All notifications are stored in Postgres, so they can be sent and received with exactly-once semantics. Set durable timeouts when waiting for events, so you can wait for as long as you like (even days or weeks) through interruptions or restarts, then resume once a notification arrives or the timeout is reached.

For example, build a reliable billing workflow that durably waits for a notification from a payments service, processing it exactly-once:

@DBOS.workflow()
def billing_workflow():
  ... # Calculate the charge, then submit the bill to a payments service
  payment_status = DBOS.recv(PAYMENT_STATUS, timeout=payment_service_timeout)
  if payment_status is not None and payment_status == "paid":
      ... # Handle a successful payment.
  else:
      ... # Handle a failed payment or timeout.

Getting Started

To get started, follow the quickstart to install this open-source library and connect it to a Postgres database. Then, check out the programming guide to learn how to build with durable workflows and queues.

Documentation

https://docs.dbos.dev

Examples

https://docs.dbos.dev/examples

DBOS vs. Other Systems

DBOS vs. Temporal

Both DBOS and Temporal provide durable execution, but DBOS is implemented in a lightweight Postgres-backed library whereas Temporal is implemented in an externally orchestrated server.

You can add DBOS to your program by installing this open-source library, connecting it to Postgres, and annotating workflows and steps. By contrast, to add Temporal to your program, you must rearchitect your program to move your workflows and steps (activities) to a Temporal worker, configure a Temporal server to orchestrate those workflows, and access your workflows only through a Temporal client. This blog post makes the comparison in more detail.

When to use DBOS: You need to add durable workflows to your applications with minimal rearchitecting, or you are using Postgres.

When to use Temporal: You don't want to add Postgres to your stack, or you need a language DBOS doesn't support yet.

DBOS vs. Airflow

DBOS and Airflow both provide workflow abstractions. Airflow is targeted at data science use cases, providing many out-of-the-box connectors but requiring workflows be written as explicit DAGs and externally orchestrating them from an Airflow cluster. Airflow is designed for batch operations and does not provide good performance for streaming or real-time use cases. DBOS is general-purpose, but is often used for data pipelines, allowing developers to write workflows as code and requiring no infrastructure except Postgres.

When to use DBOS: You need the flexibility of writing workflows as code, or you need higher performance than Airflow is capable of (particularly for streaming or real-time use cases).

When to use Airflow: You need Airflow's ecosystem of connectors.

DBOS vs. Celery/BullMQ

DBOS provides a similar queue abstraction to dedicated queueing systems like Celery or BullMQ: you can declare queues, submit tasks to them, and control their flow with concurrency limits, rate limits, timeouts, prioritization, etc. However, DBOS queues are durable and Postgres-backed and integrate with durable workflows. For example, in DBOS you can write a durable workflow that enqueues a thousand tasks and waits for their results. DBOS checkpoints the workflow and each of its tasks in Postgres, guaranteeing that even if failures or interruptions occur, the tasks will complete and the workflow will collect their results. By contrast, Celery/BullMQ are Redis-backed and don't provide workflows, so they provide fewer guarantees but better performance.

When to use DBOS: You need the reliability of enqueueing tasks from durable workflows.

When to use Celery/BullMQ: You don't need durability, or you need very high throughput beyond what your Postgres server can support.

Community

If you want to ask questions or hang out with the community, join us on Discord! If you see a bug or have a feature request, don't hesitate to open an issue here on GitHub. If you're interested in contributing, check out our contributions guide.

2.17.0 Mar 31, 2026
2.17.0a3 Mar 30, 2026
2.17.0a2 Mar 25, 2026
2.16.0 Mar 24, 2026
2.16.0a8 Mar 23, 2026
2.16.0a7 Mar 23, 2026
2.16.0a6 Mar 18, 2026
2.16.0a5 Mar 18, 2026
2.16.0a4 Mar 17, 2026
2.16.0a3 Mar 17, 2026
2.16.0a1 Mar 13, 2026
2.15.0 Mar 12, 2026
2.15.0a10 Mar 11, 2026
2.15.0a9 Mar 11, 2026
2.15.0a8 Mar 11, 2026
2.15.0a7 Mar 10, 2026
2.15.0a4 Mar 09, 2026
2.15.0a3 Mar 09, 2026
2.15.0a2 Mar 05, 2026
2.14.0 Mar 05, 2026
2.14.0a12 Mar 04, 2026
2.14.0a11 Mar 04, 2026
2.14.0a10 Mar 04, 2026
2.14.0a9 Mar 04, 2026
2.14.0a8 Mar 03, 2026
2.14.0a7 Mar 02, 2026
2.14.0a6 Feb 27, 2026
2.14.0a5 Feb 27, 2026
2.14.0a4 Feb 27, 2026
2.14.0a3 Feb 26, 2026
2.14.0a2 Feb 24, 2026
2.13.0 Feb 19, 2026
2.13.0a5 Feb 19, 2026
2.13.0a4 Feb 18, 2026
2.13.0a3 Feb 17, 2026
2.13.0a2 Feb 12, 2026
2.13.0a1 Feb 12, 2026
2.12.0 Feb 09, 2026
2.12.0a2 Feb 07, 2026
2.12.0a1 Feb 04, 2026
2.11.0 Feb 04, 2026
2.11.0a8 Feb 03, 2026
2.11.0a7 Feb 03, 2026
2.11.0a6 Jan 31, 2026
2.11.0a4 Jan 29, 2026
2.11.0a3 Jan 28, 2026
2.11.0a2 Jan 26, 2026
2.11.0a1 Jan 26, 2026
2.10.0 Jan 26, 2026
2.10.0a4 Jan 23, 2026
2.10.0a2 Jan 21, 2026
2.9.0 Jan 19, 2026
2.9.0a6 Jan 15, 2026
2.9.0a4 Jan 14, 2026
2.9.0a3 Jan 12, 2026
2.9.0a2 Jan 11, 2026
2.8.0 Jan 07, 2026
2.8.0a6 Jan 06, 2026
2.8.0a5 Jan 06, 2026
2.8.0a3 Jan 05, 2026
2.8.0a2 Dec 16, 2025
2.7.0 Dec 11, 2025
2.7.0a4 Dec 10, 2025
2.7.0a3 Dec 09, 2025
2.7.0a2 Dec 08, 2025
2.7.0a1 Dec 08, 2025
2.6.0 Dec 04, 2025
2.6.0a10 Dec 03, 2025
2.6.0a9 Dec 03, 2025
2.6.0a8 Dec 02, 2025
2.6.0a7 Dec 02, 2025
2.6.0a3 Nov 20, 2025
2.6.0a1 Nov 19, 2025
2.5.0 Nov 17, 2025
2.5.0a3 Nov 16, 2025
2.5.0a2 Nov 14, 2025
2.5.0a1 Nov 11, 2025
2.4.0 Nov 11, 2025
2.4.0a7 Nov 11, 2025
2.4.0a6 Nov 10, 2025
2.4.0a5 Nov 03, 2025
2.4.0a3 Oct 31, 2025
2.4.0a2 Oct 30, 2025
2.4.0a1 Oct 27, 2025
2.3.0 Oct 27, 2025
2.3.0a5 Oct 23, 2025
2.3.0a4 Oct 22, 2025
2.3.0a3 Oct 21, 2025
2.3.0a2 Oct 20, 2025
2.3.0a1 Oct 14, 2025
2.2.0 Oct 14, 2025
2.2.0a3 Oct 09, 2025
2.2.0a2 Oct 08, 2025
2.1.0 Oct 06, 2025
2.1.0a3 Oct 03, 2025
2.1.0a2 Oct 03, 2025
2.1.0a1 Sep 25, 2025
2.0.0 Sep 25, 2025
1.15.0a9 Sep 24, 2025
1.15.0a8 Sep 23, 2025
1.15.0a7 Sep 23, 2025
1.15.0a6 Sep 23, 2025
1.15.0a5 Sep 23, 2025
1.15.0a4 Sep 22, 2025
1.15.0a3 Sep 19, 2025
1.15.0a2 Sep 18, 2025
1.15.0a1 Sep 16, 2025
1.14.0 Sep 16, 2025
1.14.0a9 Sep 12, 2025
1.14.0a8 Sep 12, 2025
1.14.0a6 Sep 11, 2025
1.14.0a5 Sep 10, 2025
1.14.0a4 Sep 06, 2025
1.14.0a3 Sep 03, 2025
1.14.0a2 Sep 03, 2025
1.13.2 Sep 12, 2025
1.13.1 Sep 03, 2025
1.13.0 Sep 02, 2025
1.13.0a8 Aug 28, 2025
1.13.0a7 Aug 28, 2025
1.13.0a6 Aug 28, 2025
1.13.0a5 Aug 27, 2025
1.13.0a3 Aug 25, 2025
1.12.0 Aug 19, 2025
1.12.0a3 Aug 18, 2025
1.12.0a2 Aug 13, 2025
1.12.0a1 Aug 12, 2025
1.11.0 Aug 11, 2025
1.11.0a6 Aug 07, 2025
1.11.0a5 Aug 07, 2025
1.11.0a4 Aug 07, 2025
1.11.0a3 Aug 06, 2025
1.11.0a2 Aug 06, 2025
1.11.0a1 Aug 06, 2025
1.10.0 Aug 05, 2025
1.10.0a2 Aug 04, 2025
1.10.0a1 Jul 30, 2025
1.9.0 Jul 29, 2025
1.9.0a4 Jul 28, 2025
1.9.0a3 Jul 25, 2025
1.9.0a2 Jul 24, 2025
1.9.0a1 Jul 22, 2025
1.8.0 Jul 21, 2025
1.8.0a8 Jul 16, 2025
1.8.0a5 Jul 11, 2025
1.8.0a3 Jul 08, 2025
1.8.0a1 Jun 30, 2025
1.7.0 Jun 30, 2025
1.7.0a5 Jun 30, 2025
1.7.0a4 Jun 26, 2025
1.7.0a3 Jun 26, 2025
1.7.0a2 Jun 26, 2025
1.6.0 Jun 25, 2025
1.6.0a5 Jun 24, 2025
1.6.0a4 Jun 24, 2025
1.6.0a3 Jun 23, 2025
1.6.0a1 Jun 17, 2025
1.5.0 Jun 16, 2025
1.5.0a10 Jun 14, 2025
1.5.0a5 Jun 04, 2025
1.5.0a4 Jun 04, 2025
1.5.0a3 Jun 04, 2025
1.5.0a2 Jun 03, 2025
1.4.1 Jun 02, 2025
1.4.0 Jun 02, 2025
1.4.0a1 May 30, 2025
1.3.0 May 27, 2025
1.3.0a9 May 27, 2025
1.3.0a8 May 23, 2025
1.3.0a7 May 23, 2025
1.3.0a5 May 22, 2025
1.3.0a4 May 22, 2025
1.3.0a3 May 22, 2025
1.3.0a2 May 20, 2025
1.3.0a1 May 20, 2025
1.2.0 May 20, 2025
1.2.0a9 May 20, 2025
1.2.0a6 May 16, 2025
1.2.0a5 May 15, 2025
1.2.0a4 May 15, 2025
1.2.0a2 May 14, 2025
1.1.0 May 13, 2025
1.1.0a4 May 12, 2025
1.1.0a3 May 09, 2025
1.1.0a2 May 08, 2025
1.0.0 May 06, 2025
0.28.0a19 May 05, 2025
0.28.0a18 May 05, 2025
0.28.0a15 May 05, 2025
0.28.0a14 May 02, 2025
0.28.0a12 May 02, 2025
0.28.0a8 Apr 30, 2025
0.28.0a7 Apr 30, 2025
0.28.0a6 Apr 29, 2025
0.28.0a4 Apr 28, 2025
0.28.0a1 Apr 28, 2025
0.27.2 May 02, 2025
0.27.1 Apr 29, 2025
0.27.0 Apr 28, 2025
0.27.0a11 Apr 28, 2025
0.27.0a10 Apr 28, 2025
0.27.0a9 Apr 25, 2025
0.27.0a8 Apr 25, 2025
0.27.0a7 Apr 25, 2025
0.27.0a6 Apr 24, 2025
0.27.0a4 Apr 24, 2025
0.27.0a3 Apr 23, 2025
0.27.0a2 Apr 23, 2025
0.27.0a1 Apr 23, 2025
0.26.1 Apr 24, 2025
0.26.0 Apr 22, 2025
0.26.0a25 Apr 22, 2025
0.26.0a24 Apr 22, 2025
0.26.0a23 Apr 21, 2025
0.26.0a22 Apr 19, 2025
0.26.0a21 Apr 18, 2025
0.26.0a19 Apr 18, 2025
0.26.0a18 Apr 18, 2025
0.26.0a15 Apr 17, 2025
0.26.0a14 Apr 16, 2025
0.26.0a13 Apr 16, 2025
0.26.0a11 Apr 14, 2025
0.26.0a10 Apr 14, 2025
0.26.0a9 Apr 14, 2025
0.26.0a8 Apr 14, 2025
0.26.0a7 Apr 11, 2025
0.26.0a6 Apr 10, 2025
0.26.0a5 Apr 10, 2025
0.26.0a3 Apr 08, 2025
0.26.0a1 Apr 08, 2025
0.26.0a0 Apr 07, 2025
0.25.1 Apr 10, 2025
0.25.0 Apr 07, 2025
0.25.0a16 Apr 04, 2025
0.25.0a14 Apr 03, 2025
0.25.0a13 Apr 03, 2025
0.25.0a12 Apr 02, 2025
0.25.0a9 Mar 31, 2025
0.25.0a8 Mar 29, 2025
0.25.0a7 Mar 28, 2025
0.25.0a3 Mar 26, 2025
0.25.0a1 Mar 25, 2025
0.24.1 Mar 26, 2025
0.24.0 Mar 25, 2025
0.24.0a15 Mar 24, 2025
0.24.0a14 Mar 24, 2025
0.24.0a13 Mar 22, 2025
0.24.0a12 Mar 21, 2025
0.24.0a11 Mar 20, 2025
0.24.0a9 Mar 20, 2025
0.24.0a8 Mar 20, 2025
0.24.0a7 Mar 19, 2025
0.24.0a6 Mar 19, 2025
0.24.0a5 Mar 19, 2025
0.24.0a4 Mar 13, 2025
0.24.0a3 Mar 12, 2025
0.24.0a1 Mar 11, 2025
0.23.0 Mar 11, 2025
0.23.0a14 Mar 11, 2025
0.23.0a13 Mar 07, 2025
0.23.0a12 Mar 07, 2025
0.23.0a11 Mar 06, 2025
0.23.0a10 Mar 06, 2025
0.23.0a9 Mar 05, 2025
0.23.0a8 Mar 04, 2025
0.23.0a5 Mar 01, 2025
0.23.0a3 Feb 28, 2025
0.23.0a2 Feb 27, 2025
0.23.0a1 Feb 27, 2025
0.22.0 Feb 26, 2025
0.22.0a11 Feb 26, 2025
0.22.0a10 Feb 26, 2025
0.22.0a9 Feb 26, 2025
0.22.0a8 Feb 25, 2025
0.22.0a7 Feb 25, 2025
0.22.0a5 Feb 24, 2025
0.22.0a4 Feb 21, 2025
0.22.0a2 Feb 20, 2025
0.22.0a1 Feb 18, 2025
0.21.0 Feb 10, 2025
0.21.0a7 Feb 10, 2025
0.21.0a5 Feb 07, 2025
0.21.0a4 Feb 06, 2025
0.21.0a3 Feb 04, 2025
0.20.0 Feb 04, 2025
0.20.0a9 Feb 04, 2025
0.20.0a8 Feb 03, 2025
0.20.0a7 Jan 31, 2025
0.20.0a6 Jan 31, 2025
0.20.0a5 Jan 31, 2025
0.20.0a3 Jan 30, 2025
0.20.0a2 Jan 29, 2025
0.19.0 Jan 28, 2025
0.19.0a9 Jan 28, 2025
0.19.0a4 Jan 22, 2025
0.18.0 Jan 16, 2025
0.18.0a1 Jan 13, 2025
0.17.0 Jan 09, 2025
0.17.0a4 Jan 09, 2025
0.17.0a3 Jan 09, 2025
0.17.0a2 Jan 09, 2025
0.16.1 Jan 09, 2025
0.16.0 Jan 08, 2025
0.16.0a2 Jan 08, 2025
0.16.0a1 Dec 20, 2024
0.15.0 Dec 17, 2024
0.15.0a2 Dec 16, 2024
0.14.0 Dec 05, 2024
0.14.0a7 Dec 05, 2024
0.14.0a6 Dec 04, 2024
0.14.0a5 Nov 25, 2024
0.14.0a2 Nov 19, 2024
0.13.0 Nov 13, 2024
0.13.0a2 Nov 11, 2024
0.13.0a1 Nov 11, 2024
0.13.0a0 Nov 04, 2024
0.12.0 Nov 04, 2024
0.11.0 Oct 22, 2024
0.11.0a4 Oct 21, 2024
0.11.0a3 Oct 21, 2024
0.11.0a2 Oct 20, 2024
0.11.0a1 Oct 18, 2024
0.10.0 Oct 16, 2024
0.10.0a3 Oct 15, 2024
0.10.0a2 Oct 15, 2024
0.10.0a1 Oct 12, 2024
0.10.0a0 Oct 10, 2024
0.9.0 Oct 10, 2024
0.9.0a2 Oct 09, 2024
0.9.0a1 Oct 06, 2024
0.9.0a0 Oct 02, 2024
0.8.0 Oct 02, 2024
0.8.0a10 Oct 02, 2024
0.8.0a7 Sep 27, 2024
0.8.0a3 Sep 25, 2024
0.8.0a0 Sep 23, 2024
0.7.1 Sep 25, 2024
0.7.0 Sep 23, 2024
0.7.0a9 Sep 20, 2024
0.7.0a8 Sep 19, 2024
0.7.0a5 Sep 12, 2024
0.7.0a1 Sep 10, 2024
0.7.0a0 Sep 10, 2024
0.6.2 Sep 13, 2024
0.6.1 Sep 10, 2024
0.6.0 Sep 10, 2024
0.6.0a4 Sep 09, 2024
0.6.0a3 Sep 09, 2024
0.6.0a0 Sep 06, 2024
0.5.0 Sep 06, 2024
0.5.0a12 Sep 05, 2024
0.5.0a11 Sep 05, 2024
0.5.0a7 Sep 04, 2024
0.5.0a5 Sep 04, 2024
0.5.0a4 Sep 03, 2024
0.5.0a3 Sep 03, 2024
0.5.0a2 Sep 01, 2024
0.5.0a0 Aug 30, 2024
0.4.0 Aug 30, 2024
0.4.0a18 Aug 29, 2024
0.4.0a17 Aug 29, 2024
0.4.0a15 Aug 29, 2024
0.4.0a14 Aug 28, 2024
0.4.0a12 Aug 28, 2024
0.4.0a11 Aug 26, 2024
0.4.0a8 Aug 25, 2024
0.4.0a6 Aug 23, 2024
0.4.0a5 Aug 23, 2024
0.4.0a4 Aug 23, 2024
0.4.0a3 Aug 23, 2024
0.4.0a2 Aug 23, 2024
0.4.0a0 Aug 22, 2024
0.3.0 Aug 22, 2024
0.3.0a7 Aug 21, 2024
0.3.0a6 Aug 20, 2024
0.3.0a3 Aug 19, 2024
0.3.0a0 Aug 16, 2024
0.2.0 Aug 16, 2024
0.1.0 Aug 15, 2024

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies:
pyyaml (>=6.0.2)
python-dateutil (>=2.9.0.post0)
psycopg[binary] (>=3.1)
websockets (>=14.0)
typer-slim (>=0.17.4)
sqlalchemy (>=2.0.43)