Skip to main content

lr-lumentest-sdk

Step-authoring SDK for LumenRadio LumenTest test sequences.

This package is for an embedded developer writing or updating test steps and sequences for a LumenTest production station, who wants a .venv and an editor with working imports, type hints and autocomplete for the step API — without checking out or installing the station itself. It ships the exact same lumentest_station source files the station runs, so a step written and tested against this package behaves identically when the station loads it.

Installation

pip install lr-lumentest-sdk

This package and lumentest-station both provide the lumentest_station import name and must never be installed into the same environment. A station developer already has the real package — install lr-lumentest-sdk only in a separate .venv dedicated to authoring steps and sequences.

Public API

from lumentest_station import (
    step_options,      # decorator: attaches step metadata (type, timeout, limits section)
    sequence_options,  # decorator: attaches sequence metadata (name, serial handling)
    run_tool,          # run an external tool as a supervised subprocess
    StepFailed,        # raise to fail the step; optionally carrying the ToolResult that failed
    ToolResult,        # what run_tool() returns: exit_code, stdout, stderr, timed_out
    Measurement,       # a single limits-checked measurement to report
    step_main,         # run this step standalone from the command line
)

Running a single step

A step module can run itself directly, with no separate harness:

from lumentest_station import step_options, step_main


@step_options("PROGRAMMING", display_name="Flash Firmware")
def flash_firmware(test):
    ...


if __name__ == "__main__":
    raise SystemExit(step_main(flash_firmware))
python my_step.py --limits limits.toml --manifest artifact-manifest.json

For a step file with no __main__ guard, use the lumentest-step console script instead:

lumentest-step validate my_step.py
lumentest-step run my_step.py --limits limits.toml --manifest artifact-manifest.json --env NRF_TOOLS=/opt/nrf --results-dir ./results

validate is a static check only — it never imports the file, so it needs no hardware and no environment. It enforces the two rules the station's loader enforces: exactly one @step_options-decorated top-level function, and no direct subprocess use (steps call run_tool instead). run performs the same check, then imports and executes the step.

Options for run, and for step_main under a __main__ guard:

Option Purpose
--limits PATH TOML file of measurement limits; repeatable, later files win. Needed by any step that returns measurements.
--manifest PATH A package directory, or its artifact-manifest.json, so manifest.resolve(...) works against a real package
--env NAME=VALUE Set an environment variable for the step's run, repeatable. Production steps read station configuration from the environment, so this stands in for the station's [env] config.
--dut, --article, --revision, --station The identity fields the step sees on its test context
--timeout SECONDS Override the step's own @step_options(timeout=...)
--results-dir DIR Where captured stdout.txt, stderr.txt and traceback.txt land

The exit status is 0 when the step passed, 1 when it failed (an explicit StepFailed, or an out-of-limit measurement), and 2 on an error — an unexpected exception, a timeout, or a file the loader rejects.

A station does far more than run one step: it uploads to QRM, validates serial numbers, curates the PATH a tool is resolved against, and runs a whole sequence in order. None of that is reproduced here. A green standalone run says the step's own logic holds, not that the sequence will pass on a station.

Full authoring guide

For the complete authoring reference — sequence structure, limits files, manifests, the step SDK's allowed third-party imports, and the full lumentest-step command reference — see doc/step-sdk.md in the LumenTest repository.

Release files for lr-lumentest-sdk 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lr-lumentest-sdk 0.6.1
File Size Uploaded
lr_lumentest_sdk-0.6.1.tar.gz 36.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lr-lumentest-sdk 0.6.1
File Interpreter ABI Platform
lr_lumentest_sdk-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 72.1 kB

Release files / lr_lumentest_sdk-0.6.1.tar.gz

Download URL lr_lumentest_sdk-0.6.1.tar.gz
Size 36.9 kB
Tags Source
SHA-256 checksum
How to use checksums
55962ed0b3995d36bd05849f4765e51aecdf062e9b75d7261ab00ae0764e3882
BLAKE2b-256 checksum
How to use checksums
34c1e8a0056463c59de8fd68622620b2a505fb58172d474f262fe314a97ad84c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / lr_lumentest_sdk-0.6.1-py3-none-any.whl

Download URL lr_lumentest_sdk-0.6.1-py3-none-any.whl
Size 35.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
94d6cb35cb9153a4295c303011c173eb3cd432d5a45de1fdd3e01aadf8fa5b23
BLAKE2b-256 checksum
How to use checksums
1ba25eff3289ef14e344feface6e846f931c36280d7db671517237fc0dbcbb57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

0.8.0

2 release files

0.7.0

2 release files

This release

0.6.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page