Skip to main content

Durable workflow engine with Rust core and Python bindings — checkpointing, fork/join, distributed workers

Project description

Sayiir

Durable workflows for Python, powered by a Rust runtime.

License: MIT Python 3.10+ Discord

Write plain Python functions. Sayiir makes them durable — automatic checkpointing, crash recovery, and parallel execution with zero infrastructure.

from sayiir import task, Flow, run_workflow

@task
def fetch_user(user_id: int) -> dict:
    return {"id": user_id, "name": "Alice"}

@task
def send_email(user: dict) -> str:
    return f"Sent welcome to {user['name']}"

workflow = Flow("welcome").then(fetch_user).then(send_email).build()
result = run_workflow(workflow, 42)
# "Sent welcome to Alice"

No DSL. No YAML. No determinism constraints. No infrastructure to deploy.

Why Sayiir?

  • No replay, no determinism rules — Unlike Temporal, Restate, and other replay-based engines, Sayiir checkpoints after each task and resumes from the last checkpoint. Your tasks can call any API, use any library, read the clock, generate random values. No restrictions.
  • A library, not a platformpip install sayiir and write workflows. No server cluster, no separate services. Optional PostgreSQL for production persistence.
  • Rust core — All orchestration, checkpointing, and execution runs in Rust via PyO3. You write Python; Rust handles the hard parts.
  • Pydantic integration — Automatic input validation and output serialization for BaseModel types.
  • Type-safe — Full type stubs (.pyi) and PEP 561 py.typed marker. Works with mypy and pyright.

Installation

pip install sayiir

From source (development):

git clone https://github.com/sayiir/sayiir.git
cd sayiir/sayiir-python
pip install -e ".[dev]"

Requires a Rust toolchain (rustup) for building from source.

Quickstart

Sequential workflow

from sayiir import task, Flow, run_workflow

@task
def double(x: int) -> int:
    return x * 2

@task
def add_ten(x: int) -> int:
    return x + 10

workflow = Flow("math").then(double).then(add_ten).build()
result = run_workflow(workflow, 5)
# 20  (5 * 2 = 10, 10 + 10 = 20)

Durable workflow (survives crashes)

from sayiir import task, Flow, run_durable_workflow

@task(timeout_secs=30)
def process_order(order_id: int) -> dict:
    return {"order_id": order_id, "status": "processed"}

@task
def send_confirmation(order: dict) -> str:
    return f"Confirmed order {order['order_id']}"

workflow = Flow("order").then(process_order).then(send_confirmation).build()

# Checkpoints after each task — resumes from last checkpoint on crash
status = run_durable_workflow(workflow, "order-123", 42)
print(status.output)           # "Confirmed order 42"
print(status.is_completed())   # True

PostgreSQL persistence

from sayiir import task, Flow, PostgresBackend, run_durable_workflow

@task
def process(x: int) -> int:
    return x * 2

workflow = Flow("persistent").then(process).build()

# Auto-runs migrations on first connect
backend = PostgresBackend("postgresql://localhost/sayiir")
status = run_durable_workflow(workflow, "run-001", 21, backend=backend)

Retry policy

from sayiir import task, RetryPolicy

@task(retries=RetryPolicy(max_retries=3, initial_delay_secs=0.5, backoff_multiplier=2.0))
def flaky_call(url: str) -> dict:
    return requests.get(url).json()

Parallel execution (fork/join)

from sayiir import task, Flow, run_workflow

@task
def validate_payment(order: dict) -> dict:
    return {"payment": "valid"}

@task
def check_inventory(order: dict) -> dict:
    return {"stock": "available"}

@task
def finalize(results: dict) -> str:
    return f"Order complete: {results}"

workflow = (
    Flow("checkout")
    .fork()
        .branch(validate_payment)
        .branch(check_inventory)
    .join(finalize)
    .build()
)
result = run_workflow(workflow, {"order_id": 1})

Multi-step branches

workflow = (
    Flow("pipeline")
    .fork()
        .branch(fetch_data, transform, validate)  # 3-step branch
        .branch(fetch_metadata)                    # 1-step branch
    .join(merge_results)
    .build()
)

Pydantic integration

from pydantic import BaseModel
from sayiir import task, Flow, run_workflow

class OrderInput(BaseModel):
    order_id: int
    amount: float

class OrderResult(BaseModel):
    status: str
    message: str

@task
def process(order: OrderInput) -> OrderResult:
    return OrderResult(status="ok", message=f"Processed ${order.amount}")

workflow = Flow("typed").then(process).build()
result = run_workflow(workflow, {"order_id": 1, "amount": 99.99})
# Automatic validation on input, serialization on output

Task metadata

@task(
    name="Process Payment",
    timeout_secs=60,
    tags=["payments", "critical"],
    description="Charges the customer's payment method",
)
def process_payment(order: dict) -> dict:
    ...

API Reference

Decorators

  • @task — Mark a function as a workflow task. Optional params: name, timeout_secs, retries, tags, description.

