docstr: Fit the FairGBM model to the training data.
  
  Parameters
  ----------
  X : pandas.DataFrame
      The training input samples.
  y : pandas.Series
      The target values.
  s : pandas.Series, optional
      The sensitive attribute values.
code: def fit(
      self, X: pd.DataFrame, y: pd.Series, s: Optional[pd.Series] = None
  ) -> None:
      """Fit the FairGBM model to the training data.
  
      Parameters
      ----------
      X : pandas.DataFrame
          The training input samples.
      y : pandas.Series
          The target values.
      s : pandas.Series, optional
          The sensitive attribute values.
      """
      self.logger.debug(
          f"Input size for model training: {X.shape[0]} rows, "
          f"{X.shape[1]} columns."
      )
      self.model.fit(X=X, y=y, constraint_group=s)
  
file_path: aequitas/src/aequitas/fairflow/methods/inprocessing/fairgbm.py
imports: from typing import Optional
  import pandas
  from fairgbm import FairGBMClassifier
  from ...utils import create_logger
  from .inprocessing import InProcessing
label_desc: Use image node_id 2 for calling the FairGBM obj's underlying member method code with example usage: obj.fit(X, y, s) without return types