class_docstr: Convert a RangeParameter of type int to type float.
  
  Uses either randomized_rounding or default python rounding,
  depending on 'rounding' flag.
  
  The `min_choices` config can be used to transform only the parameters
  with cardinality greater than or equal to `min_choices`; with the exception
  of `log_scale` parameters, which are always transformed.
  
  Transform is done in-place.
class_docstr_tok: ["Convert","a","RangeParameter","of","type","int","to","type","float",".","Uses","either","randomized_rounding","or","default","python","rounding",",","depending","on","'rounding","'","flag",".","The","`","min_choices","`","config","can","be","used","to","transform","only","the","parameters","with","cardinality","greater","than","or","equal","to","`","min_choices","`",";","with","the","exception","of","`","log_scale","`","parameters",",","which","are","always","transformed",".","Transform","is","done","in-place","."]
code: def _transform_search_space(
      self, search_space: SearchSpace
  ) -> SearchSpace:
      transformed_parameters: Dict[str, Parameter] = {}
      for p_name, p in search_space.parameters.items():
          if p_name in self.transform_parameters and isinstance(
              p, RangeParameter
          ):
              transformed_parameters[p_name] = RangeParameter(
                  name=p_name,
                  parameter_type=ParameterType.FLOAT,
                  # +/- 0.5 ensures that sampling
                  # 1) floating point numbers from (quasi-)Uniform(0,1)
                  # 2) unnormalizing to the raw search space
                  # 3) rounding
                  # results in uniform (quasi-)random integers
                  lower=p.lower - 0.49999,
                  upper=p.upper + 0.49999,
                  log_scale=p.log_scale,
                  digits=p.digits,
                  is_fidelity=p.is_fidelity,
                  target_value=p.target_value,  # casting happens in constructor
              )
          else:
              transformed_parameters[p.name] = p
      return construct_new_search_space(
          search_space=search_space,
          parameters=list(transformed_parameters.values()),
          parameter_constraints=[
              pc.clone_with_transformed_parameters(
                  transformed_parameters=transformed_parameters
              )
              for pc in search_space.parameter_constraints
          ],
      )
  
file_path: Ax/ax/modelbridge/transforms/int_to_float.py
imports: from logging import Logger
  from typing import Dict, List, Optional, Set, TYPE_CHECKING
  from ax.core.observation import Observation, ObservationFeatures
  from ax.core.parameter import Parameter, ParameterType, RangeParameter
  from ax.core.search_space import SearchSpace
  from ax.modelbridge.transforms.base import Transform
  from ax.modelbridge.transforms.rounding import contains_constrained_integer, randomized_round_parameters
  from ax.modelbridge.transforms.utils import construct_new_search_space
  from ax.models.types import TConfig
  from ax.utils.common.logger import get_logger
  from ax.utils.common.typeutils import checked_cast, not_none
label_desc: Use image node_id 3 for calling the IntToFloat obj's underlying member method code with example usage: obj._transform_search_space(search_space) and returns: construct_new_search_space