docs: def _get_constrained_labels(self,remove_dimensions=False,**kwargs):
          """
              returns labels which have updated minima and maxima,
              depending on the kwargs supplied to this
          """
          new_labels = []
          for label_no,label in enumerate(self.labels):
              new_label = LabelDimension(label)
              remove = False
              for k in kwargs:
                  if k == label.name:
                      new_label.max = kwargs[k]
                      new_label.min = kwargs[k]
                      remove = True
                  if k == label.name+'__lt':
                      if new_label.units == '1':
                          new_label.max = np.min([new_label.max,kwargs[k]-1]) # is this right?
                      else:
                          new_label.max = np.min([new_label.max,kwargs[k]])
                      #remove = True
                  if k == label.name+'__lte':
                      new_label.max = np.min([new_label.max,kwargs[k]])
                      #remove = True
                  if k == label.name+'__gt':
                      if new_label.units == '1':
                          new_label.min = np.max([new_label.min,kwargs[k]+1])
                      else:
                          new_label.min = np.max([new_label.min,kwargs[k]])
                      #remove = True
                  if k == label.name+'__gte':
                      new_label.min = np.max([new_label.min,kwargs[k]])
                      #remove = True
                  if k == label.name+'__evals':
                      remove = True
              if remove_dimensions:
                  if remove:
                      # skipping removed labels
                      continue
              new_labels.append(new_label)
          return new_labels