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.0a4.tar.gz (169.4 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.0a4-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

sayiir-0.1.0a4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a4-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

sayiir-0.1.0a4-cp313-cp313-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

sayiir-0.1.0a4-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

sayiir-0.1.0a4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a4-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

sayiir-0.1.0a4-cp312-cp312-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

sayiir-0.1.0a4-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

sayiir-0.1.0a4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a4-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

sayiir-0.1.0a4-cp311-cp311-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

sayiir-0.1.0a4-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

sayiir-0.1.0a4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sayiir-0.1.0a4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

sayiir-0.1.0a4-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

sayiir-0.1.0a4-cp310-cp310-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file sayiir-0.1.0a4.tar.gz.

File metadata

  • Download URL: sayiir-0.1.0a4.tar.gz
  • Upload date:
  • Size: 169.4 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.0a4.tar.gz
Algorithm Hash digest
SHA256 7e1ce08d566f6acf3f09dae9124ed208a0bb250640305f7502b9b82e1526e81f
MD5 f00fed4f379f04d1261d43ecdb78cf54
BLAKE2b-256 2bc2b2bc28adb9bfcaecabbda0089c498851b15a8abf4fdd939f2b2a20e962b2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.0a4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a4621d6bce59ee6e1ac629b5b44d6357097171e7d23e97006e6b547c99c5e9a5
MD5 9842d2f073fcde836339a8901fad34ee
BLAKE2b-256 d0e5de8a013a90847dc8359f8af9af3fc2c7eba716e359dc765e641e39a60a93

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b1129639a3c79dbc57508b624e30134fee1b983a2c1d0f78f4e1c0857ed8bb3a
MD5 afad23d0774b680da14bde2127408b8e
BLAKE2b-256 b494629cb9b1f9710e9a717b6be5bca2263f880c469616e598ee07d352ebdca7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 69ea6a44f91624b83415d2d9fed2b5e8b1fc7809aafa469d1b6c0e1fb7e89eb6
MD5 a742c07b4f14b76cc16700a0283f262b
BLAKE2b-256 bba0221bb6f72708b523718da646aa5bc17937f87e12f08ff3bc565b09f304fd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4400234f79b2cd855fecdda5c37135c3575282de8a66ccc5838e51c190f1e198
MD5 1f01b651e914802050a00f7d15316ba0
BLAKE2b-256 62b3a88889c9d11c72b6b9dfe8c4ff46c606d38a524f6df456b2e32b38abdcf8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 eeaadfc12f0a1f975351a60c36f864ed35b284bb817a83e099248fb06853b5ac
MD5 4fa321a0bb9de86f6f4612692f98953d
BLAKE2b-256 68a5e60f53e5aff2f66d1c909b1e8d4377d54053309ddfe07ca74fb818af47fc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.0a4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 59bb9ecbfbd6b474c50db92f64eb0dc534a98178ee0760d706e3ef8734fe93d3
MD5 e04c85e0dd10fd80a9fed63e5ff7aad0
BLAKE2b-256 c6f3bcff000f44a0534e5eeb0d9bb73eab1784f6d730f878bca37c17886922a1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bba9e4817609412e511dda3e84eb5a97295bdd821d8e358ac82ba5ad89c47600
MD5 19580ce9dcc6cd67f9f8caae4ef70067
BLAKE2b-256 e9241e9081c38e3520fd3c86ef48bd7cb15e6af1699d4a6a6ad968d20b1c6187

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 86fb63edd941a105c79d438c91169caf217ee80d9668928d794df71042420a35
MD5 f26344320344aeb84eb052e656c927c5
BLAKE2b-256 816d6bd6c7e890ed9bd6ed5471e5f2957592fd10419fcf47f13911bdffaa8ead

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7169ed254cd47a58cbba7918db7facb727980bc66fa54c09264d51529970ea64
MD5 952f2bf1e653fa5fb158e86c48036b72
BLAKE2b-256 d1fda6fa756d87ffd05dbb7e987b4fd078884b6edc8324e6df1ef01b44397be1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6d88656bee849830cd935eb68780cd0a21e62167b1552cf6ddee7075c08fadf0
MD5 041aecb3787fd1b2356c4f0248ec0180
BLAKE2b-256 c6a720b3071474a9ec7f082f8c994fb2bfe182baa0cdaacf670193c0937c6ac5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.0a4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e3062f9858e15c83cbd2df3eb42de598c143ae7983a21ab2929ba8ac4d93fbb7
MD5 7a4f152a633ce50f56c6bf1528bed028
BLAKE2b-256 71b11e2ecce1350cb7c1d3e2fa4e47ee2e803ad25cf84a19ab2f52abfe7e99e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5923646defb19ac722c88a9b8e1d85e420eb4dfb7be0530eb3844cd9ec934c28
MD5 ca94bbdf119dcf4674af7ea2178e343d
BLAKE2b-256 507ca116e0efd923ef647cbc2492c1382f291076b14aad7dbff67b06844f6334

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b893c6345ad92e973ad8b596b70d7cc891489cd7ddaeb10a9cbb6950b6373562
MD5 b0ab5affaff0b9a788bd6a8ffa6a260c
BLAKE2b-256 eb4914146c4c0969c5e3636b2406d0905c3d488b91483fc504f4cb50ce74bc39

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e4391ad967148e25b3a940fc8e2748f57c09eef2e906bed8dd9243dcfb2c877
MD5 9e2789e65aa9a0ad842fd9562dfb2035
BLAKE2b-256 12d8212bb2bffe5d3bbe37d2d2ead209fc97f689a5bc2e533c050d2161094512

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0f8747e034cdfd898160bfee8e1bc64860df7d53368e291aea2f8dc964660328
MD5 5faf3423315036631ad3aca5461f65bb
BLAKE2b-256 99c04f9f8420be33fc243b835cfbd767f50802f884a90488d25bb09c3e30c075

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sayiir-0.1.0a4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.0a4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5d939cb9fa1d3495fd9618744dfdfc96950f2ca859d03b2be5e54c2e4a33eb2a
MD5 171f25ea04bf4d81b5c08618594e036e
BLAKE2b-256 9003ea6965e7cedda149a266091a90081db10a54e90ef89514221ad12262f529

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 003af291c1425e68bec9709b1a17b08cf0896ac8ec1e4f8950d94fc80d3e9fe2
MD5 87f1a36c785ab5fcb3becbc9d91e9bcc
BLAKE2b-256 59ada064ff666e1ae0deedb8d9ba1378f5637858c8f73af0d8c0873118ced168

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d6fa9a82239034967fc17df33bfa4d956404de341bf6256eed68926f82e6b016
MD5 38200321213043a41b10a4903b61c2d1
BLAKE2b-256 35eaaea66edfcf79c9ab7a21953a6ce7b81266fe65b3366f14d6828abde957da

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b6b71089d5fc2397ff7697cd4c012e44c694d6621ab67e6fd4f0d509d230e31
MD5 637198797832d8141bb01a9f19f36c73
BLAKE2b-256 1feee9588dd7235c807e8d1c6018940b29319374f9a314fa0f5941afc72789c8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sayiir-0.1.0a4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a6bbe3f0c0eaaeb483a4481c3d0fc9b1357db868b978a849fd35ad986556d3fc
MD5 2b8e14a99d4a109126cf89c81cfaf108
BLAKE2b-256 f3721afe5d3fe5a5481f63df10ea390c69b4cc8b02ff28a5c0bd39d4b98ea65e

See more details on using hashes here.

Provenance

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