code: 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.
      """
  
      def _expect_element(collection):
          if isinstance(collection, (set, frozenset)):
              # Special case the error message for set and frozen set to make it
              # less verbose.
              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))
  
imports: from datetime import tzinfo
  from functools import partial
  from operator import attrgetter
  from numpy import dtype
  import pandas
  from pytz import timezone
  from six import iteritems, string_types, PY3
  from toolz import valmap, complement, compose
  import toolz.curried.operator
  from zipline.utils.compat import wraps
  from zipline.utils.functional import getattrs
  from zipline.utils.preprocess import call, preprocess
label_desc: Use image node_id 12 for calling a global function with example usage: expect_element(__funcname) and returns: preprocess, make_check