docs: def transition(self, duration,
                     color=None, brightness=None, temperature=None):
          """ Transition wrapper.
  
          Short-circuit transition as necessary.
  
          :param duration: Time to transition.
          :param color: Transition to this color.
          :param brightness: Transition to this brightness.
          :param temperature: Transition to this temperature.
          """
          if color and temperature is not None:
              raise ValueError("Cannot transition to color and temperature "
                               "simultaneously.")
  
          # Transition to white immediately.
          if color == RGB_WHITE:
              self.white()
          # Transition away from white immediately.
          elif self.color == RGB_WHITE and color is not None:
              self.color = color
          # Transition immediately if duration is zero.
          if duration == 0:
              if brightness is not None:
                  self.brightness = brightness
              if color:
                  self.color = color
              if temperature is not None:
                  self.temperature = temperature
              return
          # Perform transition
          if color and color != self.color:
              self._transition(duration, brightness,
                               hue=hue_of_color(color),
                               saturation=saturation_of_color(color))
          elif temperature != self.temperature:
              self._transition(duration, brightness, temperature=temperature)
          elif brightness != self.brightness:
              self._transition(duration, brightness)