parameters: (joinf, with_indexers: bool = True)
return_statement: return wrapper
docstring: Create the join wrapper methods.
docstring_summary: Create the join wrapper methods.
docstring_tokens: Create the join wrapper methods .
function: def _join_i8_wrapper(joinf, with_indexers: bool = True):
      """
      Create the join wrapper methods.
      """
  
      @staticmethod  # type: ignore
      def wrapper(left, right):
          if isinstance(left, (np.ndarray, ABCIndex, ABCSeries, DatetimeLikeArrayMixin)):
              left = left.view("i8")
          if isinstance(right, (np.ndarray, ABCIndex, ABCSeries, DatetimeLikeArrayMixin)):
              right = right.view("i8")
  
          results = joinf(left, right)
          if with_indexers:
              # dtype should be timedelta64[ns] for TimedeltaIndex
              #  and datetime64[ns] for DatetimeIndex
              dtype = left.dtype.base
  
              join_index, left_indexer, right_indexer = results
              join_index = join_index.view(dtype)
              return join_index, left_indexer, right_indexer
          return results
  
      return wrapper
function_tokens: def _join_i8_wrapper ( joinf , with_indexers : bool = True ) : @ staticmethod # type: ignore def wrapper ( left , right ) : if isinstance ( left , ( np . ndarray , ABCIndex , ABCSeries , DatetimeLikeArrayMixin ) ) : left = left . view ( "i8" ) if isinstance ( right , ( np . ndarray , ABCIndex , ABCSeries , DatetimeLikeArrayMixin ) ) : right = right . view ( "i8" ) results = joinf ( left , right ) if with_indexers : # dtype should be timedelta64[ns] for TimedeltaIndex #  and datetime64[ns] for DatetimeIndex dtype = left . dtype . base join_index , left_indexer , right_indexer = results join_index = join_index . view ( dtype ) return join_index , left_indexer , right_indexer return results return wrapper