code: def validate_bounds(
      bounds: List[Tuple[float, float]],
      fixed_feature_indices: np.ndarray,
  ) -> None:
      """Ensure the requested space is [0,1]^d.
  
      Args:
          bounds: A list of d (lower, upper) tuples for each column of X.
          fixed_feature_indices: Indices of features which are fixed at a
              particular value.
      """
      for feature_idx, bound in enumerate(bounds):
          # Bounds for fixed features are not unit-transformed.
          if feature_idx in fixed_feature_indices:
              continue
  
          if bound[0] != 0 or bound[1] != 1:
              raise ValueError(
                  "This generator operates on [0,1]^d. Please make use "
                  "of the UnitX transform in the ModelBridge, and ensure "
                  "task features are fixed."
              )
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from typing import Callable, Dict, List, Optional, Protocol, Set, Tuple, Union
  import numpy
  import torch
  from ax.core.search_space import SearchSpaceDigest
  from ax.exceptions.core import SearchSpaceExhausted, UnsupportedError
  from ax.models.types import TConfig
  from ax.utils.common.typeutils import checked_cast
  from botorch.acquisition.risk_measures import RiskMeasureMCObjective
  from torch import Tensor
label_desc: Use image node_id 6 for calling a global function with example usage: validate_bounds(bounds, fixed_feature_indices) without return types