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.0a5.tar.gz (169.4 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.0a5-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

sayiir-0.1.0a5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

sayiir-0.1.0a5-cp313-cp313-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

sayiir-0.1.0a5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

sayiir-0.1.0a5-cp312-cp312-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

sayiir-0.1.0a5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

sayiir-0.1.0a5-cp311-cp311-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

sayiir-0.1.0a5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

sayiir-0.1.0a5-cp310-cp310-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: sayiir-0.1.0a5.tar.gz
  • Upload date:
  • Size: 169.4 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.0a5.tar.gz
Algorithm Hash digest
SHA256 30185e002014de8157ac981fd01ba6956a01c2525ed18804d5f1258c07dab244
MD5 779a8c42a8ca334c447d62fee20610e0
BLAKE2b-256 98bd66178aa75f41aeb22ad5e11410eb7b2fb819d6889bb7ca204c3229f4775f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a5-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.0a5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1e961640c83a5c8e3d54f1507d748ff78a0c175da130832a27cc5b8cb19ec0cc
MD5 c4a510c86b66f5876f7e8bec1cd851ce
BLAKE2b-256 21ccfbf5c659cbd8549aa7f24e131035169951a048ecaf17dc577bb66306ba0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56f3457f988870d2fbeb292a80a94c0a13992e97707e49a42743a71f10e15de8
MD5 ca67740d63de3c5682256965f7cd5279
BLAKE2b-256 7bc1b0e8ebf87743b99f9491c67964bc51d0210a400d58bb5fcbebe27f4ff99d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 35b2e1425f58b6e932fbd61deb485050be025d551c6eb0302fbb2be6d0475de8
MD5 bc8085b5ec6eb9ddf7a1281dece00fc1
BLAKE2b-256 547fd3886cf2ad4824652c6eafc4ca26689b228e2bf3f591adb4805d12524344

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04c045bfce8fcd7a5044ff333bc536e42a166c1559ba95c46c3fe038600595fd
MD5 78cac7c73ee31f187af2d8eeae8d1ca2
BLAKE2b-256 976f03a8e524661748e7b42127709763837f76939d2f4cfbcdaa305743ab1439

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1249a2c7a2d33110c10980158eb3be5dd47b49aec2ce200c14099cb09b5777e5
MD5 10c045847f7c88bd6eb592d43492d2d1
BLAKE2b-256 d618e6a9c8689482b4aa2f1be7dedc903ad5b78f63a34f8942987a06982c31ef

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a5-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.0a5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4834c368038a6b603a239a7ac44a2e4582740f8ff351902ae50e5d5047502ade
MD5 4c023ba007b600bdc0889b2ec6962404
BLAKE2b-256 f7b1a9d073fa292041af9bb91aec46d34ea3ab15786ec8c01a1d342ec3694ff2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87ca216b00e2081bfb90c8feae92b8d7696eb52e0c1457141f5371bb271d1517
MD5 682405044963fda8c7912a39123f45fd
BLAKE2b-256 185a8e459d768890c3cec9ba282e0f8f59cdfa7d230240a6d294c2d2f850be2e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba6dfe913113cf2c7f3de0fb0cc601de413ddf2089589e5cf54914c4e7240209
MD5 0754521134bb2edaf849b74c5f288b82
BLAKE2b-256 703af178a97ad8b949f009b6e623047dd581f6be1a3a37f1109a7703164993f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0ddcba1002c472fe96f4fab3527071f4348469b8fa5bcb3a7af10f8eb93669d
MD5 1b6692a5d0877fc873edc7252a9940c3
BLAKE2b-256 4b390ebad96c8163afa4e8a93050cef0b1f38d0a7115a6758800ace026ced95b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c885096ae7ea6c6d4f159601790a64ed57507572ada8cfd8214e7ba7b98cb973
MD5 fbe01b5c425b8c7fa11b4ffe5912aca1
BLAKE2b-256 49548ad32955b954668c2769984bc1e48c2455da42e99a3b621561aba4055d1f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a5-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.0a5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 69b4210e23d2a0eb2e56498e03e7a0bc277bd9cfe7a4eee59b5ae64f577c5b7d
MD5 dc62e5cc48baee05deffb23ee818d365
BLAKE2b-256 1074651abea1cd186572c5d9af1f48931724bd4ae3a45b929b3968c4a9502e45

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b1c7a97ddf119d88dc8c262452298e3bb8fe9ca14cabdc6d7353fa3c3d07a773
MD5 590a5f161c6dc0407d18307408870a08
BLAKE2b-256 80282a88b99fd4f385a80020499f7134c2530cc3b5eb3676e0deb9b8bcdf3fe6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 23747833ca65a01e0d04e4e465508ebc0e80428b4f192f1a332dc44e65d42f77
MD5 c350adb830b6f58ad36b5b1a2152aca8
BLAKE2b-256 2029da83c8467e564d54239e6563d3ca78ca151db93b77374855054951c4fb7a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88bdc5af1a0fb9a37d078ed07d60e9779b8fd1ee27ae9008af2e24f8b3404138
MD5 be201a3502617ca842759c6fc9456cd6
BLAKE2b-256 40ea97a33f40acf2d5fa821c8b7304de56d3c2e7460c9d4390a04d32fbaeea4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 32573dfabf910e3817b4e91dda1cad0ef52149f550d27d3a450d0056257fdb40
MD5 56003fbc1eda8663ede52e55717c0178
BLAKE2b-256 afccda149d1127726746177094c4fe2bc6a7e641b2e81cbe4584844122cd203b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a5-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.0a5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ea991d85ae6174b7758eeb69267524c6e4540e3688f46c263270ab78f28b85a8
MD5 80d065e8d58b5aa163ef729c284071d5
BLAKE2b-256 f7b72384e59f7b9eafbd244c9f1ead2fe9b77178522b3554768d74f3ddeaba2e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d164ec160c47716081bdc651fc6a02d0e9a8e03f8bf6b51112eac48d7ae215f
MD5 3fe821a6cdfdb895b5b5eb16251e3c80
BLAKE2b-256 616f59996ec305456812d01e675b1c802d48bf8305d985c6f66246be8a0ce097

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fc1a1d41ccb7aa7a7805dbd942e3be7ba21c13b99b27bd913b1e6eb9500a74da
MD5 7777754f9b2e1fb8b38c9a53c06c1593
BLAKE2b-256 3e64fea1c0d5abbdb21a29e7edc9e5ebbe00c3962877aa209919453295b77e5d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d63efc17633ef2c60b22e6cf849d94d1dafa2200a233cd1e17d05a2532d3f741
MD5 75cfc2d5098a0f3a50dac4c92d54f2c1
BLAKE2b-256 a5bcf99d66846c3d72fbfd270cf0e88d79131138d8c63a3454bec475d571b12f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a5-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e5ddb685a007e1db444ea73e351298cf391b4acac14971c8c340c9d4008f4e9b
MD5 e35b3d7f325126a2ef4fba5512a5301f
BLAKE2b-256 20d9c1bb243e3f0f99e5e96215953ab4702a8ea28fe8c26653228d386d6c568c

See more details on using hashes here.

Provenance

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