Skip to content

Silently ignoring user passed engine key in some cases when opening file objects #4457

Closed
@alexamici

Description

@alexamici

What happened:

When I open() a netCDF4 file and pass the file object to xr.open_dataset with engine='scipy' xarray silently ignores the value of the engine keyword and opens the file with h5netcdf. When opening an netCDF3 file with engine='h5netcdf' the scipy engine is used instead without warning.

What you expected to happen:

Silent autodetection of the engine is fine when passing engine=None, but it is very surprising when passing a value explicitly. I would have expected an exception or at least a warning.

Minimal Complete Verifiable Example:

>>> xr.open_dataset('netCDF4.nc', engine='scipy')
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
[...]
TypeError: Error: netCDF4.nc is not a valid NetCDF 3 file
            If this is a NetCDF4 file, you may need to install the
            netcdf4 library, e.g.,

            $ pip install netcdf4

>>> fp = open('netCDF4.nc')
>>> xr.open_dataset(fp, engine='scipy')
<xarray.Dataset>
Dimensions:       (line: 41587, pixel: 17751)
Coordinates:
  * line          (line) int64 0 1 2 3 4 5 ... 41582 41583 41584 41585 41586
  * pixel         (pixel) int64 0 1 2 3 4 5 ... 17746 17747 17748 17749 17750
Data variables:
    phase         (line, pixel) float32 ...
Attributes:
    Conventions:             CF-1.7
    [...]

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions