code: def get_hyperparameter_search_space(
      feat_type: Optional[FEAT_TYPE_TYPE] = None,
      dataset_properties=None,
  ):
      cs = ConfigurationSpace()
      n_clusters = UniformIntegerHyperparameter(
          "n_clusters", 2, 400, 25
      )
      affinity = CategoricalHyperparameter(
          "affinity", ["euclidean", "manhattan", "cosine"], "euclidean"
      )
      linkage = CategoricalHyperparameter(
          "linkage", ["ward", "complete", "average"], "ward"
      )
      pooling_func = CategoricalHyperparameter(
          "pooling_func", ["mean", "median", "max"]
      )
  
      cs.add_hyperparameters(
          [n_clusters, affinity, linkage, pooling_func]
      )
  
      affinity_and_linkage = ForbiddenAndConjunction(
          ForbiddenInClause(affinity, ["manhattan", "cosine"]),
          ForbiddenEqualsClause(linkage, "ward"),
      )
      cs.add_forbidden_clause(affinity_and_linkage)
      return cs
  
file_path: auto-sklearn/autosklearn/pipeline/components/feature_preprocessing/feature_agglomeration.py
imports: from typing import Optional
  import numpy
  from ConfigSpace.configuration_space import ConfigurationSpace
  from ConfigSpace.forbidden import ForbiddenAndConjunction, ForbiddenEqualsClause, ForbiddenInClause
  from ConfigSpace.hyperparameters import CategoricalHyperparameter, UniformIntegerHyperparameter
  from autosklearn.askl_typing import FEAT_TYPE_TYPE
  from autosklearn.pipeline.components.base import AutoSklearnPreprocessingAlgorithm
  from autosklearn.pipeline.constants import DENSE, INPUT, UNSIGNED_DATA
label_desc: Use image node_id 5 for calling the FeatureAgglomeration obj's underlying member method code with example usage: obj.get_hyperparameter_search_space(feat_type, dataset_properties) and returns: cs