code: def _left_join_on_index(left_ax, right_ax, join_keys, sort=False):
      if len(join_keys) > 1:
          if not (
              (
                  isinstance(right_ax, MultiIndex)
                  and len(join_keys) == right_ax.nlevels
              )
          ):
              raise AssertionError(
                  "If more than one join key is given then "
                  "'right_ax' must be a MultiIndex and the "
                  "number of join keys must be the number of "
                  "levels in right_ax"
              )
  
          left_indexer, right_indexer = _get_multiindex_indexer(
              join_keys, right_ax, sort=sort
          )
      else:
          jkey = join_keys[0]
  
          left_indexer, right_indexer = _get_single_indexer(
              jkey, right_ax, sort=sort
          )
  
      if sort or len(left_ax) != len(left_indexer):
          # if asked to sort or there are 1-to-many matches
          join_index = left_ax.take(left_indexer)
          return join_index, left_indexer, right_indexer
  
      # left frame preserves order & length of its index
      return left_ax, None, right_indexer
  
imports: import copy
  import string
  import warnings
  import numpy
  from pandas._libs import hashtable, join, lib
  import pandas.compat
  from pandas.compat import filter, lzip, map, range, zip
  from pandas.errors import MergeError
  from pandas.util._decorators import Appender, Substitution
  from pandas.core.dtypes.common import ensure_float64, ensure_int64, ensure_object, is_array_like, is_bool, is_bool_dtype, is_categorical_dtype, is_datetime64_dtype, is_datetime64tz_dtype, is_datetimelike, is_dtype_equal, is_extension_array_dtype, is_float_dtype, is_int64_dtype, is_integer, is_integer_dtype, is_list_like, is_number, is_numeric_dtype, is_object_dtype, needs_i8_conversion
  from pandas.core.dtypes.missing import isnull, na_value_for_dtype
  from pandas import Categorical, DataFrame, Index, MultiIndex, Series, Timedelta
  import pandas.core.algorithms
  from pandas.core.arrays.categorical import _recode_for_categories
  import pandas.core.common
  from pandas.core.frame import _merge_doc
  from pandas.core.internals import concatenate_block_managers, items_overlap_with_suffix
  import pandas.core.sorting
  from pandas.core.sorting import is_int64_overflow_possible
label_desc: Use image node_id 12 for calling a global function with example usage: _left_join_on_index(left_ax, right_ax, join_keys, sort) and returns: left_ax,  None,  right_indexer, join_index,  left_indexer,  right_indexer