docs: def build_output_coords(
      args: list,
      signature: _UFuncSignature,
      exclude_dims: AbstractSet = frozenset(),
  ) -> 'List[OrderedDict[Any, Variable]]':
      """Build output coordinates for an operation.
  
      Parameters
      ----------
      args : list
          List of raw operation arguments. Any valid types for xarray operations
          are OK, e.g., scalars, Variable, DataArray, Dataset.
      signature : _UfuncSignature
          Core dimensions signature for the operation.
      exclude_dims : optional set
          Dimensions excluded from the operation. Coordinates along these
          dimensions are dropped.
  
      Returns
      -------
      OrderedDict of Variable objects with merged coordinates.
      """
      input_coords = _get_coord_variables(args)
  
      if exclude_dims:
          input_coords = [OrderedDict((k, v) for k, v in coord_vars.items()
                                      if exclude_dims.isdisjoint(v.dims))
                          for coord_vars in input_coords]
  
      if len(input_coords) == 1:
          # we can skip the expensive merge
          unpacked_input_coords, = input_coords
          merged = OrderedDict(unpacked_input_coords)
      else:
          merged = expand_and_merge_variables(input_coords)
  
      output_coords = []
      for output_dims in signature.output_core_dims:
          dropped_dims = signature.all_input_core_dims - set(output_dims)
          if dropped_dims:
              filtered = OrderedDict((k, v) for k, v in merged.items()
                                     if dropped_dims.isdisjoint(v.dims))
          else:
              filtered = merged
          output_coords.append(filtered)
  
      return output_coords