def __init__(self, h=(<NUM_LIT:0.0>, <NUM_LIT:1.0>), s=(<NUM_LIT:0.0>, <NUM_LIT:1.0>), b=(<NUM_LIT:0.0>, <NUM_LIT:1.0>), a=(<NUM_LIT:1.0>, <NUM_LIT:1.0>),<EOL>grayscale=False, name="<STR_LIT>", length=<NUM_LIT:100>):
ColorList.__init__(self)<EOL>self.name = name<EOL>self.h = h<EOL>self.s = s<EOL>self.b = b<EOL>self.a = a<EOL>self.grayscale = grayscale<EOL>if not grayscale:<EOL><INDENT>self.black = ColorRange((<NUM_LIT:0>, <NUM_LIT:1>), <NUM_LIT:0>, <NUM_LIT:0>, <NUM_LIT:1>, True, name)<EOL>self.white = ColorRange((<NUM_LIT:0>, <NUM_LIT:1>), <NUM_LIT:0>, <NUM_LIT:1>, <NUM_LIT:1>, True, name)<EOL><DEDENT>self.length = length<EOL>
A stateless list of colors whose HSB values are confined to a range.

Hue, saturation and brightness are confined to a (min, max) tuple,
or a list of (min, max) tuples for discontinuous ranges, or to a single value.
This way you can describe concepts such as "light", "dark", etc.

With stateless we mean that you are never sure which colors are
in the ColorRange, different colors that fall within the ranges
are returned each time when calling color() or colors().

ColorRange has all the ColorList transformations (such as darken()),
these return ColorList objects. It's like a snapshot of the original
stateless ColorRange.