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_
              }
  
          left = len(self.non_categorical_columns_)
          self.categorical_blocks_ = {}
          for col in self.categorical_columns_:
              right = left + len(X[col].cat.categories)
              if self.drop_first:
                  right -= 1
              self.categorical_blocks_[col], left = slice(left, right), right
  
          if isinstance(X, pd.DataFrame):
              sample = X.iloc[:1]
          else:
              sample = X._meta_nonempty
  
          self.transformed_columns_ = pd.get_dummies(
              sample, drop_first=self.drop_first
          ).columns
          return self
docs: Determine the categorical columns to be dummy encoded.
  
          Parameters
          ----------
          X : pandas.DataFrame or dask.dataframe.DataFrame
          y : ignored
  
          Returns
          -------
          self