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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

  • Download URL: sayiir-0.1.0a12.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.0a12.tar.gz
Algorithm Hash digest
SHA256 5f91f7cb54a629691359bf62e853eff070a22dc685a80848f766218f23d105bb
MD5 8c7563cf094fe54d9cfea317eebde737
BLAKE2b-256 f3e7c88a1ed1c6c5eb5401b5baaf986c8c4598776ae2eb3f24062cc4d36c05d6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a12-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.0a12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fa2c35889cf68c41d5d7c3cddc48cac47f966ff98ac2cc5e582664792cb0ec62
MD5 8b6a9a225a53d59643ca42aeb979ea33
BLAKE2b-256 d409ef217f2d9a265ad32863d5bf9dda94c412cb88985514225748bc295d9d2c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 70f49b108be2722836a6d1cbd11e35b114c2e9887198c1da1f65bd852e7a99d9
MD5 6d0258bc96758637b2f27f0a0ab554fa
BLAKE2b-256 8654b883b9b34746e61e9726628e1565f2119c74c12ce57588de9513c4b42943

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d4e5c86384bb1d245f53387067cb6380f79fa6b37e816bb091edbee33fd0c03c
MD5 6ba11e3bc935003168b8a781500e9efd
BLAKE2b-256 8ccfd40580dfbf04fc59e5feb2d806dc28f3ab38a3b23a2b7e2f6ef5553a2b98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 589669f3477e9c836e19460d041970e99f4ac5236c2b1920267cdb39ca7943e1
MD5 2734705fac30da125269f005ef7659f2
BLAKE2b-256 0151541b007cc48accfc0fab829b42ea7158953a5ef27ea65a77a39c8503a7a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 119a5b9bfa1b58c19abf9a7442a193dfdaefc2a2e489b61b11cefbf70eec2ad5
MD5 ae5c75bd0cc180ece79f5486b6c246a2
BLAKE2b-256 c8a5b1f5e9c9fff0f8bf3709acaf607918f018330f1e71b2294dcad368f16bd1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a12-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.0a12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c6613e6a2bb7a6110aaee9425946a55b9e00670c2decb14c23d9811dcaaa95fa
MD5 633ce5b7d4eebd50f0e3181b456a75dc
BLAKE2b-256 d841f8c8cba6aa8469b7effc4ed70f4819bb426034a71acb9f42568c5dab08f3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5538dd7c518a2478fbed07a2fc28195e8dc534de0c195699494b23cb67db23ad
MD5 b389aee38c89344a4c879907af3e2d99
BLAKE2b-256 6dcd50396a55c78483a498a76d9248e0d830b1fbd61042b64a1b0b6761cc0f21

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ceb0338d1bd6780ca7ec2261eb9fe37160f720f19e98978fb54e8a6f65e41cad
MD5 904a60b3a08d733ff8f0641ec305ac25
BLAKE2b-256 a5a851a75308ab39132936b6f414c51521db7dc3f4b9745b78bf1d28f0f79ba9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b26c0bbeed04ed0350a8358c135f84bf7fd4083a78cc37c6efb5c2b5e6d6afaa
MD5 3e1b3dafbf3acf136f9373993abbbb07
BLAKE2b-256 d2c37728cbfe73ffdad3ad4edf5f39e3ff2a6c853984a4d89e50b2d3f83edb9c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b179a8052e9d059cbc288774863525255e7b5fa599d47c7da024b964f57c16c0
MD5 b4bbf23d3119daec34557696ed50b317
BLAKE2b-256 0b91940dcb024496fa4d87a8b4ac27334bd0d39950d627d12a5d07c18b529281

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a12-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.0a12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e4484de666de67fbba66fcd58d07e9a96abeb0e636c13c2e4fd31a9cdfdb8415
MD5 243d789212edbddde2be6b719c1d37f6
BLAKE2b-256 450401b708a2de586d4dd42bb5013eda8dcddd5aa7cc9cc463a93738f7a7e64e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3684a0f865065388e66b6d0ae6dc104ed35f871aba5c652166fa3d44f9cae33e
MD5 10ae5c4a8fa5c098c733eb20b7e743af
BLAKE2b-256 fda7fbab95912ba9d63dc607c837db1f2f7a16304b41082bf73447d559d9acd8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ac6298d092605cfa0799bc30223276377a7851fac8ccc017824a3f165720a791
MD5 567d54f6831a4907f7600fa144de7846
BLAKE2b-256 0798682a6f133d16c86f3c67d1dd25cd9d0ba05f34bf7d180fe8f3d6b06b120a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd5b2be7f16f654624bb25fed8542b3006f057d2650cd05039becca3edc8b4c2
MD5 21261b6b5344f902b83d3de180aa1ff0
BLAKE2b-256 48ee0f33108ba265c6f53907d8d735c99af8733a8714498baa95c01d910c96c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f34db7f94d4abd8313b7e75684c6ca4971353be6ee97ec54b1a6a680ec58211e
MD5 8f8803a34bdb65cb635535dadc9a2f41
BLAKE2b-256 98b2d0608783e7a8bf606144f0abd840cfd31b8c3f70ae4a98f4dd66628cf215

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a12-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.0a12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a9573c0b2c7afa5c6da13ee0d40e278f08823e1a9d42421c0b033f76898daeef
MD5 13ce7ddfb62edcd046ac9905369c10e6
BLAKE2b-256 d5fc4c13452e1808041f6b6644e2e615bf999df9b397abc5bef45d1a2afe8d4e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c6717f304a504fe10eb8cce367dab54a00ea05f4426adc1fbe2fe1b11261cb0
MD5 bfcdeb59a43156e9f84445168b44f01a
BLAKE2b-256 456ee3d5865fd72f5d4956a23c96363b523cec5079a1d2d263075bfa80d6d13e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8bb39a234cf7e991442cc9f8a27c426108f42045fca3caa0e6cb05e38f78fe48
MD5 b9786c0869dbf212e143098b89c9d167
BLAKE2b-256 04152918dcce21a84da0f0c09987caecc29e5a8ad4acedc98d260564ed6dd43f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4fa4e35c12cee535ce17d701f8be31f404330e4515747b146caf390160c221ca
MD5 8bf7fca8cd60bc698ac26b82be8cf522
BLAKE2b-256 238d0bc1ebcd895fd4131d720e5487b436181a6c908566c4eab179a5546906e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a12-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6e00a810bcd99c96a587b041fc97b679a266a94dd5ca601e5467b1c1a96d673b
MD5 adb88079199822f6503b7e1a3bf6a78a
BLAKE2b-256 1845ea400ca71dae0bf2692d720972f280bc4d91c052db82f77bf545db8631da

See more details on using hashes here.

Provenance

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