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
  
  try:
      from readline import *
      import readline as _rl
      have_readline = True
  except ImportError:
      try:
          from pyreadline import *
          import pyreadline as _rl
          have_readline = True
      except ImportError:    
          have_readline = False
  
  if sys.platform == 'win32' and have_readline:
      try:
          _outputfile=_rl.GetOutputFile()
      except AttributeError:
          print "Failed GetOutputFile"
          have_readline = False
  
  # Test to see if libedit is being used instead of GNU readline.
  # Thanks to Boyd Waters for this patch.
  uses_libedit = False
  if sys.platform == 'darwin' and have_readline:
      import commands
      (status, result) = commands.getstatusoutput( "otool -L %s | grep libedit" % _rl.__file__ )
      if status == 0 and len(result) > 0:
          # we are bound to libedit - new in Leopard
          _rl.parse_and_bind("bind ^I rl_complete")
          print "Leopard libedit detected."
          uses_libedit = True
  
  
  # 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
  
  try:
      from readline import *
      import readline as _rl
      have_readline = True
  except ImportError:
      try:
          from pyreadline import *
          import pyreadline as _rl
          have_readline = True
      except ImportError:    
          have_readline = False
  
  if sys.platform == 'win32' and have_readline:
      try:
          _outputfile=_rl.GetOutputFile()
      except AttributeError:
          print "Failed GetOutputFile"
          have_readline = False
  
  # Test to see if libedit is being used instead of GNU readline.
  # Thanks to Boyd Waters for this patch.
  uses_libedit = False
  if sys.platform == 'darwin' and have_readline:
      import commands
      # Boyd's patch had a 'while True' here, I'm always a little worried about
      # infinite loops with such code, so for now I'm taking a more conservative
      # approach. See https://bugs.launchpad.net/ipython/+bug/411599.
      for i in range(10):
          try:
              (status, result) = commands.getstatusoutput( "otool -L %s | grep libedit" % _rl.__file__ )
              break
          except IOError, (errno, strerror):
              if errno == 4:
                  continue
              else
                  break
  
      if status == 0 and len(result) > 0:
          # we are bound to libedit - new in Leopard
          _rl.parse_and_bind("bind ^I rl_complete")
          print "Leopard libedit detected."
          uses_libedit = True
  
  
  # 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 readline detection bug in OSX.