class_docstr: Episode-level mutators.
docstr: Apply the mutator to a series of messages.
  
  Not meant to be called directly by a user.
docstr_tok: ["Apply","the","mutator","to","a","series","of","messages",".","Not","meant","to","be","called","directly","by","a","user","."]
code: def __call__(self, messages: Iterable[Message]) -> Iterator[Message]:
      """
      Apply the mutator to a series of messages.
  
      Not meant to be called directly by a user.
      """
      for episode in self._group_into_episodes(messages):
          if episode and episode[0].is_padding():
              for message in episode:
                  yield message
          else:
              mutated_episode = self._add_episode_done(
                  self.episode_mutation(episode)
              )
              yield from mutated_episode
  
imports: from __future__ import annotations
  import abc
  import importlib
  import pkgutil
  from typing import Optional, Iterable, Tuple, List, Iterator, Callable, Type
  import parlai.mutators
  from parlai.core.params import ParlaiParser
  from parlai.core.opt import Opt
  from parlai.core.message import Message
label_desc: Use image node_id 2 for calling the EpisodeMutator obj's underlying member method code with example usage: obj.__call__(messages) without return types