code: def test_table_mixed_dtypes(setup_path):
      # frame
      df = DataFrame(
          1.1 * np.arange(120).reshape((30, 4)),
          columns=Index(list("ABCD"), dtype=object),
          index=Index([f"i-{i}" for i in range(30)], dtype=object),
      )
      df["obj1"] = "foo"
      df["obj2"] = "bar"
      df["bool1"] = df["A"] > 0
      df["bool2"] = df["B"] > 0
      df["bool3"] = True
      df["int1"] = 1
      df["int2"] = 2
      df["timestamp1"] = Timestamp("20010102").as_unit("ns")
      df["timestamp2"] = Timestamp("20010103").as_unit("ns")
      df["datetime1"] = Timestamp("20010102").as_unit("ns")
      df["datetime2"] = Timestamp("20010103").as_unit("ns")
      df.loc[df.index[3:6], ["obj1"]] = np.nan
      df = df._consolidate()
  
      with ensure_clean_store(setup_path) as store:
          store.append("df1_mixed", df)
          tm.assert_frame_equal(store.select("df1_mixed"), df)
  
imports: import contextlib
  import datetime
  import hashlib
  import tempfile
  import time
  import numpy
  import pytest
  import pandas
  from pandas import DataFrame, DatetimeIndex, Index, MultiIndex, Series, Timestamp, concat, date_range, period_range, timedelta_range
  import pandas._testing
  from pandas.tests.io.pytables.common import _maybe_remove, ensure_clean_store
  from pandas.io.pytables import HDFStore, read_hdf
label_desc: Use image node_id 16 for calling a global function with example usage: test_table_mixed_dtypes(setup_path) without return types