Skip to main content

Framework-neutral Python SDK for building LAREX Action processors.

Project description

LAREX Action SDK

This SDK is work in progress. The public API can still change before LAREX Actions and the SDK are considered stable.

Framework-neutral Python SDK for building LAREX Action processors.

The core package verifies LAREX dispatch requests, parses typed run/input payloads, sends heartbeats, downloads selected files, and uploads result manifests. FastAPI support is available as an optional convenience extra.

Installation

uv add "larex-action-sdk[fastapi]"

For framework-neutral usage only:

uv add larex-action-sdk

FastAPI Processor

import os

from larex_actions import ActionContext
from larex_actions.fastapi import create_larex_action_app


async def process(ctx: ActionContext) -> None:
    action_input = await ctx.pull_input()
    results = ctx.result_builder()

    for page in action_input.pages:
        await ctx.heartbeat(25, f"Processing {page.name}", raise_on_cancel=True)
        if page.xml:
            xml_bytes = await ctx.download_bytes(page.xml[0])
            results.add_xml_bytes(
                page_id=page.id,
                content=xml_bytes,
                file_name=f"{page.name}-processed.xml",
                variant="processed",
            )

    await ctx.complete(results, "Done")


app = create_larex_action_app(
    processor_id="my-processor",
    dispatch_secret=os.environ["LAREX_DISPATCH_HMAC_SECRET"],
    handler=process,
)

Framework-Neutral Dispatch Verification

from larex_actions import DispatchVerifier

payload = DispatchVerifier(
    processor_id="my-processor",
    dispatch_secret=secret,
).verify(
    method=request_method,
    path_and_query=request_path_and_query,
    headers=request_headers,
    body=request_body,
)

You can then pass payload.model_dump(mode="json", by_alias=True) to your own queue/worker system and use ActionClient.from_dispatch(payload) in async workers.

Security

  • Dispatch requests are verified with the X-LAREX-Action-* HMAC headers.
  • Timestamps and nonces are checked to reduce replay risk.
  • Per-run bearer secrets and dispatch HMAC secrets are never included in model reprs.
  • Processor YAML must still declare the inputs and outputs LAREX should expose or accept.

Development

uv sync --all-extras
uv run ruff format .
uv run ruff check .
uv run pyright
uv run pytest
uv build

Releases are published with PyPI Trusted Publishing from GitHub Actions. Release candidate tags containing rc publish to TestPyPI; published GitHub releases publish to PyPI.

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

larex_action_sdk-0.1.0.tar.gz (29.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

larex_action_sdk-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file larex_action_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: larex_action_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 29.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for larex_action_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 299bc2f7f0e9c5f0d5d937c6c0b0a5feedde63656883a9ecc558aa9e3afc4ad3
MD5 2631e3f8a9818cf9cc9bea3770882997
BLAKE2b-256 38c95d6076fcaa87573455b470f6295998f43cc00b139368572e27c7b7a7a7f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for larex_action_sdk-0.1.0.tar.gz:

Publisher: publish.yml on OCR4all/larex-action-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file larex_action_sdk-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for larex_action_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 baec8bf7d2912f37c87ca22659858e8dbf860655388bf82b0067585ac2d0e8b8
MD5 de333db0a8ab68ed0ade32b5f80fdc7e
BLAKE2b-256 864a8cf8338d6262c5f0a5542e875783c27f9e11c544befd77532f6cbe57f4f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for larex_action_sdk-0.1.0-py3-none-any.whl:

Publisher: publish.yml on OCR4all/larex-action-sdk

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