diff --git a/IPython/core/completer.py b/IPython/core/completer.py index 0566537..6733259 100644 --- a/IPython/core/completer.py +++ b/IPython/core/completer.py @@ -25,6 +25,7 @@ import re import sys import unicodedata import string +import warnings from traitlets.config.configurable import Configurable from IPython.core.error import TryNext @@ -589,7 +590,7 @@ class IPCompleter(Completer): ).tag(config=True) def __init__(self, shell=None, namespace=None, global_namespace=None, - use_readline=True, config=None, **kwargs): + use_readline=False, config=None, **kwargs): """IPCompleter() -> completer Return a completer object suitable for use by the readline library @@ -608,20 +609,15 @@ class IPCompleter(Completer): both Python scopes are visible. use_readline : bool, optional - If true, use the readline library. This completer can still function - without readline, though in that case callers must provide some extra - information on each call about the current line.""" + DEPRECATED, ignored. + """ self.magic_escape = ESC_MAGIC self.splitter = CompletionSplitter() - # Readline configuration, only used by the rlcompleter method. if use_readline: - # We store the right version of readline so that later code - import IPython.utils.rlineimpl as readline - self.readline = readline - else: - self.readline = None + warnings.warn('The use_readline parameter is deprecated since IPython 6.0.', + DeprecationWarning, stacklevel=2) # _greedy_changed() depends on splitter and readline being defined: Completer.__init__(self, namespace=namespace, global_namespace=global_namespace, diff --git a/IPython/core/interactiveshell.py b/IPython/core/interactiveshell.py index 0c6d8b4..9aba5af 100644 --- a/IPython/core/interactiveshell.py +++ b/IPython/core/interactiveshell.py @@ -1905,7 +1905,6 @@ class InteractiveShell(SingletonConfigurable): self.Completer = IPCompleter(shell=self, namespace=self.user_ns, global_namespace=self.user_global_ns, - use_readline=False, parent=self, ) self.configurables.append(self.Completer) diff --git a/IPython/terminal/debugger.py b/IPython/terminal/debugger.py index e7bd135..810299e 100644 --- a/IPython/terminal/debugger.py +++ b/IPython/terminal/debugger.py @@ -24,7 +24,6 @@ class TerminalPdb(Pdb): compl = IPCompleter(shell=self.shell, namespace={}, global_namespace={}, - use_readline=False, parent=self.shell, ) self._ptcomp = IPythonPTCompleter(compl) diff --git a/IPython/utils/rlineimpl.py b/IPython/utils/rlineimpl.py deleted file mode 100644 index e1cf039..0000000 --- a/IPython/utils/rlineimpl.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- 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 have_readline and (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 diff --git a/IPython/utils/tests/test_imports.py b/IPython/utils/tests/test_imports.py index 98ee66a..170079d 100644 --- a/IPython/utils/tests/test_imports.py +++ b/IPython/utils/tests/test_imports.py @@ -12,9 +12,6 @@ def test_import_ipstruct(): def test_import_PyColorize(): from IPython.utils import PyColorize -def test_import_rlineimpl(): - from IPython.utils import rlineimpl - def test_import_strdispatch(): from IPython.utils import strdispatch