3 \j�@s�dZddlZddlZddlZddlZddlZdddgZGdd�de�Zddd �Z dd d �Z dd d �Z ddd�Z dd�Z yddlZejejfWnBeefk r�y ddlZWnek r�e ZYnXe ZYnXe 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.6/getpass.pyrs� Password: c .Cs�d}tj����}yJtjdtjtjB�}tj|d�}|j|�tj |�}|j|�|sX|}Wnpt k r�}zT|j �yt j j�}Wn&ttfk r�d}t||�}YnXt j }|s�t j}WYdd}~XnX|dk �r�y�tj|�}|dd�} | dtjM<tj} ttd��r| tjO} z tj|| | �t|||d�}Wdtj|| |�|j�XWn@tjk �r�|dk �rz�||k �r�|j �t||�}YnX|jd�|SQRXdS)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�streamZpasswd�stack�fdZttyr �e�old�newZtcsetattr_flagsrrr � unix_getpasssR             r1cCs�tjtjk rt||�Sx|D]}tj|�qWd}xHtj�}|dksL|dkrNP|dkrZt�|dkrp|dd�}q4||}q4Wtjd�tjd�|S) z9Prompt for password with echo off, using Windows getch().�� 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 r2c Cs�|s tj}|stj}t|�}|rpy|j|�Wn8tk rf|j|jd�}|j|j�}|j|�YnX|j �|j �}|s�t �|ddkr�|dd�}|S)N�replacer6rr7r7) rr!r�strr)�UnicodeEncodeError�encode�encoding�decoder'�readline�EOFError)r*r+r �linerrr r&�s&   r&cCs<x dD]}tjj|�}|r|SqWddl}|jtj��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. �LOGNAME�USER�LNAME�USERNAMErN)rLrMrNrO)r�environ�get�pwd�getpwuid�getuid)�name�userrRrrr r�s   )r N)r N)r N)r2NN)�__doc__rrrrr@�__all__� UserWarningrr1r<r r&rr"r#r%� ImportErrorrr9rrrrr � s,  D