class_docstr: Sample `num_video_clips_per_video` clips for each video, equally spaced.
  When number of unique clips in the video is fewer than num_video_clips_per_video,
  repeat the clips until `num_video_clips_per_video` clips are collected
  
  Args:
      video_clips (VideoClips): video clips to sample from
      num_clips_per_video (int): number of clips to be sampled per video
code: def __iter__(self) -> Iterator[int]:
      idxs = []
      s = 0
      # select num_clips_per_video for each video, uniformly spaced
      for c in self.video_clips.clips:
          length = len(c)
          if length == 0:
              # corner case where video decoding fails
              continue
  
          sampled = (
              torch.linspace(
                  s, s + length - 1, steps=self.num_clips_per_video
              )
              .floor()
              .to(torch.int64)
          )
          s += length
          idxs.append(sampled)
      return iter(cast(List[int], torch.cat(idxs).tolist()))
  
imports: import math
  from typing import cast, Iterator, List, Optional, Sized, Union
  import torch
  import torch.distributed
  from torch.utils.data import Sampler
  from torchvision.datasets.video_utils import VideoClips
label_desc: Use image node_id 2 for calling the UniformClipSampler obj's underlying member method code with example usage: obj.__iter__() and returns: iter