Skip to main content

Durable execution for arvel — Temporal-native, framework-ergonomic.

Project description

arvel-workflow

Durable execution for the arvel framework — backed by Temporal, with arvel's ergonomics instead of Temporal's setup tax.

Some work outlives a single request: an order that moves through authorize → fulfil → ship over hours, a multi-step job that has to survive a restart halfway through. arvel's queue is fire-and-forget; this is for work that must remember where it got to. You write plain workflows and activities, run one command, and drive them through a facade — no Temporal boilerplate.

uv add 'arvel-workflow[temporal]'

Installing auto-registers the provider through arvel's entry-point mechanism — no wiring.

The idea in one screen

An activity does the I/O (and can use any arvel facade); a workflow orchestrates activities and stays pure. Both autoload from their folders.

# app/activities/greet.py
from arvel_workflow import activity
from arvel import Cache

@activity
async def greet(name: str) -> str:
    count = await Cache.increment("greet:count")   # activities do I/O — arvel DI works here
    return f"hello {name} (#{count})"
# app/workflows/greet.py
from arvel_workflow import workflow, run_activity
from app.activities.greet import greet          # a plain import — no ceremony

@workflow
class Greet:
    async def run(self, name: str) -> str:
        return await run_activity(greet, name)

Run the worker (--dev boots a throwaway local Temporal server — nothing to install first):

arvel workflow:work --dev

Start work and read the result from anywhere you have the app:

handle = await app.make("workflow").start(Greet, "world")
print(await app.make("workflow").result(handle))   # hello world (#1)

No with workflow.unsafe.imports_passed_through() anywhere — the framework configures Temporal's sandbox so plain imports work.

Documentation

Guide What's in it
Getting Started install → define → run → drive → test, end to end
Concepts & Best Practices the workflow/activity split, the determinism rule, the sandbox, and the habits that keep you correct
Configuration every config("workflow") key and default
Testing run the real engine, fake the world — the test pattern

Scope & roadmap

This release ships the durable-execution core: define workflows and activities, run a worker, start work, and read its result. Documented capabilities are the ones that actually run today.

Coming next (not shipped yet — so the docs never promise what the code can't do):

  • signals / queries / updates — send events into a running workflow, read its live state, drive human-in-the-loop approvals
  • child workflows & fan-out, sagas / compensation, durable timers, scheduled workflows
  • per-activity retry & timeout sugar and a time-skipping test harness

Requirements

  • Python 3.14+
  • arvel (installed with the package)
  • The engine extra: arvel-workflow[temporal]. --dev downloads a local Temporal dev-server binary on first run.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arvel_workflow-0.2.0.tar.gz (123.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arvel_workflow-0.2.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file arvel_workflow-0.2.0.tar.gz.

File metadata

  • Download URL: arvel_workflow-0.2.0.tar.gz
  • Upload date:
  • Size: 123.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for arvel_workflow-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1cc86e348164a2f0c0a629f609efa4d0fdd0bbb946bba5bcd0eb16dc91d6a3d6
MD5 4185b865442557cbe868caaf4a933d47
BLAKE2b-256 d437d6368c874f809e7e0b76c79859d58064db0ffa11c8a6606eab21687ee4b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for arvel_workflow-0.2.0.tar.gz:

Publisher: publish.yml on mohamed-rekiba/arvel-workflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arvel_workflow-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: arvel_workflow-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for arvel_workflow-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48829bff888e28bae814ce6b615cbce744a8a6fc9bf4e911517f17d9255a58c1
MD5 38bfcddd2c69b159b5dca28d8fbebbc4
BLAKE2b-256 98e6fd30529ac899ace12d73a8d8ea6297a85bb7b6d04d109d1d505dfdc169b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for arvel_workflow-0.2.0-py3-none-any.whl:

Publisher: publish.yml on mohamed-rekiba/arvel-workflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page