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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

  • Download URL: sayiir-0.1.0a6.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.0a6.tar.gz
Algorithm Hash digest
SHA256 5a92dee66b0086ec300718e0766a322542ba0c720b92c765537dd1ac337d6718
MD5 9808cb60102c7c3de5cf5944ae5e37b1
BLAKE2b-256 087061a15e53e39898d89a98f7308b4a947c307c01046d228b265aeec2f21c27

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a6-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.0a6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 29c7e17e075c55a1f183305262d050e562173cdcb4dfe15ff89e1c43fdd471a2
MD5 334a5090832b39885f78b7d9e306d86e
BLAKE2b-256 05dacc6b24af73a0d68cf2814526ca83001299258de36d6accc5b3cc79948f1e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7db673ad91e4e658c66799dd4b9d10f4bc21b3e6bc2b80a99639b14b120654ab
MD5 dbe5681c4522885cb9d354a13e6ec97d
BLAKE2b-256 7193d836266dfcf16dc535859daf0d29785365bd8b218cd0d9916161f6741715

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 13d6f9241ab666f18b46549c3bd2fbb77e3fc3edcc527d7bac2ef06fa82ea349
MD5 4c04348d435d33e9ce4bec22a71c5cf0
BLAKE2b-256 d511ac770782eeb69f96b67b9dc209762b0d5199213319b71cc0bdb782efe919

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6f2ea9bc636c64005b7f8277967fab912a349765742e9ffae848320d4fefe1fc
MD5 aca3e6029073c46feb2bbbbc165ea3fb
BLAKE2b-256 752e91befb962eee3ac43163dd41195590bb5d0cbffe2cab67dfc87358dc0bec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8a7bb321368b476f710196e8e520e46bdcf33b5fcd401921356138e2dfc2af0b
MD5 331a90db9377b9aaf414cabf383b89dd
BLAKE2b-256 1c927b2cc4ff8307fe97cd1c1389f533fffa644d89a22341a1d2bb6570918473

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a6-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.0a6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5455537457ba3ef2af7a25d4e08405bddbf94edc020e1292665e5dea06124ae1
MD5 654442fec7aefe9abd1e684a439a942b
BLAKE2b-256 771534a8c9ab898c84c3072a51c0fd9afc27d68b8cffe9f602d85049d161304a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bacee6ede777a46c01ff070c08455c96e58564bd30caab396156c854a5976950
MD5 445fde753d06787304c9f0eb47d5bc0e
BLAKE2b-256 f045c44b69717760f2310f7ca6c3aa7f70bba1ebd9716a391837e9b82cb9f016

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ade26609ae7da69243391dea47e86f9b5d6f3afcb23c8073d21a5f9cb17d58a3
MD5 f823afdd7325c9e3dd0995801eb6f085
BLAKE2b-256 f0a56866186cd02b1ce1a253b0a6a436214dbbe038a3e55ac6672d5d6154f894

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0df78b50f0f41ab13965a7d40623831d21bd74aaad4faa0b09c201deebd753b4
MD5 b3534bedc5e26f7156b4ddeb45bb1a1f
BLAKE2b-256 291240ebd96f15674f28bf78ee2b37abb43771e8990e36f9690514ec879a6b7a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6a25b0a47742203a7037bb6d15b31379a09ea24da2ceb99475e81161b0ddff0c
MD5 59455745958eb068cd29e54479d0c075
BLAKE2b-256 c3581e3b750bec872f09b31db008b96092b496521d82d888f01fa0104645b9ca

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a6-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.0a6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8896d21f2de58854c989980f1876f27b23dd1a24e4b59e94754ac49ca036483e
MD5 2b70517aaec9b81ef32aa5caf1376627
BLAKE2b-256 c3210c3e2c54fbb994daef4a8105bad9c52e56c81943bc8acb4b3d4fe3443c7a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd853a73127b4498bfa6ae01ce5b0c6aa26d12a4e9dfe247b16e9a53a5cddd9b
MD5 0f641ab8e6b342c2e92bd9be656e75c4
BLAKE2b-256 31f317ac8f176817f036db5264be9bae9fdd84302b76ad62c568df14166ce910

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 115b67e85081895b6dd051b77e48235f370d71be6bc7e94932f42a33a6d6cb86
MD5 579048307e594c2cc3059bbcefad3eae
BLAKE2b-256 ee6f18b57d30207dbb282fdcd804dad9b9bf1d6ed6683ce102202da5fe168e33

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3efaec3a61cfbf8ae463224ae8a98d518887ebdcbd43495e639966e7d2d8afcd
MD5 74c7ac529a4bb7c9d3d1293369786e6e
BLAKE2b-256 eb9efbe004092ff9ffbfbb113f9b2854c18ae03d497d2cde6effcad19461ced9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ee35c86ad42816695502f9c1b07bdfae3376141d85cfe7f2f59c9dac01901c83
MD5 36836952059d0a2020e902da2a61735f
BLAKE2b-256 f7a5c008e6518a368940b37b49106d5787fe09f1a736f92f8c95eb854a56c00f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a6-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.0a6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b0d3835aa502776cdf7fe37aa477c0b63b882ec92634932c6354da486117ef65
MD5 f83a8bab46468904ea189dbd9aba2e4d
BLAKE2b-256 c04c56d295810813ba09dd9a145c2a01f97d6b36ac841bd30d5340ba05fc081b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c71d8c0787fa923838aba9de971ed79f60b1887401f1ad640e215a6c19ef518
MD5 bd7df0d6b16da6082461593e6ed0b569
BLAKE2b-256 faa8e00630b064ef432cf4f053aa1d708a13226e9e7a9ee9e211771730911cd4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 62ef2db31669b82d64e4f19e4a7caf967fd910ff484e5ada1184b1468b891c54
MD5 c7664a1e4beffc68bec07fc8e1feb7dc
BLAKE2b-256 977e19fdf7d30bff6c137fbe48b1ab9fb51c420f671fabb5a1ebfb9df8415bf0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7cc730e47f983a789b0373775cd13903749bc800155e6cc6e55289213e589aa
MD5 61bfff3e1f5e2e02b81fbff499164317
BLAKE2b-256 8ceaaf837c8a8b4d35027de4ce947e50456478051fb7b328989646504c870425

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a6-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 89114ea9a9a8a0895a69d3c2bd7a6c5dbbcf104e308ff217f8fcfa526ab20d97
MD5 c323b5c115864dc2c5c9342e35a93f9e
BLAKE2b-256 38a27a211ee97cf63b18b6da5f72695ecd424a5614e15cc268dd58f4d123acb1

See more details on using hashes here.

Provenance

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