code: def snake_case_col_names(df: DataFrame) -> DataFrame:
      """Function takes a ``DataFrame`` instance and returns the same ``DataFrame`` instance with all column names converted to snake case.
  
      (e.g. ``col_name_1``). It uses the ``to_snake_case`` function in conjunction with
      the ``with_columns_renamed`` function to achieve this.
      :param df: A ``DataFrame`` instance to process
      :type df: ``DataFrame``
      :return: A ``DataFrame`` instance with column names converted to snake case
      :rtype: ``DataFrame``.
      """
      return with_columns_renamed(to_snake_case)(df)
  
file_path: quinn/quinn/transformations.py
imports: from __future__ import annotations
  import re
  from collections.abc import Callable
  from pyspark.sql import DataFrame, SparkSession
  from pyspark.sql import functions
  from pyspark.sql.types import ArrayType, MapType, StructField, StructType
  from quinn.schema_helpers import complex_fields
label_desc: Use image node_id 3 for calling a global function with example usage: snake_case_col_names(df) and returns: with_columns_renamed