docs: def get_label(self, indices=None):
          """ Returns the label pair indices requested by the user
              @ In, indices, a list of non-negative integers specifying
              the row indices to return
              @ Out, a list of integer 2-tuples specifying the minimum and
              maximum index of the specified rows.
          """
          if indices is None:
              indices = list(range(0, self.get_sample_size()))
          elif isinstance(indices, collections.Iterable):
              indices = sorted(list(set(indices)))
          else:
              indices = [indices]
  
          if len(indices) == 0:
              return []
          partitions = self.get_partitions(self.persistence)
          labels = self.X.shape[0] * [None]
          for label, partition_indices in partitions.items():
              for idx in np.intersect1d(partition_indices, indices):
                  labels[idx] = label
  
          labels = np.array(labels)
          if len(indices) == 1:
              return labels[indices][0]
          return labels[indices]