code: def _drop_invariants(
      self, X: pd.DataFrame, override_return_df: bool
  ) -> Union[np.ndarray, pd.DataFrame]:
      if self.drop_invariant:
          X = X.drop(columns=self.invariant_cols)
  
      if self.return_df or override_return_df:
          return X
      else:
          return X.to_numpy()
  
imports: from abc import abstractmethod
  from enum import Enum, auto
  import warnings
  import pandas
  import numpy
  import sklearn.base
  from pandas.api.types import is_object_dtype, is_string_dtype, is_numeric_dtype
  from pandas.core.dtypes.dtypes import CategoricalDtype
  from sklearn.base import BaseEstimator, TransformerMixin
  from sklearn.exceptions import NotFittedError
  from typing import Dict, List, Optional, Union
  from scipy.sparse import csr_matrix
  from sklearn.preprocessing import LabelEncoder
label_desc: Use image node_id 5 for calling the BaseEncoder obj's underlying member method code with example usage: obj._drop_invariants(X, override_return_df) and returns: X, X