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

Inline lambdas — zero boilerplate

from sayiir import Flow, run_workflow

workflow = (
    Flow("pipeline")
    .then(lambda x: x * 2)
    .then(lambda x: x + 1)
    .then(lambda x: str(x))
    .build()
)
result = run_workflow(workflow, 5)
# "11"  (5 * 2 = 10, 10 + 1 = 11, str(11))

No decorators, no registration — just pass any callable. Use @task when you need metadata (retries, timeouts, tags) or explicit naming.

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, *, name=None) — Append a task to the workflow. Accepts @task-decorated functions, plain functions, or lambdas. Use name to set an explicit task ID.
  • .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.0a13.tar.gz (174.9 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.0a13-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

sayiir-0.1.0a13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a13-cp313-cp313-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

sayiir-0.1.0a13-cp313-cp313-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

sayiir-0.1.0a13-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

sayiir-0.1.0a13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a13-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

sayiir-0.1.0a13-cp312-cp312-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

sayiir-0.1.0a13-cp311-cp311-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11Windows x86-64

sayiir-0.1.0a13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a13-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

sayiir-0.1.0a13-cp311-cp311-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

sayiir-0.1.0a13-cp310-cp310-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10Windows x86-64

sayiir-0.1.0a13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a13-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

sayiir-0.1.0a13-cp310-cp310-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: sayiir-0.1.0a13.tar.gz
  • Upload date:
  • Size: 174.9 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.0a13.tar.gz
Algorithm Hash digest
SHA256 04231d026e837c2cb811eaf65a9419d97bfce8a4241f438ddf6b9d87c8f89be0
MD5 01b8be4b352c5005a193d4bd88258050
BLAKE2b-256 1612ca194f8666d52de4e414ff5c1c1bb1631665e265bb90d1a330bf348f5eea

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13.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.0a13-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a13-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.4 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.0a13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 43a5852ca3a28359127cf9f39ef9d1fe5ae87b3ce596e234364511b1faf24a3e
MD5 d370c2fb3468bd313ae778ee3eba2f1c
BLAKE2b-256 51b9b9f9cc67e035a9a46cbbedeac0768cac248d9b0acca4823d22ae1fcbd792

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 178119e02b0341f6af5c65c156397ed484d731f00ce4217a12bc2b84e4e96baf
MD5 a9825474b55dbf1604d5061ba3f98d86
BLAKE2b-256 1d07156983cf036ac6c55a0dbbfaa9338549346715fca2716f8f9912b13cbccd

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 36d8214e7bbaeb118af07a6100ca4e4087c07a2e52f24bdb69d11f1d3b25e3e8
MD5 574e3baa846f86d73f4e465322d1205d
BLAKE2b-256 4d0734e9b2943390c82c3ef493c80d9f287493c9e15f0db72398a78775c24879

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7b05ae01be06be6a5d53d04ca1e0dcb07320540db598a11bdab8390276b9f80
MD5 fd1364c1d7e1a8bdb3ff1936814062ba
BLAKE2b-256 43ab0edc39927239795a83b96558f66dfbe301fd89c3955ca5017a10a942e60e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bea745a92ba275408c0f5a6d91f75638da23caa6a635f714fa15354a020dfaa4
MD5 5698ec89ba5542486731353902b1f944
BLAKE2b-256 fdda04496f3de905e1d44a95915d30e765ab7f2bc3a01b888a1135f3c97e5f2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a13-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.4 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.0a13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6a05c2dee1cda696760328953574657782912e7f00a738025cfac4f7ac0c7030
MD5 4d0102b8dff077992dd42b197f19c854
BLAKE2b-256 46a4a3ec59a9f32c0980d8fb28288b106e120ea8b6df08a0951d74b3f56567b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c3dae55d279787d11c4e82cf521123bf2d4cb22813f74758a2c7a8489f1dfe1f
MD5 26834b7124da694847083e429edfcbd0
BLAKE2b-256 842e75ab633c437002b22d414f7712999c58f1ecf229b0bd66c18aac12c24e42

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29892b4ead9f780310eeb92e1539d4ff76a52c58ec99ea76180836c1f52010e7
MD5 c7c1694f2600226220de597d1841ee02
BLAKE2b-256 f8745d183de880ecc433b6296c3e122d566ef22119c10306092e41b3c9945c21

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce02c44f1fe4de1080b7bf5252f8b5be5b757e6183c2cda8ad6a9b558d117b15
MD5 15eb827c80ccb213b05e81c209616bab
BLAKE2b-256 0b1633df4d33e64a8290d2673b89bff7d44c0092ed6fb3c461bfa1a2ac6bf704

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 37c98ba3b0ada34f3ae0a00d2b74bbe8a9708d069d263a1f2c84bab8c2cb3573
MD5 8ae87866c46ac277edc1a3b9cba7375b
BLAKE2b-256 1791bd56514a0523c48c5357b53e185874adb9f1aeb164e19a090f6cc62be423

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a13-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.4 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.0a13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1a0563a3ea8ad6995eb4dbfa2d5d748766ecd175b35602a8a08bc3dc06a5360b
MD5 ba4b72db5131ad16532c31befc12afa9
BLAKE2b-256 c23c757b856d275cf42646738e7dfcacd88455ece39b4299330222d90fee5c4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82d50fcecd6d88d4095650f6d2d637f1f5b89c936a5ff6bb316e2efabacf335e
MD5 bc26b9c886d869a705e7c43c672f1a94
BLAKE2b-256 8a2741f8b91e6fb5269bdd2fab2b0a532a62e44eeedab6a8128b7d1b0556f6df

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 777e27ac9a60733027c7e14ee8420989b7225667a3b9ee9efb03e2342fac6d71
MD5 f20dc94911dceb8c180d920c339cbb99
BLAKE2b-256 90b873f3d60bdfac3f02727a9ad36eaa830160dc1139d0c4532f186d92f0d033

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 753a2b0fe93920693db8314e58fad13b632a2e8de7ed590ea4d019a54e74e86f
MD5 226fc25ba4adefa7d073151e1d9dab1b
BLAKE2b-256 9b048e43599272be4c8cacacf95698530e9cbf353aab047e5a0d7d7a963d6e75

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7cb517ef4f57f4c31a2210be6348eb19fee8df7205821901bb5746593911e6cd
MD5 78fab68943206129c563b5397b80f6c3
BLAKE2b-256 6f0ae2f3f1be7c80b7503e57bb41ee592b5123b51c555dcc1b38f38fe4f66642

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sayiir-0.1.0a13-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.4 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.0a13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ff2ec4ce42d79205c4d932548161164f55e1a64c67f7c4f6214d593b39a229cd
MD5 f0a0a6e1618d19606703647f024c21b8
BLAKE2b-256 1e9e1e9f0a0a31dc83b65db964c880f757c326b0b56bb755ce1f51cd4532e55d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1597e16a65bef61c1096a7732b78d97e1c8804a6edd4355448e3d458ebb5c61a
MD5 5388fd4d1cd5e1b4981c560406bbf1d4
BLAKE2b-256 12f2e095e05583dc6e1df0acf8e012fc1313ffe78e0e0bc725036338a776a848

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 57a908f3fbc3c34f30483f6cb13581e087c91aaeac5492caf9bf266db6b4da4d
MD5 f16bee55838e8bf390a072287995c50a
BLAKE2b-256 9b93793dbe5616e68405b569e6ca65ef77a7118cf9aa336aa685815b53d8085a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1782ac1458e4a5ffd67d200121613c929730816b8bbdc063d054841a3353e92f
MD5 664e03cad63a43116fdf84597676bb9b
BLAKE2b-256 0df3b39d726b471a6d551315e590bc2a316d7ece156898bd66fec1a942fd8a80

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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.0a13-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sayiir-0.1.0a13-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7fe2b91e87b089a69452b178a9d7317f80c6f924d78d5e5a942d7f992cfabbc5
MD5 d0cfdbca4fb01d8d9be2c68ba59996d0
BLAKE2b-256 3bf2d5aa26f6343e6d4088b65b30cc88e27dd64afc14409428e3f68693ad6289

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayiir-0.1.0a13-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