docs: def sparklines(numbers=[], num_lines=1, emph=None, verbose=False,
          minimum=None, maximum=None, wrap=None):
      """
      Return a list of 'sparkline' strings for a given list of input numbers.
  
      The list of input numbers may contain None values, too, for which the
      resulting sparkline will contain a blank character (a space).
  
      Examples:
  
          sparklines([3, 1, 4, 1, 5, 9, 2, 6])
          -> ['▃▁▄▁▄█▂▅']
          sparklines([3, 1, 4, 1, 5, 9, 2, 6], num_lines=2)
          -> [
              '     █ ▂',
              '▅▁▆▁██▃█'
          ]
      """
  
      assert num_lines > 0
  
      if len(numbers) == 0:
          return ['']
  
      # raise warning for negative numbers
      _check_negatives(numbers)
  
      values = scale_values(numbers, num_lines=num_lines, minimum=minimum, maximum=maximum)
  
      # find values to be highlighted
      emphasized = _check_emphasis(numbers, emph) if emph else {}
  
      point_index = 0
      subgraphs = []
      for subgraph_values in batch(wrap, values):
          multi_values = []
          for i in range(num_lines):
              multi_values.append([
                  min(v, 8) if not v is None else None
                  for v in subgraph_values
              ])
              subgraph_values = [max(0, v-8) if not v is None else None for v in subgraph_values]
          multi_values.reverse()
          lines = []
          for subgraph_values in multi_values:
              if HAVE_TERMCOLOR and emphasized:
                  tc = termcolor.colored
                  res = [tc(blocks[int(v)], emphasized.get(point_index + i, 'white')) if not v is None else ' ' for (i, v) in enumerate(subgraph_values)]
              else:
                  res = [blocks[int(v)] if not v is None else ' ' for v in subgraph_values]
              lines.append(''.join(res))
          subgraphs.append(lines)
          point_index += len(subgraph_values)
  
      return list_join('', subgraphs)