Skip to main content

CLI client for interacting with Qestit QRM data from LumenRadio tooling.

Project description

QRM

CLI + Python client for interacting with the Qestit QRM.

Install

pip install lr-qrm

Quick start

Login

Interactive login (prompts for username/password):

qrm login --base-url https://example.com

Non-interactive (for CI/CD):

export QRM_USERNAME="<insert username>"
export QRM_PASSWORD="<insert password>"
qrm login --ci --base-url https://example.com

By default, this stores session details at:

~/.config/qrm/login.json

Commands

Check API health

qrm status

Inspect item test history

qrm uut status 326115020010F2F1 --start "2026-02-01T00:00:00Z" --stop "2026-02-06T23:59:00Z"

By default the command uses 1970-01-01T00:00:00Z as the start timestamp and lets QRM treat the stop as "now" (omit --stop). Pass --base-url and --insecure to override the stored settings when needed.

Production Box Management

List production boxes
qrm box list --stop "2026-02-06T23:59:00Z"

If you omit --start, the command defaults to the Unix epoch (1970-01-01T00:00:00Z). Leave --stop out to let QRM use its current time.

Get detailed box information
qrm box get BOX-12345

Shows detailed information about a specific box and lists all items it contains.

Create a production box
qrm box create BOX-12345 \
  --started "2026-02-01T00:00:00Z" \
  --finished "2026-02-06T23:59:00Z" \
  --units 10 \
  --shipped

Creates or updates a production box with manufacturing dates and unit count. Use --shipped to mark the box as shipped.

Update an existing box
qrm box update BOX-12345 --units 12 --finished "2026-02-07T12:00:00Z"

Updates properties of an existing production box.

Delete a production box
qrm box delete BOX-12345

Deletes a production box. This command is idempotent and will not fail if the box is already deleted.

Add an item to a box
qrm box add-item BOX-12345 --serial-number "326115020010F2F1"

Adds an item to a production box. You can identify the item by serial number, type name, or identifier tag.

Remove an item from a box
qrm box remove-item BOX-12345 --serial-number "326115020010F2F1"

Removes an item from a production box. Supports serial number, type name, or identifier tag for identification.

Find a box containing a specific item
qrm box find --serial-number "326115020010F2F1"

Searches for the production box containing a specific item by serial number, type name, or identifier tag.

JSON output

Most commands support a JSON output mode.

qrm uut status 326115020010F2F1 --output json

Programmatic use

from qrm.config import load_login_state
from qrm.client import QrmClient

state = load_login_state()
client = QrmClient(base_url=str(state.base_url), verify_tls=state.verify_tls)

uut_runs = client.uut_status(
    token=state.token,
    serial_number="326115020010F2F1",
    start_datetime="2026-02-01T00:00:00Z",
    stop_datetime="2026-02-06T23:59:00Z",
    max_results=1000,
)

boxes = client.box_list(
    token=state.token,
    start_datetime="1970-01-01T00:00:00Z",
    stop_datetime="2026-02-06T23:59:00Z",
)

# Get detailed box information
box = client.box_get(
    token=state.token,
    box_identifier="BOX-12345",
)

content = client.box_content(
    token=state.token,
    box_identifier="BOX-12345",
)

# Create a production box
new_box = client.box_add(
    token=state.token,
    box_identifier="BOX-12345",
    started_datetime="2026-02-01T00:00:00Z",
    finished_datetime="2026-02-06T23:59:00Z",
    number_of_units=10,
    shipped=True,
)

# Delete a production box
result = client.box_remove(
    token=state.token,
    box_identifier="BOX-12345",
)

# Add an item to a box
result = client.box_uut_add(
    token=state.token,
    box_identifier="BOX-12345",
    uut_serial_number="326115020010F2F1",
)

# Remove an item from a box
result = client.box_uut_remove(
    token=state.token,
    box_identifier="BOX-12345",
    uut_serial_number="326115020010F2F1",
)

# Find which box contains a specific item
box = client.box_find(
    token=state.token,
    uut_serial_number="326115020010F2F1",
)

FAQ

  • Where is the config kept? ~/.config/qrm/login.json (override with QRM_CONFIG)

  • How do I run non-interactively? Make sure to give all required arguments. Also pass --ci to stop output of sensitive information such as username or passwords.

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

lr_qrm-0.2.1.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

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

lr_qrm-0.2.1-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file lr_qrm-0.2.1.tar.gz.

File metadata

  • Download URL: lr_qrm-0.2.1.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for lr_qrm-0.2.1.tar.gz
Algorithm Hash digest
SHA256 6ce27fbca0d079d601d77651a287165282e6eed40eb2475c816df7c1ee9588ca
MD5 172098fc6bf5e4d9e4771ecff2e7a55a
BLAKE2b-256 2ac675acbb6e10d28ea0d97d0408b0b7edb44cc857479bb71215fdb949217a3d

See more details on using hashes here.

File details

Details for the file lr_qrm-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: lr_qrm-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for lr_qrm-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 95da69cc27587060265af97a46c2107b42c69bebf4ee0f82017819480db25f06
MD5 b040592585f7e48175cc586b03984f6b
BLAKE2b-256 1b1a87d22d7892b6d586a3e41d97cf04d9572f2a2c0f4429086f3c0f1401f128

See more details on using hashes here.

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