From b9f6450285b87423c1274484b3512ced57a29c85 Mon Sep 17 00:00:00 2001 From: yagggi Date: Tue, 9 Sep 2025 17:41:13 +0800 Subject: [PATCH] gh-138577: Mention Unix-specific limitations of `getpass.getpass(echo_char=...)` (GH-138677) In bf8bbe9a813dd9fc2dd14be06df172b7d26ca1af, `getpass.getpass` gained the ability to provide keyboard feedback through `echo_char`. On Unix, line editing shortcuts such as Ctrl+U were previously handled as the terminal operates in canonical mode (see termios(3)). However, since keyboard feedback requires to switch to noncanonical mode, this now results in an inconsistency when `getpass.getpass` uses `echo_char` as those shortcuts are no more supported. This limitation is specific to Unix and does not affect Windows users where line editing shortcuts were never supported. (cherry picked from commit 074f3b20b3f05e2740f5324f1b0653152a41ca82) Co-authored-by: yagggi --- Doc/library/getpass.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Doc/library/getpass.rst b/Doc/library/getpass.rst index 0fb0fc88683c03..af9c9e9f39d9a6 100644 --- a/Doc/library/getpass.rst +++ b/Doc/library/getpass.rst @@ -39,6 +39,14 @@ The :mod:`getpass` module provides two functions: If you call getpass from within IDLE, the input may be done in the terminal you launched IDLE from rather than the idle window itself. + .. note:: + On Unix systems, when *echo_char* is set, the terminal will be + configured to operate in + :manpage:`noncanonical mode `. + In particular, this means that line editing shortcuts such as + :kbd:`Ctrl+U` will not work and may insert unexpected characters into + the input. + .. versionchanged:: 3.14 Added the *echo_char* parameter for keyboard feedback.