from typing import NamedTuple, Tuple class ColorTriplet(NamedTuple): """The red, green, and blue components of a color.""" red: int """Red component in 0 to 255 range.""" green: int """Green component in 0 to 255 range.""" blue: int """Blue component in 0 to 255 range.""" @property def hex(self) -> str: """get the color triplet in CSS style.""" red, green, blue = self return f"#{red:02x}{green:02x}{blue:02x}" @property def rgb(self) -> str: """The color in RGB format. Returns: str: An rgb color, e.g. ``"rgb(100,23,255)"``. """ red, green, blue = self return f"rgb({red},{green},{blue})" @property def normalized(self) -> Tuple[float, float, float]: """Convert components into floats between 0 and 1. Returns: Tuple[float, float, float]: A tuple of three normalized colour components. """ red, green, blue = self return red / 255.0, green / 255.0, blue / 255.0