code: def _get_auto_winsorization_cutoffs_single_objective(
      metric_values: List[float], minimize: bool
  ) -> Tuple[float, float]:
      """Automatic winsorization for a single objective.
  
      We use a heuristic similar to what is used for Tukey box-plots in order to determine
      what is an outlier. If we are minimizing we make sure that we winsorize large values
      and if we maximize we winsorize small values.
      """
      Y = np.array(metric_values)
      if minimize:
          return (
              DEFAULT_CUTOFFS[0],
              _get_tukey_cutoffs(Y, lower=False),
          )
      else:
          return (_get_tukey_cutoffs(Y, lower=True), DEFAULT_CUTOFFS[1])
  
imports: import warnings
  from logging import Logger
  from typing import Dict, List, Optional, Tuple, TYPE_CHECKING, Union
  import numpy
  from ax.core.objective import MultiObjective, ScalarizedObjective
  from ax.core.observation import Observation, ObservationData
  from ax.core.optimization_config import MultiObjectiveOptimizationConfig, OptimizationConfig
  from ax.core.outcome_constraint import ComparisonOp, ObjectiveThreshold, OutcomeConstraint, ScalarizedOutcomeConstraint
  from ax.core.search_space import SearchSpace
  from ax.exceptions.core import DataRequiredError, UnsupportedError, UserInputError
  from ax.modelbridge.transforms.base import Transform
  from ax.modelbridge.transforms.utils import derelativize_optimization_config_with_raw_status_quo, get_data
  from ax.models.types import TConfig, WinsorizationConfig
  from ax.utils.common.logger import get_logger
  from ax.utils.common.typeutils import checked_cast
label_desc: Use image node_id 7 for calling a global function with example usage: _get_auto_winsorization_cutoffs_single_objective(metric_values, minimize) and returns: DEFAULT_CUTOFFS,  _get_tukey_cutoffs, _get_tukey_cutoffs,  DEFAULT_CUTOFFS