class_docstr: Cast each param value to the respective parameter's type/format and
  to a flattened version of the hierarchical search space, if applicable.
  
  This is a default transform that should run across all models.
  
  NOTE: In case where searh space is hierarchical and this transform is
  configured to flatten it:
    * All calls to `Cast.transform_...` transform Ax objects defined in
      terms of hierarchical search space, to their definitions in terms of
      flattened search space.
    * All calls to `Cast.untransform_...` cast Ax objects back to a
      hierarchical search space.
    * The hierarchical search space is seen as the "original" search space,
      and the flattened search space –– as "transformed".
  
  Transform is done in-place for casting types, but objects are copied
  during flattening of- and casting to the hierarchical search space.
class_docstr_tok: ["Cast","each","param","value","to","the","respective","parameter","'s","type\/format","and","to","a","flattened","version","of","the","hierarchical","search","space",",","if","applicable",".","This","is","a","default","transform","that","should","run","across","all","models",".","NOTE",":","In","case","where","searh","space","is","hierarchical","and","this","transform","is","configured","to","flatten","it",":","*","All","calls","to","`","Cast.transform_","...","`","transform","Ax","objects","defined","in","terms","of","hierarchical","search","space",",","to","their","definitions","in","terms","of","flattened","search","space",".","*","All","calls","to","`","Cast.untransform_","...","`","cast","Ax","objects","back","to","a","hierarchical","search","space",".","*","The","hierarchical","search","space","is","seen","as","the","``","original","''","search","space",",","and","the","flattened","search","space","\u2013\u2013","as","``","transformed","''",".","Transform","is","done","in-place","for","casting","types",",","but","objects","are","copied","during","flattening","of-","and","casting","to","the","hierarchical","search","space","."]
code: def __init__(
      self,
      search_space: Optional[SearchSpace] = None,
      observations: Optional[List[Observation]] = None,
      modelbridge: Optional[
          "modelbridge_module.base.ModelBridge"
      ] = None,
      config: Optional[TConfig] = None,
  ) -> None:
      self.search_space: SearchSpace = not_none(search_space).clone()
      self.flatten_hss: bool = (
          config is None
          or checked_cast(bool, config.get("flatten_hss", True))
      ) and isinstance(search_space, HierarchicalSearchSpace)
  
file_path: Ax/ax/modelbridge/transforms/cast.py
imports: from typing import List, Optional, TYPE_CHECKING
  from ax.core.observation import Observation, ObservationFeatures
  from ax.core.search_space import HierarchicalSearchSpace, SearchSpace
  from ax.modelbridge.transforms.base import Transform
  from ax.models.types import TConfig
  from ax.utils.common.typeutils import checked_cast, not_none
label_desc: Use image node_id 1 to create a new Cast object from inherited base classes: Transform with example: obj = Cast(search_space, observations, modelbridge, config)