code: def warn_dtype_mismatch(left, right, left_on, right_on):
      """Checks for merge column dtype mismatches and throws a warning (#4574)"""
  
      if not isinstance(left_on, list):
          left_on = [left_on]
      if not isinstance(right_on, list):
          right_on = [right_on]
  
      if all(col in left.columns for col in left_on) and all(
          col in right.columns for col in right_on
      ):
          dtype_mism = [
              ((lo, ro), left.dtypes[lo], right.dtypes[ro])
              for lo, ro in zip(left_on, right_on)
              if not is_dtype_equal(left.dtypes[lo], right.dtypes[ro])
          ]
  
          if dtype_mism:
              col_tb = asciitable(
                  ("Merge columns", "left dtype", "right dtype"),
                  dtype_mism,
              )
  
              warnings.warn(
                  (
                      "Merging dataframes with merge column data "
                      "type mismatches: \n{}\nCast dtypes explicitly to "
                      "avoid unexpected results."
                  ).format(col_tb)
              )
  
imports: from __future__ import annotations
  import math
  import pickle
  import warnings
  from functools import partial, wraps
  import numpy
  import pandas
  from pandas.api.types import is_dtype_equal
  from tlz import merge_sorted, unique
  from dask.base import is_dask_collection, tokenize
  from dask.dataframe import methods
  from dask.dataframe.core import DataFrame, Index, Series, _concat, _deprecated_kwarg, _Frame, _maybe_from_pandas, is_broadcastable, map_partitions, new_dd_object, prefix_reduction, suffix_reduction
  from dask.dataframe.dispatch import group_split_dispatch, hash_object_dispatch
  from dask.dataframe.io import from_pandas
  from dask.dataframe.shuffle import partitioning_index, rearrange_by_divisions, shuffle, shuffle_group
  from dask.dataframe.utils import asciitable, check_meta, is_dataframe_like, is_series_like, make_meta, strip_unknown_categories
  from dask.highlevelgraph import HighLevelGraph
  from dask.layers import BroadcastJoinLayer
  from dask.utils import M, apply, get_default_shuffle_method
label_desc: Use image node_id 8 for calling a global function with example usage: warn_dtype_mismatch(left, right, left_on, right_on) without return types