PUBLIC WORK / SIDELOBE OSS / 2026

PowerContract

Check oscilloscope captures against electrical requirements written in YAML. The CLI reports what passed, what failed and which checks the capture cannot establish.

TYPE

Electrical requirement checker

INPUT

Oscilloscope CSV · YAML contract

STATUS

v0.1.0 · Alpha · PyPI

CONTRACT

Describe the limits once.

A contract names the signals in a capture and describes the conditions to check. These include minimum and maximum voltage, the delay between threshold events, rise and fall times, and whether a signal remains above or below a threshold for long enough.

Requirements may include a source reference and a declared measurement uncertainty. The result contains the measured value, limit and margin rather than just a pass/fail label.

RESULT

Report what the capture shows.

Every requirement returns PASS, FAIL or INDETERMINATE. An indeterminate result means the captured data is insufficient to decide. It is not silently counted as a pass.

$ powercontract check capture.csv power.yaml --json report.json

The same check can run locally or in CI. JSON reports include the PowerContract version and a report schema version.

CAPTURE FORMATS

Work with captured data.

A normal CSV with time and signal columns is enough to start. The contract maps those columns to signal names and defines the checks. The parser also accepts several documented oscilloscope export layouts.

The project documents which formats have been tested using hardware and which have only been checked against example files. Recognising a CSV layout does not imply support for every model from that manufacturer.

PowerContract does not acquire waveforms, control instruments or display traces. It evaluates files exported by a scope or another acquisition tool.

INSTALL

Install PowerContract.

PowerContract is published under Sidelobe with an MIT license. It requires Python 3.11 or later.

$ python -m pip install powercontract
$ powercontract --version