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.0a7.tar.gz (174.7 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.0a7-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

sayiir-0.1.0a7-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.0a7-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.0a7-cp313-cp313-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

sayiir-0.1.0a7-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.0a7-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.0a7-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

sayiir-0.1.0a7-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.0a7-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.0a7-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

sayiir-0.1.0a7-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.0a7-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.0a7-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

sayiir-0.1.0a7-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.0a7.tar.gz.

File metadata

  • Download URL: sayiir-0.1.0a7.tar.gz
  • Upload date:
  • Size: 174.7 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.0a7.tar.gz
Algorithm Hash digest
SHA256 431b6a933055eaa34f62deaad8e266406d44750172292d2196ffdb56cf1a8b73
MD5 30e277a9d5497c47f8c830ef623b962d
BLAKE2b-256 502cc238812cbcc0f029c7701d2a36b71793f1b7cfbf367ce97cb8dfb06002bb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a7-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.0a7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0b17fc24607d2170838d69f109a216ac955387f3be1cb132acdbd7014e6377de
MD5 532ec848e64432d8a43cc4022ec26f50
BLAKE2b-256 6662b20349b4b60c3163a93b5948b0cc95bf1d682023505d20cb4c35a82a2e1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10f30a5413c56d641d012166f05cec8f66d2654f346fdae40949984c41fd0a96
MD5 bced1aec018a73d911e59b992d9faeec
BLAKE2b-256 17ec04ed9c8744e5372178bfc2e9ed251e0963472b8c8b1ec3e10085bfb494bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 85f686678f3775821c6e917a57a560d9d9d2ca8b36139603a3cb1c51c27c2d0b
MD5 d2befc597446e505ddc487b2719ebd13
BLAKE2b-256 887df0bf9132c6dc566989c1a2ef91ac3c5ef2595b4696097ba6d5840dcc3954

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eacfdb4cbf98b5a7ecc10753b45f219ff886c50474e92b6bd943cb4d1dff1dba
MD5 f2bfb5de8e7b881d7511da7a081b73f0
BLAKE2b-256 a180a5917f81241f2f8b607fa878c1f249d18a0816a881dfb417387b9443a672

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 75b14fcc8605d7479b881e2919d851337490ac00aacbfc1b13bc5cc4b62eba4f
MD5 ec6f30ddb3388d561d695d74b2c154e9
BLAKE2b-256 1c7a4081914e57fea3ea4a11d26e554efb4b047e24666736f881c6c7dda7ddb2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a7-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.0a7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 09a835a945409624739e0219ad7be9ea47e2c44dc670f73134afbbe45ee6f0a3
MD5 28fc7b2ce855f61aa99e6efdf61e136b
BLAKE2b-256 606239431865ce1826db7b7a517c664b52eaa7e47ece722e926d90b885cff79a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 feb6d940e865b0df44461b1ad8c0cde5c47beadb535e8e969a2c2bf3f742b050
MD5 255e4a3c9409dae907f467b25b40ac1a
BLAKE2b-256 22c126534709b2a6c56adcf5d7c46b7eeb4804c4efb8d20bfe65f641261a382e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ddaf6b45dbe81b4a15ee7a5048d0f472d999b8381e5a8f91c3e33a0f9c830a0
MD5 cc438b65c2c476b559d0d5aac3c578cd
BLAKE2b-256 ec36fe7fd3ccd75f5269a3af58aa044d7bede75087acd7e0e0fbd1a792edfc8d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 790949275b652336eb282af4f34e2c1e2e8ca088c420c9d89c5425ee1cc6497d
MD5 ea043eb1bf7a4f29c1558f83b814d0b6
BLAKE2b-256 661f2c6a5e06c12837a070b401ff28ac2b0c26506f5a1e7c640457a36fa4a5f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1505fcc53a275eac339432ec8b21079bbd5db768df7a0612a5bab0fc9dc4c87f
MD5 94588c5c6e60cafb967e2fdffda64c47
BLAKE2b-256 ad4488dc9e7db3152c565ccf17819d702bef74daa927353ded32040fce27fdcb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a7-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.0a7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e34630fb7f981a13be64d3fb331c0cba725351bdbb28748d03adb7ab393321d3
MD5 a7c839596b204d0d6136d8c7b88b8e04
BLAKE2b-256 a963b229b77d928230aef4db214f3be531a5f76516fd58155f73c44b4f330d40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b6f2ac178a663fd2d14d09923954403e1524512d8e12772a04bf621056b5313d
MD5 91fa586b6e02a1bcde9f88f11e9d422b
BLAKE2b-256 e77cfe621d60227b4a263a9762d50ae9f34ab732a1ceab3c2fb14dcabe684faa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 656051d484cce036be8e508ed5eb844905803fc3e310f450b8f051a09a5bb9c7
MD5 60225a7b4982728a6f63f4a7583470a4
BLAKE2b-256 f4b7dddb51ca3a7e6182bee568988ffd35470aac61ef3aa16561a7e8541f8af3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 afa1649adb54609760fb60ff423e7adf42cfdc9e09d378eb384332c793aba7e9
MD5 35e1253b1f04347732629aa608cab57f
BLAKE2b-256 f62ef2e6d090e4dc50e18a322d7cd49653532da284c8f1c1ca5eb8fb763498c9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7ff560ab3cb4f5174e4aedefac9b6b5d708f9a75a304b9ec8e438fd4e2b5fa68
MD5 eb84f8bfa660769cb7ed2694632104ab
BLAKE2b-256 e65d3c01fee2b7e28fbcdb6247580c0048d0dd6bd872523bc3761febd873a8a4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a7-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.0a7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 64d328836244a4b2cbab43c2627a9e1925529cb9c8c2f5cb546e570af17a4e84
MD5 f351d7d7a4c1b2b0ed8c6c365eaa0a35
BLAKE2b-256 bdea3a3a317486363cc1bb11365d803df8fab41ead5728ac04416228e48ab230

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0bc51409e6dfe2dadc9ba8e8f8a13a32ac3793c29db4f38db9ae51da991fc3ee
MD5 19745475a1f2dd37cdf442edcc8da127
BLAKE2b-256 402015ae034d9f987d5291118cc22d68087a3863a3819e50c19f984e02143e2d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a7929cf94bdb6ff9bd00403984517481e655a7da6d43dff5a75117eb31ce666e
MD5 26ec38911dba8d7bcfb12fcfe726fdd2
BLAKE2b-256 828aee8252a83734b1288a8ab36944d2d17c8303229247e98152ab83975463cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95ef4d89f12364a9c065ebc95b5d37ea582e63e4555efa426e5454624f10b12a
MD5 cbed40ca22d6bc2a39766f8e510753b9
BLAKE2b-256 f71d35cabdf28ef2fb264cce652a4da4059c3a358e67806d224d2677ccdd4955

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a7-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bd01ab6b3739831233e2c15ba58021ac14e4e61caf32c6011b79406a905276ef
MD5 0364eeb06d9bc358d54f581354959789
BLAKE2b-256 d4de5915401260f4d16f6857f376ec4ba2f3567b2398676cf535cd10764ca926

See more details on using hashes here.

Provenance

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