summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2014-04-14 10:30:43 -0400
committerR David Murray <rdmurray@bitdance.com>2014-04-14 10:30:43 -0400
commitce4d9c2f5180272f05d5ea65db07b2898a27ef28 (patch)
tree29d2e4e14fe53b12ac1a7f2a20ac89caec142c05
parentae04491fd0952b2254917e76ed6a85a0921f779e (diff)
parent604453c9cea5dfcc5c6373028d0c30a4bd4f94f2 (diff)
downloadcpython-git-ce4d9c2f5180272f05d5ea65db07b2898a27ef28.tar.gz
Merge: #21169: add comment and doc update for getpass change.
-rw-r--r--Doc/library/getpass.rst9
-rw-r--r--Lib/getpass.py1
2 files changed, 6 insertions, 4 deletions
diff --git a/Doc/library/getpass.rst b/Doc/library/getpass.rst
index ffe2b1256b..211563e23e 100644
--- a/Doc/library/getpass.rst
+++ b/Doc/library/getpass.rst
@@ -13,10 +13,11 @@ The :mod:`getpass` module provides two functions:
.. function:: getpass(prompt='Password: ', stream=None)
Prompt the user for a password without echoing. The user is prompted using
- the string *prompt*, which defaults to ``'Password: '``. On Unix, the prompt
- is written to the file-like object *stream*. *stream* defaults to the
- controlling terminal (:file:`/dev/tty`) or if that is unavailable to
- ``sys.stderr`` (this argument is ignored on Windows).
+ the string *prompt*, which defaults to ``'Password: '``. On Unix, the
+ prompt is written to the file-like object *stream* using the replace error
+ handler if needed. *stream* defaults to the controlling terminal
+ (:file:`/dev/tty`) or if that is unavailable to ``sys.stderr`` (this
+ argument is ignored on Windows).
If echo free input is unavailable getpass() falls back to printing
a warning message to *stream* and reading from ``sys.stdin`` and
diff --git a/Lib/getpass.py b/Lib/getpass.py
index 2740363488..7c4e976174 100644
--- a/Lib/getpass.py
+++ b/Lib/getpass.py
@@ -138,6 +138,7 @@ def _raw_input(prompt="", stream=None, input=None):
try:
stream.write(prompt)
except UnicodeEncodeError:
+ # Use replace error handler to get as much as possible printed.
prompt = prompt.encode(stream.encoding, 'replace')
prompt = prompt.decode(stream.encoding)
stream.write(prompt)