o
     JAff                     @   s   	 d dl Z d dlZd dlZd dlZd dlZg d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zd dlZejejf W n" eefyg   zd dlZW n eya   e
ZY Y dS w e	ZY dS w 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.10/getpass.pyr      s    r   
Password: c           
      C   s  	 d }t  }z%tdtjtjB }t|d}|| t	|}|| |s,|}W n/ t
y\   |  ztj }W n ttfyQ   d }t| |}Y nw tj}|sZtj}Y nw |d urzLt|}|d d  }|d  tj M  < tj}	ttdr|	tjO }	zt||	| t| ||d}W t||	| |  nt||	| |  w W n tjy   |d ur ||ur|  t| |}Y nw |d |W  d    S 1 sw   Y  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streampasswdstackfdZttyr   oldnewZtcsetattr_flagsr   r   r	   unix_getpass   sd   








$r1   c                 C   s   	 t jt jurt| |S | D ]}t| qd}	 t }|dks%|dkr&n|dkr,t|dkr7|d d }n|| }q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| } | r7z||  W n ty2   | |jd} | |j} ||  Y nw |	  |
 }|s?t|d dkrK|d d }|S )Nreplacer7   r   )r   r!   r   strr)   UnicodeEncodeErrorencodeencodingdecoder'   readlineEOFError)r*   r+   r   liner   r   r	   r&      s(   r&   c                  C   s>   	 dD ]} t j| }|r|  S qdd l}|t  d S )N)ZLOGNAMEZUSERZLNAMEUSERNAMEr   )r   environgetpwdgetpwuidgetuid)nameuserrO   r   r   r	   r      s   r   )r
   N)r2   NN)r   r   r   r   r@   __all__UserWarningr   r1   r<   r    r&   r   r"   r#   r%   ImportErrorr   r9   r   r   r   r   r	   <module>   s2    

D

	
