code: def cmdloop(self, *args, **kwargs):
      
      def unwrapping_raw_input(*args, **kwargs):
          """Call raw_input(), making sure it finds an unwrapped stdout."""
          wrapped_stdout = sys.stdout
          sys.stdout = wrapped_stdout.stream
  
          ret = orig_raw_input(*args, **kwargs)
  
          sys.stdout = wrapped_stdout
          return ret
  
      try:
          orig_raw_input = raw_input
      except NameError:
          orig_raw_input = input
      if hasattr(sys.stdout, 'stream'):
          __builtin__.raw_input = unwrapping_raw_input
      # else if capture plugin has replaced it with a StringIO, don't bother.
      try:
          # Interesting things happen when you try to not reference the
          # superclass explicitly.
          ret = cmd.Cmd.cmdloop(self, *args, **kwargs)
      finally:
          __builtin__.raw_input = orig_raw_input
      return ret
docs: Call pdb's cmdloop, making readline work.
  
      Patch raw_input so it sees the original stdin and stdout, lest
      readline refuse to work.
  
      The C implementation of raw_input uses readline functionality only if
      both stdin and stdout are from a terminal AND are FILE*s (not
      PyObject*s): http://bugs.python.org/issue5727 and
      https://bugzilla.redhat.com/show_bug.cgi?id=448864