Returns the `logical disjunction`_ of all supplied values (the result is
    :data:`True` if any of the input values are currently :data:`True`). One or
    more *values* can be specified. For example, to light an
    :class:`~gpiozero.LED` when *any* button is pressed::

        from gpiozero import LED, Button
        from gpiozero.tools import any_values
        from signal import pause

        led = LED(4)
        btn1 = Button(20)
        btn2 = Button(21)

        led.source = any_values(btn1, btn2)

        pause()

    .. _logical disjunction: https://en.wikipedia.org/wiki/Logical_disjunction

def any_values(*values):
    """
    Returns the `logical disjunction`_ of all supplied values (the result is
    :data:`True` if any of the input values are currently :data:`True`). One or
    more *values* can be specified. For example, to light an
    :class:`~gpiozero.LED` when *any* button is pressed::

        from gpiozero import LED, Button
        from gpiozero.tools import any_values
        from signal import pause

        led = LED(4)
        btn1 = Button(20)
        btn2 = Button(21)

        led.source = any_values(btn1, btn2)

        pause()

    .. _logical disjunction: https://en.wikipedia.org/wiki/Logical_disjunction
    """
    values = [_normalize(v) for v in values]
    for v in zip(*values):
        yield any(v)