# `getpass` — Portable password input

Source code: Lib/getpass.py

Availability: not WASI.

This module does not work or is not available on WebAssembly. See WebAssembly platforms for more information.

The `getpass` module provides two functions:

getpass.getpass(prompt='Password: ', stream=None, *, echo_char=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 using the replace error handler if needed. stream defaults to the controlling terminal (`/dev/tty`) or if that is unavailable to `sys.stderr` (this argument is ignored on Windows).

  The echo_char argument controls how user input is displayed while typing. If echo_char is `None` (default), input remains hidden. Otherwise, echo_char must be a single printable ASCII character and each typed character is replaced by it. For example, `echo_char='*'` will display asterisks instead of the actual input.

  If echo-free input is unavailable, `getpass()` falls back to printing a warning message to stream and reading from `sys.stdin` and issuing a `GetPassWarning`.

  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.

  Note

  On Unix systems, when echo_char is set, the terminal will be configured to operate in noncanonical mode. Common terminal control characters are supported:

  - `Ctrl`+`A` - Move cursor to beginning of line

  - `Ctrl`+`E` - Move cursor to end of line

  - `Ctrl`+`K` - Kill (delete) from cursor to end of line

  - `Ctrl`+`U` - Kill (delete) entire line

  - `Ctrl`+`W` - Erase previous word

  - `Ctrl`+`V` - Insert next character literally (quote)

  - `Backspace`/`DEL` - Delete character before cursor

  These shortcuts work by reading the terminal’s configured control character mappings from termios settings.

  Changed in version 3.14: Added the echo_char parameter for keyboard feedback.

  Changed in version 3.15: When using non-empty echo_char on Unix, keyboard shortcuts (including cursor movement and line editing) are now properly handled using the terminal’s control character configuration.

exception getpass.GetPassWarning

  A `UserWarning` subclass issued when password input may be echoed.

getpass.getuser()

  Return the “login name” of the user.

  This function checks the environment variables `LOGNAME`, `USER`, `LNAME` and `USERNAME`, in order, and returns the value of the first one which is set to a non-empty string. If none are set, the login name from the password database is returned on systems which support the `pwd` module, otherwise, an `OSError` is raised.

  In general, this function should be preferred over `os.getlogin()`.

  Changed in version 3.13: Previously, various exceptions beyond just `OSError` were raised.