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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

  • Download URL: sayiir-0.1.0a3.tar.gz
  • Upload date:
  • Size: 168.2 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.0a3.tar.gz
Algorithm Hash digest
SHA256 747986a58012bee845d80e7cf6693f9c5bddd5e5ebe5a2cd9d7391ccf1a45b8b
MD5 b67d024d63cc27fc787d0404bafdd18c
BLAKE2b-256 05bc92249a95544d8121046f0b1b63e6e4a7ed64ef5b83eba38c67adbc5ff672

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a3-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.0a3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5fe5d93a9aece5aa30ba38eb8bd9669ac034314abe103489ef057c31c8e208e5
MD5 859828453c6a07c4afa195e0073a1947
BLAKE2b-256 3acd76280c1e7bbc379d928daca8b58597d757037a4d23476ecb6e504c6ef647

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e68fe50a0cba06541c48a22106302bbd7edbee7faea0ccc49e29b6c23f9622db
MD5 168b6483c09f2de6906035b9ab47d23d
BLAKE2b-256 f625edffbedad815eabce30017e433535e798c145ef32b7fbaa581bdaa2965a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 292b110a7a7fbdbd1cce91171993081aeecce126d4a57e7ce2f66815716cb579
MD5 12bd144d648c3ffa53171b5c20bc7798
BLAKE2b-256 bff7f7ed1c6ba49b320598bfc52055770c01258d60a15883eacadef4e4af315c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a52b614c548968ea7ad24ab27dd5d1c52c7c1edc7dcf9c39f85ddf455432a713
MD5 9d52d1d1c125d83ba1bf5c439e55328c
BLAKE2b-256 c7735dbdd0a36490887d5a70f0176f410f2a37c858ae18c56cdb342b0ab78100

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d76f909cdfb5ced8db00679edec42776c8decafdcefc53550be0260535494fd3
MD5 aee506df366bf31dca01ba94e0a43380
BLAKE2b-256 d2029d1bb1b5bb0ebb28b659fc4b63c6e684fd94333c0943be6f3ed0354952fe

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a3-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.0a3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c1e17a7d342cab62f573bc1803590c227dae78ec676d92628a0c916e5521f16b
MD5 123216ff91216f439c67edeebe0f8ed7
BLAKE2b-256 ba53c7750091b75f4d369b06ac6ce62685c5f88be861078b2d7b6c86768c67f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3414543fccebfc1a79dada8edcd3c1e43a2eb4617fa07387af46a26090f49c6
MD5 c90d0b8749e5362c11ecea819cc3ff48
BLAKE2b-256 aa8a56bc5f079e7069e8fcd2d78ae2f134497fbe33110c31d16cf8dfb1281ecb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ecd49a7132e6e62e07100cc7f60f059f82a5b07e94814ee665eb749018e8eb75
MD5 8653c690c11637ceba591bf1d389c62c
BLAKE2b-256 88f188b9c2db23637c6dd7fcc8c2a799041d42231f8be084e0a1d9dc42a7d515

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e32cd0b2f4633542909637021dabb0c635f62ea1836f2a9d5d8880778121afd
MD5 165180c888fd139047d389aa539482e2
BLAKE2b-256 9c20ca7a55572d5692872644171eaea0b033bc1631579c39b719af9c17345d89

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aa8e718620a68795fa3b74e6fcf013939f8e43ba81c04af3cff4c884215d34b3
MD5 5e4dd733ae8fb0dbeaed3f9f84c7e165
BLAKE2b-256 346c72321af8a5f9d5cff3519f545d28765f556ae66919172a8ee7ad6464c18c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a3-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.0a3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 10201a9edd657a34883677733e2ab62b9be0278ba04b7dd26daed83c2f3bb2f7
MD5 b6b82e56ff94a1b5d1ee05d9d6dde2da
BLAKE2b-256 ca3f5622527c5c8ac7358a52144959e4b5881b445c2b96ad34abb5329b1a7401

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa18d8559b96e0c2af35c635bb74377108771d5162150c1c4dc7ad4fe865f447
MD5 aefe47092e8bbcd4c9647037509e233c
BLAKE2b-256 cc80335a19823989969bceb15ae84765261f9f87b4facbbeb19102d88effd2e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 35738da10d1747603d804c440d808169b67699f12848c6ac92be7861619ad729
MD5 a5fec14154b26aaeb24bb77f19308b39
BLAKE2b-256 50739659a443296aa146a1ef7768a503fdcb3a1f19296e5ce014f2dd0f010b66

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72e8e9e2bb4c6cae62a6f901c0a60e12dfa05232c1323580989a8c5930fdde5f
MD5 1db4232ad69b07359e00a06c134eed5a
BLAKE2b-256 c7e82edd5cf0396a8f3ec622755798dd2b8702a26722cc75b0ccb16121c63f96

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 26159ba2fe8dc647d9b451e5ae8b784e0ee84d861f94c5e6085f129157592e39
MD5 9d99f6dc075680bb57dce31e1d6d4900
BLAKE2b-256 71c3fe420e83116313d22f3b6a56d9c5032ec9c0642c3b687fb1d8776d4e50d0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a3-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.0a3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 43dd5015d7a653b816302b26cf6c09a8121620e8fd78d5f15dde5474e6cf3a2e
MD5 2a962f396ee69db0177289d74730578a
BLAKE2b-256 9ff0837245b2273e5794ea237d1a420d5fa95a3da1d84dbdf36406f021a31c40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e61d6c126c8b0acfea3d6b969fbcf4a40e95643886e3a2a9a72344bc7ec9ced2
MD5 e271930d3fe15c9472de3dba6982519e
BLAKE2b-256 49bf86fb981ab29ab301f48b488e530f3aa0aa15e8ce89dc9d7af8a58cf56888

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6e1f9e8d3b3bf25cba43f2a9893c8d121bfe44ba73b5db693d2aa62b10d33f24
MD5 09878a49d904783901dd9e20248addc3
BLAKE2b-256 23471992763f988de787b926fdb47a8667b15a24180c7f17731660bc3353595a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61dedd483cf5db508197a373373fac611342602d064eb9e2134d72fc45dbc0e4
MD5 b21ec4059dea608f97714d3dd79954dd
BLAKE2b-256 9dc1319b3bf70c3d34fc9739b5247bec11a59b4178a5e350f250bd07feff8348

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 666adf69bb51b1c61dab11dc3e0bf351cfd1d9226ff22eadbb82638db0e983ba
MD5 58fa85d1de9b35717472865c6b7791f5
BLAKE2b-256 c7b45d92631ca6025771d747195d3b8d14f996040cbddd63e4f33e28e18bdcc1

See more details on using hashes here.

Provenance

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