code: def scale_values(numbers, num_lines=1, minimum=None, maximum=None):
      "Scale input numbers to appropriate range."
  
      # find min/max values, ignoring Nones
      filtered = [n for n in numbers if n is not None]
      min_ = min(filtered) if minimum is None else minimum
      max_ = max(filtered) if maximum is None else maximum
      dv = max_ - min_
  
      # clamp
      numbers = [max(min(n, max_), min_) if n is not None else None for n in numbers]
  
      if dv == 0:
          values = [4 * num_lines if x is not None else None for x in numbers]
      elif dv > 0:
          num_blocks = len(blocks) - 1
  
          min_index = 1.
          max_index = num_lines * num_blocks
  
          values = [
              ((max_index - min_index) * (x - min_)) / dv + min_index
              if not x is None else None for x in numbers
          ]
  
          values = [round(v) or 1 if not v is None else None for v in values]
      return valuef scale_values(numbers, num_lines=1, minimum=None, maximum=None):
      "Scale input numbers to appropriate range."
  
      # find min/max values, ignoring Nones
      filtered = [n for n in numbers if n is not None]
      min_ = min(filtered) if minimum is None else minimum
      max_ = max(filtered) if maximum is None else maximum
      dv = max_ - min_
  
      # clamp
      numbers = [max(min(n, max_), min_) if n is not None else None for n in numbers]
  
      if dv == 0:
          values = [4 * num_lines if x is not None else None for x in numbers]
      elif dv > 0:
          num_blocks = len(blocks) - 1
  
          min_index = 1.
          max_index = num_lines * num_blocks
  
          values = [
              ((max_index - min_index) * (x - min_)) / dv + min_index
              if not x is None else None for x in numbers
          ]
  
          values = [round(v) or 1 if not v is None else None for v in values]
      return values
docs: Scale input numbers to appropriate range.