class_docstr: This is a lightweight stateless class that bundles together instantiation utils.
  It is used both on its own and as a mixin to AxClient, with the intent that
  these methods can be overridden by its subclasses for specific use cases.
class_docstr_tok: ["This","is","a","lightweight","stateless","class","that","bundles","together","instantiation","utils",".","It","is","used","both","on","its","own","and","as","a","mixin","to","AxClient",",","with","the","intent","that","these","methods","can","be","overridden","by","its","subclasses","for","specific","use","cases","."]
docstr: Makes optimization config based on ObjectiveProperties objects
  
  Args:
      objectives: Mapping from an objective name to object containing:
          minimize: Whether this experiment represents a minimization problem.
          threshold: The bound in the objective's threshold constraint.
      outcome_constraints: List of string representation of outcome
          constraints of form "metric_name >= bound", like "m1 <= 3."
      status_quo_defined: bool for whether the experiment has a status quo
      metric_definitions: A mapping of metric names to extra kwargs to pass
          to that metric
docstr_tok: ["Makes","optimization","config","based","on","ObjectiveProperties","objects","Args",":","objectives",":","Mapping","from","an","objective","name","to","object","containing",":","minimize",":","Whether","this","experiment","represents","a","minimization","problem",".","threshold",":","The","bound","in","the","objective","'s","threshold","constraint",".","outcome_constraints",":","List","of","string","representation","of","outcome","constraints","of","form","``","metric_name",">","=","bound","''",",","like","``","m1","<","=","3",".","''","status_quo_defined",":","bool","for","whether","the","experiment","has","a","status","quo","metric_definitions",":","A","mapping","of","metric","names","to","extra","kwargs","to","pass","to","that","metric"]
code: def make_optimization_config_from_properties(
      cls,
      objectives: Optional[Dict[str, ObjectiveProperties]] = None,
      outcome_constraints: Optional[List[str]] = None,
      metric_definitions: Optional[Dict[str, Dict[str, Any]]] = None,
      status_quo_defined: bool = False,
  ) -> Optional[OptimizationConfig]:
      """Makes optimization config based on ObjectiveProperties objects
  
      Args:
          objectives: Mapping from an objective name to object containing:
              minimize: Whether this experiment represents a minimization problem.
              threshold: The bound in the objective's threshold constraint.
          outcome_constraints: List of string representation of outcome
              constraints of form "metric_name >= bound", like "m1 <= 3."
          status_quo_defined: bool for whether the experiment has a status quo
          metric_definitions: A mapping of metric names to extra kwargs to pass
              to that metric
      """
      if objectives is not None:
          objective_thresholds = (
              cls.build_objective_thresholds(objectives)
              if objectives is not None
              else []
          )
          simple_objectives = {
              objective: (
                  "minimize" if properties.minimize else "maximize"
              )
              for objective, properties in objectives.items()
          }
          return cls.make_optimization_config(
              objectives=simple_objectives,
              objective_thresholds=objective_thresholds,
              outcome_constraints=outcome_constraints or [],
              status_quo_defined=status_quo_defined,
              metric_definitions=metric_definitions,
          )
      return None
  
imports: import enum
  from dataclasses import dataclass
  from logging import Logger
  from typing import Any, Dict, List, Optional, Sequence, Type, Union
  from ax.core.arm import Arm
  from ax.core.experiment import DataType, DEFAULT_OBJECTIVE_NAME, Experiment
  from ax.core.map_metric import MapMetric
  from ax.core.metric import Metric
  from ax.core.objective import MultiObjective, Objective
  from ax.core.observation import ObservationFeatures
  from ax.core.optimization_config import MultiObjectiveOptimizationConfig, ObjectiveThreshold, OptimizationConfig
  from ax.core.outcome_constraint import OutcomeConstraint
  from ax.core.parameter import ChoiceParameter, FixedParameter, Parameter, PARAMETER_PYTHON_TYPE_MAP, ParameterType, RangeParameter, TParameterType
  from ax.core.parameter_constraint import OrderConstraint, ParameterConstraint
  from ax.core.search_space import HierarchicalSearchSpace, SearchSpace
  from ax.core.types import ComparisonOp, TParameterization, TParamValue
  from ax.exceptions.core import UnsupportedError
  from ax.utils.common.constants import Keys
  from ax.utils.common.logger import get_logger
  from ax.utils.common.typeutils import checked_cast, checked_cast_optional, checked_cast_to_tuple, not_none
label_desc: Use image node_id 17 for calling the InstantiationBase obj's underlying member method code with example usage: obj.make_optimization_config_from_properties(cls, objectives, outcome_constraints, metric_definitions, status_quo_defined) and returns: None, cls