old_contents: # -*- coding: utf-8 -*-
  """ Imports and provides the 'correct' version of readline for the platform.
  
  Readline is used throughout IPython as::
  
      import IPython.utils.rlineimpl as readline
  
  In addition to normal readline stuff, this module provides have_readline
  boolean and _outputfile variable used in IPython.utils.
  """
  
  import sys
  import warnings
  
  _rlmod_names = ['gnureadline', 'readline']
  if sys.platform == 'win32' or sys.platform == 'cli':
      _rlmod_names.append('pyreadline')
  
  have_readline = False
  for _rlmod_name in _rlmod_names:
      try:
          # import readline as _rl
          _rl = __import__(_rlmod_name)
          # from readline import *
          globals().update({k:v for k,v in _rl.__dict__.items() if not k.startswith('_')})
      except ImportError:
          pass
      else:
          have_readline = True
          break
  
  if _rlmod_name == 'pyreadline':
      try:
          _outputfile=_rl.GetOutputFile()
      except AttributeError:
          warnings.warn("Failed GetOutputFile")
          have_readline = False
  
  # Test to see if libedit is being used instead of GNU readline.
  # Thanks to Boyd Waters for the original patch.
  uses_libedit = False
  
  if have_readline:
      # Official Python docs state that 'libedit' is in the docstring for libedit readline:
      uses_libedit = _rl.__doc__ and 'libedit' in _rl.__doc__
      # Note that many non-System Pythons also do not use proper readline,
      # but do not report libedit at all, nor are they linked dynamically against libedit.
      # known culprits of this include: EPD, Fink
      # There is not much we can do to detect this, until we find a specific failure
      # case, rather than relying on the readline module to self-identify as broken.
  
  if uses_libedit and sys.platform == 'darwin':
      _rl.parse_and_bind("bind ^I rl_complete")
      warnings.warn('\n'.join(['', "*"*78,
          "libedit detected - readline will not be well behaved, including but not limited to:",
          "   * crashes on tab completion",
          "   * incorrect history navigation",
          "   * corrupting long-lines",
          "   * failure to wrap or indent lines properly",
          "It is highly recommended that you install gnureadline, which is installable with:",
          "     pip install gnureadline",
          "*"*78]),
          RuntimeWarning)
  
  # the clear_history() function was only introduced in Python 2.4 and is
  # actually optional in the readline API, so we must explicitly check for its
  # existence.  Some known platforms actually don't have it.  This thread:
  # http://mail.python.org/pipermail/python-dev/2003-August/037845.html
  # has the original discussion.
  
  if have_readline:
      try:
          _rl.clear_history
      except AttributeError:
          def clear_history(): pass
          _rl.clear_history = clear_history
  
new_contents: # -*- coding: utf-8 -*-
  """ Imports and provides the 'correct' version of readline for the platform.
  
  Readline is used throughout IPython as::
  
      import IPython.utils.rlineimpl as readline
  
  In addition to normal readline stuff, this module provides have_readline
  boolean and _outputfile variable used in IPython.utils.
  """
  
  import sys
  import warnings
  
  _rlmod_names = ['gnureadline', 'readline']
  
  have_readline = False
  for _rlmod_name in _rlmod_names:
      try:
          # import readline as _rl
          _rl = __import__(_rlmod_name)
          # from readline import *
          globals().update({k:v for k,v in _rl.__dict__.items() if not k.startswith('_')})
      except ImportError:
          pass
      else:
          have_readline = True
          break
  
  if sys.platform == 'win32' or sys.platform == 'cli':
      try:
          _outputfile=_rl.GetOutputFile()
      except AttributeError:
          warnings.warn("Failed GetOutputFile")
          have_readline = False
  
  # Test to see if libedit is being used instead of GNU readline.
  # Thanks to Boyd Waters for the original patch.
  uses_libedit = False
  
  if have_readline:
      # Official Python docs state that 'libedit' is in the docstring for libedit readline:
      uses_libedit = _rl.__doc__ and 'libedit' in _rl.__doc__
      # Note that many non-System Pythons also do not use proper readline,
      # but do not report libedit at all, nor are they linked dynamically against libedit.
      # known culprits of this include: EPD, Fink
      # There is not much we can do to detect this, until we find a specific failure
      # case, rather than relying on the readline module to self-identify as broken.
  
  if uses_libedit and sys.platform == 'darwin':
      _rl.parse_and_bind("bind ^I rl_complete")
      warnings.warn('\n'.join(['', "*"*78,
          "libedit detected - readline will not be well behaved, including but not limited to:",
          "   * crashes on tab completion",
          "   * incorrect history navigation",
          "   * corrupting long-lines",
          "   * failure to wrap or indent lines properly",
          "It is highly recommended that you install gnureadline, which is installable with:",
          "     pip install gnureadline",
          "*"*78]),
          RuntimeWarning)
  
  # the clear_history() function was only introduced in Python 2.4 and is
  # actually optional in the readline API, so we must explicitly check for its
  # existence.  Some known platforms actually don't have it.  This thread:
  # http://mail.python.org/pipermail/python-dev/2003-August/037845.html
  # has the original discussion.
  
  if have_readline:
      try:
          _rl.clear_history
      except AttributeError:
          def clear_history(): pass
          _rl.clear_history = clear_history
  
subject: fix pyreadline import in rlineimpl