Changelog
All notable changes to pyadps are documented in this file. The format is based on
Keep a Changelog, and version numbers follow
Semantic Versioning.
[Unreleased]
[1.0.1] - 2026-07-17
Fixed
Critical: the Streamlit app would crash (server segfault, not a normal Python exception) on the first file upload for anyone installing via
pip install pyadps.pyarrowwas never a direct dependency — it came in transitively throughstreamlit’s unboundedpyarrow >= 7.0constraint, so a fresh install resolved the newest release (25.0.0), which is incompatible with the pinnednumpy~=1.26.4insidepyarrow’s pandas-to-Arrow conversion (used internally byst.dataframe()). Fixed by declaringpyarrow = "~=17.0"explicitly. Existingdev-branch checkouts with an already-installed compatiblepyarrowwere never affected, which is why this didn’t surface in local testing.
[1.0.0] - 2026-07-17
Added
New
binary_readermodule withxarray.Datasetoutputxarray accessors for domain-specific operations (
ds.fixed_leader,ds.variable_leader, …)CF Convention compliant variable attributes
Comprehensive user documentation (Read the Docs)
Selectable export components (velocity, echo intensity, correlation, percent good) on the Write File page, replacing the earlier velocity-only/full-dataset choice
Short (u, v, w) velocity variable naming option alongside the CF-style long names
Processing pipeline flowchart on the Streamlit home page and in the docs, showing the six-step pipeline plus the decision logic within Time Diagnostics, Sensor Health, Signal Quality, and Profile Operations
“Background” section (motivation, deployment context, current coordinate-system limitation) on the README, Streamlit home page, and docs front page
“Processing Guidelines” section on the Web Application docs page, with per-page tips on what to check at each step
Changed
Replaced the
ReadFileclass with a function-based API (pyadps.read())Migrated from custom data structures to
xarray.DatasetthroughoutImproved error handling with an
ErrorCodeenumThree-beam mode in the Signal Quality QC pipeline is now scoped to the Percent Good check only; it previously also appeared on Correlation, Echo Intensity, and False Target, where it was either non-functional or not reliably grounded on ensemble-averaged data
Renamed the installed console scripts for a consistent, collision-resistant naming scheme:
run-pyadps→pyadps-gui,run-auto→pyadps-auto,run-cat→pyadps-cat(new; combines multiple ADCP binary files)
Fixed
Documentation examples calling
ds.header.*right after a plainpyadps.read()call, which silently misreports file status sinceinclude_headerdefaults toFalse(installation.md,io/accessors.md,io/index.md)Sample
config.iniinprocessing/config.mdused incorrect key names in the[QCTest],[ProfileTest], and[VelocityTest]sections that don’t matchProcessingConfig.from_ini()— a hand-edited file following the old example would have had those settings silently ignoredProfileOperationRunner.regrid()documentation listed nonexistent parameters and the wrong default interpolation methodpd0_parsererror code 5 documented under the wrong name (WRONG_RDIFILE_TYPEinstead ofWRONG_ADCPFILE_TYPE)Write File page documentation describing the pre-redesign Export Data tab
pyadps-autoconsole script pointed at a module that no longer existed and crashed immediately on use; it now has a working CLITime Diagnostics’ “Fill Time Gaps” (forward-fill) could silently leave gaps as
NaNinstead of filling them when the optionalbottleneckpackage wasn’t installed; it’s now a declared dependency
Deprecated
pyadps.ReadFile()— usepyadps.read()instead
Migration Guide
See the binary_reader documentation for migration instructions from v0.3.3.
[0.3.3]
Initial public release
Basic RDI file reading with the
ReadFileclassStreamlit web interface
Version Numbering
pyadps follows Semantic Versioning:
MAJOR: Incompatible API changes
MINOR: New functionality (backward compatible)
PATCH: Bug fixes (backward compatible)