Changelog

1.5.0 (2026-04-05)

  • add web based viewer of .wfm files

  • extend wfmview to support Agilent / Keysight AG01/AG03/AG10 .bin files

  • extend wfmview to support Rohde & Schwarz RTP XML .bin files with companion .Wfm.bin payloads

  • extend wfmview to support Siglent .bin files for documented revisions V0.1, V0.2, V1.0, V2.0, V3.0, V4.0, V5.0, and V6.0

  • extend wfmview to support Rigol RG01 logic channels and DS1000Z digital traces, including scope-style stepped rendering

  • fix wfmview file-picker filters to advertise supported .trc and .isf files

  • improve browser-side LeCroy detection by scanning for WAVEDESC beyond short prefixes

  • fix timing issue for DHO800.wfm files

  • added autodetect to eliminate need to give file type

  • add Rigol MSO5000 binary waveform support

  • add Rigol MSO7000/MSO8000 binary waveform support via shared RigolWFM.mso7000_8000 adapter

  • add MSO5074-specific adapter to work around firmware bugs (wrong metadata, uint8 ADC counts, concatenated per-channel blocks)

  • treat standard MSO5074-C.bin captures as part of the MSO5000 / RG01 family, expose their logic channels, and drop support for broken concatenated MSO5074 exports

  • fix IndexError in Channel.__str__ when a channel has fewer than 5 points

  • fix wav() crash when no channels are enabled

  • fix csv() and sigrokcsv() to use the shortest channel when channels have mismatched point counts

  • fix from_url() to preserve Read_WFM_Error, Parse_WFM_Error, and Unknown_Scope_Error instead of wrapping them

  • add missing newer-family wfmconvert --model choices and aliases, including 7, 8, and 5074 as an alias for 5

  • remove unreachable len(selected) > 4 dead-code guard in wfmconvert

  • add user-visible warning when MSO5074 voltages are read (no calibration data in file)

  • warn to stderr when the model string in the file disagrees with the user-supplied scope type

  • add Rigol DHO800 and DHO1000 support for both official .bin exports and proprietary .wfm captures

  • add Kaitai Struct descriptions for DHO binary and proprietary formats

  • add Kaitai Struct descriptions and normalized adapters for Agilent / Keysight AGxx .bin files

  • add Kaitai Struct descriptions and normalized adapters for Rohde & Schwarz RTP XML .bin metadata plus companion .Wfm.bin payloads

  • add Kaitai Struct descriptions for Siglent documented .bin revisions plus browser-side generated parsers for wfmview

  • rename Kaitai schemas, generated parser modules, and browser parser assets to family-specific names, clean up schema titles / source metadata, and add generated schema tables plus scripts/ksy_to_table.py to the docs workflow

  • add RigolWFM.dho adapter logic so DHO .bin and .wfm files match Wfm and Channel interfaces

  • add RigolWFM.agilent adapter logic so Agilent / Keysight .bin files match Wfm and Channel interfaces

  • add RigolWFM.rohde_schwarz adapter logic so supported Rohde & Schwarz RTP exports match Wfm and Channel interfaces

  • add RigolWFM.siglent adapter logic so supported Siglent .bin revisions match Wfm and Channel interfaces

  • extend DHO .wfm decoding for DHO800 differences and DHO1000 multichannel captures

  • fail fast on unsupported DHO .bin buffer types instead of silently misinterpreting non-analog payloads

  • add Yokogawa .wfm support via RigolWFM.yokogawa and autodetect integration

  • add Yokogawa .hdr companion-metadata parsing for .hdr + .wvf waveform packages via RigolWFM.yokogawa_hdr

  • add legacy Tektronix LLWFM support alongside modern WFM#001/WFM#002/WFM#003 parsing

  • fix Tektronix WFM#003 parsing by reading user-view point_density fields at their correct 8-byte layout

  • reject unsupported Tektronix FastFrame, multi-curve, and unknown-version .wfm files more explicitly

  • preserve Tektronix WFID and waveform labels as trace metadata instead of reporting them as instrument models

  • improve LeCroy .trc detection by scanning for WAVEDESC beyond short SCPI / transport prefixes

  • align Agilent / Keysight parsing with vendor docs and reference readers: use x_origin, expose multi-buffer waveforms in the low-level parser, preserve segment metadata, and reject unsupported segmented or Peak Detect normalization paths

  • fix Agilent / Keysight channel timing with new InfiniiVision test coverage

  • add DS1000Z / MSO1000Z digital-trace inference, expose named logic channels through Wfm, and keep analog + digital mixed captures aligned

  • add test coverage in tests/test_dho1000.py and tests/test_dho800.py

  • add regression coverage for Agilent / Keysight, Siglent, Yokogawa, Tektronix WFM#003/LLWFM, Tektronix .isf label handling, and LeCroy SCPI-prefixed .trc files

  • add regression coverage for wfmview browser helpers, schema-table generation, Z-series logic decoding, RG01 logic, Yokogawa .hdr parsing, and new Agilent / Rohde & Schwarz fixtures

  • add smoke tests for wfmview assets plus CLI coverage for newer waveform families using checked-in and synthetic fixtures

  • run real tests and lint in GitHub Actions instead of only checking wfmconvert --version

  • scope default pytest discovery to the repository test suite and ignore vendored test trees under docs/vendors

  • expand wfmconvert --model to accept newer families and their aliases explicitly

  • add notebooks 1-DHO1000-Waveforms.ipynb and 1-DHO800-Waveforms.ipynb and include the new waveform docs in the notebook test suite

  • ignore generated parser modules in Ruff and Pylint to keep lint results focused on handwritten code

  • update README, docs index, Makefile targets, and manifest entries for the new DHO parser and documentation workflow

  • refresh README installation text, notebook examples, and generated docs to match renamed schemas, updated sources, and new sample files

  • migrate package metadata and dependencies fully into pyproject.toml

  • switch Makefile workflows to uv-based tooling and shared command wrappers

  • add consistent RM/RMR cleanup variables and remove hardcoded rm usage

  • update supported Python policy to 3.10 through 3.14 in package metadata and CI

  • remove from __future__ import annotations now that Python 3.10+ is required, and fix the resulting import-time and mypy regressions

  • update docs and lite dependency ranges, including rstcheck[toml,sphinx]

  • add JupyterLite build/serve/deploy tooling and configuration

  • modernize Read the Docs install/runtime configuration

  • improve docs configuration and project automation/help targets

  • make rcheck / html clean again, including doc-lint false positives and notebook syntax-highlighting warnings

  • fix badges and default branch references

  • improve testing structure

  • broaden README and package metadata to describe the current multi-vendor scope of the project

  • add mypy type checking: annotate all hand-written RigolWFM/ modules

  • fix wav() to use wave.Wave_write directly instead of wave.open(..., "wb")

  • extend csv() export to include digital channels

  • complete .sr / sigrok export for analog and digital waveforms

  • remove vcsv CLI action

  • add npz and mat export formats

  • rename and simplify the notebook docs

