arrayprobe-soda2-enhancements
Opt-in corrections for findings against arrayprobe_soda2 (NCAR SODA-2's Python port) --
never part of the faithful port itself. The SODA-2 counterpart of enhancements_uiops/
(arrayprobe-uiops-enhancements, for UIOOPS): same registry mechanism, same one-way dependency
(this package imports arrayprobe_soda2, never the reverse), same opt-in convention.
SODA-2 and UIOOPS are separate lineages with separate licences
(SODA-2 is BSD-3, UCAR 2016) and separate maintainers, so this is its own distribution rather
than a subpackage of arrayprobe_enhancements (the import name of
arrayprobe-uiops-enhancements) -- see enhancements_soda2/tests/test_lineage_isolation.py.
To use it:
python -m pip install arrayprobe-soda2-enhancements
Applying the corrections to a run. Every correction is opt-in -- name it true in the
config's [enhancements] table -- except the five in registry.PROTECTIVE, the corrections
for data-destroying upstream defects (no_stuck_diode_fix, last_buffer_index_fix,
same_time_buffer_fix, pbp_rejectionflag_ubyte, dilation_clamp_fix). SODA-2 has written no
archived product for any probe, so arrayprobe soda2 run applies those by default; name one false, or pass --protective off, to opt out. The .pbp.call sidecar
records the protective mode and set. Each module's reason: BACKLOG_STATUS.md.
from arrayprobe_soda2.process_2d import soda2_process_2d
from arrayprobe_soda2_enhancements.registry import PROTECTIVE, apply, load_all, resolve
load_all() # registration is an import side effect
with apply(resolve({"double_pi_fix": True}, protective=PROTECTIVE)) as record:
data = soda2_process_2d(op)
record["applied"], record["skipped"] # what reached the driver, and what did not
apply substitutes corrections at named bindings the port exposes in
arrayprobe_soda2.enhancement_hooks (the port never imports this package), and restores them
on exit. 14 of the 19 corrections reach the driver this way; the other five, and why, are listed
in BACKLOG_STATUS.md. With every correction OFF the run is byte-identical to the port.
Which findings ship here and why:
BACKLOG_STATUS.md. Corrections not shipped, each with what unblocks it: docs/DEFERRED.md.
Per-module design notes: docs/CORRECTIONS.md.
From a clone
Contributors working from a checkout of the repository install it into the root package's existing venv instead (a build-convenience choice, not a boundary one):
# Linux / macOS: .venv/bin/python in place of .venv/Scripts/python.exe
.venv/Scripts/python.exe -m pip install -e enhancements_soda2
cd enhancements_soda2
../.venv/Scripts/python.exe -m unittest discover -s tests -p "test_*.py"
SODA-2 is cited in the form its author, Aaron Bansemer, provided:
Aaron Bansemer. (2026). abansemer/soda2: v2.26.0 (Version v2.26.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.18331418
Metadata
Release files for arrayprobe-soda2-enhancements 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| arrayprobe_soda2_enhancements-0.1.0.tar.gz | 89.8 kB | With provenance | Details for arrayprobe_soda2_enhancements-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| arrayprobe_soda2_enhancements-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for arrayprobe_soda2_enhancements-0.1.0-py3-none-any.whl |
Total release size: 153.1 kB
Release files / arrayprobe_soda2_enhancements-0.1.0.tar.gz
| Download URL | arrayprobe_soda2_enhancements-0.1.0.tar.gz |
|---|---|
| Size | 89.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
654429c43c95399feb2acb87549b35986fbc07818541109fee9c4819686c83d3
|
|
BLAKE2b-256 checksum How to use checksums |
d330ccbc60b8dfec157e2c50e96abd6cef72b410a65e8c972a774af9c018259f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logRelease files / arrayprobe_soda2_enhancements-0.1.0-py3-none-any.whl
| Download URL | arrayprobe_soda2_enhancements-0.1.0-py3-none-any.whl |
|---|---|
| Size | 63.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aea6a4cbe90d3554c987d8b24297f99b4b10a5c5cd11ddc735951f1d62509c37
|
|
BLAKE2b-256 checksum How to use checksums |
8475c4eda9b702c409ae24f71ca97b88be5907ff4691dc81a5282760ba2eca13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logSecurity for arrayprobe-soda2-enhancements 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for arrayprobe_soda2_enhancements-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.