code: def compute_values(self, gamma: float):
      assert (
          self.mdp_id is not None and self.sequence_number is not None
      )
      logged_values = EvaluationDataPage.compute_values_for_mdps(
          self.logged_rewards,
          self.mdp_id,
          self.sequence_number,
          gamma,
      )
      if self.logged_metrics is not None:
          logged_metrics_values: Optional[
              torch.Tensor
          ] = EvaluationDataPage.compute_values_for_mdps(
              self.logged_metrics,
              # pyre-fixme[6]: Expected `Tensor` for 2nd param but got
              #  `Optional[torch.Tensor]`.
              self.mdp_id,
              # pyre-fixme[6]: Expected `Tensor` for 3rd param but got
              #  `Optional[torch.Tensor]`.
              self.sequence_number,
              gamma,
          )
      else:
          logged_metrics_values = None
      return self._replace(
          logged_values=logged_values,
          logged_metrics_values=logged_metrics_values,
      )
  
imports: from __future__ import annotations
  import logging
  import math
  from dataclasses import dataclass, fields
  from typing import cast, Optional, TYPE_CHECKING
  import numpy
  import torch
  import torch.nn
  from reagent.core import types
  from reagent.core.torch_utils import masked_softmax
  from reagent.model_utils.seq2slate_utils import Seq2SlateMode
  from reagent.models.seq2slate import Seq2SlateTransformerNet
label_desc: Use image node_id 7 for calling the EvaluationDataPage obj's underlying member method code with example usage: obj.compute_values(gamma) and returns: self