code: def color_scale(begin_hsl, end_hsl, nb):
      """Returns a list of nb color HSL tuples between begin_hsl and end_hsl
  
      >>> from colour import color_scale
  
      >>> [rgb2hex(hsl2rgb(hsl)) for hsl in color_scale((0, 1, 0.5),
      ...                                               (1, 1, 0.5), 3)]
      ['#f00', '#0f0', '#00f', '#f00']
  
      >>> [rgb2hex(hsl2rgb(hsl))
      ...  for hsl in color_scale((0, 0, 0),
      ...                         (0, 0, 1),
      ...                         15)]  # doctest: +ELLIPSIS
      ['#000', '#111', '#222', ..., '#ccc', '#ddd', '#eee', '#fff']
  
      Of course, asking for negative values is not supported:
  
      >>> color_scale((0, 1, 0.5), (1, 1, 0.5), -2)
      Traceback (most recent call last):
      ...
      ValueError: Unsupported negative number of colors (nb=-2).
  
      """
  
      if nb < 0:
          raise ValueError(
              "Unsupported negative number of colors (nb=%r)." % nb
          )
  
      step = (
          tuple(
              [
                  float(end_hsl[i] - begin_hsl[i]) / nb
                  for i in range(0, 3)
              ]
          )
          if nb > 0
          else (0, 0, 0)
      )
  
      def mul(step, value):
          return tuple([v * value for v in step])
  
      def add_v(step, step2):
          return tuple([v + step2[i] for i, v in enumerate(step)])
  
      return [add_v(begin_hsl, mul(step, r)) for r in range(0, nb + 1)]
  
imports: from __future__ import with_statement, print_function
  import hashlib
  import re
  import sys
label_desc: Use image node_id 14 for calling a global function with example usage: color_scale(begin_hsl, end_hsl, nb) and returns: unknown, tuple, tuple