

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).\n\n    The x and y parameters detail where the mouse event happens. If None, the\n    current mouse position is used. If a float value, it is rounded down. If\n    outside the boundaries of the screen, the event happens at edge of the\n    screen.\n\n    Args:\n      x (int, float, None, tuple, optional): The x position on the screen where the\n        mouse up happens. None by default. If tuple, this is used for x and y.\n      y (int, float, None, optional): The y position on the screen where the\n        mouse up happens. None by default.\n      button (str, int, optional): The mouse button released. Must be one of\n        'left', 'middle', 'right' (or 1, 2, or 3) respectively. 'left' by\n        default.\n\n    Returns:\n      None\n\n    Raises:\n      ValueError: If button is not one of 'left', 'middle', 'right', 1, 2, or 3\n    "
    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)

dataset/ETHPy150Open asweigart/pyautogui/pyautogui/__init__.py mouseUp/original