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="30s")
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

# Int shorthand (1s initial delay, 2x backoff)
@task(retries=3)
def flaky_call(url: str) -> dict:
    return requests.get(url).json()

# Full control
@task(retries=RetryPolicy(max_retries=3, initial_delay_secs=0.5, backoff_multiplier=2.0))
def precise_retry(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

Conditional branching

from sayiir import task, Flow, run_workflow

@task
def classify(ticket: dict) -> str:
    return "billing" if ticket["type"] == "invoice" else "tech"

@task
def handle_billing(ticket: dict) -> str:
    return f"Billing handled: {ticket['id']}"

@task
def handle_tech(ticket: dict) -> str:
    return f"Tech resolved: {ticket['id']}"

@task
def fallback(ticket: dict) -> str:
    return f"Routed to general: {ticket['id']}"

workflow = (
    Flow("support-router")
    .route(classify, keys=["billing", "tech"])
        .branch("billing", handle_billing)
        .branch("tech", handle_tech)
        .default_branch(fallback)
    .done()
    .build()
)
result = run_workflow(workflow, {"id": 1, "type": "invoice"})
# {"branch": "billing", "result": "Billing handled: 1"}

The key function returns a string routing key. The matching branch runs; if no match and no default, the workflow fails. The output is a BranchEnvelope with branch (the key) and result (the branch output).

Task metadata

@task(
    "Process Payment",
    timeout="60s",
    retries=3,
    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. Accepts a positional name string: @task("name"). Optional params: name, timeout (duration string or seconds), retries (int shorthand or RetryPolicy), 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].
  • .route(key_fn, *, keys=["a", "b"]) — Start conditional branching. Returns a BranchBuilder.
  • BranchBuilder.branch(key, *tasks) — Add a named branch for a routing key.
  • BranchBuilder.default_branch(*tasks) — Set the fallback branch for unmatched keys.
  • BranchBuilder.done() — Finish branching and return to the Flow builder.
  • .build() — Finalize and return a Workflow.

Execution

  • run_workflow(workflow, input, *, instance_id=None, backend=None) — Execute a workflow. Without instance_id, runs in-memory. With instance_id and backend, runs with full checkpointing (raises WorkflowError if the workflow doesn't complete). 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/branch   │    └──────────────┘
                    │  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.0a14.tar.gz (198.5 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.0a14-cp313-cp313-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.13Windows x86-64

sayiir-0.1.0a14-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.0a14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a14-cp313-cp313-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

sayiir-0.1.0a14-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

sayiir-0.1.0a14-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.0a14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a14-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

sayiir-0.1.0a14-cp311-cp311-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.11Windows x86-64

sayiir-0.1.0a14-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.0a14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a14-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

sayiir-0.1.0a14-cp310-cp310-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.10Windows x86-64

sayiir-0.1.0a14-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.0a14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a14-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

  • Download URL: sayiir-0.1.0a14.tar.gz
  • Upload date:
  • Size: 198.5 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.0a14.tar.gz
Algorithm Hash digest
SHA256 0df7fcdf922cab13831eb160d28e690c0c6695ae086a60603c0f49050d508083
MD5 1f330e77b24097df9c0e37000ff2981c
BLAKE2b-256 81756e04e8034040d3f49acdca6cbabaa14004242746d90084a337da9c3d2d49

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a14-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.5 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.0a14-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 024964720ef617a5982b630b9339fc699c4cfc259d37f98ac1f1e2c958b0be3b
MD5 c44d677041bf997259a7c24e62c5052e
BLAKE2b-256 75339dd88c6be735cd6a28c967ba8ae4694f5e1f87d95d617c9a88270274e73a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 229ba95aed31c514203eb7499d395cffbef5b1da93d4c09e5f99be18050824e8
MD5 02d55fa1819f478dee4a54068a2af500
BLAKE2b-256 a212299d1ac4aa2ad50620c62013688ce29a42df3cdf543ef794982e110871d7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c2086788f8833b625277bc0eb0ce10cb1042a2499d47ae9025cdd1c4d0e0e133
MD5 1021dec969beac4199fff11621e3525c
BLAKE2b-256 d39eed8e34bf5306dc945543371c3ce2214e307494d8c2e2b0fa5fe40561106a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b70e74a7e73abe7f8609258aeb7c003000e8b543c15279f1eb47ad18d79531dd
MD5 3441852d98104a4553585d3ce6cc03f9
BLAKE2b-256 0be373bdd360fe6c9a313724b60697a99c1f9f006ece0aa1aa6d7beb18a16c69

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b039e1b388e1acf271d0705427361028ccfdb5b756733e693232672b8b878b38
MD5 f2bd08420fd25a02e25e26d9c2eecc59
BLAKE2b-256 e4b3aa632fcf3bcbe972aba0aab64d36294657c939700860b2ab6ef3a2d6c966

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a14-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.5 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.0a14-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b07f206a98a1a6c57417188319bd10a7de7393f52e29e3f4c615ca957738fab8
MD5 33c3a44aa8084b82f62302998276bd0a
BLAKE2b-256 6d366b746d1f807b28a112339475f1e5d99c3a30bbb55303140226c623298b57

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ad23e50766c35f9dc911ed3402017ff3027d632a890a729a9d13165bf012e5a
MD5 de13a51e2e007c597830450a5a18ebc7
BLAKE2b-256 8604a19cffc36aa6a85130c158de22b8d07c3421008b7e18ecd5cb745011b3ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5b7fe31b39562cf3cd2a045906b90c1a89aa34f7b8472bc11ec8e451ede2c246
MD5 1139d734bcb7d282e1a28a72c25cc16e
BLAKE2b-256 cd472e69806900000a78e5f934921bf80ed19fc38db6567623a457fac19ed9f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7baed97c53b7767119a84f2c120d971d732c92865cda9d1e3da4c88e9eb1db03
MD5 9d659c52aac659b4e56d9b4e747f8cdf
BLAKE2b-256 fa106b80c26066a2d23ad4da08187929944da651276aad1890ab04680d0486e7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 10dc1814b86f4eefef8dda16d712ecc08e615ce7492ce02ba4002dba82538643
MD5 db4bf436c39593249303586b58b1fa2b
BLAKE2b-256 5bdd07689195eb7291459b99c2a49bb2b66dfb840e958be90aedeb561640c506

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a14-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.5 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.0a14-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c54e4b907bc9594b9301db310f028a721f2cb243e66448555e30a5cc13ca1a51
MD5 617fb4a816cced2f3d6f7cf931c4713e
BLAKE2b-256 381b0555541c55e358f0eb2cc77a9f2d0ac1bd3e976e6453cbc49824642c1d98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 23c47c4d6503179e3db86c572487f85b36fb1b04b2218a393939d814d3a29eb9
MD5 484d00e908ebcf8ea747a25f6a0a70a5
BLAKE2b-256 b4ed67b88a58e76f1603b9f78fa3d215b837a40549592291337b20491bdcd6b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b3a5558a4a0500b911722223bfd5606ebbacb06b093a75981dcf6b18d7229124
MD5 909ee36f8c906e50dc14c0e1a60c9552
BLAKE2b-256 7d25289b601448b9db3bbb3ebecf19981d2574b416d8473b51682fdb360f198a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d800a53224e9c507f5a99167605fef84e1f87c558859379adaa68b27fc7074b3
MD5 a31f43db83aaf8b018a786d34f4feaf7
BLAKE2b-256 f89653b5ced7227e817217452e53f16159dcefa3e2db154b5c56931407afd732

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 45a521a48dad76592217da684e1a2d26a431f86ee0c703655e8875680367c037
MD5 0c245ebf720d517c7643714c1a8a4330
BLAKE2b-256 083d9743e693c3dcfcb5be476d262be7bce0e8b07d9feb52a7b1c69a1f06e786

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a14-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.5 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.0a14-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5e5b9005581eb2bfa6a70668a5d2bf6feb9525dfdcd4b3d6e76f6ae290ddb210
MD5 a4a6229055829f83ae8b1b65208a8dc1
BLAKE2b-256 a411d19d8a4ee524408caa582724b8686fcd30b6af760be3cc12589d162119f3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87b94f471ae954ab31c444d2744297a7b229c86b224a5b5f5e9201518a819b30
MD5 ae830720addcbc0b0d6f4ddc9637885a
BLAKE2b-256 843f840b83c6e67f3fcdb9a48f13ca127c4728bb8aad2316666df50b3e6169cd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9a1039ba7c3d9a9124b3e0086de1fd3a9dcbf52c5b37aa24f0fecfd8ae1dc2bf
MD5 4387af3d590fc8dde45ac8f706fb52a5
BLAKE2b-256 a4d61bcb21017a96d09d7b5be2aadb8c09703cb9bd662e6565215b75f17b1e84

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e461cccf44566e8e9a0abb46540528353fabb78d4fe72e1c0672b6e76cd1fbb
MD5 cde1ce92acc33255996a45264eeb2793
BLAKE2b-256 8391125a9288e6af78c3dace004bf558d96d704ed980da6f82fdf22d6779b4aa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a14-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2ed01439bc79272f59f751233490bedd509c495fcd559ec7a334705955656128
MD5 aa1983567a5c8874a4b099406ef7a22e
BLAKE2b-256 b382c8594d58aa8129cd0918217a62fe62cbcf1362c9bf2182367021649c4eb0

See more details on using hashes here.

Provenance

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