Source code for intake_thredds.cat

from intake.readers import Service
from intake.readers.catalogs import THREDDSCatalogReader


[docs] class ThreddsCatalog: """Intake catalog interface to a thredds catalog.""" def __new__(cls, url: str, driver: str = 'opendap', intake_xarray_kwargs=None, metadata=None): """ Parameters ---------- url : str Location of thredds catalog. driver : str Select driver to access data. Choose from 'netcdf' and 'opendap'. intake_xarray_kwargs : dict Keyword arguments to pass to intake_xarray DataSource. **kwargs : Additional keyword arguments are passed through to the :py:class:`~intake.catalog.Catalog` base class. Examples -------- >>> import intake >>> cat_url = 'https://psl.noaa.gov/thredds/catalog/Datasets/noaa.ersst/catalog.xml' >>> cat = intake.open_thredds_cat(cat_url) """ simplecache = url.startswith('simplecache:') if simplecache and driver == 'opendap': raise ValueError('simplecache requires driver="netcdf"') url = url.removeprefix('simplecache::') data = Service(url) reader = THREDDSCatalogReader(data, make=driver[-3:]) cat = reader.read() if metadata: cat.metadata.update(metadata) if simplecache: for d in cat.data.values(): d.kwargs['url'] = 'simplecache::' + d.kwargs['url'] if intake_xarray_kwargs: intake_xarray_kwargs.update(intake_xarray_kwargs.pop('xarray_kwargs', {})) for d in cat.entries.values(): d.kwargs.update(intake_xarray_kwargs) return cat