a �DOgf� @s�dZddlZddlZddlZddlZddlZgd�ZGdd�de�Zddd�Z dd d �Z dd d �Z ddd�Z dd�Z zddlZejejfWn>eefy�z ddlZWney�e ZYn0e ZYn0e ZdS)a�Utilities to get a password and/or the current user name. getpass(prompt[, stream]) - Prompt for a password, with echo turned off. getuser() - Get the user name from the environment or password database. GetPassWarning - This UserWarning is issued when getpass() cannot prevent echoing of the password contents while reading. On Windows, the msvcrt module will be used. �N)�getpass�getuser�GetPassWarningc@s eZdZdS)rN)�__name__� __module__� __qualname__�rr�/usr/lib64/python3.9/getpass.pyr�r� Password: c Cs�d}t�����}zJt�dtjtjB�}t�|d�}|�|�t� |�}|�|�|sX|}Wn^t y�|� �zt j ��}Wn$ttfy�d}t||�}Yn0t j }|s�t j}Yn0|du�r�z�t�|�}|dd�}|dtjM<tj} ttd��r | tjO} z6t�|| |�t|||d�}Wt�|| |�|��nt�|| |�|��0Wn>tj�y�|du�r|�||u�r�|� �t||�}Yn0|�d�|Wd�S1�s�0YdS)aPrompt for a password, with echo turned off. Args: prompt: Written on stream to ask for the input. Default: 'Password: ' stream: A writable file object to display the prompt. Defaults to the tty. If no tty is available defaults to sys.stderr. Returns: The seKr3t input. Raises: EOFError: If our input tty or stdin was closed. GetPassWarning: When we were unable to turn echo off on the input. Always restores terminal settings before returning. Nz/dev/ttyzw+��TCSASOFT)�input� )� contextlib� ExitStack�os�open�O_RDWR�O_NOCTTY�io�FileIO� enter_context� TextIOWrapper�OSError�close�sys�stdin�fileno�AttributeError� ValueError�fallback_getpass�stderr�termios� tcgetattrZECHOZ TCSAFLUSH�hasattrr � tcsetattr� _raw_input�flush�error�write) �prompt�stream�passwd�stack�fdZttyr�old�newZtcsetattr_flagsrrr � unix_getpasssV             �   r2cCs�tjtjurt||�S|D]}t�|�qd}t��}|dkst|dkrHqt|dkrTt�|dkrj|dd�}q.||}q.t�d�t�d�|S)z:Prompt for password with echo off, using Windows getwch().�� r��N�����)rr� __stdin__r!�msvcrtZputwchZgetwch�KeyboardInterrupt)r+r,�cZpwrrr � win_getpassas       r<cCs0tjdtdd�|stj}td|d�t||�S)Nz%Can not control echo on the terminal.�)� stacklevelz&Warning: Password input may be echoed.)�file)�warnings�warnrrr"�printr')r+r,rrr r!xs� r!r3cCs�|s tj}|stj}t|�}|rnz|�|�Wn6tyd|�|jd�}|�|j�}|�|�Yn0|� �|� �}|s~t �|ddkr�|dd�}|S)N�replacer7r) rr"r�strr*�UnicodeEncodeError�encode�encoding�decoder(�readline�EOFError)r+r,r�linerrr r'�s&    r'cCs<dD]}tj�|�}|r|Sqddl}|�t���dS)z�Get the username from the environment or password database. First try various environment variables, then the password database. This works on Windows as long as USERNAME is set. )ZLOGNAMEZUSERZLNAME�USERNAMErN)r�environ�get�pwd�getpwuid�getuid)�name�userrOrrr r�s   r)r N)r N)r N)r3NN)�__doc__rrrrr@�__all__� UserWarningrr2r<r!r'rr#r$r&� ImportErrorrr9rrrrr �s, D