code: def test_get_X_pending_and_observed(self) -> None:
      def _to_obs_set(X: torch.Tensor) -> Set[Tuple[float]]:
          return {tuple(float(x_i) for x_i in x) for x in X}
  
      # Apply filter normally
      Xs = [torch.tensor([[0.0, 0.0], [0.0, 1.0]])]
      objective_weights = torch.tensor([1.0])
      bounds = [(0.0, 1.0), (0.0, 1.0)]
      fixed_features = {1: 1.0}
      _, X_observed = _get_X_pending_and_observed(
          Xs=Xs,
          objective_weights=self.objective_weights,
          bounds=bounds,
          fixed_features=fixed_features,
      )
      expected = Xs[0][1:]
      self.assertEqual(
          _to_obs_set(expected), _to_obs_set(not_none(X_observed))
      )
  
      # Filter too strict; return unfiltered X_observed
      fixed_features = {0: 1.0}
      _, X_observed = _get_X_pending_and_observed(
          Xs=Xs,
          objective_weights=objective_weights,
          bounds=bounds,
          fixed_features=fixed_features,
      )
      expected = Xs[0]
      self.assertEqual(
          _to_obs_set(expected), _to_obs_set(not_none(X_observed))
      )
  
imports: from typing import Set, Tuple
  from unittest.mock import MagicMock, Mock, patch
  import torch
  from ax.exceptions.core import UnsupportedError
  from ax.models.torch.utils import _get_X_pending_and_observed, get_botorch_objective_and_transform
  from ax.utils.common.testutils import TestCase
  from ax.utils.common.typeutils import checked_cast, not_none
  from botorch.acquisition.knowledge_gradient import qKnowledgeGradient
  from botorch.acquisition.logei import qLogNoisyExpectedImprovement
  from botorch.acquisition.monte_carlo import qNoisyExpectedImprovement
  from botorch.acquisition.multi_objective.monte_carlo import qNoisyExpectedHypervolumeImprovement
  from botorch.acquisition.multi_objective.multi_output_risk_measures import MARS, MultiOutputExpectation
  from botorch.acquisition.multi_objective.objective import WeightedMCMultiOutputObjective
  from botorch.acquisition.objective import ConstrainedMCObjective, GenericMCObjective, ScalarizedPosteriorTransform
  from botorch.acquisition.risk_measures import Expectation
  from botorch.exceptions.errors import BotorchTensorDimensionError
  from botorch.models.model import Model
label_desc: Use image node_id 2 for calling the TorchUtilsTest obj's underlying member method code with example usage: obj.test_get_X_pending_and_observed() and returns: unknown