docs: def mouseUp(x=None, y=None, button='left', duration=0.0, tween=linear, pause=None, _pause=True):
      """Performs releasing a mouse button up (but not down beforehand).
  
      The x and y parameters detail where the mouse event happens. If None, the
      current mouse position is used. If a float value, it is rounded down. If
      outside the boundaries of the screen, the event happens at edge of the
      screen.
  
      Args:
        x (int, float, None, tuple, optional): The x position on the screen where the
          mouse up happens. None by default. If tuple, this is used for x and y.
          If x is a str, it's considered a filename of an image to find on
          the screen with locateOnScreen() and click the center of.
        y (int, float, None, optional): The y position on the screen where the
          mouse up happens. None by default.
        button (str, int, optional): The mouse button released. Must be one of
          'left', 'middle', 'right' (or 1, 2, or 3) respectively. 'left' by
          default.
  
      Returns:
        None
  
      Raises:
        ValueError: If button is not one of 'left', 'middle', 'right', 1, 2, or 3
      """
      if button not in ('left', 'middle', 'right', 1, 2, 3):
          raise ValueError("button argument must be one of ('left', 'middle', 'right', 1, 2, 3), not %s" % button)
  
      _failSafeCheck()
      x, y = _unpackXY(x, y)
  
      _mouseMoveDrag('move', x, y, 0, 0, duration=0, tween=None)
  
      x, y = platformModule._position()
      if button == 1 or str(button).lower() == 'left':
          platformModule._mouseUp(x, y, 'left')
      elif button == 2 or str(button).lower() == 'middle':
          platformModule._mouseUp(x, y, 'middle')
      elif button == 3 or str(button).lower() == 'right':
          platformModule._mouseUp(x, y, 'right')
  
      _autoPause(pause, _pause)