code: def recursively_compute_variable(self, var, start_date=None, end_date=None,
                                       time_offset=None, model=None,
                                       **DataAttrs):
          
          if var.variables is None:
              return self._load_or_get_from_model(
                  var, start_date, end_date, time_offset, model, **DataAttrs)
          else:
              data = [self.recursively_compute_variable(
                  v, start_date, end_date, time_offset, model, **DataAttrs)
                      for v in var.variables]
              return var.func(*data).rename(var.name)
docs: Compute a variable recursively, loading data where needed.
  
          An obvious requirement here is that the variable must eventually be
          able to be expressed in terms of model-native quantities; otherwise the
          recursion will never stop.
  
          Parameters
          ----------
          var : Var
              aospy Var object
          start_date : datetime.datetime
              start date for interval
          end_date : datetime.datetime
              end date for interval
          time_offset : dict
              Option to add a time offset to the time coordinate to correct for
              incorrect metadata.
          model : Model
              aospy Model object (optional)
          **DataAttrs
              Attributes needed to identify a unique set of files to load from
  
          Returns
          -------
          da : DataArray
               DataArray for the specified variable, date range, and interval in