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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

File metadata

  • Download URL: sayiir-0.1.0a10.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.0a10.tar.gz
Algorithm Hash digest
SHA256 3f7976818908a2a938d0d2ead3d4cacf0c8eb0a793fc23417f2997d3f7e92857
MD5 44655562fe002ab1bfe29b36ab2c2b6b
BLAKE2b-256 8e99e601e0663dba336093865f15325d0a43e55eee528354a241b8c6fd523449

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a10-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.0a10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 22e877fce638d04e09e91d23348641050316b0ef4c20a5d9cdeff88c960121ad
MD5 dcd4884728b9d8bffeb1c4b27078ed48
BLAKE2b-256 63876612f4cd2a41060069ec57a8f30e9fe150319f044a1efba9bd3661e81934

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 650d22df57f43258bf91c0601209fdd17e54f57c9baa4b8e23280097509b6ac7
MD5 08ea1a353e6ccb6d6be76ac115991c17
BLAKE2b-256 05add56808706df5aea6c90b070f9d93baaf8e95867f6a93f9db70f4cb325b98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0bd04ba102b1cf681ff5e048d51e753905ff201a703c5ae5fcea24eaa0a11bfd
MD5 83c59d095f1c57a34c5231848e700a02
BLAKE2b-256 c339cbd3b7de1003462923ad0e9c797793d01ceb76de188709df2e2d73009d37

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21ca8ce48d0323adac34724913eaaf0022bb9514737ccc1df9ebdc60cada1d8b
MD5 23f1da8c53cf0c54f34c0994b96fb22e
BLAKE2b-256 b47ddc420d64b3b453b2780c72c1d8b070572a926c12a700b1981ff18675e3ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7d08dbef877763646cf69d0dc2969398432e6dc2ef46a27d3fc8c18d0eb41ba0
MD5 cd8113754df193c74e08f1f05443bd23
BLAKE2b-256 fccd9739276a6fceb360f52254b926aa821fc181dd33716b40373dbf9f037a32

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a10-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.0a10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ee2053f7b1efd7eda3fcadd06b47884f91b374a6e277d62081be01e1b0e75afe
MD5 1370dc81fc3c2f57f3c9148ce7c17390
BLAKE2b-256 8832efe327fccc5e360ece56e23af7f3712fbd203aeb304419021721056021f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82389ed7e3f08d3dbb8066c05e83ae3a84e65465e82c5336f8ce9ca8f7ea83a0
MD5 67319a53997032dde55cdff47371a9e4
BLAKE2b-256 5d82ed4ea752735c9e2aa3c9b38e54e44c95793b659461a278c6d62520d07bb8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7e44b3e7ef13d4a5e9689d96dba337deacf1456417f6eb5deabfe3a76e6c9d3a
MD5 c00f5075c7797249cae97f611054ae1d
BLAKE2b-256 3c59fb005d3e34f0f38fb22a0d4dd7f8cf69f864052e431014154cda99623f66

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68a97bb48feb9725899f1b7bd736563f04cceb2fbbbf0c3e8946cc5065b4e587
MD5 120af0dc826cfd1c8ef7c80475f6f041
BLAKE2b-256 9d78fd3a954d9a7ddea5fe73ac088e8dd95c3812d2d31e79fa2aa402ec368e16

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 33ef90165e188ecd503ae879bbee16fa68eb2a64209e148401afe69aa8e70769
MD5 6256df20b23bfd3577e5909a2ad56316
BLAKE2b-256 96295b3e75e3334fdc3ff8517d3aa5e89198fa87dced759ac8e4d974e2e4666b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a10-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.0a10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 140f8240b6810e18d10a822cd0effa35e4a640266ffd3d27b59ffa6ce6997b33
MD5 5ea2b6e39db1b1cd9a8b942ea163d487
BLAKE2b-256 933553a715565518bda3bfdb3f55f4690e6e3bf720fb3c51423c5f4affd4feea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e31ff1f56402785ff1f759f04a9f65b85c4e0e9f17649e547d83bde406a113d2
MD5 bf449b5305b458205853faddb93a9e53
BLAKE2b-256 c494f736c00b59f3b007bfc301d78de9009a92498c6df8aba852640fd20960fc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f76422ac2db3b129ebe9d429a387c9fbb1889afaf3c2901ea9257599ba738b76
MD5 5de6e7ecec4a7cd99b186a6c7032aad3
BLAKE2b-256 40048d4882845b580a759ce32a19c71e0fc7ac118b4335baceb83e74ec63f370

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 388f4a64aaab77415c75410828a39ace2369a97b6cccc93410cddb82d57340f2
MD5 6caca7aae42a0db7ce3f90614f117fb2
BLAKE2b-256 991423613d7118e52cf6f9b2de34020d14de04dbf60fdfda5581fa8e1c348c5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b802f78beda8106df92df4cde1b6e32ed9401f5a33cdba07375f8ac0547a8591
MD5 2da334467cf093d124056c53df51344b
BLAKE2b-256 38e939960a122f267949041cce2c8c98d1b99297a27f82360dc490884dfbebc1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a10-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.0a10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 227cb0608bcc61ce00b8b929eb0b87f9b75ab5bbfaca3d75ccb448ef15286b7d
MD5 2df6ab0d973ef3567179682892bf2bf4
BLAKE2b-256 1f4962d5226c1360a5245128f819375e79d817a385388a4d8ed81330a2822398

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d14d321875e5c11e9e3f6d783d268aa4607635b962ab5e040c19cd4860d8f78a
MD5 cf48982bfdeeb3df043112f8f5b8caef
BLAKE2b-256 f7e05ea8caef51e496a019509ce4b2d130aac9e7edfdad159809768bfebaf42d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c47d58e80dfae2f47f2967997e440065d77fa5be1b74c240bb0d3baecafcd7d2
MD5 6f35410c43160953fa756cb5eb9d93bc
BLAKE2b-256 2247bf71163bfc7685f23b5481535491bdbdc10bac140960dd380ab334539787

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7cc9ebc62eac8160815ce60f7f35879579948713326c36bbba9589e6187224db
MD5 f1c4eb892756f7b8003ebb5475452899
BLAKE2b-256 094cba27d34771c3bea050fb3eda7d412b6c413f37eac3b01afe3b79c4132fcf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a10-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8228f09e3888125b3adc1c35492026c46a88e32d5c38341c67030625a6a10b03
MD5 d25eecd849e48d7243093f2bbf7786e9
BLAKE2b-256 172132a01285fbdc8fa0e4e1478b6268da9a28b2e3a86dc3b109c6c4118bc408

See more details on using hashes here.

Provenance

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