docs: def union(self, other, left_name="LEFT", right_name="RIGHT"):
          """
          *Wrapper of* ``UNION``
  
          The UNION operation is used to integrate homogeneous or heterogeneous samples of two
          datasets within a single dataset; for each sample of either one of the input datasets, a
          sample is created in the result as follows:
          
              * its metadata are the same as in the original sample;
              * its schema is the schema of the first (left) input dataset; new 
                identifiers are assigned to each output sample;
              * its regions are the same (in coordinates and attribute values) as in the original
                sample. Region attributes which are missing in an input dataset sample
                (w.r.t. the merged schema) are set to null.
                  
          :param other: a GMQLDataset
          :param left_name: name that you want to assign to the left dataset
          :param right_name: name tha t you want to assign to the right dataset
          :return: a new GMQLDataset
  
          Example of usage::
  
              import gmql as gl
  
              d1 = gl.get_example_dataset("Example_Dataset_1")
              d2 = gl.get_example_dataset("Example_Dataset_2")
  
              result = d1.union(other=d2, left_name="D1", right_name="D2")
          """
  
          if not isinstance(left_name, str) or \
              not isinstance(right_name, str):
              raise TypeError("left_name and right_name must be strings. "
                              "{} - {} was provided".format(type(left_name), type(right_name)))
  
          if isinstance(other, GMQLDataset):
              other_idx = other.__index
          else:
              raise TypeError("other must be a GMQLDataset. "
                              "{} was provided".format(type(other)))
  
          if len(left_name) == 0 or len(right_name) == 0:
              raise ValueError("left_name and right_name must not be empty")
          new_index = self.opmng.union(self.__index, other_idx, left_name, right_name)
          new_local_sources, new_remote_sources = self.__combine_sources(self, other)
          new_location = self.__combine_locations(self, other)
          return GMQLDataset(index=new_index, location=new_location,
                             local_sources=new_local_sources,
                             remote_sources=new_remote_sources,
                             meta_profile=self.meta_profile)