Index: Doc/library/getpass.rst =================================================================== --- Doc/library/getpass.rst (revision 87951) +++ Doc/library/getpass.rst (working copy) @@ -26,7 +26,7 @@ .. note:: 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. + terminal you launched IDLE from rather than the IDLE window itself. .. exception:: GetPassWarning Index: Lib/getpass.py =================================================================== --- Lib/getpass.py (revision 87951) +++ Lib/getpass.py (working copy) @@ -16,6 +16,7 @@ # Gregory P. Smith (tty support & GetPassWarning) import os, sys, warnings +from warnings import warn as _warn __all__ = ["getpass","getuser","GetPassWarning"] @@ -23,7 +24,7 @@ class GetPassWarning(UserWarning): pass -def unix_getpass(prompt='Password: ', stream=None): +def _unix_getpass(prompt='Password: ', stream=None): """Prompt for a password, with echo turned off. Args: @@ -52,7 +53,7 @@ try: fd = sys.stdin.fileno() except (AttributeError, ValueError): - passwd = fallback_getpass(prompt, stream) + passwd = _fallback_getpass(prompt, stream) input = sys.stdin if not stream: stream = sys.stderr @@ -78,18 +79,18 @@ # instead of leaving the terminal in an unknown state. raise # We can't control the tty or stdin. Give up and use normal IO. - # fallback_getpass() raises an appropriate warning. + # _fallback_getpass() raises an appropriate warning. del input, tty # clean up unused file objects before blocking - passwd = fallback_getpass(prompt, stream) + passwd = _fallback_getpass(prompt, stream) stream.write('\n') return passwd -def win_getpass(prompt='Password: ', stream=None): +def _win_getpass(prompt='Password: ', stream=None): """Prompt for password with echo off, using Windows getch().""" if sys.stdin is not sys.__stdin__: - return fallback_getpass(prompt, stream) + return _fallback_getpass(prompt, stream) import msvcrt for c in prompt: msvcrt.putwch(c) @@ -109,7 +110,8 @@ return pw -def fallback_getpass(prompt='Password: ', stream=None): +def _fallback_getpass(prompt='Password: ', stream=None): + """Prompt for password without control of echo""" warnings.warn("Can not control echo on the terminal.", GetPassWarning, stacklevel=2) if not stream: @@ -145,8 +147,6 @@ """ - import os - for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'): user = os.environ.get(name) if user: @@ -166,8 +166,23 @@ try: import msvcrt except ImportError: - getpass = fallback_getpass + getpass = _fallback_getpass else: - getpass = win_getpass + getpass = _win_getpass else: - getpass = unix_getpass + getpass = _unix_getpass + +def unix_getpass(*args, **kwargs): + _warn("The getpass.unix_getpass() function is deprecated", + DeprecationWarning, 2) + return _unix_getpass(*args, **kwargs) + +def win_getpass(*args, **kwargs): + _warn("The getpass.win_getpass() function is deprecated", + DeprecationWarning, 2) + return _win_getpass(*args, **kwargs) + +def fallback_getpass(*args, **kwargs): + _warn("The getpass.fallback_getpass() function is deprecated", + DeprecationWarning, 2) + return _fallback_getpass(*args, **kwargs)