B
    u9aj  ã               @   sÖ   d dl Z d dlZd dlZd dlZd dlZdddgZG dd„ deƒZddd„Zdd	d
„Z	ddd„Z
ddd„Zdd„ Zyd dlZejejf W nB eefk
rÌ   yd dlZW n ek
rÂ   e
ZY nX e	ZY nX eZdS )é    NÚgetpassÚgetuserÚGetPassWarningc               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú/usr/lib/python3.7/getpass.pyr      s    ú
Password: c             C   s´  d }t  ¡ œ}yJt dtjtjB ¡}t |d¡}| |¡ t 	|¡}| |¡ |sX|}W np t
k
rÊ } zR| ¡  ytj ¡ }W n& ttfk
r¨   d }t| |ƒ}Y nX tj}|sºtj}W d d }~X Y nX |d k	rœy„t |¡}|d d … }	|	d  tj M  < tj}
ttdƒr|
tjO }
z t ||
|	¡ t| ||d}W d t ||
|¡ | ¡  X W n@ tjk
rš   |d k	rz‚ ||k	rŒ| ¡  t| |ƒ}Y nX | d¡ |S Q R X d S )Nz/dev/ttyzw+é   Ú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Ú	tcgetattrZECHOZ	TCSAFLUSHÚhasattrr   Ú	tcsetattrÚ
_raw_inputÚflushÚerrorÚwrite)ÚpromptÚstreamZpasswdÚstackÚfdZttyr   ÚeÚoldÚnewZtcsetattr_flagsr   r   r	   Úunix_getpass   sR    








r1   c             C   s”   t jt jk	rt| |ƒS x| D ]}t |¡ qW d}xHt ¡ }|dksL|dkrNP |dkrZt‚|dkrp|d d… }q4|| }q4W t d¡ t d¡ |S )NÚ úr   úúéÿÿÿÿ)r   r   Ú	__stdin__r    ÚmsvcrtZputwchZgetwchÚKeyboardInterrupt)r*   r+   ÚcZpwr   r   r	   Úwin_getpassa   s"    



r;   c             C   s0   t jdtdd |stj}td|d t| |ƒS )Nz%Can not control echo on the terminal.é   )Ú
stacklevelz&Warning: Password input may be echoed.)Úfile)ÚwarningsÚwarnr   r   r!   Úprintr&   )r*   r+   r   r   r	   r    x   s    r    r2   c             C   sœ   |s
t j}|st j}t| ƒ} | rpy| | ¡ W n8 tk
rf   |  |jd¡} |  |j¡} | | ¡ Y nX | 	¡  | 
¡ }|s€t‚|d dkr˜|d d… }|S )NÚreplacer6   r   )r   r!   r   Ústrr)   ÚUnicodeEncodeErrorÚencodeÚencodingÚdecoder'   ÚreadlineÚEOFError)r*   r+   r   Úliner   r   r	   r&      s&    r&   c              C   s<   x dD ]} t j | ¡}|r|S qW dd l}| t  ¡ ¡d S )N)ZLOGNAMEZUSERZLNAMEZUSERNAMEr   )r   ÚenvironÚgetÚpwdÚgetpwuidÚgetuid)ÚnameÚuserrM   r   r   r	   r   š   s    
)r
   N)r
   N)r
   N)r2   NN)r   r   r   r   r?   Ú__all__ÚUserWarningr   r1   r;   r    r&   r   r"   r#   r%   ÚImportErrorr   r8   r   r   r   r   r	   Ú<module>   s*   

D

	


