This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: readline fails to parse some forms of .editrc under editline (libedit) emulation on Mac OS X
Type: behavior Stage: resolved
Components: macOS Versions: Python 3.8, Python 3.7
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: ronaldoussoren Nosy List: berker.peksag, eric.araujo, ned.deily, r.david.murray, ronaldoussoren, zvezdan
Priority: normal Keywords: needs review, patch

Created on 2011-12-19 04:05 by zvezdan, last changed 2022-04-11 14:57 by admin. This issue is now closed.

File name Uploaded Description Edit
readline-2.7.patch zvezdan, 2011-12-19 04:05 readline.c patch for python-2.7 review
readline-3.2.patch zvezdan, 2011-12-19 04:07 readline.c patch for python-3.2 review
Pull Requests
URL Status Linked Edit
PR 6915 merged python-dev, 2018-05-16 18:14
PR 6928 merged miss-islington, 2018-05-17 06:45
Messages (10)
msg149813 - (view) Author: Zvezdan Petkovic (zvezdan) * Date: 2011-12-19 04:05

The changes in r87356 for py3k and r87358 for python-2.7 described in issue 9907 have broken parsing of the initialization file .editrc under editline emulation of readline on Mac OS X.


Both readline and editline allow settings customized per program.
For example, .inputrc file for readline::

    $if Python
        set editing-mode vi

will be applied only to Python processes.

Similarly, .editrc file for editline::

    python:bind -v
    python:bind ^I rl_complete

will be applied only to Python processes on Mac OS X.

This works fine on python-2.6.

It's broken on 2.7 and 3.2 and later because the change in issue 9907 moved the rl_initialize() call towards the beginning of the setup function.


The rl_readline_name variable must be set to "python" **before** the call to rl_initialize().  Attached are patches for 2.7 and 3.2.
msg150945 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012-01-09 16:09
Thanks for the analysis and patch.  Have you tested that your patch does not break the readline module when linking against GNU readline?  If not, I can do it.
msg150957 - (view) Author: Zvezdan Petkovic (zvezdan) * Date: 2012-01-09 17:39
I did not test against a readline build.
msg151133 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012-01-12 16:04
I applied your patch and built the readline module against libreadline and imported it successfully.  (I did not try the special parsing feature, but I don’t think it’s needed.)
msg193093 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2013-07-15 12:38
I can confirm the problem and that the patch fixes the issue.

I'll try to commit a fix later this week.
msg219561 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2014-06-02 09:36
It appears that Apple's update to editline in OS X 10.9 Mavericks has also broken this patch; with refreshing, it still works with the system editline in 10.8. So, like the fix for Issue18458, we need to make sure that the fix works with either version of a dynamically loaded libedit.

Zvezdan, it would be good if you would be willing to sign the Python contributor agreement for your patch:
msg219735 - (view) Author: Zvezdan Petkovic (zvezdan) * Date: 2014-06-04 00:31

I just signed the contributor agreement form.
msg316885 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2018-05-17 06:45
New changeset c2f082e9d164acfa8f96de9526f0f47ae92c426a by Ned Deily (Zvezdan Petkovic) in branch 'master':
bpo-13631: Fix the order of initialization for readline libedit on macOS. (GH-6915)
msg316894 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2018-05-17 07:27
New changeset d504108a88bd14a560dec875df682f4e581490e5 by Ned Deily (Miss Islington (bot)) in branch '3.7':
bpo-13631: Fix the order of initialization for readline libedit on macOS. (GH-6915) (GH-6928)
msg316895 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2018-05-17 07:33
Thanks for the patch and PR, Zvezdan!  Merged for 3.7.0 and 3.8.0.
Date User Action Args
2022-04-11 14:57:24adminsetgithub: 57840
2018-05-17 07:33:38ned.deilysetstatus: open -> closed
versions: + Python 3.8, - Python 2.7, Python 3.5, Python 3.6
messages: + msg316895

resolution: fixed
stage: patch review -> resolved
2018-05-17 07:27:35ned.deilysetmessages: + msg316894
2018-05-17 06:45:25miss-islingtonsetpull_requests: + pull_request6599
2018-05-17 06:45:12ned.deilysetmessages: + msg316885
2018-05-16 18:14:36python-devsetpull_requests: + pull_request6583
2016-10-05 09:39:23berker.peksagsetnosy: + berker.peksag

versions: + Python 3.6, Python 3.7, - Python 3.4
2014-06-04 00:31:30zvezdansetmessages: + msg219735
2014-06-02 09:36:40ned.deilysetstage: commit review -> patch review
messages: + msg219561
versions: + Python 3.5, - Python 3.3
2013-07-15 12:38:35ronaldoussorensetmessages: + msg193093
versions: + Python 3.4, - Python 3.2
2012-01-12 16:04:48eric.araujosetmessages: + msg151133
2012-01-09 17:39:03zvezdansetmessages: + msg150957
2012-01-09 16:09:09eric.araujosetnosy: + eric.araujo, r.david.murray
messages: + msg150945

keywords: + needs review
stage: commit review
2011-12-19 08:07:34ned.deilysetnosy: + ned.deily
2011-12-19 04:07:23zvezdansetfiles: + readline-3.2.patch
2011-12-19 04:05:36zvezdancreate