def generate_color_series(color, variation, diff=10, reverse=False):
    """Generate light and dark color series.

    Args:
        color (tuple)   : Color [0,255]
        variation (int) : How many colors to create.
        diff (int)      : How much to change
        reverse (bool)  : If ``True``, sort in descending order.

    Returns:
        colors (list) : colors.

    Examples:
        >>> from pycharmers.utils import generateLightDarks
        >>> generateLightDarks(color=(245,20,25), variation=3, diff=10)
        [(235, 10, 15), (245, 20, 25), (255, 30, 35)]
        >>> generateLightDarks(color=(245, 20, 25), variation=3, diff=-10)
        [(225, 0, 5), (235, 10, 15), (245, 20, 25)]
    """
    val = max(color[:3]) if diff > 0 else min(color[:3])
    u = 0
    for _ in range(variation - 1):
        val += diff
        if not 255 >= val >= 0:
            break
        u += 1
    return sorted(
        [
            tuple(
                [
                    max(min(e + diff * (u - v), 255), 0) if i < 3 else e
                    for i, e in enumerate(color)
                ]
            )
            for v in range(variation)
        ],
        reverse=reverse,
    )