class_docstr: GEOCAT netCDF4 file handler.
  
  **Loading data with decode_times=True**
  
  By default, this reader will use ``xarray_kwargs={"engine": "netcdf4", "decode_times": False}``.
  to match behavior of xarray when the geocat reader was first written.  To use different options
  use reader_kwargs when loading the Scene::
  
      scene = satpy.Scene(filenames,
                          reader='geocat',
                          reader_kwargs={'xarray_kwargs': {'engine': 'netcdf4', 'decode_times': True}})
class_docstr_tok: ["GEOCAT","netCDF4","file","handler",".","*","*","Loading","data","with","decode_times=True","*","*","By","default",",","this","reader","will","use","``","xarray_kwargs=","{","``","engine","''",":","``","netcdf4","''",",","``","decode_times","''",":","False","}","``",".","to","match","behavior","of","xarray","when","the","geocat","reader","was","first","written",".","To","use","different","options","use","reader_kwargs","when","loading","the","Scene",":",":","scene","=","satpy.Scene","(","filenames",",","reader='geocat","'",",","reader_kwargs=","{","'xarray_kwargs","'",":","{","'engine","'",":","'netcdf4","'",",","'decode_times","'",":","True","}","}",")"]
docstr: Update information for or add datasets provided by this file.
  
  If this file handler can load a dataset then it will supplement the
  dataset info with the resolution and possibly coordinate datasets
  needed to load it. Otherwise it will continue passing the dataset
  information down the chain.
  
  See
  :meth:`satpy.readers.file_handlers.BaseFileHandler.available_datasets`
  for details.
docstr_tok: ["Update","information","for","or","add","datasets","provided","by","this","file",".","If","this","file","handler","can","load","a","dataset","then","it","will","supplement","the","dataset","info","with","the","resolution","and","possibly","coordinate","datasets","needed","to","load","it",".","Otherwise","it","will","continue","passing","the","dataset","information","down","the","chain",".","See",":","meth",":","`","satpy.readers.file_handlers.BaseFileHandler.available_datasets","`","for","details","."]
code: def available_datasets(self, configured_datasets=None):
      """Update information for or add datasets provided by this file.
  
      If this file handler can load a dataset then it will supplement the
      dataset info with the resolution and possibly coordinate datasets
      needed to load it. Otherwise it will continue passing the dataset
      information down the chain.
  
      See
      :meth:`satpy.readers.file_handlers.BaseFileHandler.available_datasets`
      for details.
  
      """
      res = self.resolution
      coordinates = ("pixel_longitude", "pixel_latitude")
      handled_variables = set()
  
      # update previously configured datasets
      for is_avail, ds_info in configured_datasets or []:
          this_res = ds_info.get("resolution")
          this_coords = ds_info.get("coordinates")
          # some other file handler knows how to load this
          if is_avail is not None:
              yield is_avail, ds_info
  
          var_name = ds_info.get("file_key", ds_info["name"])
          matches = self.file_type_matches(ds_info["file_type"])
          # we can confidently say that we can provide this dataset and can
          # provide more info
          if matches and var_name in self and this_res != res:
              handled_variables.add(var_name)
              new_info = (
                  ds_info.copy()
              )  # don't mess up the above yielded
              new_info["resolution"] = res
              if not self.is_geo and this_coords is None:
                  new_info["coordinates"] = coordinates
              yield True, new_info
          elif is_avail is None:
              # if we didn't know how to handle this dataset and no one else did
              # then we should keep it going down the chain
              yield is_avail, ds_info
  
      # Provide new datasets
      for var_name, val in self.file_content.items():
          if var_name in handled_variables:
              continue
          if isinstance(val, netCDF4.Variable):
              ds_info = {
                  "file_type": self.filetype_info["file_type"],
                  "resolution": res,
                  "name": var_name,
              }
              if not self.is_geo:
                  ds_info["coordinates"] = coordinates
              yield True, ds_info
  
imports: from __future__ import annotations
  import logging
  import numpy
  from pyproj import Proj
  from pyresample import geometry
  from satpy.readers.netcdf_utils import NetCDF4FileHandler, netCDF4
label_desc: Use image node_id 11 for calling the GEOCATFileHandler obj's underlying member method code with example usage: obj.available_datasets(configured_datasets) without return types