# `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. In particular, this means that line editing shortcuts such as `Ctrl`+`U` will not work and may insert unexpected characters into the input.

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

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.