Describe the bug
In xrspatial/geotiff/_vrt.py, the per-source (non-chunked) VRT read path forwards the wrong flag:
allow_invalid_nodata=allow_rotated,
It should forward allow_invalid_nodata:
allow_invalid_nodata=allow_invalid_nodata,
The chunked read path (_vrt_chunk_read) already forwards both flags correctly. Only the per-source path is affected.
Effect
A read_vrt(..., allow_invalid_nodata=True, allow_rotated=False) call does not actually relax nodata validation on the non-chunked path (it gets allow_rotated's value instead), and a caller passing allow_rotated=True would unintentionally also relax nodata validation there. Per-source metadata rejections (e.g. an invalid integer nodata sentinel) then surface as false holes under missing_sources='warn'.
Origin
Introduced by #2676 when forwarding the opt-in flags to VRT per-source reads for #2672. The (now closed) duplicate #2671 had this line correct.
Fix
Correct the one line and add a regression test asserting allow_invalid_nodata reaches the per-source read independently of allow_rotated.
Describe the bug
In
xrspatial/geotiff/_vrt.py, the per-source (non-chunked) VRT read path forwards the wrong flag:It should forward
allow_invalid_nodata:The chunked read path (
_vrt_chunk_read) already forwards both flags correctly. Only the per-source path is affected.Effect
A
read_vrt(..., allow_invalid_nodata=True, allow_rotated=False)call does not actually relax nodata validation on the non-chunked path (it getsallow_rotated's value instead), and a caller passingallow_rotated=Truewould unintentionally also relax nodata validation there. Per-source metadata rejections (e.g. an invalid integer nodata sentinel) then surface as false holes undermissing_sources='warn'.Origin
Introduced by #2676 when forwarding the opt-in flags to VRT per-source reads for #2672. The (now closed) duplicate #2671 had this line correct.
Fix
Correct the one line and add a regression test asserting
allow_invalid_nodatareaches the per-source read independently ofallow_rotated.