code: def isin(comps, values):
      """
      Compute the isin boolean array
  
      Parameters
      ----------
      comps : array-like
      values : array-like
  
      Returns
      -------
      boolean array same length as comps
      """
  
      if not is_list_like(comps):
          raise TypeError(
              "only list-like objects are allowed to be passed"
              " to isin(), you passed a [{comps_type}]".format(
                  comps_type=type(comps).__name__
              )
          )
      if not is_list_like(values):
          raise TypeError(
              "only list-like objects are allowed to be passed"
              " to isin(), you passed a [{values_type}]".format(
                  values_type=type(values).__name__
              )
          )
  
      if not isinstance(values, (ABCIndex, ABCSeries, np.ndarray)):
          values = construct_1d_object_array_from_listlike(list(values))
  
      if is_categorical_dtype(comps):
          # TODO(extension)
          # handle categoricals
          return comps._values.isin(values)
  
      comps = com.values_from_object(comps)
  
      comps, dtype, _ = _ensure_data(comps)
      values, _, _ = _ensure_data(values, dtype=dtype)
  
      # faster for larger cases to use np.in1d
      f = lambda x, y: htable.ismember_object(x, values)
  
      # GH16012
      # Ensure np.in1d doesn't get object types or it *may* throw an exception
      if len(comps) > 1000000 and not is_object_dtype(comps):
          f = lambda x, y: np.in1d(x, y)
      elif is_integer_dtype(comps):
          try:
              values = values.astype("int64", copy=False)
              comps = comps.astype("int64", copy=False)
              f = lambda x, y: htable.ismember_int64(x, y)
          except (TypeError, ValueError, OverflowError):
              values = values.astype(object)
              comps = comps.astype(object)
  
      elif is_float_dtype(comps):
          try:
              values = values.astype("float64", copy=False)
              comps = comps.astype("float64", copy=False)
              f = lambda x, y: htable.ismember_float64(x, y)
          except (TypeError, ValueError):
              values = values.astype(object)
              comps = comps.astype(object)
  
      return f(comps, values)
  
imports: from __future__ import division
  from textwrap import dedent
  from warnings import catch_warnings, simplefilter, warn
  import numpy
  from pandas._libs import algos, hashtable, lib
  from pandas._libs.tslib import iNaT
  from pandas.util._decorators import Appender, Substitution, deprecate_kwarg
  from pandas.core.dtypes.cast import construct_1d_object_array_from_listlike, maybe_promote
  from pandas.core.dtypes.common import ensure_float64, ensure_int64, ensure_object, ensure_platform_int, ensure_uint64, is_array_like, is_bool_dtype, is_categorical_dtype, is_complex_dtype, is_datetime64_any_dtype, is_datetime64tz_dtype, is_datetimelike, is_extension_array_dtype, is_float_dtype, is_integer_dtype, is_interval_dtype, is_list_like, is_numeric_dtype, is_object_dtype, is_period_dtype, is_scalar, is_signed_integer_dtype, is_sparse, is_timedelta64_dtype, is_unsigned_integer_dtype, needs_i8_conversion
  from pandas.core.dtypes.generic import ABCIndex, ABCIndexClass, ABCSeries
  from pandas.core.dtypes.missing import isna, na_value_for_dtype
  from pandas.core import common
label_desc: Use image node_id 8 for calling a global function with example usage: isin(comps, values) and returns: f, comps