From f07e40272400897f0c036251a44479d22932b6a2 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 11 Jan 2026 07:14:06 +0300 Subject: [PATCH] lib/python/init.py: Use `pyreadline`/`pyreadline3` --- lib/python/init.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/python/init.py b/lib/python/init.py index ce7f1f4..7249b4a 100644 --- a/lib/python/init.py +++ b/lib/python/init.py @@ -33,6 +33,26 @@ def init(): category=UserWarning) readline.read_init_file(initfile) + try: + import pyreadline3.rlmain + import pyreadline3.unicode_helper # noqa: F401 imported but unused + except ImportError: + try: + import pyreadline.rlmain + import pyreadline.unicode_helper # noqa: F401 unused + except ImportError: + pass + + # Copied from pyreadline/configuration/startup.py + completer_obj = rlcompleter.Completer() + # def nop(val, word): + # return word + # completer_obj._callable_postfix = nop + readline.set_completer(completer_obj.complete) + + # activate tab completion + readline.parse_and_bind("tab: complete") + # if 'libedit' in readline.__doc__: # readline.parse_and_bind("bind ^I rl_complete") # else: @@ -74,11 +94,13 @@ def init(): import atexit atexit._exithandlers = [] builtins.unset_history = unset_history2 + elif hasattr(atexit, '_clear') and callable(atexit._clear): def unset_history3(): import atexit atexit._clear() builtins.unset_history = unset_history3 + else: sys.stderr.write('Error: cannot clear exit handlers\n') -- 2.47.3