code: def _expect_bounded(make_bounded_check, __funcname, **named):
      def valid_bounds(t):
          return (
              isinstance(t, tuple) and len(t) == 2 and t != (None, None)
          )
  
      for name, bounds in iteritems(named):
          if not valid_bounds(bounds):
              raise TypeError(
                  "expect_bounded() expected a tuple of bounds for"
                  " argument '{name}', but got {bounds} instead.".format(
                      name=name,
                      bounds=bounds,
                  )
              )
  
      return preprocess(**valmap(make_bounded_check, 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 15 for calling a global function with example usage: _expect_bounded(make_bounded_check, __funcname) and returns: preprocess, unknown