Returns the `logical conjunction`_ of all supplied values (the result is
    only :data:`True` if and only if all input values are simultaneously
    :data:`True`). One or more *values* can be specified. For example, to light
    an :class:`~gpiozero.LED` only when *both* buttons are pressed::

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

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

        led.source = all_values(btn1, btn2)

        pause()

    .. _logical conjunction: https://en.wikipedia.org/wiki/Logical_conjunction

def all_values(*values):
    """
    Returns the `logical conjunction`_ of all supplied values (the result is
    only :data:`True` if and only if all input values are simultaneously
    :data:`True`). One or more *values* can be specified. For example, to light
    an :class:`~gpiozero.LED` only when *both* buttons are pressed::

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

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

        led.source = all_values(btn1, btn2)

        pause()

    .. _logical conjunction: https://en.wikipedia.org/wiki/Logical_conjunction
    """
    print("here")
    values = [_normalize(v) for v in values]
    for v in zip(*values):
        yield all(v)