xarray icon indicating copy to clipboard operation
xarray copied to clipboard

`open_datatree` not accepting backend-specific keyword arguments

Open kmnhan opened this issue 1 year ago • 1 comments

What happened?

Following #9014, open_datatree no longer passes on backend-specific keyword arguments. For instance, I have a few HDF5 datasets with unassociated dimension scales, and those require phony_dims='sort' or phony_dims='access' to be opened. Now, the keyword arguments are passed onto StoreBackendEntrypoint.open_dataset instead of H5netcdfBackendEntrypoint.open_dataset which results in a TypeError.

What did you expect to happen?

open_datatree methods of backends should pass backend-specific keyword arguments to H5NetCDFStore.open or the like.

Minimal Complete Verifiable Example

import h5py
from xarray.backends.api import open_datatree

file = h5py.File("./test.h5", "w")
data = file.create_dataset("dataset", shape=(10, 20, 30), dtype="float32")
file.close()

try:
    open_datatree("./test.h5")  # this is normal
except ValueError as e:
    print(e, "\n")
# variable '/dataset' has no dimension scale associated with axis 0.
# Use phony_dims='sort' for sorted naming or phony_dims='access' for per access naming.

try:
    open_datatree("./test.h5", phony_dims="sort")  # used to work, now raises TypeError
except TypeError as e:
    print(e)
# StoreBackendEntrypoint.open_dataset() got an unexpected keyword argument 'phony_dims'

MVCE confirmation

  • [x] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
  • [x] Complete example — the example is self-contained, including all data and the text of any traceback.
  • [x] Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
  • [x] New issue — a search of GitHub Issues suggests this is not a duplicate.
  • [x] Recent environment — the issue occurs with the latest version of xarray and its dependencies.

Relevant log output

No response

Anything else we need to know?

No response

Environment

INSTALLED VERSIONS

commit: None python: 3.12.4 | packaged by conda-forge | (main, Jun 17 2024, 10:13:44) [Clang 16.0.6 ] python-bits: 64 OS: Darwin OS-release: 23.5.0 machine: arm64 processor: arm byteorder: little LC_ALL: None LANG: en_US.UTF-8 LOCALE: ('en_US', 'UTF-8') libhdf5: 1.14.3 libnetcdf: None

xarray: 2024.6.0 pandas: 2.2.2 numpy: 2.0.0 scipy: None netCDF4: None pydap: None h5netcdf: 1.3.0 h5py: 3.11.0 zarr: None cftime: None nc_time_axis: None iris: None bottleneck: None dask: None distributed: None matplotlib: None cartopy: None seaborn: None numbagg: None fsspec: None cupy: None pint: None sparse: None flox: None numpy_groupies: None setuptools: 70.0.0 pip: 24.0 conda: None pytest: None mypy: None IPython: None sphinx: None None

kmnhan avatar Jun 19 '24 11:06 kmnhan

Thanks for opening your first issue here at xarray! Be sure to follow the issue template! If you have an idea for a solution, we would really welcome a Pull Request with proposed changes. See the Contributing Guide for more. It may take us a while to respond here, but we really value your contribution. Contributors like you help make xarray better. Thank you!

welcome[bot] avatar Jun 19 '24 11:06 welcome[bot]

I believed this was closed by #9199, or should have been.

flamingbear avatar Jul 25 '24 22:07 flamingbear