History#
0.12.0 (2026-04-21)#
MNT: Unpin xarray, require
xarray >= 2026.4.0inrequirements.txt,environment.yml,ci/unittests.yml, andci/notebooktests.ymlby @aladinorMNT: Clarify contributor, team-member, and maintainer roles in the contributing guide, including the pathway to greater project involvement (GH 341) by @kmuehlbauer, (PR 354) by @syedhamidali
FIX:
open_nexradlevel2_datatreekeeps sweeps with interior sweep-index gaps — derive sweep names from actual indices innex.datainstead ofrange(len(...))so upstream-dropped interior cuts (e.g.[0..9, 11]) no longer raiseKeyError(GH 361, PR 362) by @aladinorADD:
open_cfradial2_datatreereader with grouped CfRadial2 compatibility normalization for common FM301/CfRadial2 naming differences (GH 93, GH 287), (PR 349) by @syedhamidaliENH: Move station coordinates (
latitude,longitude,altitude) to root node as coordinates for DataTree coordinate inheritance (GH 331, PR 333) by @aladinorENH: Add
optional_groupsparameter (defaultFalse) to allopen_*_datatree()functions to control inclusion of/radar_parameters,/georeferencing_correction, and/radar_calibrationsubgroups (GH 331, PR 333) by @aladinorENH: Skip redundant station coordinate reads for subsequent sweeps in DataTree by passing
site_as_coords=Falseand extracting shared_apply_site_as_coordshelper (GH 334, PR 337) by @aladinorADD: Support list/tuple of chunk files (bytes, file-like, or paths) as input to
open_nexradlevel2_datatreefor streaming NEXRAD Level 2 data from S3 chunk buckets (PR 332) by @aladinorADD:
incomplete_sweepparameter ("drop"/"pad") toopen_nexradlevel2_datatreefor handling incomplete sweeps in partial volume data (PR 332) by @aladinorADD: Notebook example for streaming NEXRAD Level 2 chunks from S3 (
nexrad_read_chunks.ipynb) (PR 332) by @aladinorADD: Comprehensive test suite for chunk list-input and incomplete sweep handling (PR 332) by @aladinor
ENH: Expose NEXRAD ICD scan metadata (AVSET/SAILS/MRLE/MPDA/BASE TILT flags, VCP sequencing, per-sweep waveform data) as FM301-compliant user-defined attributes (GH 338, PR 339) by @aladinor
FIX: Set indexes and wrap variables in CopyOnWriteArray for ODIM and GAMIC backends, fixes pickle error for
BufferedReader(GH 189) by @Ockenfuss, (PR 345) by @kmuehlbauerFIX: Allow passing
inheritparameter toapply_to_sweeps/map_over_sweepsto control coordinate inheritance from root node (GH 343, PR 344) by @aladinorFIX: Use
open-radar-datafixture as fallback fornexrad_read_chunks.ipynbnotebook, replacing dependency on ephemeral S3 chunk data (GH 351, PR 352) by @aladinorMNT: Pin
open-radar-data>=0.6.0for NEXRAD chunk test data (PR 352) by @aladinorMNT: Transform ipynb notebooks to myst markdown notebooks (GH 342, PR 348) by @kmuehlbauer
DOC: Link WMO Manual on Codes in README.md (GH 308, PR 353 ) @kmuehlbauer
0.11.1 (2026-02-03)#
MNT: Pre-commit update + lint (PR 325) by @kmuehlbauer
FIX: Use
dtypewith fallback in odim export (PR 324) by @katelbachFIX: Prevent azimuth-folding for RHI for gamic reader (PR 326) by @kmuehlbauer
0.11.0 (2026-01-12)#
ENH: get radar coordinates with given reference system (GH 243) (PR 300) by @egouden
ENH: Disable fill value in rainbow reader (GH 103) (PR 290) by @egouden
ADD: read nyquist_velocity in ODIM and GAMIC HDF5 files (PR 291) by @katelbach
MNT: update and harden CI, add zizmor to precommit, add dependabot (PR 294) by @kmuehlbauer
FIX: Return float32 for float types (keep other dtypes) and remove erroneous “units” from time attrs for hpl reader. (GH 296) (PR 297) by @kmuehlbauer
MNT: Fix Windows errors in file handling (PR 295) by @egouden
MNT: do not overwrite Dataset for Dataset.update (PR 302) by @kmuehlbauer
FIX: Properly handle zero and NaN values during IRIS/Sigmet KDP decode. (PR 301) by @billvieux
FIX: NEXRAD Level2 backend compatibility with older files and VCP-0 (GH 311, PR 312) by @aladinor
FIX: Add explicit
compat="no_conflicts",toxr.merge()in_get_subgroupto silence xarray FutureWarning (GH 313, PR 314) by @aladinor.MNT: create individual notebook tests with pytest_generate_tests and use tmp_path-fixture (PR 316) by @kmuehlbauer
FIX: Ensure backend closers are available (PR 318) by @kmuehlbauer
ENH: Add
combine_sweepsfunction to stack sweeps into a single radar volume with optional time and angle filtering (PR 307) by @egoudenFIX: Use time-dimension to stack/unstack CfRadial1 data for variable number of gates, properly handle duplicates (GH 317), (PR 320) by @kmuehlbauer
0.10.0 (2025-07-11)#
FIX: Use fixture for making temp file to avoid permission issue on Windows
ENH: Supporting for streaming NEXRAD Level 2 data via file-like objects and byte streams. (GH 265) (PR 280) by @aladinor
ADD: function to select dataset variables in sweep (GH 104) (PR 254) by @egouden
ADD: function to get dataset variables in sweep
ADD: function to get metadata variables in sweep
FIX: typo in accessors module: Dataarray -> Dataset
FIX: Update missing deps for virtualenv environments via “requirements_dev.txt”. (GH 253) (PR 274) by @Steve-Roderick.
FIX: Prevent literal timedelta decoding for new xarray versions, fix tests, update pinnings (PR 278) by @kmuehlbauer.
MNT: Package and Documentation cleanup (GH 273), PR 284) by @kmuehlbauer.
ADD: Support Universal Format (UF) (GH 275) (PR 276) by @kmuehlbauer.
ADD: NDPointIndex Notebook example (PR 276) by @kmuehlbauer.
0.9.0 (2025-02-07)#
ENH: Adding test to
open_datatreefunction for all backends. Adding “scan_name” to nexradlevel2 datatree attributes (PR 238) by @aladinorFIX: Improving performance of
open_nexradlevel2_datatreefunction and adding tests forsweepparameter. (GH 239) (PR 240) by @aladinorFIX: Keeping attributes at each variable when using
open_nexradlevel2_datatree. (GH 241) (PR 242) by @aladinorFIX: Correctly read transition rays in RHI scans (GH 247) (PR 250) by @rcjackson
FIX: Correctly open NEXRAD files when split cut mode is enable ({issue}
245) (PR 246) by @aladinorADD: Example Notebook for assigning geocoords. (GH 243) and (PR 251) by @syedhamidali
FIX: DataTree reader now works with sweeps containing different variables (PR 252) by @egouden.
FIX: Correct retrieval of intermediate records in nexrad level2 reader (GH 259) (PR 261) by @kmuehlbauer.
FIX: Test for magic number BZhX1AY&SY (where X is any number between 0..9) when retrieving BZ2 record indices in nexrad level2 reader (GH 264) (PR 266) by @kmuehlbauer.
ENH: Add message type 1 decoding to nexrad level 2 reader (GH 256) (PR 267) by @kmuehlbauer.
ENH: Introduce file locks for nexrad level2 and iris backend (GH 207) (PR 268) by @kmuehlbauer.
0.8.0 (2024-11-04)#
This is the first version which uses datatree directly from xarray. Thus, xarray is pinned to version >= 2024.10.0.
FIX: Convert volumes to_cfradial1 containing sweeps with different range and azimuth shapes, raise for different range bin sizes (GH 233) by @syedhamidali, (PR 234) by @kmuehlbauer.
FIX: Correctly handle 8bit/16bit, big-endian/little-endian in nexrad reader (PHI and ZDR) (GH 230) by @syedhamidali, (PR 231) by @kmuehlbauer.
ENH: Refactoring all xradar backends to use
from_dictdatatree constructor. Test for_get_required_root,_get_subgroup, and_get_radar_calibrationwere also added (PR 221) by @aladinorENH: Added pytests to the missing functions in the
test_xradarandtest_irisin order to increase codecov in (PR 228) by @syedhamidali.ENH: Updated Readme (PR 226) by @syedhamidali.
ADD: Added new module
transformfor transforming CF1 data to CF2 and vice versa (PR 224) by @syedhamidali.Use DataTree from xarray and add xarray nightly run (PR 213, PR 214, PR 215, PR 218) by @kmuehlbauer.
ADD: Added new accessor
map_over_sweepsfor volume operations on DataTrees and a matching decorator (PR 203) by @syedhamidali.
0.7.0 (2024-10-26)#
This is the last version which uses datatree from xarray-contrib/datatree. Thus, xarray is pinned to version 2024.9.0.
ADD: Added
apply_to_sweepsfunction for applying custom operations to all sweeps in aDataTreeradar volume Implemented by @syedhamidali, (PR 202).ADD: Metek Micro Rain Radar 2 reader by @rcjackson, (PR 200) by @rcjackson.
0.6.5 (2024-09-20)#
FIX: Azimuth dimension now labelled correctly for Halo Photonics data (PR 206) by @rcjackson.
FIX: do not apply scale/offset in datamet reader, leave it to xarray instead (PR 209) by @kmuehlbauer.
0.6.4 (2024-08-30)#
FIX: Notebooks are now conforming to ruff’s style checks by @rcjackson, (PR 199) by @rcjackson.
FIX: use dict.get() to retrieve attribute key and return “None” if not available, (PR 200) by @kmuehlbauer
0.6.3 (2024-08-13)#
FIX: use rstart in meter for ODIM_H5/V2_4 (GH 196) by @kmuehlbauer, (PR 197) by @kmuehlbauer.
0.6.2 (2024-08-12)#
0.6.1 (2024-08-07)#
MNT: minimize CI (PR 192) by @kmuehlbauer.
FIX: properly read CfRadial1 n_points files (GH 188) by @aladinor, (PR 190) by @kmuehlbauer.
0.6.0 (2024-08-05)#
FIX: Nexrad level2 time offset of 1 day, skip reading missing elevations, introduce new radial_status of 5 (GH 180) by @ghiggi, (PR 180) by @kmuehlbauer.
ADD: Reader for Halo Photonics Doppler lidar data by @rcjackson
0.5.1 (2024-07-05)#
ENH: Adding global variables and attributes to iris datatree (PR 166) by @aladinor.
FIX: Set fillvalue before applying scale/offset when exporting to odim (GH 122) by @pavlikp, (PR 173) by @kmuehlbauer.
FIX: Fix use of ruff, CI and numpy2 (PR 177) by @mgrover1 and @kmuehlbauer.
0.5.0 (2024-03-28)#
MNT: Update GitHub actions, address DeprecationWarnings (PR 153) by @kmuehlbauer.
MNT: restructure odim.py/gamic.py, add test_odim.py/test_gamic.py (PR 154) by @kmuehlbauer.
MNT: use CODECOV token (PR 155) by @kmuehlbauer.
MNT: fix path for notebook coverage (PR 157) by @kmuehlbauer.
ADD: NEXRAD Level2 structured reader (PR 158) by @kmuehlbauer and @mgrover1.
FIX: Add the proper elevation angle to fixed angle (PR 162) by @mgrover1.
ENH: Add a utility for finding sweep number keys (PR 167) by @mgrover1.
0.4.3 (2024-02-24)#
MNT: address black style changes, update pre-commit-config.yaml (PR 152) by @kmuehlbauer.
FIX: use len(unique) to estimate unique entry for odim range (PR 151) by @martinpaule.
0.4.2 (2023-11-02)#
FIX: Fix handling of sweep_mode attributes (PR 143) by @mgrover1
FIX: explicitely check for “False” in get_crs() PR 142) by @kmuehlbauer.
0.4.1 (2023-10-26)#
FIX: Add history to cfradial1 output, and fix minor error in CfRadial1_Export.ipynb notebook(PR 132) by @syedhamidali
FIX: fix readthedocs build for python 3.12 (PR 140) by @kmuehlbauer.
FIX: align coordinates in backends, pin python >3.9,<=3.12 in environment.yml (PR 139) by @kmuehlbauer
FIX: prevent integer overflow when calculating azimuth in FURUNO scn files (GH 137) by @giacant , (PR 138) by @kmuehlbauer
0.4.0 (2023-09-27)#
ENH: Add cfradial1 exporter (GH 124) by @syedhamidali, (PR 126) by @syedhamidali
FIX: use datastore._group instead of variable[“sweep_number”] (GH 121) by @aladinor , (PR 123) by @kmuehlbauer
MIN: use “crs_wkt” instead of deprecated “spatial_ref” when adding CRS (PR 127) by @kmuehlbauer
FIX: always read nodata and undetect attributes from ODIM file (PR 125) by @egouden
MIN: use
cmweathercolormaps in xradar (PR 128) by @kmuehlbauer.
0.3.0 (2023-07-11)#
ENH: Add new examples using radar data on AWS s3 bucket (PR 102) by @aladinor
FIX: Correct DB_DBTE8/DB_DBZE8 and DB_DBTE16/DB_DBZE16 decoding for iris-backend (PR 110) by @kmuehlbauer
FIX: Cast boolean string to int in rainbow dictionary (PR 113) by @egouden
MNT: switch to mamba-org/setup-micromamba, split CI tests (GH 115), (PR 116) by @kmuehlbauer
FIX: time interpolation (PR 117) by @kmuehlbauer
FIX: robust
angle_resretrieval inextract_angle_parameters(GH 112), (PR 118) by @kmuehlbauerFIX: robust radar identifier in
to_odim()(PR 120) by @kmuehlbauer
0.2.0 (2023-03-24)#
ENH: switch to add optional how attributes in ODIM format writer (PR 97) by @egouden
FIX: add keyword argument for mandatory source attribute in ODIM format writer (PR 96) by @egouden
FIX: check for dim0 if not given, only swap_dims if needed (GH 92), (PR 94) by @kmuehlbauer
FIX+ENH: need array copy before overwriting and make compression available in to_odim (PR 95) by @kmuehlbauer
0.1.0 (2023-02-23)#
Add an example on reading multiple sweeps into a single object (PR 69) by @mgrover1
ENH: add spatial_ref with pyproj when georeferencing, add/adapt methods/tests (GH 38), (PR 87) by @kmuehlbauer
Docs/docstring updates, PULL_REQUEST_TEMPLATE.md (PR 89) by @kmuehlbauer
Finalize release 0.1.0, add testpypi upload on push to main (PR 91) by @kmuehlbauer
0.0.13 (2023-02-09)#
FIX: only skip setting cf-attributes if both gain and offset are unused (PR 85) by @kmuehlbauer
0.0.12 (2023-02-09)#
ENH: add IRIS
DB_VELCdecoding and tests (GH 78), (PR 83) by @kmuehlbauerFIX: furuno backend inconsistencies (GH 77), (PR 82) by @kmuehlbauer
FIX: ODIM_H5 backend inconsistencies (GH 80), (PR 81) by @kmuehlbauer
0.0.11 (2023-02-06)#
fix
_Undetect/_FillValuein odim writer (PR 71) by @kmuehlbauerport more backend tests from wradlib (PR 73) by @kmuehlbauer
0.0.10 (2023-02-01)#
add WRN110 scn format to Furuno reader (PR 65) by @kmuehlbauer
Adapt to new build process, pyproject.toml only, use
rufffor linting (PR 67) by @kmuehlbauer
0.0.9 (2022-12-11)#
add ODIM_H5 exporter (PR 39) by @kmuehlbauer
fetch radar data from open-radar-data (PR 44) by @kmuehlbauer
align readers with CfRadial2, add CfRadial2 exporter (PR 45), (PR 49), (PR 53), (PR 56), (PR 57) and (PR 58) by @kmuehlbauer
add georeference accessor, update examples (PR 60), (PR 61) by @mgrover1
refactored and partly reimplemented angle reindexing (GH 55), (PR 62) by @kmuehlbauer
0.0.8 (2022-09-28)#
add GAMIC HDF5 importer (PR 29) by @kmuehlbauer
add Furuno SCN/SCNX importer (PR 30) by @kmuehlbauer
add Rainbow5 importer (PR 32) by @kmuehlbauer
add Iris/Sigmet importer (PR 33) by @kmuehlbauer
0.0.7 (2022-09-21)#
Fix version on RTD (PR 23) by @kmuehlbauer
Add minimal documentation for Datamodel (PR 24) by @kmuehlbauer
0.0.6 (2022-09-19)#
Improve installation and contribution guide, update README.md with more badges, add version and date of release to docs, update install process (PR 19) by @kmuehlbauer
Add minimal documentation for CfRadial1 and ODIM_H5 importers (PR 20) by @kmuehlbauer
Add accessors.py submodule, add accessors showcase (PR 21) by @kmuehlbauer
0.0.5 (2022-09-14)#
Data Model, CfRadial1 Backend (PR 13) by @kmuehlbauer
ODIM_H5 Backend (PR 14) by @kmuehlbauer
0.0.4 (2022-09-01)#
Setting up CI workflow and build, @mgrover1 and @kmuehlbauer
0.0.1 (2022-09-01)#
First release on PyPI.