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.0a11.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.0a11-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

  • Download URL: sayiir-0.1.0a11.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.0a11.tar.gz
Algorithm Hash digest
SHA256 d3b1e22939d4c0f668dcb8de43fce3d9a6e43723789ed592b67883d9aaa8b377
MD5 138b17479b4262a2b3c76ccfe5daa729
BLAKE2b-256 fd9a16d7119c177fdf25f1c2392881505dcf42f16445b2b0715cfe95d4bc8d61

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a11-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.0a11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7f560c2fc62f15739e5703ba591f2afcd15ba21c0cb02f69b032d3a36295f290
MD5 c9908754c991215250296df5e0ae7ede
BLAKE2b-256 2925ba3996f5fe2706210876482f38456885ebd1625ab38f2a144602ffcd0113

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa81c62986e255f8fb8b362eb35d24c73502fc5d104073ef5569ba0d39dedbfc
MD5 288c510a9c32f83f9f4f4597c1896f2a
BLAKE2b-256 e68a85e57c4465c4ebef59f66b8e6ae00d2cafdc385b2064c903fabccfc62264

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ddf9c8f3c5a24e61d1ed6254ed240fcbe4f7601b281ecb449d65af40376a03c5
MD5 e2b6495e10941329de46e1e9dd625c98
BLAKE2b-256 631bfe60e9a19db54b68891e488300d4ee3f3b1d424d4f11b7b9e37d6aaa341f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db3c7b685410cae89eb08a6367a0606386235f826662ca40c9188a6251e161aa
MD5 eb988a6b344138d91caafdf1dcc2424d
BLAKE2b-256 332fefcaa38b3cd75d3d6440577a41940e48edbfe3a4a7d83e27d824185f5c07

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 12d9be7cb3e8845ed0a1d38e3d05e406cbf5ae34c775f082725aee689333007a
MD5 59b2e087d3a1c4f6964eaf270ed4bf7d
BLAKE2b-256 74f91d41819de5beb6539449f2a2f5492aa01c56b6961539ae36fb7b32e2829e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a11-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.0a11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 dc409e0a4a9066ea37bbe213a6cb0643f6779b22d03c8ca4ac8c9dec6c033634
MD5 af3baadfc7e38da9cbf949c49a4a4210
BLAKE2b-256 01d11d6b66e533fceed35c68e5993d8430f3e3042b9394d68c8fda2d627b65db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 34f138c5e594ced41ab473c2b363d8bbb013e92ccc482429b907a351ab905790
MD5 dd63bff45a5d7dbef00ae151150541a8
BLAKE2b-256 73f4fb340d1c6bee36140b8f99279e39bb2d22d006d94178c9b9623eb4a4020a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc45cc0fe0ba16298a84896ab4ef72847d185e39679390822304d3a615315251
MD5 36c83ecbd178e80cb7199b30ef1b7c49
BLAKE2b-256 f4aabfd2ab75cb192f8bd1a2b614d609c51d63cf8757414f00b851ca378358b8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 098d346a57324113cc1cd0b8b6a90ed4889f85ca630b57777eb1494c6c613968
MD5 8853e8e36f6cfdca472b854602390890
BLAKE2b-256 c9bad9b4e4561f6301fa4e802b5e3f5428447c6e8156db1a94409c2ace153470

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9a92a84b53558b5ba6a4e0975a122fb795815097d1d33f9167a90d1c2eb0cfc1
MD5 62eb1b3da919ecbb0f4259e646c50c97
BLAKE2b-256 b7550eeb85126334de1c0bd22f74059b80421b88ca69d71fd0c5244ff1e5001e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a11-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.0a11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 19c7078417a9db40b682fa8506e2e0d65f5c289aaaac9b9f4d8df14d521e312f
MD5 195f17b726486835ca6a5097deb4d1a0
BLAKE2b-256 03d11e34b98cabb95b922e8a79bab5405574db4fd0d0f2eb3ad4a17aa8f143c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a695c5fa0a299a050bd717face3f3bd9445c532cecfa33f7d7602f35d2d53f1
MD5 50e8e70d3bd218be3bced29cc59ba4fd
BLAKE2b-256 a009a6eeefe1eb9f1096934f17ecbaed87a083de706723d1cffc22f59942f5ef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dc900901831a6a869132beb9e459cbe0ff5f6656ae77a7082e47fbe246f3bcd9
MD5 798e126d21b4e017c27d3e357ac5ac8b
BLAKE2b-256 172d32806c4417ecab06e63328c961363f5639ce386d20d111ee3d98c4bac0f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7fa203881860d5a65dc0e6844ed677f09ab384b3a241c211ee6c62f578479e3a
MD5 b55e5611393b5a6adf61d9233c3ac8da
BLAKE2b-256 bda2a07f0a2bb3bcb0df05442430586dbd432e16b53b6fd8c8f02570f125b77d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c3d13fb393af855062ad220f81d81d2e4e1bff43972e47a315a9912345aa6cc2
MD5 9478f56e7ada94e794e301ff343bc7fb
BLAKE2b-256 8090328d2f95695044172365c0d47e4aeadc25eca31d185eeaeb2ae8b47728e2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a11-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.0a11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f9aeb37c0b35b641625da42345ece29ba570ca259652d5012f07b3a97b6ec936
MD5 ee19a0f5450c8738d216d7dd35d646a0
BLAKE2b-256 94859828fac58185431d4d6224d012d660e2c2549e848d10eab931e06ec4d73c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00a90d4172a652d5005d4c157ba74e79c6d2b7ac7bd5d222ba5400d64c9d5738
MD5 e85f4ee034e77fe8eb625d0ac4c50c48
BLAKE2b-256 0ead8c4435321cb935799e24a9cb4d8c592e1b72a986c3253b1ab0a1fc2d21ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eba09d88b0e050462d18bc515103b7e403aa33496fb47ed9b0e13263f03bbcbe
MD5 c1fea8670a2503ace9284eff5f95b7a5
BLAKE2b-256 0256773a6bb551c6652b22edc8a78e70d4db9bbb34b129336173e3d24b721e8b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2c6faca477b2e94487be33418c27b37b6026d262ae60148794724ed5d2c7d0d
MD5 71ff8d5bffcc6f353e0b1c1c22db7ea4
BLAKE2b-256 f627ac01f48b85479fb21bac61a282ca84390741ea6fdc847ac536a299889ff5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a11-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8183e20e0a901b20998f5f3b14c9107f3bfbd7ee5e04412d82b2b00c08264471
MD5 9c56f799f6577fbb69630b7eeb06fa15
BLAKE2b-256 0414998617e142cd78f5ca5e82f2cdc1c7ab754cf1eda2b34eb9013eb7df669b

See more details on using hashes here.

Provenance

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