code: def fit(self, X, y=None):
          
          self.columns_ = X.columns
          columns = self.columns
          if columns is None:
              columns = X.select_dtypes(include=["category"]).columns
          else:
              for column in columns:
                  assert is_categorical_dtype(X[column]), "Must be categorical"
  
          self.categorical_columns_ = columns
          self.non_categorical_columns_ = X.columns.drop(self.categorical_columns_)
  
          if _HAS_CTD:
              self.dtypes_ = {col: X[col].dtype for col in self.categorical_columns_}
          else:
              self.dtypes_ = {
                  col: (X[col].cat.categories, X[col].cat.ordered)
                  for col in self.categorical_columns_
              }
  
          return self
docs: Determine the categorical columns to be encoded.
  
          Parameters
          ----------
          X : pandas.DataFrame or dask.dataframe.DataFrame
          y : ignored
  
          Returns
          -------
          self