class_docstr: Message-level mutators.
  
  Message-level mutators have a function applied per-utterance. They are ideal
  for transformations of data which don't create any new conversations or
  turns, but only apply simple text-transformations.
  
  Examples include:
  
  * Shuffling words in context
  * Adding a special token based on a non-text field
  * Replacing words with synonyms or other simple augmentations
docstr: Abstract message mutation.
  
  The main method to implement when implementing an MessageMutator.
  
  :param message:
      An individual message you should mutate.
  :returns:
      The mutated message.
docstr_tok: ["Abstract","message","mutation",".","The","main","method","to","implement","when","implementing","an","MessageMutator",".",":","param","message",":","An","individual","message","you","should","mutate",".",":","returns",":","The","mutated","message","."]
code: def message_mutation(self, message: Message) -> Message:
      """
      Abstract message mutation.
  
      The main method to implement when implementing an MessageMutator.
  
      :param message:
          An individual message you should mutate.
      :returns:
          The mutated message.
      """
      pass
  
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 1 for calling the MessageMutator obj's underlying member method code with example usage: obj.message_mutation(message) without return types