class_docstr: NoShuffle doesn't shuffle the items and ensure all the processes receive the same number of items if drop_last
  is True.
class_docstr_tok: ["NoShuffle","does","n't","shuffle","the","items","and","ensure","all","the","processes","receive","the","same","number","of","items","if","drop_last","is","True","."]
code: def get_chunks_and_intervals_per_ranks(
      self, distributed_env: _DistributedEnv, current_epoch: int
  ) -> Any:
      chunk_intervals = self.cache.get_chunk_intervals()
      chunks_per_ranks: List[List[int]] = [
          [] for _ in range(distributed_env.world_size)
      ]
      intervals_per_ranks: List[List[Tuple]] = [
          [] for _ in range(distributed_env.world_size)
      ]
      for chunk_index, chunk_interval in enumerate(chunk_intervals):
          replica_index = chunk_index % distributed_env.world_size
          chunks_per_ranks[replica_index].append(chunk_index)
          intervals_per_ranks[replica_index].append(chunk_interval)
  
      return chunks_per_ranks, intervals_per_ranks
  
file_path: pytorch-lightning/src/lightning/data/streaming/shuffle.py
imports: from abc import ABC, abstractmethod
  from functools import lru_cache
  from typing import Any, List, Tuple
  import numpy
  from lightning.data.streaming import Cache
  from lightning.data.utilities.env import _DistributedEnv
label_desc: Use image node_id 1 for calling the NoShuffle obj's underlying member method code with example usage: obj.get_chunks_and_intervals_per_ranks(distributed_env, current_epoch) and returns: chunks_per_ranks,  intervals_per_ranks