Flow Builder

  • Flow(name) — Create a new workflow builder.
  • .then(task_fn) — Append a task to the workflow.
  • .fork() — Start parallel branches. Returns a ForkBuilder.
  • .branch(task_fn, ...) — Add a branch (one or more chained tasks).
  • .join(task_fn) — Merge parallel branches. Join function receives dict[str, value].
  • .build() — Finalize and return a Workflow.

Execution

  • run_workflow(workflow, input) — Execute a workflow in-memory. Returns the final output.
  • run_durable_workflow(workflow, instance_id, input, backend=None) — Execute with checkpointing. Returns a WorkflowStatus.
  • resume_workflow(workflow, instance_id, backend) — Resume a workflow from its last checkpoint.
  • cancel_workflow(instance_id, backend, reason=None, cancelled_by=None) — Cancel a running workflow.
  • pause_workflow(instance_id, backend, reason=None, paused_by=None) — Pause a running workflow.
  • unpause_workflow(instance_id, backend) — Unpause a paused workflow.

WorkflowStatus

  • .output — The final output value (if completed).
  • .status"completed", "failed", "cancelled", or "in_progress".
  • .is_completed() / .is_failed() / .is_cancelled() / .is_paused() / .is_in_progress() — Status checks.
  • .error — Error message (if failed).
  • .reason / .cancelled_by — Cancellation details.

Retry

  • RetryPolicy(max_retries=2, initial_delay_secs=1.0, backoff_multiplier=2.0) — Exponential backoff retry policy for tasks.

Backends

  • InMemoryBackend() — In-memory storage for development and testing (default).
  • PostgresBackend(url) — PostgreSQL persistence. Auto-runs migrations on first connect.

Architecture

Your Python code          Sayiir (Rust)              Storage
┌──────────────┐    ┌─────────────────────┐    ┌──────────────┐
│  @task       │───>│  Orchestration      │───>│  Checkpoint  │
│  functions   │    │  Checkpointing      │    │  after each  │
│              │<───│  Crash recovery     │<───│  task        │
└──────────────┘    │  Fork/join          │    └──────────────┘
                    │  Serialization      │
                    └─────────────────────┘

Python provides task implementations. Rust handles everything else: building the execution graph, running tasks in order, checkpointing results, recovering from crashes, and managing parallel branches.

The project follows hexagonal architecture — the core domain has zero infrastructure dependencies, all dependencies flow inward, and every integration point (storage, serialization, execution) is a swappable trait-based adapter.

Requirements

  • Python 3.10+
  • Optional: pydantic >= 2.0 for automatic model validation

License

MIT

Links

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

sayiir-0.1.0a2.tar.gz (157.6 kB view details)

Uploaded Source

Built Distributions

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

sayiir-0.1.0a2-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a2-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

sayiir-0.1.0a2-cp313-cp313-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

sayiir-0.1.0a2-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a2-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

sayiir-0.1.0a2-cp312-cp312-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

sayiir-0.1.0a2-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a2-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

sayiir-0.1.0a2-cp311-cp311-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

sayiir-0.1.0a2-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a2-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

sayiir-0.1.0a2-cp310-cp310-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file sayiir-0.1.0a2.tar.gz.

File metadata

  • Download URL: sayiir-0.1.0a2.tar.gz
  • Upload date:
  • Size: 157.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sayiir-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 9774cf8326edb0e125ce7aa3ac72b5871ad58789160f95cffdbe8138b18f6b55
