Skip to content

cf.read(opendapUrl) isnt recognized as NetCDF #948

@drf5n

Description

@drf5n

To report a bug, please provide:

  • A description of the issue with, if possible,

The issue #699 test case does not appear to work with cf.version=="3.20.0":

x = cf.read('https://data.pmel.noaa.gov/aclim/thredds/dodsC/B10K-K20_Level2_CORECFS_integrated_collection.nc')
x

gives:

---------------------------------------------------------------------------
DatasetTypeError                          Traceback (most recent call last)
Cell In[38], line 1
----> 1 x = cf.read('https://data.pmel.noaa.gov/aclim/thredds/dodsC/B10K-K20_Level2_CORECFS_integrated_collection.nc')
      2 x

File [~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/decorators.py:171](http://localhost:8888/lab/tree/2025/work/shoreline/~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/decorators.py#line=170), in _manage_log_level_via_verbosity.<locals>.verbose_override_wrapper(*args, **kwargs)
    168 # After method completes, re-set any changes to log level or
    169 # enabling
    170 try:
--> 171     return method_with_verbose_kwarg(*args, **kwargs)
    172 except Exception:
    173     raise

File [~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cf/read_write/read.py:544](http://localhost:8888/lab/tree/2025/work/shoreline/~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cf/read_write/read.py#line=543), in read.__new__(cls, datasets, external, verbose, warnings, aggregate, nfields, squeeze, unsqueeze, dataset_type, cdl_string, select, extra, recursive, followlinks, um, chunk, field, height_at_top_of_model, select_options, follow_symlinks, mask, unpack, warn_valid, dask_chunks, store_dataset_chunks, store_dataset_shards, domain, cfa, cfa_write, to_memory, netcdf_backend, storage_options, cache, chunks, ignore_read_error, fmt, file_type, group_dimension_search, filesystem)
    535 if file_type is not None:
    536     _DEPRECATION_ERROR_FUNCTION_KWARGS(
    537         "cf.read",
    538         {"file_type": file_type},
   (...)
    541         removed_at="5.0.0",
    542     )  # pragma: no cover
--> 544 return super().__new__(**kwargs)

File [~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/decorators.py:171](http://localhost:8888/lab/tree/2025/work/shoreline/~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/decorators.py#line=170), in _manage_log_level_via_verbosity.<locals>.verbose_override_wrapper(*args, **kwargs)
    168 # After method completes, re-set any changes to log level or
    169 # enabling
    170 try:
--> 171     return method_with_verbose_kwarg(*args, **kwargs)
    172 except Exception:
    173     raise

File [~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/read_write/read.py:299](http://localhost:8888/lab/tree/2025/work/shoreline/~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/read_write/read.py#line=298), in read.__new__(cls, datasets, external, extra, verbose, warnings, warn_valid, mask, unpack, domain, netcdf_backend, storage_options, filesystem, cache, dask_chunks, store_dataset_chunks, store_dataset_shards, cfa, cfa_write, to_memory, squeeze, unsqueeze, dataset_type, recursive, followlinks, cdl_string, extra_read_vars, group_dimension_search, **kwargs)
    297 self._pre_read(dataset)
    298 self._read(dataset)
--> 299 self._post_read(dataset)
    301 # Add the dataset contents to the output list
    302 self.n_datasets += 1

File [~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/read_write/read.py:536](http://localhost:8888/lab/tree/2025/work/shoreline/~/anaconda3/envs/conda-forge-env/lib/python3.13/site-packages/cfdm/read_write/read.py#line=535), in read._post_read(self, dataset)
    534 if self.dataset_format_errors:
    535     error = "\n".join(map(str, self.dataset_format_errors))
--> 536     raise DatasetTypeError(f"\n{error}")
    538 self.dataset_contents = []

DatasetTypeError: 
Can't interpret https://data.pmel.noaa.gov/aclim/thredds/dodsC/B10K-K20_Level2_CORECFS_integrated_collection.nc as a dataset of one of the valid types: ('netCDF', 'CDL', 'Zarr', 'Kerchunk')

Can't interpret https://data.pmel.noaa.gov/aclim/thredds/dodsC/B10K-K20_Level2_CORECFS_integrated_collection.nc as a PP or UM dataset

cf.version = "3.20.0"

I had a similar error on the links provided by https://psl.noaa.gov/thredds/catalog/Datasets/gistemp/catalog.html?dataset=Datasets/gistemp/landmask_2deg.nc Thredds/OpenDAP page:

https://psl.noaa.gov/thredds/fileServer/Datasets/gistemp/landmask_2deg.nc -- HTTPS access
http://psl.noaa.gov/thredds/dodsC/Datasets/gistemp/landmask_2deg.nc -- The opendap endpoint

If I copied the file to my laptop and I expose the file in my local webserver and try http://localhost/~drf/JUNK/elev_latest.nc it fails similarly but if I use local access on the file path landmask_2deg.nc it works:

#source="http://psl.noaa.gov/thredds/dodsC/Datasets/gistemp/landmask_2deg.nc"
#source="https://psl.noaa.gov/thredds/fileServer/Datasets/gistemp/landmask_2deg.nc"
#source="http://localhost/~drf/JUNK/landmask_2deg.nc"
source="/Users/drf/Sites/JUNK/landmask_2deg.nc"
x=cf.read(source)
x

gives

[<CF Field: land_area_fraction(latitude(90), longitude(180)) 1>]
  • The version of the software and the environment in which you are encountering an issue. The output of cf.environment(paths=False) is useful for this.
Platform: macOS-15.3.1-x86_64-i386-64bit-Mach-O
Python: 3.13.2
packaging: 25.0
numpy: 2.3.4
cfdm.core: 1.13.1.0
udunits2 library: /Users/drf/anaconda3/envs/conda-forge-env/bin/../lib/libudunits2.dylib
HDF5 library: 2.0.0
netcdf library: 4.9.2
netCDF4: 1.7.2
h5netcdf: 1.8.1
h5py: 3.16.0
pyfive: 1.1.2
zarr: 3.2.1
fsspec: 2026.4.0
scipy: 1.16.3
dask: 2026.3.0
distributed: 2026.3.0
cftime: 1.6.4
cfunits: 3.3.7
cfdm: 1.13.1.0
esmpy/ESMF: not available
psutil: 7.1.3
matplotlib: 3.10.7
activestorage: not available
cartopy: 0.25.0
cfplot: 3.4.0
cf: 3.20.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions