human
Complete the below
def expect_element(__funcname=_qualified_name, **named):

    ''''Preprocessing decorator that verifies inputs are elements of some
    expected collection.
    Examples
    >>> @expect_element(x=(\'a\', \'b\'))
    ... def foo(x):
    ...    return x.upper()
    >>> foo(\'a\')
    \'A\'
    >>> foo(\'b\')
    \'B\'
    >>> foo(\'c\')  # doctest: +NORMALIZE_WHITESPACE +ELLIPSIS
    Traceback (most recent call last):
    ValueError: ...foo() expected a value in (\'a\', \'b\') for argument \'x\',
    but got \'c\' instead.
    Notes
    A special argument, __funcname, can be provided as a string to override the
    function name shown in error messages.  This is most often used on __init__
    or __new__ methods to make errors refer to the class name instead of the
    function name.
    This uses the `in` operator (__contains__) to make the containment check.
    This allows us to use any custom container as long as the object supports
    the container protocol.'
    '''

=====
Can you provide a the Python code you requested?
assistant
#Here is the Python code you requested.
    def _expect_element(collection):
        if isinstance(collection, (set, frozenset)):
            collection_for_error_message = tuple(sorted(collection))
        else:
            collection_for_error_message = collection
        template = "%(funcname)s()    expected    a    value    in    {collection}    for    argument    '%(argname)s',    but    got    %(actual)s    instead.".format(collection=collection_for_error_message)
        return make_check(ValueError, template, complement(op.contains(collection)), repr, funcname=__funcname)
    return preprocess(**valmap(_expect_element, named))