B
    2*™\#  ã               @   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   ú2C:\ALexclude\prg\programme\Python37\Lib\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_RDWRZ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    








r0   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   r1   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Úreplacer5   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ÚpwdZgetpwuidÚgetuid)ÚnameÚuserrL   r   r   r	   r   š   s    
)r
   N)r
   N)r
   N)r1   NN)r   r   r   r   r>   Ú__all__ÚUserWarningr   r0   r:   r   r%   r   r!   r"   r$   ÚImportErrorr   r7   r   r   r   r   r	   Ú<module>   s*   

D

	


