code: def test_sanitize_column_names():
      df = pd.DataFrame(
          {
              "col.one": [1, 2, 3, 4],
              "col(two)": [4, 5, 6, 7],
              "col[]:three": [7, 8, 9, 10],
              "col 'one' (new)": [1, 2, 3, 4],
          }
      )
  
      df = sanitize_column_names(df)
  
      assert list(df.columns) == [
          "col_one",
          "col_two_",
          "col___three",
          "col _one_ _new_",
      ]
  
imports: import functools
  import json
  import logging
  import numpy
  import pandas
  import pytest
  from fsspec.config import conf
  from ludwig.api import LudwigModel
  from ludwig.data.cache.types import CacheableDataframe
  from ludwig.data.dataset_synthesizer import build_synthetic_dataset_df
  from ludwig.utils.data_utils import add_sequence_feature_column, figure_data_format_dataset, get_abs_path, hash_dict, NumpyEncoder, PANDAS_DF, read_csv, read_html, read_parquet, sanitize_column_names, use_credentials
  from tests.integration_tests.utils import private_param
label_desc: Use image node_id 11 for calling a global function with example usage: test_sanitize_column_names() without return types