def METHOD_NAME(self, banner=None):
    """Closely emulate the interactive Python console.
    The optional banner argument specify the banner to print
    before the first interaction; by default it prints a banner
    similar to the one printed by the real Python interpreter,
    followed by the current class name in parentheses (so as not
    to confuse this with the real interpreter -- since it's so
    close!).
    """
    try:
        sys.ps1
    except AttributeError:
        sys.ps1 = ">>> "
    try:
        sys.ps2
    except AttributeError:
        sys.ps2 = "... "
    cprt = 'Type "help", "copyright", "credits" or "license" for more information.'
    if banner is None:
        self.write(
            "Python {} on {}\n{}\n({})\n".format(
                sys.version, sys.platform, cprt, self.__class__.__name__
            )
        )
    else:
        self.write(str(banner) + "\n")
    more = 0
    while True:
        try:
            if more:
                prompt = sys.ps2
            else:
                prompt = sys.ps1
            try:
                line = self.raw_input(prompt)
                self.handle.flush()
                # Can be None if sys.stdin was redefined
                encoding = getattr(sys.stdin, "encoding", None)
                if encoding and isinstance(line, bytes):
                    line = line.decode(encoding)
            except EOFError:
                self.terminate()
                return
            except OSError:
                self.terminate()
                return
            else:
                more = self.push(line)
        except KeyboardInterrupt:
            self.write("\nKeyboardInterrupt\n")
            self.resetbuffer()
            more = 0