Subject: bug#68559: [PATCH] Improve Python shell completion

From: Liu Hui <[email-masked]>
Date: Fri, 16 Feb 2024 12:06:38 +0800

On Fri, Feb 16, 2024 at 12:37 AM Eli Zaretskii <[email-masked]> wrote:
>
> > From: Mattias Engdegård <[email-masked]>
> > Date: Thu, 15 Feb 2024 15:43:32 +0100
> > Cc: Eli Zaretskii <[email-masked]>,
> >  [email-masked],
> >  [email-masked]
> > The recent change on master, 0b9c7148fd, causes several failures in python-tests here (macOS). Log attached.
> >
> > It seems to have something to do with completion. Maybe the new code is sensitive to details of Python's command line editor? The standard Python interpreter is unlikely to use GNU readline, for example.
>
> The python-*-completion-at-point-* tests never worked for me, and I
> always assumed it was something specific to MS-Windows.  But maybe
> not.  There was no change in the tests that fail for me before and
> after the recent changes related to Python.

The Python shell completion relies on the readline module, which is
not available for Python on MS-Windows. According to the instruction
in python.el:

;; readline based shell (it's known to work with PyPy).  If your
;; Python installation lacks readline (like CPython for Windows),
;; installing pyreadline (URL `https://ipython.org/pyreadline.html')
;; should suffice.  To troubleshoot why you are not getting any
;; completions, you can try the following in your Python shell:

;; >>> import readline, rlcompleter

;; If you see an error, then you need to either install pyreadline or
;; setup custom code that avoids that dependency.

It may be necessary to install pyreadline (for Python 2.7) or
pyreadline3 (for Python 3).