code: def test_pyarrow_type(self, DMatrixT: Type[xgb.DMatrix]) -> None:
      for orig, df in pd_arrow_dtypes():
          f0_orig: pd.Series = orig["f0"]
          f0 = df["f0"]
  
          if f0.dtype.name.startswith("bool"):
              y = None
              y_orig = None
          else:
              y_orig = f0_orig.fillna(0, inplace=False)
              y = f0.fillna(0, inplace=False)
  
          m_orig = DMatrixT(orig, enable_categorical=True, label=y_orig)
          m_etype = DMatrixT(df, enable_categorical=True, label=y)
  
          assert tm.predictor_equal(m_orig, m_etype)
          if y is not None:
              np.testing.assert_allclose(
                  m_orig.get_label(), m_etype.get_label()
              )
              np.testing.assert_allclose(m_etype.get_label(), y.values)
  
imports: from typing import Type
  import numpy
  import pytest
  import xgboost
  from xgboost import testing
  from xgboost.core import DataSplitMode
  from xgboost.testing.data import pd_arrow_dtypes, pd_dtypes, run_base_margin_info
label_desc: Use image node_id 11 for calling the TestPandas obj's underlying member method code with example usage: obj.test_pyarrow_type(DMatrixT) without return types