code: def unique_variable(name, variables, compat='broadcast_equals'):
      # type: (Any, List[Variable], str) -> Variable
        # noqa
      out = variables[0]
      if len(variables) > 1:
          combine_method = None
  
          if compat == 'minimal':
              compat = 'broadcast_equals'
  
          if compat == 'broadcast_equals':
              dim_lengths = broadcast_dimension_size(variables)
              out = out.set_dims(dim_lengths)
  
          if compat == 'no_conflicts':
              combine_method = 'fillna'
  
          for var in variables[1:]:
              if not getattr(out, compat)(var):
                  raise MergeError('conflicting values for variable %r on '
                                   'objects to be combined:\n'
                                   'first value: %r\nsecond value: %r'
                                   % (name, out, var))
              if combine_method:
                  # TODO: add preservation of attrs into fillna
                  out = getattr(out, combine_method)(var)
                  out.attrs = var.attrs
  
      return out
docs: Return the unique variable from a list of variables or raise MergeError.
  
      Parameters
      ----------
      name : hashable
          Name for this variable.
      variables : list of xarray.Variable
          List of Variable objects, all of which go by the same name in different
          inputs.
      compat : {'identical', 'equals', 'broadcast_equals', 'no_conflicts'}, optional
          Type of equality check to use.
  
      Returns
      -------
      Variable to use in the result.
  
      Raises
      ------
      MergeError: if any of the variables are not equal.