Source code for yagmail.password

from typing import Optional

try:
    import keyring
except (ImportError, NameError, RuntimeError):
    keyring = None  # type: ignore


def handle_password(user: str, password: Optional[str]) -> str:  # pragma: no cover
    """ Handles getting the password"""
    if password is None:
        try:
            if keyring is None:
                raise NameError("keyring is not imported")
            password = keyring.get_password("yagmail", user)
        except NameError as e:
            print(
                "'keyring' cannot be loaded. Try 'pip install keyring' or continue without. See https://github.com/kootenpv/yagmail"
            )
            raise e
        if password is None:
            import getpass

            password = getpass.getpass(f"Password for <{user}>: ")
            answer = ""
            while answer != "y" and answer != "n":
                prompt_string = "Save username and password in keyring? [y/n]: "
                answer = input(prompt_string).strip()
            if answer == "y":
                register(user, password)
    return password


[docs] def register(username: str, password: str) -> None: """ Use this to add a new gmail account to your OS' keyring so it can be used in yagmail """ if keyring is None: raise ImportError("keyring package is not installed.") keyring.set_password("yagmail", username, password)