code: def mask_src_tokens(self, sample):
      src_item = sample["source"]
      mask = None
      if self.mask_type == "random":
          mask = torch.rand(len(src_item)).le(self.mask_ratio)
      else:
          mask = torch.ones(len(src_item))
          mask[: int(len(src_item) * (1 - self.mask_ratio))] = 0
          mask = mask.eq(1)
      if src_item[0] == self.src_bos:
          mask[0] = False
      if src_item[-1] == self.src_eos:
          mask[-1] = False
      mask_src_item = src_item.masked_fill(mask, self.noise_id)
      smp = {
          "id": sample["id"],
          "source": mask_src_item,
          "target": sample["target"],
      }
      return smp
  
imports: import logging
  import math
  from typing import List, Optional, NamedTuple
  import numpy
  import torch
  from fairseq.data import ConcatDataset, LanguagePairDataset, FileAudioDataset, data_utils
  from fairseq.data import FairseqDataset
label_desc: Use image node_id 13 for calling the LangPairMaskDataset obj's underlying member method code with example usage: obj.mask_src_tokens(sample) and returns: smp