Skip to content
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fa37d31
prototype fsmap solution
DirkEilander Aug 19, 2026
0194b93
implement fs usage for rasterio driver
DirkEilander Aug 19, 2026
0782205
Update zarr reading logic to use fsspec.FSMap for s3 private bucket a…
LuukBlom Sep 3, 2026
fbc2748
remove redundant contextmanager
LuukBlom Sep 3, 2026
db929b6
prepend pixi run to aws commands
LuukBlom Sep 3, 2026
13b3541
re-order steps so pixi is available
LuukBlom Sep 3, 2026
b66e7ce
Merge branch 'main' into fix/permission_private_bucket
LuukBlom Sep 3, 2026
defc35b
add boto3 import / HAS_BOTO3 to _compat and handle pytest skip cases
LuukBlom Sep 3, 2026
f324945
add skip marker that uses the _compat variables
LuukBlom Sep 3, 2026
6b750d3
refactor: update FSMap handling and add local filesystem check in ras…
LuukBlom Sep 3, 2026
bd0b454
add create aws profile step to sonar workflow
LuukBlom Sep 3, 2026
7abd659
add `endpoint_url` to aws config
LuukBlom Sep 3, 2026
0268d22
extract duplicated xarray reading logic from drivers into a function …
LuukBlom Sep 3, 2026
8278851
make all readers accept a filesystem as an arg to read from remote so…
LuukBlom Sep 22, 2026
05fdc90
add docs for reading from private buckets.
LuukBlom Sep 24, 2026
4bc38ea
Merge branch 'main' into fix/permission_private_bucket
LuukBlom Sep 24, 2026
57579ef
fix typo in changelog
LuukBlom Sep 24, 2026
0458702
add skipif for h5netcdf and h5py
LuukBlom Sep 24, 2026
63a147b
add the skip if to the relevant tests
LuukBlom Sep 24, 2026
8dbed36
fix refs in docs
LuukBlom Sep 24, 2026
cfe406b
implement review comments
LuukBlom Sep 28, 2026
30827b7
Merge branch 'main' into fix/permission_private_bucket
LuukBlom Sep 28, 2026
81b7e49
update verify credentials section by pointing users to the docs of aws.
LuukBlom Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/sonar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ jobs:
- uses: prefix-dev/setup-pixi@v0.10.2
with:
pixi-version: "v0.76.0"
- name: Create aws profile for minio access
env:
ACCESS_KEY: ${{ secrets.MINIO_ACCESS_KEY_READONLY_HYDROMT_DATA }}
SECRET_KEY: ${{ secrets.MINIO_SECRET_KEY_READONLY_HYDROMT_DATA }}
run: |
mkdir -p ~/.aws
pixi run aws configure set aws_access_key_id "$ACCESS_KEY" --profile hydromt-data
pixi run aws configure set aws_secret_access_key "$SECRET_KEY" --profile hydromt-data
pixi run aws configure set region eu-west-1 --profile hydromt-data
pixi run aws configure set endpoint_url https://s3.deltares.nl --profile hydromt-data
- name: Test
run: pixi run --locked test-cov
- name: SonarQube Scan
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@ jobs:
with:
pixi-version: "v0.76.0"
environments: ${{ matrix.dependencies }}-py${{ matrix.python-version }}
- name: Create aws profile for minio access
env:
ACCESS_KEY: ${{ secrets.MINIO_ACCESS_KEY_READONLY_HYDROMT_DATA }}
SECRET_KEY: ${{ secrets.MINIO_SECRET_KEY_READONLY_HYDROMT_DATA }}
run: |
mkdir -p ~/.aws
pixi run aws configure set aws_access_key_id "$ACCESS_KEY" --profile hydromt-data
pixi run aws configure set aws_secret_access_key "$SECRET_KEY" --profile hydromt-data
pixi run aws configure set region eu-west-1 --profile hydromt-data
pixi run aws configure set endpoint_url https://s3.deltares.nl --profile hydromt-data
- name: Test
env:
PYTEST_ADDOPTS: ${{ matrix.dependencies == 'low' && '-p no:warnings' || '' }}
Expand Down
10 changes: 10 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,24 @@ Unreleased

New
---
- ``readers.open_vector``, ``readers.open_vector_from_table``, ``readers.open_timeseries_from_table``, ``readers.open_mfcsv``, ``readers.open_zarrs``, ``readers.open_mfdataset`` and ``readers.open_raster_from_tindex`` now accept an fsspec ``filesystem``, so any reader can read from a remote store. ``filesystem=None`` means the local filesystem and passes paths straight through to the underlying library.

Changed
-------
- The readers take an fsspec ``AbstractFileSystem`` plus plain string URIs; the driver resolves user-set ``storage_options`` once, via ``FSSpecFileSystem.get_fs(storage_options)``. ``FSSpecFileSystem.get_fsmap`` and ``FSSpecFileSystem.open_if_remote`` are removed: the readers now decide which form (path, handle, bytes or mapper) their library needs. For a local filesystem, paths and ``storage_options`` are passed straight through to the underlying library as before.
- ``PyogrioDriver`` reads through ``readers.open_vector`` instead of duplicating the pyogrio logic, and now uses the catalog ``crs`` metadata for sources without a native CRS.
- Local-only readers give a clear error for remote paths: ``readers.open_nc``, ``readers.open_geodataset`` and ``GeoDatasetVectorDriver`` now raise "does not support remote paths" instead of a "file not found".
- Reading a multi-file vector format (e.g. ESRI Shapefile) from a remote filesystem now raises a clear error explaining that the sidecar files cannot be read, instead of an opaque GDAL "not recognized as being in a supported file format".
- Credential errors raised by the storage backends (e.g. missing or expired AWS or Azure credentials) are normalized to ``PermissionError`` by all readers, alongside the existing 401/403 handling.

Fixed
-----
- Fractions not more than 1 in ``raster.rasterize_geometry`` output.
- Format flag for cli command ``check`` now correctly accepts strings instead of enum members.
- ``readers.open_raster`` no longer returns a DataArray backed by a closed file handle when reading from a remote filesystem. The handle stays open for as long as the DataArray lives and is closed when the DataArray - or the Dataset returned by ``readers.open_mfraster`` and ``readers.open_raster_from_tindex`` - is closed. Remote rasters are still read lazily.
- ``readers.open_mfraster`` now closes the file handles it already opened when reading a later file fails, instead of leaking them.
- ``readers.open_raster_from_tindex`` no longer silently drops tiles whose location in the tile index is an absolute path, and reads the tile index itself through the given filesystem.


v1.4.1 (2026-08-06)
===================
Expand Down
Loading
Loading