code: def _multiple_conditional_join_ne(
      df: pd.DataFrame,
      right: pd.DataFrame,
      conditions: list[tuple[pd.Series, pd.Series, str]],
      keep: str,
  ) -> tuple:
      """
      Get indices for multiple conditions,
      where all the operators are `!=`.
  
      Returns a tuple of (left_index, right_index)
      """
      # currently, there is no optimization option here
      # not equal typically combines less than
      # and greater than, so a lot more rows are returned
      # than just less than or greater than
      first, *rest = conditions
      left_on, right_on, op = first
  
      indices = _generic_func_cond_join(
          df[left_on],
          right[right_on],
          op,
          multiple_conditions=False,
          keep="all",
      )
      if indices is None:
          return None
  
      rest = (
          (df[left_on], right[right_on], op)
          for left_on, right_on, op in rest
      )
  
      indices = _generate_indices(*indices, rest)
  
      if not indices:
          return None
  
      return _keep_output(keep, *indices)
  
imports: from __future__ import annotations
  import operator
  import warnings
  from typing import Any, Hashable, Literal, Optional, Union
  import numpy
  import pandas
  import pandas_flavor
  from pandas.api.types import is_datetime64_dtype, is_dtype_equal, is_extension_array_dtype, is_numeric_dtype, is_timedelta64_dtype
  from pandas.core.reshape.merge import _MergeOperation
  from janitor.functions.utils import _generic_func_cond_join, _JoinOperator, _keep_output, col, greater_than_join_types, less_than_join_types
  from janitor.utils import check, check_column, find_stack_level
label_desc: Use image node_id 7 for calling a global function with example usage: _multiple_conditional_join_ne(df, right, conditions, keep) and returns: _keep_output, None, None