code: def test_sanitize_dataframe_arrow_columns():
      # create a dataframe with various types
      df = pd.DataFrame(
          {
              "s": list("abcde"),
              "f": np.arange(5, dtype=float),
              "i": np.arange(5, dtype=int),
              "b": np.array([True, False, True, True, False]),
              "d": pd.date_range("2012-01-01", periods=5, freq="H"),
              "c": pd.Series(list("ababc"), dtype="category"),
              "p": pd.date_range(
                  "2012-01-01", periods=5, freq="H"
              ).tz_localize("UTC"),
          }
      )
      df_arrow = pa.Table.from_pandas(df).to_pandas(
          types_mapper=pd.ArrowDtype
      )
      df_clean = sanitize_dataframe(df_arrow)
      records = df_clean.to_dict(orient="records")
      assert records[0] == {
          "s": "a",
          "f": 0.0,
          "i": 0,
          "b": True,
          "d": "2012-01-01T00:00:00",
          "c": "a",
          "p": "2012-01-01T00:00:00+00:00",
      }
  
      # Make sure we can serialize to JSON without error
      json.dumps(records)
  
file_path: altair/tests/utils/test_utils.py
imports: import io
  import json
  import warnings
  import numpy
  import pandas
  import pytest
  from altair.utils import infer_vegalite_type, sanitize_dataframe
label_desc: Use image node_id 3 for calling a global function with example usage: test_sanitize_dataframe_arrow_columns() without return types