code: def test_get_hyperparameter_configuration_space_3choices(self):
      cs = ConfigSpace.configuration_space.ConfigurationSpace()
      dataset_properties = {"target_type": "classification"}
      exclude = {}
      include = {}
      pipeline = [
          (
              "p0",
              feature_preprocessing.FeaturePreprocessorChoice(
                  dataset_properties
              ),
          ),
          (
              "p1",
              feature_preprocessing.FeaturePreprocessorChoice(
                  dataset_properties
              ),
          ),
          (
              "c",
              classification.ClassifierChoice(dataset_properties),
          ),
      ]
  
      base = BasePipelineMock()
      cs = base._get_base_search_space(
          cs=cs,
          dataset_properties=dataset_properties,
          exclude=exclude,
          include=include,
          pipeline=pipeline,
      )
  
      self.assertEqual(
          len(cs.get_hyperparameter("p0:__choice__").choices), 13
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p1:__choice__").choices), 15
      )
  
      # for clause in sorted([str(clause) for clause in cs.forbidden_clauses]):
      #     print(clause)
      self.assertEqual(148, len(cs.forbidden_clauses))
  
      cs = ConfigSpace.configuration_space.ConfigurationSpace()
      dataset_properties = {
          "target_type": "classification",
          "signed": True,
      }
      include = {"c": ["multinomial_nb"]}
      cs = base._get_base_search_space(
          cs=cs,
          dataset_properties=dataset_properties,
          exclude=exclude,
          include=include,
          pipeline=pipeline,
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p0:__choice__").choices), 13
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p1:__choice__").choices), 10
      )
      self.assertEqual(
          len(cs.get_hyperparameter("c:__choice__").choices), 1
      )
      # Mostly combinations of p0 making the data unsigned and p1 not
      # changing the values of the data points
      # for clause in sorted([str(clause) for clause in cs.forbidden_clauses]):
      #    print(clause)
      self.assertEqual(64, len(cs.forbidden_clauses))
  
      cs = ConfigSpace.configuration_space.ConfigurationSpace()
      dataset_properties = {
          "target_type": "classification",
          "signed": True,
      }
      include = {}
      cs = base._get_base_search_space(
          cs=cs,
          dataset_properties=dataset_properties,
          exclude=exclude,
          include=include,
          pipeline=pipeline,
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p0:__choice__").choices), 13
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p1:__choice__").choices), 15
      )
      self.assertEqual(
          len(cs.get_hyperparameter("c:__choice__").choices), 16
      )
      # for clause in sorted([str(clause) for clause in cs.forbidden_clauses]):
      #    print(clause)
      self.assertEqual(110, len(cs.forbidden_clauses))
  
      cs = ConfigSpace.configuration_space.ConfigurationSpace()
      dataset_properties = {
          "target_type": "classification",
          "sparse": True,
      }
      cs = base._get_base_search_space(
          cs=cs,
          dataset_properties=dataset_properties,
          exclude=exclude,
          include=include,
          pipeline=pipeline,
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p0:__choice__").choices), 12
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p1:__choice__").choices), 15
      )
      # for clause in sorted([str(clause) for clause in cs.forbidden_clauses]):
      #    print(clause)
      self.assertEqual(419, len(cs.forbidden_clauses))
  
      cs = ConfigSpace.configuration_space.ConfigurationSpace()
      dataset_properties = {
          "target_type": "classification",
          "sparse": True,
          "signed": True,
      }
      cs = base._get_base_search_space(
          cs=cs,
          dataset_properties=dataset_properties,
          exclude=exclude,
          include=include,
          pipeline=pipeline,
      )
  
      self.assertEqual(
          len(cs.get_hyperparameter("p0:__choice__").choices), 12
      )
      self.assertEqual(
          len(cs.get_hyperparameter("p1:__choice__").choices), 15
      )
      # Data is guaranteed to be positive in cases like densifier,
      # extra_trees_preproc, multinomial_nb -> less constraints
      # for clause in sorted([str(clause) for clause in cs.forbidden_clauses]):
      #    print(clause)
      self.assertEqual(359, len(cs.forbidden_clauses))
  
file_path: auto-sklearn/test/test_pipeline/test_base.py
imports: from typing import Optional
  import ConfigSpace.configuration_space
  import autosklearn.pipeline.base
  import autosklearn.pipeline.components.base
  import autosklearn.pipeline.components.classification
  import autosklearn.pipeline.components.feature_preprocessing
  from autosklearn.askl_typing import FEAT_TYPE_TYPE
  import unittest
  import unittest.mock
label_desc: Use image node_id 1 for calling the BaseTest obj's underlying member method code with example usage: obj.test_get_hyperparameter_configuration_space_3choices() without return types