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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

  • Download URL: sayiir-0.1.0a8.tar.gz
  • Upload date:
  • Size: 174.6 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.0a8.tar.gz
Algorithm Hash digest
SHA256 817fd155080288eabbb9b973d379a6b314e7d974f985a85044e91d32bdf663f4
MD5 64a41c0a97401e30f7d58be839febd40
BLAKE2b-256 8a556452ea727ffbea917e78f714b46400677c4b87d0ed4f4cdef5bef1a741bb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a8-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.0a8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 89315d147c46b3e22b1d8888b7fd534844260daba02c6b6fb31b0cabbd9dba43
MD5 482169a2a67110414937917269a88c80
BLAKE2b-256 997c7bd1313da890cabca35bd7e309d9927d58f2446cb5698933330c8746b269

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a5f7df8ced4b4c2cbaba55c0806d2df8529f31570584038fe3c0d0618df528c
MD5 7dd521ac1a2843b41ced58fbfd707abf
BLAKE2b-256 ac9ae05c43b15c8b40468472dd2b89d7f05c0d794fa06f34d34a7c79a678ed9e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dcee501270a16205b0acd5febab965274801fffd6c4ed858edceb9f3c7ea61ec
MD5 bc2b2553beba46d9a0a4ace5d1b9e669
BLAKE2b-256 6f7cd3f5670a7faf796e63aa04564fa5cc3fffb38e0692a9e0eea912891aaf43

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f2e2a94b22d8a42f7b07c0f985bd864a1d638c6d5602e754292ca4062feb01b
MD5 4818aa36b95f5f1455c4543149f4708e
BLAKE2b-256 f59b802bc3c6c77789bc9034eaeb15ecc2f4f8f4e22fb528c64067d95420c7d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1b4b60b4d567cf1332c5b23cfb531bb4b88b3f964215c5a36445c90ec251cda8
MD5 b6bfa0c78145b360eb656e7219c44049
BLAKE2b-256 73f165ca2c431822dae4c2410cbdc490e44e2a86fce8b73dfd604d9600a0c7e5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a8-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.0a8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 37f7ed0395bcd6d450edca9836bc3e1f6a5c0c48afd0c15a44c6fabe7b7318d2
MD5 d479c5079d9445be6bd593fd2d2f73f8
BLAKE2b-256 6a89379fba2f3d9c1bd9bab1afb5c5ace431125500bbe5e00d57ddf376fd6ded

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ba41a32587105cf6ac43108dfe8100617a5ff83fb7f002dea7481c248dec0e43
MD5 cef0043158beceb0039940cc9b510dc0
BLAKE2b-256 83ff85c89a87025d25488bdcdd8ebc59c69308d10c4fdf003dbae7a42b4f2041

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 27a432de6fde7aea5b00d640d80218db0b4b906ae3f9269059d1636a0aa5bc4a
MD5 28082e4d0f42c6c25e94021bf6e5b408
BLAKE2b-256 a98cb789a45788b59f501800c352fc1ea297a51118d51acae106560c124183d1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eed1d28403e24bfda5d28e376ac8fd9a92613cd25018082b2caf0308b8d63902
MD5 e576d74be195453c7de69cdf15c34589
BLAKE2b-256 b97cd5c767acb2e44ff82c8e72c8dcb0e8f7a854bde1497db35650c426c1cbbf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 32555b59312184ac9ad9a0076ae1ff4e74b97446277cc74ecd0f3e7e5382dee0
MD5 31400530fce866932d5c2d6b913591f8
BLAKE2b-256 a4fcc187651386a6c0fab4c7c1ed6de3fa435b3dd233dd48f3830a3c7f7bdbea

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a8-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.0a8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 34956006108c8caa5cc19b9257cd92a446e371d65669e276191a1e0929ac5e45
MD5 341e910a11a211b38c6354134bdf2590
BLAKE2b-256 b2e34b0e5cc6ae24f6130a68c2316568e7ff31c5443b1c92fe8d2a8365c338f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ed0121db8dcbd22bfca4098bff3a605bb9a66722991721c7c0f45c94bda1f6c5
MD5 a03248e9fe9ad4b86141c9aeec5ced62
BLAKE2b-256 399dabd44d4a3dd998cc0078e770d720351f02e5fb0443310df408e80984168d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a40cb930ad6c1add4fe66b8c7a3a3a3687a4254fccd760ea48944da72be0a04
MD5 8c54a5b93b898712eff9de4cc2eb4679
BLAKE2b-256 85f2a2fd6234f2e753f68d82b340195f9c6115cebb944b57d79964a0b86b22f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa415a01bef8cd17184670e8c39c08b961064a8f9ce68d8b471c4af711cf93a5
MD5 5a4a23a2afa1a6b414b2b41dfaf36274
BLAKE2b-256 480cc1facba59bd52bb60941dbf015906e92a99cf8f0478c0d54b248b4e2d155

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 28bbdfad564ca554825e568c0ef2e019dfaae7ae245467473329900ed88fad06
MD5 1825eb855a3dd768bdeb4661474a4885
BLAKE2b-256 109eee96b5980f27642ffa259b7c78de60997f588b76a71efee5da216d3ce70b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a8-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.0a8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cc301872eaa68cc872fc030131ba867b05cb8b0d6dd24ac83cdc2106677886c2
MD5 c0113b65cb2a19f06c16c16b2ec71ded
BLAKE2b-256 5b7aa675a053c3a1c0ea387080e8082500a22552d7e882c97da465615c092efe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 991dfc849f1f5b3cb03152b0cc7f7ac6c55286dd7ef175211c3c1f0c33a3fcf9
MD5 522567bdb5d51efbe3aec7b5e666039e
BLAKE2b-256 ee590ae7f16f129fb47704bd0a2f1ad82de09a454bb8e587355e4ea8cfef708e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5aaab06fffeed80eddbf878aa23f04bd4ed80b638cf4b333285cc1191f2f67bd
MD5 4fda37c7ee3c6c4c554f41f4b386c3cb
BLAKE2b-256 40a1a07089f784bdbf01a0aad0c5166b2c344bf7d03be0430b9f9732d044344c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f78e7a1d2883e514041ea07f4b6c0ab1179392cd66786850fd7ad45133da0cfa
MD5 ce3189a4d8b08ea53794fd69f9d3c69a
BLAKE2b-256 bd3277a7cb9d67eec38a2e0c3238772e3942bcba117493fedc14a1b5a4ebce84

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a8-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b144906e417288386553ad659cf780d275f74d54ce36735e313a91955bae776d
MD5 6fce897b71a32871cabe41e83346412f
BLAKE2b-256 0d8c0c60733bd0be163e86212ab015c0709578d0e39d28dcb06681c1462deefe

See more details on using hashes here.

Provenance

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