docs: def merge_variables(variables, name=None, **kwargs):
      '''Merge/concatenate a list of variables along the row axis.
  
      Parameters
      ----------
      variables : :obj:`list`
          A list of Variables to merge.
      name : :obj:`str`
          Optional name to assign to the output Variable. By default, uses the
          same name as the input variables.
      kwargs
          Optional keyword arguments to pass onto the class-specific merge() call.
          Possible args:
              - sampling_rate (int, str): The sampling rate to use if resampling
                of DenseRunVariables is necessary for harmonization. If 'auto',
                the highest sampling rate found will be used. This argument is
                only used when passing DenseRunVariables in the variables list.
  
      Returns
      -------
      A single BIDSVariable of the same class as the input variables.
  
      Notes
      -----
      - Currently, this function only support homogenously-typed lists. In
        future, it may be extended to support implicit conversion.
      - Variables in the list must all share the same name (i.e., it is not
        possible to merge two different variables into a single variable.)
      '''
  
      classes = set([v.__class__ for v in variables])
      if len(classes) > 1:
          raise ValueError("Variables of different classes cannot be merged. "
                           "Variables passed are of classes: %s" % classes)
  
      sources = set([v.source for v in variables])
      if len(sources) > 1:
          raise ValueError("Variables extracted from different types of files "
                           "cannot be merged. Sources found: %s" % sources)
  
      return list(classes)[0].merge(variables, **kwargs)