code: def auto_join_geo_names(map_join: Any, gdf):
      if map_join is None:
          return None
  
      data_names = map_join[0]
      map_names = map_join[1]
  
      if map_names is None:
          map_names = find_geo_names(gdf)
          if len(map_names) == 0:
              raise ValueError(
                  "Can't deduce joining keys.\n"
                  "Define both data and map key columns in map_join "
                  "explicitly: map_join=[['data_column'], ['map_column']]."
              )
  
          if len(data_names) > len(map_names):
              raise ValueError(
                  "Data key columns count exceeds map key columns count: {} > {}".format(
                      len(data_names), len(map_names)
                  )
              )
  
          map_names = map_names[
              : len(data_names)
          ]  # use same number of key columns
  
      return [data_names, map_names]
  
file_path: lets-plot/python-package/lets_plot/plot/util.py
imports: from collections.abc import Iterable
  from datetime import datetime
  from typing import Any, Tuple, Sequence, Optional, Dict
  from lets_plot._type_utils import is_dict_or_dataframe
  from lets_plot.geo_data_internals.utils import find_geo_names
  from lets_plot.mapping import MappingMeta
  from lets_plot.plot.core import aes
label_desc: Use image node_id 5 for calling a global function with example usage: auto_join_geo_names(map_join, gdf) and returns: list, None