1.0.0 (2023-10-06)

  • fix wfmconvert –version so there is no error

  • remove all lfs files in dist. they’re expensive

0.9.9 (2023-10-05)

  • don’t include large git lfs files!

0.9.8 (2023-10-05)

  • no new features, just updating packaging

  • add conda-forge support

  • add zenodo DOI citation support

  • add github action workflows

  • add tests for wfmconvert

  • improve readme

v0.9.7 (2023-08-18)

  • include DS1102D test files (Karl Palsson)

  • bump python versions to 3.8 through 3.11

  • add notebook for 1000D files

  • remove unnecessary .rst testing

v0.9.6 (2022-08-26)

  • fix DS2072 CH2 wide memory fixes (James Pitts)

  • get html docs building under nbsphinx again

v0.9.5 (2022-03-17)

  • use __version__ in __init__.py

v0.9.4 (2021-12-12)

  • improve handling of 1000C files

  • add .readthedocs.yaml so docs build correctly

v0.9.3 (2021-11-24)

  • processing of E type files is less restrictive

  • use nbsphinx 0.8.5 so docs build

  • improve docs

v0.9.2 (2021-08-06)

  • create pure python packaging

  • include wheel file

  • package as python3 only

v0.9.1 (2021-07-28)

  • fix for 1204B files with 0x4000 bytes

v0.9.0 (2021-07-25)

  • support 1000B scopes

  • automate notebook testing

  • add pypi badges

  • add flake8 testing

v0.8.1 (2021-03-21)

  • fixed swapped channels for DS1000Z files (2 channel case only)

  • advise pip install –user RigolWFM to avoid permission errors

v0.8.0 (2021-03-20)

  • significantly speed parsing of large .wfm files

  • fix bug with selection of channels in DS1000Z files

v0.7.4 (2021-03-14)

  • fix version consistency across docs and package metadata

v0.7.3 (2021-03-14)

v0.7.2 (2021-03-14)

  • fix bug with selecting channels

  • fix bug with autoscaling

  • add links to google colaboratory to documentation

  • describe parameters for a few functions

  • modify message to install RigolWFM when missing

v0.7.1 (2021-03-09)

  • add support for selecting channels

  • add autoscaling support for .wav files

  • improve help message for wfmconvert

v0.7.0 (2021-02-14)

  • add basic support for DS1000CA files

  • add new model D (untested) out of the E model list

v0.6.7 (2020-10-31)

  • add vcsv conversion (just volts, not µV or mV)

  • add support for sigrok exporting (requires sigrok-cli)

v0.6.6 (2020-10-10)

  • use probe scaling with DS1000E files

v0.6.5 (2020-08-03)

  • fix DS2000 to convert CSV files

  • add more testing to tox

v0.6.4 (2020-05-16)

  • fix DS4000 to work with two channels

  • fix DS2000 to work with recent DS2072A firmware

  • add DS2072A test files to repository

v0.6.3 (2020-03-29)

v0.6.2 (2020-03-27)

  • trying to get console_scripts right

v0.6.1 (2020-03-27)

  • use portable install for console_scripts

v0.6.0 (2020-03-26)

  • add support for DS2000

  • add command-line utility wfmconvert

  • improve support for DS1000Z

  • fix DS4000

  • add .csv export

  • add .wav export

v0.4.1 (2020-03-01)

  • fix requirement for enum by just requiring python > 3.4

v0.4.0 (2020-03-01)

  • huge change. Now using kaitai struct exclusively

  • added support for 1000C, 4000, 6000 .wfm formats

  • much more testing

  • many api changes.

v0.3.0 (2020-01-12)

  • fix exception handling, support parsing URLs

v0.2.0 (2020-01-09)

  • improve README and package long description metadata

v0.1.3 (2020-01-09)

  • fix package classifiers

v0.1.2 (2020-01-09)

  • fix URL and other infelicities

v0.1.1 (2020-01-09)

  • add missing files needed for release

v0.1.0 (2020-01-09)

  • initial commit