code: def coerce_types(**kwargs):
      """
      Preprocessing decorator that applies type coercions.
  
      Parameters
      ----------
      **kwargs : dict[str -> (type, callable)]
           Keyword arguments mapping function parameter names to pairs of
           (from_type, to_type).
  
      Examples
      --------
      >>> @coerce_types(x=(float, int), y=(int, str))
      ... def func(x, y):
      ...     return (x, y)
      ...
      >>> func(1.0, 3)
      (1, '3')
      """
  
      def _coerce(types):
          return coerce(*types)
  
      return preprocess(**valmap(_coerce, kwargs))
  
imports: from datetime import tzinfo
  from functools import partial, wraps
  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 catalyst.utils.functional import getattrs
  from catalyst.utils.preprocess import call, preprocess
label_desc: Use image node_id 18 for calling a global function with example usage: coerce_types() and returns: preprocess, coerce