class_docstr: Handle punctuations in text.
  
  Just strip punctuations from text or strip and restore them later.
  
  Args:
      puncs (str): The punctuations to be processed. Defaults to `_DEF_PUNCS`.
  
  Example:
      >>> punc = Punctuation()
      >>> punc.strip("This is. example !")
      'This is example'
  
      >>> text_striped, punc_map = punc.strip_to_restore("This is. example !")
      >>> ' '.join(text_striped)
      'This is example'
  
      >>> text_restored = punc.restore(text_striped, punc_map)
      >>> text_restored[0]
      'This is. example !'
code: def puncs(self, value):
      if not isinstance(value, six.string_types):
          raise ValueError("[!] Punctuations must be of type str.")
      self._puncs = "".join(
          list(dict.fromkeys(list(value)))
      )  # remove duplicates without changing the oreder
      self.puncs_regular_exp = re.compile(
          rf"(\s*[{re.escape(self._puncs)}]+\s*)+"
      )
  
file_path: TTS/TTS/tts/utils/text/punctuation.py
imports: import collections
  import re
  from enum import Enum
  import six
label_desc: Use image node_id 4 for calling the Punctuation obj's underlying member method code with example usage: obj.puncs(value) without return types