]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-138577: Mention Unix-specific limitations of `getpass.getpass(echo_char=...)`...
authoryagggi <fakepoet0101@gmail.com>
Tue, 9 Sep 2025 09:41:13 +0000 (17:41 +0800)
committerGitHub <noreply@github.com>
Tue, 9 Sep 2025 09:41:13 +0000 (11:41 +0200)
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.

Doc/library/getpass.rst

index 0fb0fc88683c032c3a019e41ddb020386915d4f0..af9c9e9f39d9a686764a15ca34a20ef2327a3a8b 100644 (file)
@@ -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 <termios(3)#Canonical_and_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.