class_docstr: Reader object that loads experiences from JSON file chunks.
  
  The input files will be read from in random order.
class_docstr_tok: ["Reader","object","that","loads","experiences","from","JSON","file","chunks",".","The","input","files","will","be","read","from","in","random","order","."]
docstr: Reads through all files and yields one SampleBatchType per line.
  
  When reaching the end of the last file, will start from the beginning
  again.
  
  Yields:
      One SampleBatch or MultiAgentBatch per line in all input files.
docstr_tok: ["Reads","through","all","files","and","yields","one","SampleBatchType","per","line",".","When","reaching","the","end","of","the","last","file",",","will","start","from","the","beginning","again",".","Yields",":","One","SampleBatch","or","MultiAgentBatch","per","line","in","all","input","files","."]
code: def read_all_files(self) -> SampleBatchType:
      """Reads through all files and yields one SampleBatchType per line.
  
      When reaching the end of the last file, will start from the beginning
      again.
  
      Yields:
          One SampleBatch or MultiAgentBatch per line in all input files.
      """
      for path in self.files:
          file = self._try_open_file(path)
          while True:
              line = file.readline()
              if not line:
                  break
              batch = self._try_parse(line)
              if batch is None:
                  break
              yield batch
  
imports: import glob
  import json
  import logging
  import math
  import numpy
  import os
  from pathlib import Path
  import random
  import re
  import tree
  from typing import List, Optional, TYPE_CHECKING, Union
  from urllib.parse import urlparse
  import zipfile
  from ray.rllib.offline.input_reader import InputReader
  from ray.rllib.offline.io_context import IOContext
  from ray.rllib.policy.policy import Policy
  from ray.rllib.policy.sample_batch import DEFAULT_POLICY_ID, MultiAgentBatch, SampleBatch, concat_samples, convert_ma_batch_to_sample_batch
  from ray.rllib.utils.annotations import override, PublicAPI, DeveloperAPI
  from ray.rllib.utils.compression import unpack_if_needed
  from ray.rllib.utils.spaces.space_utils import clip_action, normalize_action
  from ray.rllib.utils.typing import Any, FileType, SampleBatchType
label_desc: Use image node_id 3 for calling the JsonReader obj's underlying member method code with example usage: obj.read_all_files() without return types