class_docstr: NetCDF4 reader for VIIRS Active Fires.
class_docstr_tok: ["NetCDF4","reader","for","VIIRS","Active","Fires","."]
code: def _dynamic_variables_from_file(
      self, handled_var_names: set
  ) -> Iterable[tuple[bool, dict]]:
      ftype = self.filetype_info["file_type"]
      m_lon_name = f"longitude_{ftype}"
      m_lat_name = f"latitude_{ftype}"
      m_coords = (m_lon_name, m_lat_name)
      i_lon_name = f"longitude_i_{ftype}"
      i_lat_name = f"latitude_i_{ftype}"
      i_coords = (i_lon_name, i_lat_name)
      for var_name in self.nc.variables.keys():
          data_arr = self.nc[var_name]
          is_lon = "longitude" in var_name.lower()
          is_lat = "latitude" in var_name.lower()
          if var_name in handled_var_names and not (is_lon or is_lat):
              # skip variables that YAML had configured, but allow lon/lats
              # to be reprocessed due to our dynamic coordinate naming
              continue
          if data_arr.ndim != 2:
              # only 2D arrays supported at this time
              continue
          res = 750 if data_arr.shape[1] == M_COLS else 375
          ds_info = {
              "file_key": var_name,
              "file_type": ftype,
              "name": var_name,
              "resolution": res,
              "coordinates": m_coords if res == 750 else i_coords,
          }
          if is_lon:
              ds_info["standard_name"] = "longitude"
              ds_info["units"] = "degrees_east"
              ds_info["name"] = m_lon_name if res == 750 else i_lon_name
              # recursive coordinate/SwathDefinitions are not currently handled well in the base reader
              del ds_info["coordinates"]
          elif is_lat:
              ds_info["standard_name"] = "latitude"
              ds_info["units"] = "degrees_north"
              ds_info["name"] = m_lat_name if res == 750 else i_lat_name
              # recursive coordinate/SwathDefinitions are not currently handled well in the base reader
              del ds_info["coordinates"]
          yield True, ds_info
  
imports: from __future__ import annotations
  import logging
  from typing import Iterable
  import dask.array
  import xarray
  from satpy import DataID
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.utils import get_chunk_size_limit
label_desc: Use image node_id 11 for calling the VIIRSJRRFileHandler obj's underlying member method code with example usage: obj._dynamic_variables_from_file(handled_var_names) without return types