class_docstr: Augmenter that flips the text
class_docstr_tok: ["Augmenter","that","flips","the","text"]
code: def insert(self, data: str) -> str:
      if self.granularity == "all":
          return self.flip_text(data)
  
      tokens = tokenize(data)
  
      if self.granularity == "word":
          aug_word_cnt = self._generate_aug_cnt(
              len(tokens), self.aug_min, self.aug_max, self.aug_p
          )
          aug_word_idxes = set(
              get_aug_idxes(
                  self,
                  tokens,
                  list(range(len(tokens))),
                  aug_word_cnt,
                  Method.WORD,
              )
          )
  
          for i, token in enumerate(tokens):
              if i in aug_word_idxes:
                  tokens[i] = self.flip_text(token)
  
      elif self.granularity == "char":
          all_chars = [char for token in tokens for char in list(token)]
          aug_char_idxes = self.generate_aug_idxes(all_chars)
          char_idx = 0
  
          for t_i, token in enumerate(tokens):
              chars = list(token)
  
              for c_i, char in enumerate(chars):
                  if char_idx in aug_char_idxes:
                      chars[c_i] = _flip(char)
                  char_idx += 1
  
              tokens[t_i] = "".join(chars)
  
      return detokenize(tokens)
  
file_path: AugLy/augly/text/augmenters/upside_down.py
imports: from typing import List, Union
  from augly.text.augmenters.utils import detokenize, get_aug_idxes, tokenize, UPSIDE_DOWN_CHAR_MAPPING
  from augly.utils.libsndfile import install_libsndfile
  from nlpaug.augmenter.word import Augmenter
  from nlpaug.util import Action, Method
label_desc: Use image node_id 5 for calling the UpsideDownAugmenter obj's underlying member method code with example usage: obj.insert(data) and returns: detokenize, self