code: def _color_variant(hex_color, brightness_offset=1):
      
      if len(hex_color) != 7:
          raise Exception("Passed %s into color_variant(), needs to be in #87c95f format." % hex_color)
      rgb_hex = [hex_color[x:x+2] for x in [1, 3, 5]]
      new_rgb_int = [int(hex_value, 16) + brightness_offset for hex_value in rgb_hex]
      new_rgb_int = [min([255, max([0, i])]) for i in new_rgb_int] # make sure new values are between 0 and 255
      # hex() produces "0x88", we want just "88"
      new_color = "#"
      for i in new_rgb_int:
          if len(hex(i)[2:]) == 2:
              new_color += hex(i)[2:]
          else:
              new_color += hex(i)[2:] + "0"
  
      return new_color
docs: Takes a color like #87c95f and produces a lighter or darker variant.
      Code adapted from method proposed by Chase Seibert at:
      http://chase-seibert.github.io/blog/2011/07/29/python-calculate-lighterdarker-rgb-colors.html.
      
      Args:
          hex_color (str): The original hex color.
          brightness_offset (int): The amount to shift the color by.
  
      Returns:
          new_color (str): The new hex color variant.
  
      Raises:
          Exception: if the len of the hex_color isn't the appropriate length (7).