class_docstr: Inserts various types of characters (including zero-width or punctuation),
  which in turn breaks up the text.
  
  The 'cadence' and 'vary_chars' options are used to adjust the frequency and
  pattern of the characters, to avoid detection by automated deobfuscation techniques.
  
  If 'cadence' is not an integer (say, 2.5), a char will be added
  on *average* about every 2.5 chars.
code: def __init__(
      self,
      char_type: str,
      granularity: str,
      cadence: float = 1.0,
      vary_chars: bool = False,
  ):
      char_types = set(CHARACTER_TYPES.keys())
      assert (
          char_type in char_types
      ), f"Must set 'char_type' to one of: {char_types}"
      assert granularity in {
          "word",
          "all",
      }, "Must set 'granularity' to either 'word' or 'all'."
      assert (
          cadence >= 1.0
      ), "Must set 'cadence' to be no less than 1.0."
  
      self.char_set = CHARACTER_TYPES[char_type]
      self.granularity = granularity
      self.cadence = cadence
      self.vary_chars = vary_chars
  
file_path: AugLy/augly/text/augmenters/insertion.py
imports: import math
  import random
  from typing import List, Union
  from augly.text.augmenters.utils import rejoin_words_and_whitespace, split_words_on_whitespace
label_desc: Use image node_id 1 to create a new InsertionAugmenter object  with example: obj = InsertionAugmenter(char_type, granularity, cadence, vary_chars)