def make_mid_color(self, color1, color2, distance, long_route=False):
        """
        Generate a mid color between color1 and color2.
        Colors should be a tuple (hue, saturation, value).

        distance is a float between 0.0 and 1.0 describing how far between
        color1 and color2 we want to return the color. 0.0 would return color1,
        1.0 color2, and 0.5 a color midway.

        long_route allows us to choose how we get from color1 to color2 around
        the color wheel if True we go the long way, through as many colors as
        we can, if False we go through the minimum number
        """

        def fade(a, b):
            x = b * distance
            x += a * (1 - distance)
            return x

        h1, s1, v1 = color1
        h2, s2, v2 = color2

        hue_diff = h1 - h2
        if long_route:
            if -0.5 < hue_diff < 0.5:
                h1 += 1
        else:
            if hue_diff > 0.5:
                h2 += 1
            elif hue_diff < -0.5:
                h1 += 1
        return (modf(fade(h1, h2))[0], fade(s1, s2), fade(v1, v2))

        Generate a mid color between color1 and color2.
        Colors should be a tuple (hue, saturation, value).

        distance is a float between 0.0 and 1.0 describing how far between
        color1 and color2 we want to return the color. 0.0 would return color1,
        1.0 color2, and 0.5 a color midway.

        long_route allows us to choose how we get from color1 to color2 around
        the color wheel if True we go the long way, through as many colors as
        we can, if False we go through the minimum number
        
py3status/util.py