MD5 1efd1ee8c8942fa87194585286912abe
BLAKE2b-256 be303cb86c001ffd486692bbc4c00794ece9f30fc352a999bb7766f9e07ebf4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2.tar.gz:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sayiir-0.1.0a2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ae659aaa36f020b95230b58240fffe48bbbb9de56b2f671aedc8a95293d75016
MD5 dc08aede232093750f7b987540ad5c83
BLAKE2b-256 cccda70b6cbcf60ade4598a4cea972fa9c0d0a9f358f5595b090edf0b35661f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp313-cp313-win_amd64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9692bd742593706f3766815e11866c8b31c7a72df349cbba99c7f11c0a19d30
MD5 e5237928f6196f958ebf2f445c3bdf31
BLAKE2b-256 a34df85ba2adb39170a7c43bbb3864f97ade9582c7750e2587b60aacb17021f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cba6252c220a319ad0ed1d1c6f5be147a8bbd756003e3cb4d717d5a95dac2de6
MD5 d09e0f0c188c4eabd16d852db94bbf79
BLAKE2b-256 66cc44b490dc57acf7c511732a3a47ae3d75c2b8175723515aa36003d8dc27e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2cf5032e7e9da350b626863ac9835d99961f11fcdb117bcf01fbef2617ae2ae
MD5 852ed69551fba7ed80ac19a094314d6a
BLAKE2b-256 b32fb094960d09a7d43a834a8e2176de819e6d8c44475ba58f6798a5750439ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 696b2e3d63573b1cdf0bef3179b5c3640d05093abc5e7f50fad20d642f1903ec
MD5 f3d5b8c772bc1ad651b6546c7ac005e4
BLAKE2b-256 28f8c2172e219d5c53e9540bc56f7d8e9ee4b84e0ed072ee72e5e29021c5fd99

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sayiir-0.1.0a2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c3f84dd954ed3b8f792af4dbc18386cd0aa23c8c71a8f1664f17ae32006c7376
MD5 61c94402eeaf54c63dab82267fab1435
BLAKE2b-256 0b0c8f748b6136a12cf52b54adf3f3f7ad6d3d6b5820d93b1ab6f2674af33304

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp312-cp312-win_amd64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5bdf0c0ec69f5164bce828002961066407976a7bd666057333bf6f2c9ef4638c
MD5 bd3b904793cc5e5a18ae7370f0540c9c
BLAKE2b-256 b8a3b94ffd395eb333130c13810853878c69323cfaf0b706dc94ba40a2048d81

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1347e18cdf1bd4bbe8dca40bb3df20f4f2498f3b154bc5a0f0a1bbaa15650f9c
MD5 44d20b1b729abbea02569a31f1b32c0b
BLAKE2b-256 de1e609b5ea6e702a9f3cf60fad9ea7d60442717e22b39f420684b78ab643ba1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f00cf623b11e80250bf1dde578eb2834a76aeec3a3137bfc59e7d158729a0d73
MD5 aee217575110598f5e67a0df8369b356
BLAKE2b-256 4fd0b83b3f14b3962be8e0b57bd42aef455f822c48869d1c3e21fadba04b3784

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 16ba39365552c6dc34fec9bb5f25462934d74b51432824b56a967990af49fbca
MD5 24cf6e1f4c83e14597d2803a70fac0ac
BLAKE2b-256 fb9c4668e30d64162cefc910ca660e447db09d29e25bfa2c48e1e95537a8b826

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sayiir-0.1.0a2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c002942ea7516e4f84ee127995c5ad67a9d0c8c752667bcce287d6801fba1656
MD5 093ca061445bace6a2b1ac7430682452
BLAKE2b-256 77d7469c49e4e848139bb50a5cde6ad2373f549bb19d05d381e91d04a78789e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp311-cp311-win_amd64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e45850b7368a746bd2b1b9753bd1cdf153c267c31735f0a819d5b5c3cb29211f
MD5 f714a9897b3abee54540278fcc45d141
BLAKE2b-256 4210f22fc65304079a899f942200ed1ec36a56c718be256f6e2c44292e5cd75f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49c0a2aed15bfe601357da2067925caac718ba8427d46bc14f43af2013e8dc0f
MD5 05af46a88c11e6fad0ab87b29653cdf8
BLAKE2b-256 614d661bd2d01023e4b4e96a30de132d506d8f1aeaf8d1306c66b491171d7ed8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d9b0db985ca64ff9e35ef989f014d08b8534f712e4b8ed8157d39e9dc24a152
MD5 985ba9f38679cfa8e2e938c235cb1a52
BLAKE2b-256 8b80e4a1bc59da6cd46cf7168f2aaaaccaf27355139d0000cfbf70d51c273dc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 010c9976f5a9cceac16144e93ba74d8d769cf8d2d44780a4de86c25cb0d92420
MD5 9316faa6cbf4b1540ac4387d12a8b670
BLAKE2b-256 bc8f1460025c77ce87ae3f4695aabd13641e454267578929d4a65249b79edef9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sayiir-0.1.0a2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1cb76a1b7ed151546abdb2f4a110a685aa1ef76442b31231e8b3302e6bd2f1f0
MD5 c5a5ebae5a690288142529eb971b0c81
BLAKE2b-256 1fdf466d2aee368e1ca59092c4b1a02d926739198bdd718ca57a6061e588a1fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp310-cp310-win_amd64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1e0b9748fde98f44e479af62c695aaa9a27d56df59ea8ebed7217402384f06a0
MD5 1a1cb73df49f12dc59a8f07cd23884c3
BLAKE2b-256 24cac17020574d4e964da4ba55e072779e7ede6563570754c34f1f75deaeee98

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9fc50428a72181e6b2eb2a7eb2104bb0d5a78e9cd2c8745038017de138646f2
MD5 39f7eda588fa73503b14ceb1462aea63
BLAKE2b-256 008d7249fc42028b12a84418b1cdebeed6ecb70d1bb42833718729377af71e2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30182091da5390404a0b5db35de9940a719ac2aa480790b32533980e3cf7680b
MD5 432afb7441d86015f5c620a0751f1273
BLAKE2b-256 4891a71e1576cf50eb0dfcc25063cf274318405162cb807fb3c72293fa85ff82

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on sayiir/sayiir

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

File details

Details for the file sayiir-0.1.0a2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2022ac2abea203887998d91c7edc1d1cae992f8c5e1a8fd50a18d6ebfd04da3f
MD5 ab5727edfab6396d8af713ca96bfadb2
BLAKE2b-256 c8d660dcb2ee181cbf9b1da71ee018efa218a794ca4ddbe95f79704145b251c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a2-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: release.yml on sayiir/sayiir

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