class_docstr: An iterator dedicated to ParallelCorpus.
  
  Args:
      corpus (ParallelCorpus): corpus to iterate;
      transform (TransformPipe): transforms to be applied to corpus;
      skip_empty_level (str): security level when encouter empty line;
      stride (int): iterate corpus with this line stride;
      offset (int): iterate corpus with this line offset.
class_docstr_tok: ["An","iterator","dedicated","to","ParallelCorpus",".","Args",":","corpus","(","ParallelCorpus",")",":","corpus","to","iterate",";","transform","(","TransformPipe",")",":","transforms","to","be","applied","to","corpus",";","skip_empty_level","(","str",")",":","security","level","when","encouter","empty","line",";","stride","(","int",")",":","iterate","corpus","with","this","line","stride",";","offset","(","int",")",":","iterate","corpus","with","this","line","offset","."]
code: def __iter__(self):
      corpus_stream = self.corpus.load(
          stride=self.stride, offset=self.offset
      )
      corpus = self._process(corpus_stream)
      yield from corpus
  
imports: import os
  from onmt.utils.logging import logger
  from onmt.constants import CorpusName, CorpusTask
  from onmt.transforms import TransformPipe
  from onmt.inputters.text_utils import process, parse_features, append_features_to_text
  from contextlib import contextmanager
  import itertools
label_desc: Use image node_id 3 for calling the ParallelCorpusIterator obj's underlying member method code with example usage: obj.__iter__() without return types