code: def animate(self, seq_name):
          
          while True:
              index = 0
              anim = getattr(self.animations, seq_name)
              speed = anim.speed if hasattr(anim, "speed") else 1
              num_frames = len(anim.frames)
              while index < num_frames:
                  frame = anim.frames[int(index)]
                  index += speed
  
                  if isinstance(frame, int):
                      yield self[frame]
                  else:
                      for subseq_frame in self.animate(frame):
                          yield subseq_frame
  
              if not hasattr(anim, "next"):
                  break
  
              seq_name = anim.next
docs: Returns a generator which "executes" an animation sequence for the given
          ``seq_name``, inasmuch as the next frame for the given animation is
          yielded when requested.
  
          :param seq_name: The name of a previously defined animation sequence.
          :type seq_name: str
          :returns: A generator that yields all frames from the animation
              sequence.
          :raises AttributeError: If the ``seq_name`` is unknown.