docstr: Called by offline data reader after loading in one episode.
  
  Adds a `terminateds` flag at the end of trajectory so that SegmentationBuffer
  can split using this flag to avoid duplicate trajectories.
docstr_tok: ["Called","by","offline","data","reader","after","loading","in","one","episode",".","Adds","a","`","terminateds","`","flag","at","the","end","of","trajectory","so","that","SegmentationBuffer","can","split","using","this","flag","to","avoid","duplicate","trajectories","."]
code: def postprocess_trajectory(
      self,
      sample_batch: SampleBatch,
      other_agent_batches: Optional[Dict[Any, SampleBatch]] = None,
      episode: Optional["Episode"] = None,
  ) -> SampleBatch:
      """Called by offline data reader after loading in one episode.
  
      Adds a `terminateds` flag at the end of trajectory so that SegmentationBuffer
      can split using this flag to avoid duplicate trajectories.
      """
      ep_len = sample_batch.env_steps()
      sample_batch[SampleBatch.TERMINATEDS] = np.array(
          [False] * (ep_len - 1) + [True]
      )
      return sample_batch
  
imports: from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Type, Union
  import gymnasium
  import numpy
  import tree
  from gymnasium.spaces import Box, Discrete
  from rllib_dt.dt.dt_torch_model import DTTorchModel
  from ray.rllib.models.catalog import ModelCatalog
  from ray.rllib.models.modelv2 import ModelV2
  from ray.rllib.models.torch.mingpt import configure_gpt_optimizer
  from ray.rllib.models.torch.torch_action_dist import TorchCategorical, TorchDeterministic, TorchDistributionWrapper
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.policy.torch_mixins import LearningRateSchedule
  from ray.rllib.policy.torch_policy_v2 import TorchPolicyV2
  from ray.rllib.utils.annotations import DeveloperAPI, PublicAPI, override
  from ray.rllib.utils.framework import try_import_torch
  from ray.rllib.utils.numpy import convert_to_numpy
  from ray.rllib.utils.threading import with_lock
  from ray.rllib.utils.torch_utils import apply_grad_clipping
  from ray.rllib.utils.typing import TensorShape, TensorStructType, TensorType, TrainerConfigDict
label_desc: Use image node_id 4 for calling the DTTorchPolicy obj's underlying member method code with example usage: obj.postprocess_trajectory(sample_batch, other_agent_batches, episode) and returns: sample_batch