Skip to content

gh-46927: Prevent readline from overriding environment#133585

Open
mbriand wants to merge 3 commits intopython:mainfrom
mbriand:fix-issue-46927
Open

gh-46927: Prevent readline from overriding environment#133585
mbriand wants to merge 3 commits intopython:mainfrom
mbriand:fix-issue-46927

Conversation

@mbriand
Copy link

@mbriand mbriand commented May 7, 2025

Readline library will set the LINES and COLUMNS environment variables during initialization. One might expect these variables to be updated later on SIGWINCH, but this is not the case with cpython.

As a consequence, when the readline module is imported, any process launched from cpython with the default environment will have LINES and COLUMNS variables set, potentially to a wrong value.

Use the rl_change_environment global variable to disable this initial setup of the environment variables.

@python-cla-bot
Copy link

python-cla-bot bot commented May 7, 2025

All commit authors signed the Contributor License Agreement.

CLA signed

@bedevere-app
Copy link

bedevere-app bot commented May 7, 2025

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

/* The name must be defined before initialization */
rl_readline_name = "python";

#if !defined(__APPLE__)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit surprised I had to rely on the __APPLE__ define here. As I understand apple OS is using libedit, so I would have thought relying on WITH_EDITLINE would be enough. But the macOS pipeline proved me wrong...

Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a test case. The file you're looking for is test_readline.

@mbriand mbriand requested a review from ZeroIntensity May 14, 2025 06:26
@mbriand mbriand force-pushed the fix-issue-46927 branch from 6325feb to a91fe5d Compare May 15, 2025 06:18
@mbriand mbriand requested a review from ZeroIntensity May 16, 2025 05:32
@mbriand
Copy link
Author

mbriand commented Jul 10, 2025

Hi!

Any news about this PR? Is there anything I can do to help the this modification being accepted?

Readline library will set the LINES and COLUMNS environment variables
during initialization. One might expect these variables to be updated
later on SIGWINCH, but this is not the case with cpython.

As a consequence, when the readline module is imported, any process
launched from cpython with the default environment will have LINES and
COLUMNS variables set, potentially to a wrong value.

Use the rl_change_environment global variable to disable this initial
setup of the environment variables.
@mbriand
Copy link
Author

mbriand commented Feb 13, 2026

I rebased on current main branch. I confirm the issue is still present today.

Again, if there is anything I can to to help getting this merged, please tell me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants