code: def _can_use_numexpr(op, op_str, a, b, dtype_check):
      """return a boolean if we WILL be using numexpr"""
      if op_str is not None:
          # required min elements (otherwise we are adding overhead)
          if np.prod(a.shape) > _MIN_ELEMENTS:
              # check for dtype compatibility
              dtypes = set()
              for o in [a, b]:
                  if hasattr(o, "get_dtype_counts"):
                      s = o.get_dtype_counts()
                      if len(s) > 1:
                          return False
                      dtypes |= set(s.index)
                  elif isinstance(o, np.ndarray):
                      dtypes |= {o.dtype.name}
  
              # allowed are a superset
              if (
                  not len(dtypes)
                  or _ALLOWED_DTYPES[dtype_check] >= dtypes
              ):
                  return True
  
      return False
  
file_path: catboost/contrib/python/pandas/py2/pandas/core/computation/expressions.py
imports: import warnings
  import numpy
  from pandas.core.dtypes.generic import ABCDataFrame
  import pandas.core.common
  from pandas.core.computation.check import _NUMEXPR_INSTALLED
  from pandas.core.config import get_option
label_desc: Use image node_id 4 for calling a global function with example usage: _can_use_numexpr(op, op_str, a, b, dtype_check) and returns: False, True, False