def color_run(start_color, end_color, step_count, inclusive=True, to_color=True):
if isinstance(start_color, Color):<EOL><INDENT>start_color = start_color.rgb<EOL><DEDENT>if isinstance(end_color, Color):<EOL><INDENT>end_color = end_color.rgb<EOL><DEDENT>step = tuple((end_color[i] - start_color[i])/step_count for i in range(<NUM_LIT:3>))<EOL>add = lambda x, y: tuple(sum(z) for z in zip(x, y))<EOL>mult = lambda x, y: tuple(y * z for z in x)<EOL>run = [add(start_color, mult(step, i)) for i in range(<NUM_LIT:1>, step_count)]<EOL>if inclusive:<EOL><INDENT>run = [start_color] + run + [end_color]<EOL><DEDENT>return run if not to_color else [Color(c) for c in run]<EOL>
Given a start color, end color, and a number of steps, returns a list of colors which represent a 'scale' between
the start and end color.

:param start_color: The color starting the run
:param end_color: The color ending the run
:param step_count: The number of colors to have between the start and end color
:param inclusive: Flag determining whether to include start and end values in run (default True)
:param to_color: Flag indicating return values should be Color objects (default True)
:return: List of colors between the start and end color
:rtype: list