code: def _get_text(self, text):
          
          animation = self._animation
          stripped_text = text.strip()
  
          # Check which frame of the animation is the widest
          max_spinner_length = max([len(i) for i in self._spinner['frames']])
  
          # Subtract to the current terminal size the max spinner length
          # (-1 to leave room for the extra space between spinner and text)
          terminal_width = get_terminal_columns() - max_spinner_length - 1
          text_length = len(stripped_text)
  
          frames = []
  
          if terminal_width < text_length and animation:
              if animation == 'bounce':
                  """
                  Make the text bounce back and forth
                  """
                  for x in range(0, text_length - terminal_width + 1):
                      frames.append(stripped_text[x:terminal_width + x])
                  frames.extend(list(reversed(frames)))
              elif 'marquee':
                  """
                  Make the text scroll like a marquee
                  """
                  stripped_text = stripped_text + ' ' + stripped_text[:terminal_width]
                  for x in range(0, text_length + 1):
                      frames.append(stripped_text[x:terminal_width + x])
          elif terminal_width < text_length and not animation:
              # Add ellipsis if text is larger than terminal width and no animation was specified
              frames = [stripped_text[:terminal_width - 6] + ' (...)']
          else:
              frames = [stripped_text]
  
          return {
              'original': text,
              'frames': frames
          }
docs: Creates frames based on the selected animation
          Returns
          -------
          self